К основному содержанию
скилл CX Codex

tooluniverse-sdk — скилл для Claude Code: Python SDK для научных

Скилл учит агента работать с Python SDK ToolUniverse: три способа вызова инструментов, пакетные запросы и поиск по базе инструментов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mims-harvard/ToolUniverse --skill tooluniverse-sdk -a claude-code
Открыть на GitHub

Что делает tooluniverse-sdk

Скилл описывает, как писать код на Python SDK ToolUniverse для научных задач. Внутри три способа вызова инструментов: tu.run({"name": ..., "arguments": ...}) — самый переносимый, tu.tools.ToolName(param=value) для интерактивной работы и прямое создание класса, которое обходит кеш и хуки.

Перед любым вызовом нужно выполнить tu.load_tools(), иначе инструменты не поднимутся. Имена инструментов чувствительны к регистру, а Tool_Finder_Keyword возвращает вложенную структуру — доставать список надо через tools['tools'] после проверки isinstance(tools, dict). Для поиска инструментов через LLM нужен OPENAI_API_KEY; NCBI_API_KEY необязателен. Кеш включается по вызову: tu.tools.some_tool(param="value", use_cache=True), это опция фреймворка, а не аргумент ToolUniverse().

Пакетные вызовы идут через tu.run_batch(calls), а hooks_enabled=True включает автосуммаризацию длинных ответов. Категории можно грузить выборочно: tu.load_tools(categories=["proteins", "drugs"]). В примере с ChEMBL есть подвох: он принимает ChEMBL target ID, а не Ensembl ID из результатов OpenTargets, поэтому их надо сначала смапить, например через ChEMBL_search_targets. Это повод проверить свой пайплайн до запуска.

Какие задачи решает

  • собрать пайплайн поиска лекарств от болезни до соединений
  • вызвать инструменты UniProt и ChEMBL из одного скрипта
  • прогнать пакет запросов по списку идентификаторов
  • найти нужный инструмент по описанию на естественном языке
  • подключить ToolUniverse к MCP-серверу

Примеры запросов агенту

  • Напиши скрипт на ToolUniverse: загрузи инструменты и найди белки по описанию «protein structure»
  • Сделай пакетный вызов UniProt_get_entry_by_accession для списка accession через tu.run_batch
  • Покажи, как закешировать детерминированный вызов инструмента и посмотреть статистику кеша

Как установить tooluniverse-sdk

1Через Skills CLI (Vercel)

npx skills add mims-harvard/ToolUniverse --skill tooluniverse-sdk -a claude-code

2Вручную: положить файлы

~/.claude/skills/tooluniverse-sdk/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/tooluniverse-sdk/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о tooluniverse-sdk

Как установить tooluniverse-sdk в Claude?

Выполните npx skills add mims-harvard/ToolUniverse --skill tooluniverse-sdk -a claude-code. После этого файл скилла лежит в ~/.claude/skills/tooluniverse-sdk/SKILL.md.

Что делает tooluniverse-sdk?

Описывает работу с Python SDK ToolUniverse: три способа вызова инструментов, загрузку инструментов, пакетные запросы, интеграцию с MCP-сервером и поиск инструментов по эмбеддингам.

Что нужно, чтобы скилл заработал?

Сам SDK ставится через pip install tooluniverse, для поиска инструментов через LLM нужен OPENAI_API_KEY. Перед вызовом инструментов обязательно выполните tu.load_tools().

Исходный текст

SKILL.md · Apache-2.0
---
name: tooluniverse-sdk
description: 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.
disable-model-invocation: true
---

# 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

```bash
pip install tooluniverse              # Standard
pip install tooluniverse[embedding]   # Embedding search (GPU)
pip install tooluniverse[all]         # All features
```

```bash
export OPENAI_API_KEY="sk-..."  # Required for LLM tool search
export NCBI_API_KEY="..."       # Optional
```

## Quick Start

```python
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

```python
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

```python
def drug_discovery_pipeline(disease_id):
    tu = ToolUniverse()
    tu.load_tools()
    try:
        targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId(efoId=disease_id)
        # ChEMBL takes ChEMBL target IDs, not the Ensembl IDs in `targets`;
        # map them first (e.g. via ChEMBL_search_targets). Example IDs: EGFR, COX-2
        chembl_target_ids = ["CHEMBL203", "CHEMBL230"]
        compound_calls = [
            {"name": "ChEMBL_search_activities",
             "arguments": {"target_chembl_id": tid, "limit": 10}}
            for tid in chembl_target_ids
        ]
        compounds = tu.run_batch(compound_calls)
        return {"targets": targets, "compounds": compounds}
    finally:
        tu.close()
```

## Configuration

```python
# Caching: opt in per call (use_cache is a framework option on tools.X(...),
# not an argument to ToolUniverse() or to the tool itself)
tu = ToolUniverse()
result = tu.tools.some_tool(param="value", 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

```python
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](REFERENCE.md) for detailed guides.

© mims-harvard · Apache-2.0 · mims-harvard/ToolUniverse

Похожие скиллы

Всё по теме «Наука и исследования» →
exploratory-data-analysis davila7 Скилл для Claude, который определяет формат научного файла и собирает отчёт о структуре, качестве и дальнейших шагах анализа. 279установок vastai-sdk vast-ai Скилл подсказывает агенту, как через Python SDK управлять GPU-инстансами, томами и серверлесс-эндпоинтами на Vast.ai. Пригодится, когда арендуешь GPU и хочешь автоматизировать запуск. CX Codex +1 333установок scientific-schematics K-Dense-AI Создаёт черновики научных схем в PNG и проверяет их качество через отдельную модель. Пригодится для архитектур нейросетей, блок-схем и биологических путей. CX Codex +1 2 200установок scholar-evaluation K-Dense-AI Скилл проводит качественный развивающий разбор научных черновиков и протоколов с привязкой к источникам. Помогает проверить рубрики оценки без метрик престижа. CX Codex +1 2 100установок aws-sdk-python-usage aws Скилл задаёт правила кодинга на Python с библиотеками boto3 и botocore. Он подсказывает агенту, когда брать client или resource, как настраивать пагинацию и перехватывать ошибки AWS. CX Codex +1 7 800установок catalyst-sdk catalystbyzoho Скилл подсказывает агенту, как инициализировать Catalyst SDK и обращаться к сервисам на Node.js, Python, Java, в браузере и на мобильных. CX Codex +1 1 000установок

Из того же набора55

tooluniverse-statistical-modeling Запускает статистические модели для биомедицинских данных: сплайны, логистическую регрессию, анализ мощности и расчёт нежелательных явлений в клинических исследованиях. CX Codex +1 402установок tooluniverse-multi-omics-integration Скилл сводит несколько омикс-слоёв в один анализ: сопоставляет образцы, считает кросс-корреляции, кластеризует пациентов и собирает отчёт. CX Codex +1 398установок tooluniverse-protein-therapeutic-design Скилл ведёт de novo дизайн терапевтических белков через RFdiffusion и ProteinMPNN. Помогает строить остовы, подбирать аминокислотные последовательности и валидировать структуры. CX Codex +1 398установок tooluniverse-drug-repurposing Скилл ищет, для каких ещё болезней может подойти уже одобренный препарат, и раскладывает кандидатов по силе доказательств. CX Codex +1 397установок tooluniverse-chemical-safety Скилл для оценки токсичности химических веществ и лекарств: собирает данные о hazard-классах, ADMET-предсказаниях и связях с генами и болезнями. CX Codex +1 396установок tooluniverse-binder-discovery Скилл ведёт агента по фазам поиска малых молекул для белковой мишени: оценка druggability, добыча известных лигандов, расширение по сходству, фильтр ADMET. CX Codex +1 390установок tooluniverse-metabolomics-analysis Скилл ведёт анализ метаболомных данных от загрузки пиков до биологических путей. Помогает обрабатывать масс-спектрометрию, убирать батч-эффекты и искать биомаркеры. CX Codex +1 390установок tooluniverse-gene-enrichment Скилл запускает анализ обогащения генных наборов через gseapy и clusterProfiler. Пригодится при интерпретации списков дифференциально экспрессированных генов. CX Codex +1 388установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой