Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
mims-harvard avatar

Tooluniverse Sdk

  • 352 installs
  • 1.6k repo stars
  • Updated August 4, 2026
  • mims-harvard/tooluniverse

tooluniverse-sdk is an agent integration skill that wires the Harvard ToolUniverse Python SDK and SMCP MCP server into coding agents to register, discover, validate, and invoke 1000+ scientific tools from production rese

About

tooluniverse-sdk is an agent skill from mims-harvard/ToolUniverse that teaches developers to wire the Harvard ToolUniverse SDK and SMCP MCP server into agent or MCP runtimes. ToolUniverse is an ecosystem integrating 1000+ machine learning models, datasets, APIs, and scientific packages behind a standardized AI-Tool Interaction Protocol, with 68 pre-built research workflows for drug discovery and related domains. The skill covers registering tools, loading catalogs, validating schemas, and calling scientific utilities from production pipelines via Python SDK or MCP transports (stdio, HTTP, SSE). Developers reach for tooluniverse-sdk when building AI scientist agents that need programmatic access to biomedical databases, analysis tools, and remote MCP servers. SMCP exposes 350+ scientific tools through FastMCP with tools/find and tools/search discovery methods.

  • Harvard MIMS ToolUniverse SDK setup
  • Tool catalog registration and discovery
  • Schema validation for callable tools
  • Agent and MCP runtime integration patterns

Tooluniverse Sdk by the numbers

  • 352 all-time installs (skills.sh)
  • +5 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #2,128 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-sdk

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs352
repo stars1.6k
Last updatedAugust 4, 2026
Repositorymims-harvard/tooluniverse

How do you integrate ToolUniverse SDK with agents?

Wire the Harvard ToolUniverse SDK into agent or MCP runtimes to register tools, load catalogs, validate schemas, and call scientific or general utilities from production pipelines.

Who is it for?

ML engineers and research developers building AI scientist agents that need programmatic access to Harvard ToolUniverse's scientific tool catalog via SDK or MCP.

Skip if: Developers building generic CRUD APIs without scientific tool discovery, schema validation, or research workflow orchestration needs.

When should I use this skill?

User asks to set up ToolUniverse, wire SMCP MCP server, register scientific tools, or call ToolUniverse SDK from an agent pipeline.

What you get

MCP server configs, registered tool catalogs, validated tool schemas, and callable scientific utility pipelines.

  • MCP server configuration
  • Registered tool catalogs
  • Validated tool call pipelines

By the numbers

  • Integrates 1000+ machine learning models, datasets, APIs, and scientific packages
  • SMCP MCP server exposes 350+ scientific tools
  • Repository includes 68 pre-built research workflows

Files

SKILL.mdMarkdownGitHub ↗

ToolUniverse Python SDK

3 calling patterns -- start with pattern 1: 1. tu.run({"name": ..., "arguments": ...}) -- single tool call, dict API (most portable) 2. tu.tools.ToolName(param=value) -- function API (recommended for interactive use) 3. 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

1. Always call `load_tools()` before using any tools 2. Tool Finder returns nested structure: access via tools['tools'] after isinstance(tools, dict) check 3. Tool names are case-sensitive: UniProt_get_entry_by_accession not uniprot_get_... 4. Check required params: tu.all_tool_dict["ToolName"]['parameter'].get('required', []) 5. 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

CategoryToolsUse Cases
ProteinsUniProt, RCSB PDB, AlphaFoldProtein analysis, structure
DrugsDrugBank, ChEMBL, PubChemDrug discovery, compounds
GenomicsEnsembl, NCBI Gene, gnomADGene analysis, variants
DiseasesOpenTargets, ClinVarDisease-target associations
LiteraturePubMed, Europe PMCLiterature search
ML ModelsADMET-AI, AlphaFoldPredictions, modeling
PathwaysKEGG, ReactomePathway analysis

Resources

  • Docs: https://zitniklab.hms.harvard.edu/ToolUniverse/
  • GitHub: https://github.com/mims-harvard/ToolUniverse
  • See REFERENCE.md for detailed guides.

Related skills

How it compares

Pick tooluniverse-sdk for scientific research tool catalogs; use generic MCP wrappers when you only need a single API without schema-validated tool discovery.

FAQ

How do you install ToolUniverse for agents?

ToolUniverse installs via uvx tooluniverse for MCP config or uv pip install tooluniverse for Python SDK access. Agent skills install with npx skills add mims-harvard/ToolUniverse.

How many tools does ToolUniverse expose?

ToolUniverse integrates 1000+ machine learning models, datasets, APIs, and scientific packages. The SMCP MCP server bridges 350+ scientific tools with discovery via tools/find and tools/search.

AI & Agent Buildingagentsautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.