Metadata-Version: 2.4
Name: tooluniverse
Version: 1.0.22
Summary: A comprehensive collection of scientific tools for Agentic AI, offering integration with the ToolUniverse SDK and MCP Server to support advanced scientific workflows.
Author-email: Shanghua Gao <shanghuagao@gmail.com>
Project-URL: Homepage, https://github.com/mims-harvard/ToolUniverse
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.32.0
Requires-Dist: numpy>=2.2.0
Requires-Dist: sympy>=1.12.0
Requires-Dist: graphql-core>=3.2.0
Requires-Dist: fastapi>=0.116.0
Requires-Dist: uvicorn>=0.36.0
Requires-Dist: pydantic>=2.11.0
Requires-Dist: epam.indigo>=1.34.0
Requires-Dist: networkx>=3.4.0
Requires-Dist: openai>=1.107.0
Requires-Dist: pyyaml>=6.0.0
Requires-Dist: google-genai>=1.36.0
Requires-Dist: google-generativeai>=0.7.2
Requires-Dist: mcp[cli]>=1.9.3
Requires-Dist: fastmcp<3.0.0,>=2.12.3
Requires-Dist: xmltodict>=1.0.0
Requires-Dist: lxml>=6.0.0
Requires-Dist: huggingface_hub>=0.34.0
Requires-Dist: jsonpath-ng>=1.6.0
Requires-Dist: rcsb-api>=1.4.0
Requires-Dist: fitz>=0.0.1.dev2
Requires-Dist: pandas>=2.2.3
Requires-Dist: setuptools<81.0.0,>=70.0.0
Requires-Dist: pdfplumber>=0.11.0
Requires-Dist: playwright>=1.55.0
Requires-Dist: faiss-cpu==1.12.0
Requires-Dist: flask>=2.0.0
Requires-Dist: aiohttp
Requires-Dist: beautifulsoup4>=4.12.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: markitdown[all]>=0.1.0
Requires-Dist: psutil>=5.9.0
Requires-Dist: ddgs>=9.0.0
Requires-Dist: pip>=25.3
Requires-Dist: jsonschema>=4.23.0
Provides-Extra: client
Requires-Dist: requests>=2.32.0; extra == "client"
Requires-Dist: pydantic>=2.11.0; extra == "client"
Provides-Extra: smolagents
Requires-Dist: smolagents>=1.22.0; extra == "smolagents"
Requires-Dist: gradio>=4.0.0; extra == "smolagents"
Provides-Extra: singlecell
Requires-Dist: cellxgene-census>=1.10.0; extra == "singlecell"
Requires-Dist: tiledbsoma>=1.15.3; extra == "singlecell"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: pytest-timeout>=2.3.1; extra == "dev"
Requires-Dist: pytest-mock>=3.14.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pre-commit>=2.0; extra == "dev"
Requires-Dist: pytest-xdist>=3.0; extra == "dev"
Requires-Dist: pytest-html>=3.0; extra == "dev"
Requires-Dist: requests-mock>=1.12.1; extra == "dev"
Requires-Dist: ruff>=0.14.5; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=4.0; extra == "docs"
Requires-Dist: furo>=2024.8.6; extra == "docs"
Requires-Dist: pydata-sphinx-theme>=0.15.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.0; extra == "docs"
Requires-Dist: shibuya>=0.10.0; extra == "docs"
Requires-Dist: myst-parser>=0.18; extra == "docs"
Requires-Dist: linkify-it-py>=2.0.0; extra == "docs"
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
Requires-Dist: sphinx-copybutton>=0.5.0; extra == "docs"
Requires-Dist: sphinx-tabs>=3.2.0; extra == "docs"
Requires-Dist: sphinx-design>=0.3.0; extra == "docs"
Requires-Dist: sphinx-notfound-page>=0.8; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints>=1.12.0; extra == "docs"
Provides-Extra: embedding
Requires-Dist: sentence-transformers>=5.1.0; extra == "embedding"
Requires-Dist: faiss-cpu==1.12.0; extra == "embedding"
Requires-Dist: huggingface_hub>=0.34.0; extra == "embedding"
Provides-Extra: ml
Requires-Dist: admet-ai>=1.2.0; extra == "ml"
Requires-Dist: sentence-transformers>=5.1.0; extra == "ml"
Requires-Dist: faiss-cpu==1.12.0; extra == "ml"
Requires-Dist: huggingface_hub>=0.34.0; extra == "ml"
Provides-Extra: graph
Requires-Dist: flask>=2.0.0; extra == "graph"
Requires-Dist: matplotlib>=3.5.0; extra == "graph"
Requires-Dist: plotly>=5.0.0; extra == "graph"
Requires-Dist: scipy>=1.7.0; extra == "graph"
Requires-Dist: pydot>=1.4.0; extra == "graph"
Requires-Dist: pygraphviz>=1.7; extra == "graph"
Requires-Dist: jinja2>=3.0.0; extra == "graph"
Requires-Dist: werkzeug>=2.0.0; extra == "graph"
Provides-Extra: visualization
Requires-Dist: py3Dmol>=2.0.0; extra == "visualization"
Requires-Dist: rdkit>=2023.9.1; extra == "visualization"
Requires-Dist: plotly>=5.18.0; extra == "visualization"
Requires-Dist: kaleido>=0.2.1; extra == "visualization"
Requires-Dist: scipy>=1.7.0; extra == "visualization"
Requires-Dist: matplotlib>=3.5.0; extra == "visualization"
Requires-Dist: networkx>=3.4.0; extra == "visualization"
Provides-Extra: space
Requires-Dist: huggingface_hub>=0.34.0; extra == "space"
Requires-Dist: pyyaml>=6.0.0; extra == "space"
Requires-Dist: requests>=2.32.0; extra == "space"
Provides-Extra: bioinformatics
Requires-Dist: biopython>=1.80; extra == "bioinformatics"
Provides-Extra: all
Requires-Dist: tooluniverse[bioinformatics,dev,docs,embedding,graph,ml,space,visualization]; extra == "all"
Provides-Extra: build
Requires-Dist: pyinstaller>=6.0.0; extra == "build"
Dynamic: license-file

# <img src="docs/_static/logo.png" alt="ToolUniverse Logo" height="28" style="vertical-align: middle; margin-right: 8px;" /> ToolUniverse: Democratizing AI scientists

[![Documentation](https://img.shields.io/badge/Documentation-Available-green)](https://zitniklab.hms.harvard.edu/ToolUniverse/)
[![Paper](https://img.shields.io/badge/Paper-Arxiv-blue)](https://arxiv.org/abs/2509.23426)
[![PyPI version](https://badge.fury.io/py/tooluniverse.svg)](https://badge.fury.io/py/tooluniverse)
[![MCP Registry](https://img.shields.io/badge/MCP_Registry-Listed-blue)](https://registry.modelcontextprotocol.io)
[![Website](https://img.shields.io/badge/Website-aiscientist.tools-blue)](https://aiscientist.tools)
[![Slack](https://img.shields.io/badge/Slack-Join_Community-orange)](https://join.slack.com/t/tooluniversehq/shared_invite/zt-3dic3eoio-5xxoJch7TLNibNQn5_AREQ)
[![WeChat](https://img.shields.io/badge/WeChat-Community-07C160)](https://aiscientist.tools/wechat)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-Follow-0077B5)](https://www.linkedin.com/in/shanghua-gao-96b0b3168/)
[![X](https://img.shields.io/badge/X-Follow-000000)](https://x.com/ScientistTools)
[![PyPI Downloads](https://static.pepy.tech/personalized-badge/tooluniverse?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=BLACK&left_text=downloads)](https://pepy.tech/projects/tooluniverse)

[//]: # (mcp-name: io.github.mims-harvard/tooluniverse)

## Install

**AI agent (recommended)** — open your AI agent and run:
```
Read https://aiscientist.tools/setup.md and set up ToolUniverse for me.
```
The agent will walk you through MCP configuration, API keys, skill installation, and validation.

<details>
<summary>or set up manually</summary>

Add to your MCP config file:
```json
{
  "mcpServers": {
    "tooluniverse": {
      "command": "uvx",
      "args": ["--refresh", "tooluniverse"],
      "env": {"PYTHONIOENCODING": "utf-8"}
    }
  }
}
```

Install agent skills:
```bash
npx skills add mims-harvard/ToolUniverse
```
</details>

**Python developers** — install the SDK:
```bash
uv pip install tooluniverse
```

## Building AI Scientists with ToolUniverse

<p align="center">
  <a href="https://www.youtube.com/watch?v=fManSJlSs60">
    <img src="https://github.com/user-attachments/assets/13ddb54c-4fcc-4507-8695-1c58e7bc1e68" width="600" />
  </a>
</p>

*Click to watch the demo* [(YouTube)](https://www.youtube.com/watch?v=fManSJlSs60) [(Bilibili)](https://www.bilibili.com/video/BV1GynhzjEos/?share_source=copy_web&vd_source=b398f13447281e748f5c41057a2c6858)

## What is ToolUniverse?

ToolUniverse is an ecosystem for creating AI scientist systems from any large language model. Powered by the AI-Tool Interaction Protocol, it standardizes how LLMs identify and call tools, integrating more than **1000 machine learning models, datasets, APIs, and scientific packages** for data analysis, knowledge retrieval, and experimental design.

**Key features:**

- [**AI-Tool Interaction Protocol**](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/interaction_protocol.html): Standardized interface governing how AI scientists issue tool requests and receive results
- [**Universal AI Model Support**](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/building_ai_scientists/index.html): Works with Claude, GPT, Gemini, Qwen, Deepseek, and open models
- [**MCP Integration**](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/building_ai_scientists/mcp_support.html): Native Model Context Protocol server with configurable transport and tool selection
- [**Async Operations**](https://zitniklab.hms.harvard.edu/ToolUniverse/expand_tooluniverse/async_tools_guide.html): Long-running tasks (protein docking, molecular simulations) with progress tracking and parallel execution
- [**Tool Composition**](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/tool_composition.html): Chain tools for sequential or parallel execution in self-directed workflows
- [**Compact Mode**](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/building_ai_scientists/compact_mode.html): Reduces 1000+ tools to 4-5 core discovery tools, saving ~99% context window
- [**Agent Skills**](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/skills_showcase.html): 66 pre-built research workflows for drug discovery, precision oncology, rare disease diagnosis, pharmacovigilance, and more
- [**Literature Search**](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/literature_search_tools_tutorial.html): Unified search across PubMed, Semantic Scholar, ArXiv, BioRxiv, Europe PMC, and more
- [**Two-Tier Result Caching**](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/cache_system.html): In-memory LRU + SQLite persistence with per-tool fingerprinting for 10x speedup, offline support, and reproducibility
- [**Continuous Expansion**](https://zitniklab.hms.harvard.edu/ToolUniverse/expand_tooluniverse/index.html): Register new tools locally or remotely without additional configuration

<p align="center">
  <img src="https://github.com/user-attachments/assets/eb15bd7c-4e73-464b-8d65-733877c96a51" width="888" />
</p>

## AI Scientists Powered by ToolUniverse

*Building your project with ToolUniverse? Submit via [GitHub Pull Request](https://github.com/mims-harvard/ToolUniverse/pulls) or contact us.*

**TxAgent: AI Agent for Therapeutic Reasoning** [[Project]](https://zitniklab.hms.harvard.edu/TxAgent) [[Paper]](https://arxiv.org/pdf/2503.10970) [[PyPI]](https://pypi.org/project/txagent/) [[GitHub]](https://github.com/mims-harvard/TxAgent) [[HuggingFace]](https://huggingface.co/collections/mims-harvard/txagent-67c8e54a9d03a429bb0c622c)
> TxAgent leverages ToolUniverse's scientific tool ecosystem to solve complex therapeutic reasoning tasks.

---

**Medea: An Omics AI Agent for Therapeutic Discovery** [[Project]](https://medea.openscientist.ai) [[Paper]](https://www.biorxiv.org/content/early/2026/01/20/2026.01.16.696667) [[GitHub]](https://github.com/mims-harvard/Medea)
> Medea integrates ToolUniverse tools for multi-omics analysis to identify therapeutic targets and predict drug responses across cancer, autoimmune, and other diseases.

## Documentation

Full documentation: [zitniklab.hms.harvard.edu/ToolUniverse](https://zitniklab.hms.harvard.edu/ToolUniverse/)

- [Python Developer Guide](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/python_guide.html)
- [AI Agent Setup](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/building_ai_scientists/index.html)
- [Agent Skills](https://zitniklab.hms.harvard.edu/ToolUniverse/guide/skills_showcase.html)
- [Expand ToolUniverse](https://zitniklab.hms.harvard.edu/ToolUniverse/expand_tooluniverse/index.html)
- [API Reference](https://zitniklab.hms.harvard.edu/ToolUniverse/api/modules.html)

## Community

**[Shanghua Gao](https://shgao.site)**, the lead creator of this project, is currently on the job market.

[Slack](https://join.slack.com/t/tooluniversehq/shared_invite/zt-3dic3eoio-5xxoJch7TLNibNQn5_AREQ) · [GitHub Issues](https://github.com/mims-harvard/ToolUniverse/issues) · [Shanghua Gao](mailto:shanghuagao@gmail.com) · [Marinka Zitnik](mailto:marinka@hms.harvard.edu)


**Leaders:** [Shanghua Gao](https://shgao.site) · [Marinka Zitnik](https://zitniklab.hms.harvard.edu/)

**Contributors:** [Shanghua Gao](https://shgao.site) · [Richard Zhu](https://www.linkedin.com/in/richard-zhu-4236901a7/) · [Pengwei Sui](https://psui3905.github.io/) · [Zhenglun Kong](https://zlkong.github.io/homepage/) · [Sufian Aldogom](mailto:saldogom@mit.edu) · [Yepeng Huang](https://yepeng.notion.site/Yepeng-Huang-16ad8dd1740080c28d4bd3e3d7c1080c) · [Ayush Noori](https://www.ayushnoori.com/) · [Reza Shamji](mailto:reza_shamji@hms.harvard.edu) · [Krishna Parvataneni](mailto:krishna_parvataneni@hms.harvard.edu) · [Theodoros Tsiligkaridis](https://sites.google.com/view/theo-t) · [Marinka Zitnik](https://zitniklab.hms.harvard.edu/)

## Citation

```
@article{gao2025democratizingaiscientistsusing,
      title={Democratizing AI scientists using ToolUniverse}, 
      author={Shanghua Gao and Richard Zhu and Pengwei Sui and Zhenglun Kong and Sufian Aldogom and Yepeng Huang and Ayush Noori and Reza Shamji and Krishna Parvataneni and Theodoros Tsiligkaridis and Marinka Zitnik},
      year={2025},
      eprint={2509.23426},
      archivePrefix={arXiv},
      primaryClass={cs.AI},
      url={https://arxiv.org/abs/2509.23426}, 
}

@article{gao2025txagent,
      title={TxAgent: An AI Agent for Therapeutic Reasoning Across a Universe of Tools},
      author={Shanghua Gao and Richard Zhu and Zhenglun Kong and Ayush Noori and Xiaorui Su and Curtis Ginder and Theodoros Tsiligkaridis and Marinka Zitnik},
      year={2025},
      eprint={2503.10970},
      archivePrefix={arXiv},
      primaryClass={cs.AI},
      url={https://arxiv.org/abs/2503.10970},
}
```
