tooluniverse-sdk▌
mims-harvard/tooluniverse · updated Apr 8, 2026
3 calling patterns -- start with pattern 1:
ToolUniverse Python SDK
3 calling patterns -- start with pattern 1:
tu.run({"name": ..., "arguments": ...})-- single tool call, dict API (most portable)tu.tools.ToolName(param=value)-- function API (recommended for interactive use)- Direct class instantiation -- advanced, bypasses caching/hooks
Installation
pip install tooluniverse # Standard
pip install tooluniverse[embedding] # Embedding search (GPU)
pip install tooluniverse[all] # All features
export OPENAI_API_KEY="sk-..." # Required for LLM tool search
export NCBI_API_KEY="..." # Optional
Quick Start
from tooluniverse import ToolUniverse
tu = ToolUniverse()
tu.load_tools() # REQUIRED before any tool call
# Find tools
tools = tu.run({"name": "Tool_Finder_Keyword", "arguments": {"description": "protein structure", "limit": 10}})
# Execute (dict API)
result = tu.run({"name": "UniProt_get_entry_by_accession", "arguments": {"accession": "P05067"}})
# Execute (function API)
result = tu.tools.UniProt_get_entry_by_accession(accession="P05067")
Core Patterns
Batch Execution
calls = [
{"name": "UniProt_get_entry_by_accession", "arguments": {"accession": "P05067"}},
{"name": "UniProt_get_entry_by_accession", "arguments": {"accession": "P12345"}},
]
results = tu.run_batch(calls)
Scientific Workflow
def drug_discovery_pipeline(disease_id):
tu = ToolUniverse(use_cache=True)
tu.load_tools()
try:
targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId(efoId=disease_id)
compound_calls = [
{"name": "ChEMBL_search_molecule_by_target",
"arguments": {"target_id": t['id'], "limit": 10}}
for t in targets['data'][:5]
]
compounds = tu.run_batch(compound_calls)
return {"targets": targets, "compounds": compounds}
finally:
tu.close()
Configuration
# Caching
tu = ToolUniverse(use_cache=True)
stats = tu.get_cache_stats()
tu.clear_cache()
# Hooks (auto-summarization of large outputs)
tu = ToolUniverse(hooks_enabled=True)
# Load specific categories
tu.load_tools(categories=["proteins", "drugs"])
Critical Notes
- Always call
load_tools()before using any tools - Tool Finder returns nested structure: access via
tools['tools']afterisinstance(tools, dict)check - Tool names are case-sensitive:
UniProt_get_entry_by_accessionnotuniprot_get_... - Check required params:
tu.all_tool_dict["ToolName"]['parameter'].get('required', []) - Cache deterministic calls (ML predictions, DB queries); don't cache real-time data
Error Handling
from tooluniverse.exceptions import ToolError, ToolUnavailableError, ToolValidationError
try:
result = tu.tools.some_tool(param="value")
except ToolUnavailableError:
... # Tool service down
except ToolValidationError as e:
tool_info = tu.all_tool_dict["some_tool"]
print(f"Required: {tool_info['parameter'].get('required', [])}")
Tool Categories
| Category | Tools | Use Cases |
|---|---|---|
| Proteins | UniProt, RCSB PDB, AlphaFold | Protein analysis, structure |
| Drugs | DrugBank, ChEMBL, PubChem | Drug discovery, compounds |
| Genomics | Ensembl, NCBI Gene, gnomAD | Gene analysis, variants |
| Diseases | OpenTargets, ClinVar | Disease-target associations |
| Literature | PubMed, Europe PMC | Literature search |
| ML Models | ADMET-AI, AlphaFold | Predictions, modeling |
| Pathways | KEGG, Reactome | Pathway analysis |
Resources
- Docs: https://zitniklab.hms.harvard.edu/ToolUniverse/
- GitHub: https://github.com/mims-harvard/ToolUniverse
- See REFERENCE.md for detailed guides.
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.5★★★★★60 reviews- ★★★★★Mia Singh· Dec 28, 2024
Useful defaults in tooluniverse-sdk — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Mateo Agarwal· Dec 24, 2024
tooluniverse-sdk is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Henry Perez· Dec 20, 2024
tooluniverse-sdk has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Min Ramirez· Dec 16, 2024
tooluniverse-sdk fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Arjun White· Dec 16, 2024
I recommend tooluniverse-sdk for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Shikha Mishra· Dec 12, 2024
Keeps context tight: tooluniverse-sdk is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Jin Mehta· Dec 12, 2024
We added tooluniverse-sdk from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Henry Farah· Nov 15, 2024
tooluniverse-sdk reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Henry Choi· Nov 11, 2024
tooluniverse-sdk fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Jin Flores· Nov 7, 2024
tooluniverse-sdk has been reliable in day-to-day use. Documentation quality is above average for community skills.
showing 1-10 of 60