Comprehensive FAQΒΆ

This page contains detailed answers to frequently asked questions about ToolUniverse.

Tip

Need a quick answer?

For brief answers to the most common questions, see Quick FAQ. This page provides comprehensive information with detailed explanations, troubleshooting tips, and advanced topics.

General QuestionsΒΆ

What is ToolUniverse?ΒΆ

ToolUniverse is a comprehensive collection of scientific tools for Agentic AI, offering integration with various scientific databases and services. It provides a unified interface to access data from FDA, OpenTargets, ChEMBL, PubTator, and many other sources.

Use ToolUniverse as a Python library:

from tooluniverse import ToolUniverse
tu = ToolUniverse()
tu.load_tools()

What databases are supported?ΒΆ

ToolUniverse integrates with 20+ scientific databases:

  • Drug Information: FDA FAERS, ChEMBL, PubChem, DrugBank

  • Gene/Protein Data: UniProt, Ensembl, Human Protein Atlas

  • Disease Information: OpenTargets, DisGeNET, OMIM

  • Literature: PubMed, PubTator

  • Clinical Data: ClinicalTrials.gov, UK Biobank

  • Pathway Analysis: Enrichr, KEGG, Reactome

Installation & SetupΒΆ

How do I install ToolUniverse?ΒΆ

pip install tooluniverse

Do I need API keys?ΒΆ

Most tools work without API keys! However, some tools require authentication or provide higher rate limits with API keys.

Quick answer:

  • No API keys needed for most tools (PubMed, UniProt, ChEMBL, OpenTargets, etc.)

  • Recommended for better performance: NCBI, FDA (3-10x faster rate limits)

  • Required for specific features: NVIDIA NIM (structure prediction), USPTO (patents), DisGeNET, OMIM

For complete details, see API Keys and Authentication which covers all API keys, how to obtain them, rate limits, and configuration methods.

Common IssuesΒΆ

Why am I getting rate limit errors?ΒΆ

Many scientific APIs have rate limits. ToolUniverse implements automatic rate limiting, but you may still encounter limits:

Register for API keys to get higher rate limits:

# Higher limits with API key
os.environ['NCBI_API_KEY'] = 'your_key'

Tool returns empty results?ΒΆ

Check these common issues:

  1. Correct identifiers: Ensure you’re using the right ID format

  2. API connectivity: Test your internet connection

  3. Service status: Check if the external service is available

  4. Query parameters: Verify your search parameters are valid

# Example: Retrieve UniProt function by accession
query = {
    "name": "UniProt_get_function_by_accession",
    "arguments": {"accession": "P38398"}  # BRCA1 accession
}

MCP IntegrationΒΆ

How do I use ToolUniverse with Claude?ΒΆ

  1. Start MCP Server:

    tooluniverse-smcp
    
  2. Configure Claude Desktop:

    Add to your Claude configuration:

    {
      "mcpServers": {
        "tooluniverse": {
          "command": "tooluniverse-smcp-stdio",
          "args": ["--compact-mode"]
        }
      }
    }
    
  3. Test the connection:

    Ask Claude: β€œWhat tools are available from ToolUniverse?”

Can I use multiple MCP servers?ΒΆ

Yes! You can run multiple ToolUniverse instances or combine with other MCP servers:

{
  "mcpServers": {
    "tooluniverse-main": {
      "command": "tooluniverse-smcp",
      "args": ["--port", "3000", "--compact-mode"]
    },
    "tooluniverse-dev": {
      "command": "tooluniverse-smcp",
      "args": ["--port", "3001", "--compact-mode", "--load", "community/dev-tools"]
    }
  }
}

DevelopmentΒΆ

How do I add a new tool?ΒΆ

  1. Create tool class:

    from tooluniverse.base_tool import BaseTool
    
    class MyNewTool(BaseTool):
        def __init__(self):
            super().__init__(
                name="my_new_tool",
                description="Description of what it does"
            )
    
        def run(self, **kwargs):
            # Implementation here
            return results
    
  2. Register the tool:

    from tooluniverse import ToolRegistry
    
    registry = ToolRegistry()
    registry.register_tool(MyNewTool)
    
  3. Add tests:

    def test_my_new_tool():
        tool = MyNewTool()
        result = tool.run(test_parameter="test_value")
        assert result is not None
    

How do I contribute?ΒΆ

  1. Fork the repository

  2. Create a feature branch

  3. Add your changes with tests

  4. Submit a pull request

See our about/contributing Tutorial for detailed instructions.

PerformanceΒΆ

How can I speed up queries?ΒΆ

import os
os.environ["TOOLUNIVERSE_CACHE_DEFAULT_TTL"] = "3600"  # 1 hour
tu = ToolUniverse()
result = tu.run(..., use_cache=True)

Why is the first query slow?ΒΆ

The first query often takes longer because:

  1. Tool loading: Tools are loaded on first use

  2. API connection: Initial connection setup

  3. Authentication: API key validation

Subsequent queries will be much faster.

TroubleshootingΒΆ

Getting import errors?ΒΆ

Common solutions:

pip install tooluniverse[all]

Network connectivity issues?ΒΆ

  1. Check internet connection

  2. Verify proxy settings if behind corporate firewall

  3. Test specific endpoints:

    import requests
    response = requests.get('https://platform-api.opentargets.org/api/v4/graphql')
    print(response.status_code)
    
  4. Configure timeouts:

    tu = ToolUniverse(timeout=30)
    

Still Having Issues?ΒΆ

If you can’t find the answer here:

  1. Check the documentation: Tutorial Navigation

  2. Search existing issues: GitHub Issues

  3. Ask the community: Join our Discord server

  4. Report a bug: Create a new GitHub issue with details

Note

When reporting issues, please include:

  • ToolUniverse version

  • Python version

  • Operating system

  • Full error message

  • Minimal code example