tooluniverse-sdk
Provides a Python interface to load, search, and execute scientific tools within research workflows.
Install
mkdir -p .claude/skills/tooluniverse-sdk && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/8184" && unzip -o skill.zip -d .claude/skills/tooluniverse-sdk && rm skill.zipInstalls to .claude/skills/tooluniverse-sdk
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Build AI scientist systems with the ToolUniverse Python SDK for scientific research. Covers the 3 calling patterns (`tu.run` portable dict API, `tu.tools.X` function API, direct class instantiation), tool loading, batch execution, MCP server integration, and embedding-based tool search. Use for SDK programming, custom tool composition, benchmarking pipelines, and integrating ToolUniverse into research workflows.Key capabilities
- →Access over 1000 scientific tools
- →Execute batch tool calls for data retrieval
- →Create custom scientific automation pipelines
- →Integrate MCP servers into research environments
- →Perform embedding-based tool discovery
How it works
The SDK provides three calling patterns including a portable dict API and a function-based API to interact with scientific tools. It requires a load_tools call to initialize the environment before executing specific research tasks.
Inputs & outputs
When to use tooluniverse-sdk
- →Create custom scientific automation pipelines
- →Execute batch tool calls for large-scale data retrieval
- →Search for research tools using natural language
- →Integrate MCP servers into research environments
About this skill
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.
When not to use it
- →Caching real-time data
- →Bypassing required tool initialization
Prerequisites
Limitations
- →Tool names are case-sensitive
- →Requires load_tools before any tool call
- →Tool Finder returns nested structures
How it compares
It provides a unified Python interface for diverse scientific databases and models instead of requiring manual API integration for each service.
Compared to similar skills
tooluniverse-sdk side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| tooluniverse-sdk (this skill) | 0 | 2mo | Review | Advanced |
| proof-theory | 1 | 7mo | Review | Advanced |
| jupyter-notebook | 30 | 6mo | Review | Intermediate |
| pdf-processing-pro | 17 | 10mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by mims-harvard
View all by mims-harvard →You might also like
proof-theory
parcadei
Problem-solving strategies for proof theory in mathematical logic
jupyter-notebook
davila7
Use when the user asks to create, scaffold, or edit Jupyter notebooks (`.ipynb`) for experiments, explorations, or tutorials; prefer the bundled templates and run the helper script `new_notebook.py` to generate a clean starting notebook.
pdf-processing-pro
davila7
Production-ready PDF processing with forms, tables, OCR, validation, and batch operations. Use when working with complex PDF workflows in production environments, processing large volumes of PDFs, or requiring robust error handling and validation.
python-repl
gptme
Interactive Python REPL automation with common helpers and best practices
math-router
parcadei
Deterministic router for math cognitive stack - maps user intent to exact CLI commands
obspy-data-api
benchflow-ai
An overview of the core data API of ObsPy, a Python framework for processing seismological data. It is useful for parsing common seismological file formats, or manipulating custom data into standard objects for downstream use cases such as ObsPy's signal processing routines or SeisBench's modeling API.