Skip to main content
Glama

biothings-mcp

Tests PyPI version

MCP (Model Context Protocol) server for Biothings.io

This server implements the Model Context Protocol (MCP) for BioThings, providing a standardized interface for accessing and manipulating biomedical data. MCP enables AI assistants and agents to access specialized biomedical knowledge through structured interfaces to authoritative data sources. Supported BioThings data sources include:

If you want to understand more what is Model Context Protocol and how to use it more efficiently you can take DeepLearning AI Course or just search for MCP videos on YouTube.

About MCP (Model Context Protocol)

MCP is a protocol that bridges the gap between AI systems and specialized domain knowledge. It enables:

  • Structured Access: Direct connection to authoritative biomedical data sources

  • Natural Language Queries: Simplified interaction with specialized databases

  • Type Safety: Strong typing and validation through biothings-typed-client

  • AI Integration: Seamless integration with AI assistants and agents

Related MCP server: Synapse MCP Server

Available API Interfaces

This server provides dedicated API interfaces for different BioThings data types, leveraging the biothings-typed-client library. These interfaces are implemented using the following tool handlers:

  • Gene Interface: GeneTools (wraps GeneClientAsync)

  • Variant Interface: VariantTools (wraps VariantClientAsync)

  • Chemical Interface: ChemTools (wraps ChemClientAsync)

  • Taxon Interface: TaxonTools (wraps TaxonClientAsync)

  • Download Interface: DownloadTools (provides file download and sequence analysis capabilities)

Local File Saving Features

The server includes local file saving capabilities through the DownloadTools interface, which provides:

Download Tools

  • download_entrez_data: Download data from NCBI Entrez databases (returns content as string)

  • download_entrez_data_local: Download data from NCBI Entrez databases and save to local file

Output Directory Management

  • Default Location: Files are saved to biothings_output/ directory in the current working directory

  • Custom Location: Use --output-dir parameter to specify a custom output directory

  • Automatic Creation: Output directories are created automatically if they don't exist

  • Unique Filenames: Auto-generated filenames include UUID prefixes to avoid conflicts

Supported File Formats

  • FASTA: .fasta extension for sequence data

  • GenBank: .gb extension for GenBank format data

  • Alignment: .aln extension for alignment results

  • JSON: .json extension for structured data

  • Text: .txt extension for general text data

Quick Start

Installing uv

# Download and install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# Verify installation
uv --version
uvx --version

uvx is a very nice tool that can run a python package installing it if needed.

Running with uvx

You can run the biothings-mcp server directly using uvx without cloning the repository:

STDIO Mode (for MCP clients that require stdio, can be useful when you want to save files)

# Run the server in STDIO mode (default mode)
uvx biothings-mcp

# Or explicitly specify stdio mode
uvx --from biothings-mcp stdio

# With custom output directory
uvx --from biothings-mcp stdio --output-dir ./my_data

HTTP Streamable Mode (Web Server)

# Run the server in streamable HTTP mode on default port (3001)
uvx --from biothings-mcp server run

# Run on a custom port
uvx --from biothings-mcp server run --port 8000

# Run on custom host and port
uvx --from biothings-mcp server run --host 0.0.0.0 --port 8000

# With custom output directory
uvx --from biothings-mcp server run --output-dir ./my_data

SSE Mode (Server-Sent Events)

# Run the server in SSE mode on default port (3001)
uvx --from biothings-mcp sse

# Run on a custom port
uvx --from biothings-mcp sse --port 8000

The HTTP streamable mode will start a web server that you can access at http://localhost:3001/mcp (with documentation at http://localhost:3001/docs). The STDIO mode is designed for MCP clients that communicate via standard input/output, while SSE mode uses Server-Sent Events for real-time communication.

Configuring your (Anthropic Claude Desktop, Cursor, Windsurf, etc.)

We provide stdio configuration using the proxy (might need npx to run):

  • mcp-config-remote.json - for remote configuration

  • mcp-config-stdio.json - stdio configuration for localhost for MCP clients which do not support

Inspecting Biothings MCP server

If you want to inspect the methods provided by the MCP use npx (you may need to install nodejs and npm)

Test your MCP setup with the MCP Inspector.

If you want to inspect local streamable-http server you use:

npx @modelcontextprotocol/inspector --config mcp-config.json --server biothings-mcp

Add -remote suffix for the remote server.

If you want to inspect stdio local server you should use

npx @modelcontextprotocol/inspector --config mcp-config-stdio.json --server biothings-mcp

You can also run inspector manually and put server parameters in the interface:

npx @modelcontextprotocol/inspector

After that you can explore its methods with MCP Inspector at http://127.0.0.1:6274

Repository setup

# Clone the repository
git clone https://github.com/longevity-genie/biothings-mcp.git
cd biothings-mcp
uv sync

Running the MCP Server

If you already cloned the repo you can run the server with uv

# Start the MCP server in HTTP streamable mode (default port 3001)
uv run server run

# Run in STDIO mode
uv run stdio

# Run in SSE mode
uv run sse

# Run with custom port
uv run server run --port 8000

# Run with custom output directory
uv run server run --output-dir ./my_data

Integration with AI Systems

To integrate this server with your MCP-compatible AI client, you can use one of the preconfigured JSON files provided in this repository:

  • For connecting to a locally running server: Use mcp-config.json. Ensure the server is running first, either via uv run server (see Running the MCP Server) or docker-compose up (see Docker Deployment).

  • For connecting to the publicly hosted server: Use mcp-config-remote.json. This connects to https://biothings.longevity-genie.info/mcp and doesn't require you to run anything locally.

Simply point your AI client (like Cursor, Windserve, ClaudeDesktop, VS Code with Copilot, or others) to use the appropriate configuration file.

Here's an example of how the tools might appear in an MCP client like Cursor after configuration:

Cursor Usage Example

KNOWN ISSUES

The library is beta-quality. The major problem right now is that LLM-s are often stupid and do not know how to put valid gene and gene variant symbols. We plan to mitigrate it by extending comments and providing additional method for entity resolution.

Testing & Verification

Run tests for the API endpoint:

uv run pytest -vvv -s

You can use MCP inspector with locally build MCP server same way as with uvx

Note: Using the MCP Inspector is optional. Most MCP clients (like Cursor, Windsurv, etc.) will automatically display the available tools from this server once configured. However, the Inspector can be useful for detailed testing and exploration.

If you choose to use the Inspector via npx, ensure you have Node.js and npm installed. Using nvm (Node Version Manager) is recommended for managing Node.js versions.

This opens a web interface where you can explore and test all available tools.

Documentation

For detailed documentation about the MCP protocol and its implementation, refer to:

License

This project is licensed under the MIT License.

Acknowledgments

We are supported by:

HEALES

HEALES - Healthy Life Extension Society

and

IBIMA

IBIMA - Institute for Biostatistics and Informatics in Medicine and Ageing Research

Available Tools

19 tools
biothings_download_entrez_dataA

Download data from NCBI Entrez databases using Bio.Entrez.

        Downloads data records from specified NCBI Entrez databases. This tool is designed to be called 
        by automated agents (like LLMs) or other services.

        **Critical Configuration:**
        The server hosting this API *must* have the `ENTREZ_EMAIL` environment variable set
        to a valid email address. NCBI requires this for Entrez queries to monitor usage
        and prevent abuse. Without it, NCBI may block requests.

        **Parameters:**
        - `ids` (List[str], required): A list of unique identifiers for the records to fetch
          from the specified Entrez database. Example: `["NM_000546.6", "AY123456.1"]`
        - `db` (DB_LITERAL, required): The target NCBI Entrez database.
          Common choices for sequences: 'nucleotide', 'protein'.
          Other examples: 'gene', 'pubmed', 'taxonomy'.
          Ensure the `ids` provided are appropriate for the selected `db`.
        - `reftype` (Literal["fasta", "gb"], required): The desired format for the
          downloaded data.
            - "fasta": Returns data in FASTA format.
            - "gb": Returns data in GenBank format.
          Ensure the chosen `reftype` is compatible with the selected `db`.

        **Returns:**
        On success: Returns the downloaded data as a single raw string with the
        data fetched from Entrez in the specified `reftype`.
        
        **Example Usage:**
        To fetch the FASTA sequence for human TP53 mRNA (NM_000546.6):
        ```
        download_entrez_data(
            ids=["NM_000546.6"],
            db="nucleotide",
            reftype="fasta"
        )
        ```
        
ParametersJSON Schema
NameRequiredDescriptionDefault
dbYes
idsYes
reftypeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the need for ENV variable, return format (raw string), and mentions NCBI blocking possibility. It lacks details on rate limits, error handling, or empty results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with sections (Critical Configuration, Parameters, Returns, Example). It contains some redundancy (e.g., 'This tool is designed to be called...'). Could be more concise without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters, no annotations, and an output schema (though not provided), the description covers essential aspects: parameter details, configuration, return value type, and an example. It is complete enough for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (no descriptions in schema). The description compensates with detailed explanations: ids (list with example), db (enum with common choices and caution), reftype (two literals with format descriptions). This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool downloads data from NCBI Entrez databases using Bio.Entrez. It uses specific verb (download) and resource (Entrez databases). However, it does not differentiate from the sibling tool 'biothings_download_entrez_data_local'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides critical configuration requirements (ENTREZ_EMAIL) and an example, but does not explicitly state when to use this tool versus alternatives (e.g., local version). No exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_download_entrez_data_localA

Download data from NCBI Entrez databases and save to local file.

        Same as download_entrez_data but saves the result to a local file instead of returning the content.
        This is useful for large downloads or when you want to persist the data.

        **Parameters:**
        - `ids` (List[str], required): A list of unique identifiers for the records to fetch
        - `db` (DB_LITERAL, required): The target NCBI Entrez database
        - `reftype` (Literal["fasta", "gb"], required): The desired format for the downloaded data
        - `output_path` (Optional[str]): Custom output path. If None, generates unique filename
        
        **Returns:**
        LocalFileResult containing:
        - `path`: Path to the saved file
        - `format`: File format used
        - `success`: Whether the operation succeeded
        - `error`: Error message if failed
        
        **Example Usage:**
        ```
        download_entrez_data_local(
            ids=["NM_000546.6"],
            db="nucleotide",
            reftype="fasta",
            output_path="tp53_sequence.fasta"
        )
        ```
        
ParametersJSON Schema
NameRequiredDescriptionDefault
dbYes
idsYes
reftypeYes
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the behavior of saving to a local file, the output structure (LocalFileResult with path, format, success, error), and mentions that if output_path is None, a unique filename is generated. It does not mention potential side effects like overwriting files, but the unique filename generation mitigates that. The description adequately covers the core behavioral trait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for description, parameters, returns, and example. It front-loads the core purpose and sibling differentiation in the first two sentences. Every sentence adds value, and the example code block is concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters and a sibling tool, the description covers all necessary aspects: core action, differentiation from sibling, parameter details, return structure, and usage example. No gaps remain for the agent to make an informed decision.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does so excellently: each parameter is listed with type, requirement, and for db and reftype, the enum values are referenced. It explains the behavior of output_path (optional, custom path or unique filename). An example usage is provided that ties all parameters together.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Download data from NCBI Entrez databases and save to local file.' It immediately distinguishes itself from the sibling tool biothings_download_entrez_data by explaining that this version saves to a file instead of returning content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'useful for large downloads or when you want to persist the data.' This implies when not to use it (when you want the content directly), effectively guiding the agent to choose between the two sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_get_chemB

Fetch a specific chemical compound by ID (e.g., InChIKey, PubChem CID).

    Retrieves detailed information about a specific chemical compound using its identifier.
    
    **Supported ID formats:**
    - InChIKey: "KTUFNOKKBVMGRW-UHFFFAOYSA-N" (Glucose)
    - PubChem CID: "5793" (Glucose)
    - SMILES: "C([C@@H]1[C@H]([C@@H]([C@H]([C@H](O1)O)O)O)O"
    
    Returns comprehensive chemical information including structural properties, physical properties, 
    chemical properties, stereochemistry information, and chemical identifiers.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
chem_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoChemical identifier (typically InChIKey)
pubchemNoDetailed PubChem information
versionNoVersion number of the data

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It lists the types of information returned (structural, physical, chemical, stereochemistry, identifiers) but does not mention side effects, authentication, rate limits, or error handling. Adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose but includes a bullet list of ID formats and return categories that could be more concise. It is somewhat wordy for the value added.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema existing, return value documentation is covered. However, the description omits details for two parameters (email, fields), making it less complete for a tool with 3 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description only explains the chem_id parameter with examples, leaving email and fields completely undocumented. This fails to compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fetch' and the resource 'specific chemical compound by ID', supported by examples of ID formats. It distinguishes from sibling tools like biothings_get_chems (plural) which imply batch retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies single-compound retrieval but does not explicitly state when to use it over alternatives like biothings_query_chems or biothings_get_chems. No exclusions or alternative guidance provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_get_chemsA

Fetch multiple chemical compounds by a comma-separated list of IDs.

    Retrieves information for multiple chemical compounds in a single request.
    
    **Input Format:** Accepts comma-separated list of chemical IDs in various formats:
    - InChIKeys: "KTUFNOKKBVMGRW-UHFFFAOYSA-N,XEFQLINVKFYRCS-UHFFFAOYSA-N"
    - PubChem CIDs: "5793,5281"
    - Mixed formats: "KTUFNOKKBVMGRW-UHFFFAOYSA-N,5281"
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
chem_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It indicates a read operation (fetch) but does not disclose what happens with invalid IDs, rate limits, or authentication needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise with a clear structure including an Input Format subsection. However, it contains slight redundancy ('Retrieves information' repeats the purpose).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an existing output schema, the description lacks guidance on optional parameters (email, fields) and does not mention pagination or response shape. It is adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%. The description adds meaningful context for chem_ids (formats, examples) but does not explain email or fields parameters, nor their possible values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches multiple chemical compounds by a comma-separated list of IDs. It distinguishes from biothings_get_chem (singular) and provides specific input format examples.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when you have a list of IDs but does not explicitly contrast with alternative tools like biothings_query_chems or provide conditions for when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_get_geneA

Fetch a specific gene by Entrez or Ensembl ID.

    Retrieves detailed information for a **single, specific gene** using its exact known identifier.
    **This is the preferred tool over `query_genes` for fetching a specific gene when you already know 
    its standard ID (Entrez or Ensembl) and don't need complex search filters.**
    
    **Supported Identifiers:**
    - Entrez Gene ID: e.g., `1017`
    - Ensembl Gene ID: e.g., `ENSG00000123374`
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
gene_idYes
speciesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoGene identifier
nameNoGene name
scoreNoSearch score
taxidNoTaxonomy ID
refseqNoRefSeq information
symbolNoGene symbol
ensemblNoEnsembl information
summaryNoGene summary
uniprotNoUniProt information
entrezgeneNoEntrez Gene ID
genomic_posNoGenomic position information

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description discloses that it retrieves detailed info for a single gene. It lacks details on error handling or rate limits, but the non-destructive read-only nature is clear from the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise, uses bullet points and bold for readability. It front-loads the purpose and is not overly verbose. Minor room for improvement by explaining additional parameters concisely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values are covered. However, the description lacks explanation for three of four parameters, which reduces completeness for a tool with moderate complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only explains the 'gene_id' parameter with examples. Other parameters ('email', 'fields', 'species') are not mentioned, leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it fetches a specific gene by Entrez or Ensembl ID. It uses a specific verb and resource, and distinguishes from sibling tool 'query_genes' by highlighting it is preferred when you already know the ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: when you have a known standard ID and don't need complex search filters. Also mentions it's preferred over 'query_genes', providing clear usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_get_gene_metadataA

Retrieve MyGene.info database metadata including stats and fields.

    Retrieve metadata about the underlying MyGene.info gene annotation database, **NOT** information about specific genes.
    **Use this tool ONLY to understand the database itself** (e.g., to discover available fields, check data versions, 
    or get overall statistics). It **CANNOT** be used to find or retrieve data for any particular gene.
    
    **Returned Information:**
    - `stats`: Database statistics (e.g., total number of genes)
    - `fields`: Available gene annotation fields and their data types
    - `index`: Information about the backend data index
    - `version`: Data version information
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
indexNo
statsYes
fieldsNo
versionNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes the return structure (stats, fields, index, version) and clarifies it is metadata, not gene data. However, it does not disclose other behavioral traits such as rate limits, authentication requirements, or side effects, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a concise first line, a bold warning for clarification, and a bullet-pointed list of returned information. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a metadata tool with a single optional parameter and an output schema, the description covers the main purpose and return values adequately. However, it lacks explanation of the email parameter and does not mention any limitations or when this tool is preferred over other sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter (email) with 0% schema description coverage. The description does not mention the email parameter at all, failing to explain its purpose or semantics. With low coverage, the description should compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves MyGene.info database metadata including stats and fields, and explicitly distinguishes this from retrieving specific gene data. The verb 'retrieve' and resource 'database metadata' are specific, and the description highlights that it is NOT for specific genes, effectively differentiating it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'Use this tool ONLY to understand the database itself' and 'It CANNOT be used to find or retrieve data for any particular gene.' This provides strong guidance on when to use and when not, but it does not name specific alternative tools for gene data retrieval, which would improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_get_genesA

Fetch multiple genes by a comma-separated list of Entrez or Ensembl IDs.

    Retrieves detailed information for **multiple specific genes** in a single request using their exact known identifiers.
    **This is the preferred tool over `query_many_genes` for fetching multiple specific genes when you already know 
    their standard IDs (Entrez, Ensembl) and don't need complex search filters.**
    
    **Input Format:** Accepts a comma-separated list of gene IDs (Entrez or Ensembl).
    **Example:** `gene_ids=1017,1018` or `gene_ids=ENSG00000123374,ENSG00000134057`
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
speciesNo
gene_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states that the tool retrieves detailed information in a single request and provides input format examples, but it does not disclose error handling, limits on ID count, authentication needs, or output structure beyond 'detailed information'. The existence of an output schema is noted but not detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose. It uses bold for emphasis and provides a clear example. A minor inefficiency: repeating the input format explanation could be streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema and four parameters, the description only covers one parameter and omits details on output format, allowed values for 'fields', default behavior for 'species', and any constraints. This leaves the agent with insufficient context to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only explains the 'gene_ids' parameter with format and examples. The 'email', 'fields', and 'species' parameters are completely undocumented, leaving significant ambiguity for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('fetch') and resource ('multiple genes'), and explicitly distinguishes itself from the sibling tool 'query_many_genes', making its purpose very clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('when you already know their standard IDs and don't need complex search filters') and directly names the alternative tool ('query_many_genes').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_get_taxonA

Fetch a specific taxon by NCBI ID or scientific name.

    Retrieves detailed information about a specific taxon using its identifier.
    
    **Supported Identifiers:**
    - NCBI ID: 9606 (Homo sapiens)
    - Scientific name: "Homo sapiens"
    
    Returns comprehensive taxon information including basic information (ID, scientific name, common name),
    taxonomic classification (rank, parent taxon), lineage information, alternative names and authorities,
    and gene data availability.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
taxon_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
_idYesTaxon identifier
rankNoTaxonomic rank
taxidNoTaxon ID
lineageNoTaxonomic lineage IDs
_versionNoVersion number
has_geneNoWhether the taxon has gene data
authorityNoTaxonomic authority
common_nameNoCommon name
other_namesNoOther names
parent_taxidNoParent taxon ID
uniprot_nameNoUniProt name
scientific_nameNoScientific name
genbank_common_nameNoGenBank common name

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully carries behavioral disclosure. It explains that the tool returns comprehensive taxon information, lists included categories (basic info, classification, lineage, etc.), and mentions supported identifier types. It lacks mention of authentication or rate limits, but for a read-only tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections and bullet points. It efficiently conveys key information without extraneous text. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description need not detail return values but does so helpfully. The description covers the main use case and parameters adequately but could mention the optional 'email' parameter for rate limiting or the 'fields' parameter options. Still, it is largely complete for a single-resource fetcher.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate. It thoroughly explains the main parameter 'taxon_id' with examples and accepted formats. However, it does not describe the 'email' and 'fields' parameters, leaving some ambiguity. The 'fields' default is 'all' but allowed values are unspecified. Thus it adds value but incompletely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool fetches a specific taxon by NCBI ID or scientific name, with concrete examples (e.g., 9606 for Homo sapiens). It clearly distinguishes from sibling tools like biothings_get_taxons (plural) which handles multiple taxa.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clarifies when to use this tool (for a single taxon lookup) and implies that for multiple taxa one should use biothings_get_taxons. However, it does not explicitly state when not to use it or provide alternative tools, which would strengthen guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_get_taxonsA

Fetch multiple taxa by a comma-separated list of NCBI IDs or scientific names.

    Retrieves information for multiple taxa in a single request.
    
    **Input Format:** Accepts comma-separated list of taxon IDs (either NCBI IDs or scientific names).
    **Examples:**
    - Multiple NCBI IDs: "9606,10090" (Homo sapiens and Mus musculus)
    - Multiple scientific names: "Homo sapiens,Mus musculus"
    - Mixed IDs: "9606,Mus musculus" (Homo sapiens by NCBI ID and Mus musculus by name)
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
taxon_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states it retrieves information for multiple taxa in a single request and gives format examples. However, it does not disclose error handling (e.g., partial failures), rate limits, authentication, or what happens with invalid IDs, leaving gaps in behavioral understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose and includes helpful examples. At 10 lines, it is slightly verbose but each sentence adds value. It is well-structured and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values are covered. The description explains the required parameter well but omits details about optional parameters (email, fields) and their defaults. For a simple fetch tool, it is moderately complete but could be improved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 3 parameters (email, fields, taxon_ids) with 0% description coverage. The description adds meaning to 'taxon_ids' by specifying comma-separated format and examples, but does not explain 'email' or 'fields'. Thus, it partially compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch multiple taxa by a comma-separated list of NCBI IDs or scientific names,' specifying the action, resource, and input format. It distinguishes itself from siblings like 'biothings_get_taxon' (singular) and 'biothings_query_taxons' (likely query-based).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit input format and examples, making it clear when to use the tool (fetching multiple taxa by IDs/names). It does not explicitly state when not to use it or mention alternatives, but the sibling tool names imply singular vs plural and fetch vs query distinctions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_get_variantA

Fetch a specific variant by HGVS or rsID.

    Retrieves detailed annotation data for a **single, specific variant** using its identifier.
    **This is the preferred tool over `query_variants` for fetching a specific variant when you already know 
    its standard ID (HGVS or rsID) and don't need complex search filters.**
    
    **Supported Identifiers:**
    - HGVS ID (e.g., `chr7:g.140453134T>C`). *Note: MyVariant.info primarily uses hg19-based HGVS IDs.*
    - dbSNP rsID (e.g., `rs58991260`)
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
variant_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoVariant identifier
vcfNoVCF information
caddNoCADD scores and predictions
docmNoDoCM annotations
hg19NoHG19 genomic location
chromNoChromosome number
dbsnpNodbSNP annotations
mutdbNoMutDB annotations
cosmicNoCOSMIC annotations
dbnsfpNodbNSFP functional predictions
snpeffNoSnpEff annotations
clinvarNoClinVar annotations
versionNoVersion number

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool retrieves detailed annotation data, which implies a read operation. It also notes the hg19 base for HGVS IDs, a useful behavioral nuance. However, it does not mention any authorization requirements, rate limits, or that it is a read-only operation explicitly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections and bullet points, making it easy to scan. It is concise but contains some redundancy (e.g., repeating 'specific variant' multiple times). Overall, it is efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (not visible) and the tool has 3 parameters, the description covers the main purpose and the key parameter well. However, the lack of documentation for `email` and `fields` reduces completeness. For a single-variant fetch tool, it is adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description only explains the `variant_id` parameter with examples and notes. The `email` and `fields` parameters are completely undocumented in the description, leaving the agent without guidance on how to use them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it fetches a specific variant by HGVS or rsID, and distinguishes itself from the sibling tool `query_variants` by emphasizing it is for single, specific identifiers. The verb 'Fetch' and resource 'variant' are clear, and the scope is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'This is the preferred tool over query_variants for fetching a specific variant when you already know its standard ID.' It also lists supported identifiers, giving clear context for when to use this tool instead of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_get_variantsA

Fetch multiple variants by a comma-separated list of HGVS or rsIDs.

    Retrieves annotation data for **multiple specific variants** in a single request using their identifiers.
    **This is the preferred tool over `query_many_variants` for fetching multiple specific variants when you already know 
    their standard IDs (HGVS or rsID).**

    **Input Format:** Accepts a comma-separated list of variant IDs (HGVS or dbSNP rsIDs).
    **Examples:** `variant_ids=chr7:g.140453134T>C,chr1:g.69511A>G` or `variant_ids=rs58991260,rs2500`
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
variant_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It states retrieval of annotation data and input format, but omits behaviors like required authentication, rate limits, handling of invalid IDs, or maximum number of variants per request. Output schema exists but description doesn't hint at response structure. Gaps in behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is relatively short and front-loaded with the core purpose. Uses bullet-style formatting for examples. Could be slightly more concise by removing redundant phrasing, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, return values need no explanation. However, the description lacks details on the optional parameters (`email`, `fields`) and does not discuss behavior limits or error handling. The variant_ids parameter is well-covered, but the tool's overall context is incomplete for a tool with 3 parameters and no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. It thoroughly explains the `variant_ids` parameter format with examples, but provides no information on `email` or `fields` parameters. Adds meaning beyond schema only for one of three parameters, leaving others undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch multiple variants by a comma-separated list of HGVS or rsIDs', specifying the verb and resource. It distinguishes itself from the sibling tool `query_many_variants` by noting it is preferred when standard IDs are known, providing strong differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'This is the preferred tool over query_many_variants for fetching multiple specific variants when you already know their standard IDs (HGVS or rsID).' This gives clear guidance on when to use this tool versus the alternative, and includes input format examples.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_query_chemsC

Search chemical compounds via Lucene query (e.g., name, formula), returning compound details and query metadata.

    Search for chemical compounds using a query string with various filtering options.
    
    **Supported Query Features:**
    1. Simple Queries: "C6H12O6" - Find compounds with molecular formula, "glucose" - Find compounds with name
    2. Fielded Queries: "pubchem.molecular_formula:C6H12O6", "pubchem.molecular_weight:[100 TO 200]"
    3. Range Queries: "pubchem.xlogp:>2", "pubchem.topological_polar_surface_area:[50 TO 100]"
    4. Boolean Queries: "pubchem.hydrogen_bond_donor_count:>2 AND pubchem.hydrogen_bond_acceptor_count:>4"
    
    Returns compound details including PubChem data like formula, weight, and XLogP.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
qYes
sizeNo
skipNo
sortNo
emailNo
fieldsNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitsYes
tookNo
totalNo
max_scoreNo

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool performs a search and returns compound details with PubChem fields, but fails to mention rate limits, authentication, pagination behavior, or whether the operation is read-only (likely safe). It adds some context beyond the schema but is not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately concise with a summary and list of query features. However, the repeated mention of PubChem data is somewhat redundant. It could be more streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 6 parameters and existence of an output schema, the description covers only the query string aspect thoroughly. It fails to explain other parameters, response format, or sibling tool differentiation. The tool is moderately complex but the description leaves significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, requiring full compensation. The description only explains the 'q' parameter with examples; the other five parameters (size, skip, sort, email, fields) are not described at all. This is insufficient for a 6-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches chemical compounds via Lucene query and returns compound details and metadata. It specifies the resource (chemical compounds) and action (search), but does not explicitly differentiate from sibling tools like biothings_get_chems or biothings_query_genes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive query syntax examples but offers no guidance on when to use this tool versus alternatives like biothings_get_chem or biothings_query_many_chems. It lacks prerequisites, context for when not to use, or differentiation from similar search tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_query_genesA

Search genes via Lucene query, returning gene details and query metadata.

    **IMPORTANT:** This endpoint requires structured queries using specific field names. 
    Simple natural language queries like "CDK2 gene" or "human kinase" will **NOT** work.
    You **MUST** specify the field you are querying, e.g., `symbol:CDK2`, `name:"cyclin-dependent kinase 2"`, `taxid:9606`.
    Use this tool when you need to *search* for genes based on criteria, not when you already know the specific gene ID.
    If you know the exact Entrez or Ensembl ID, use the `get_gene` tool instead for faster retrieval.
    
    **Supported Query Features (based on Lucene syntax):**
    1. Simple Term Queries: `q=cdk2` (Searches across default fields)
    2. Fielded Queries: `q=symbol:CDK2`, `q=name:"cyclin-dependent kinase 2"`
    3. Range Queries: `q=taxid:[9606 TO 10090]`
    4. Boolean Queries: `q=symbol:CDK2 AND taxid:9606`
    5. Wildcard Queries: `q=symbol:CDK*`
    
    Returns gene details including symbol, name, taxid, and entrezgene.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
qYes
sizeNo
skipNo
sortNo
emailNo
fieldsNoall
speciesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitsYes
tookNo
totalNo
max_scoreNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that queries must be structured Lucene queries, lists supported query features, and mentions return fields. However, it does not discuss rate limits, authorization, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured with bold warnings, bullet points for query features, and clear examples. It is informative but not excessively long. Minor redundancy could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters and an output schema, the description covers the critical 'q' parameter thoroughly but leaves other parameters unexplained. Output schema handles return values, but parameters like sort, fields, email need more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. Description adds significant value for the 'q' parameter with examples, but provides minimal guidance for other parameters like size, skip, sort, fields, email, and species. Partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches genes via Lucene query and returns gene details and metadata. It uses a specific verb 'search' and resource 'genes', and distinguishes from sibling tool 'biothings_get_gene' for exact IDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (searching by criteria) and when not to use (exact ID known, use get_gene instead). Warns against natural language queries and provides examples of correct query syntax.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_query_many_chemsB

Batch query chemical compounds by multiple terms (e.g., names, InChIKeys).

    Perform multiple chemical queries in a single request.
    
    **Supported Usage:**
    1. Multiple Query Types: ["C6H12O6", "C12H22O11"] (formulas), ["glucose", "sucrose"] (names)
    2. Field Scoping: Search in specific fields using scopes parameter
    3. Result Filtering: Return specific fields using fields parameter
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
scopesNo
query_listYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the batch nature and supported queries but lacks mention of behavioral traits like whether it is read-only, authentication needs, rate limits, or error handling. The description is insufficient for full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise and front-loads the purpose. It uses bullet points for structure, though some text could be tightened. Overall, it is efficient and well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters) and presence of an output schema, the description covers the key aspects: batch query, supported query types, parameter usage. It does not discuss errors or output details, but the output schema exists to fill that gap. It is complete enough for a query tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the main parameter 'query_list' with examples, and describes 'scopes' and 'fields' with usage context. Only the 'email' parameter is not discussed. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it performs batch queries of chemical compounds by multiple terms, with examples. It distinguishes from siblings like biothings_get_chem and biothings_query_chems by explicitly mentioning 'batch' and 'multiple terms', but could more directly contrast with those tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides supported usage scenarios (multiple query types, field scoping, result filtering) but does not explicitly state when to use this tool versus alternatives or when not to use it. The usage guidance is implied through examples.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_query_many_genesA

Batch query genes by multiple terms, returning a list of gene details.

    Perform multiple gene searches in a single request using a comma-separated list of query terms.
    Unlike `query_genes`, the `query_list` parameter takes multiple **terms** (like gene IDs, symbols, names) 
    rather than full query strings. The `scopes` parameter defines which fields these terms should be searched against.
    
    **Endpoint Usage:**
    - Query multiple symbols: `query_list=CDK2,BRCA1` with `scopes=symbol`
    - Query multiple Entrez IDs: `query_list=1017,672` with `scopes=entrezgene`
    - Query mixed IDs/symbols: `query_list=CDK2,672` with `scopes=symbol,entrezgene`
    
ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNo
emailNo
fieldsNoall
scopesNoentrezgene,ensemblgene,retired
speciesNo
query_listYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains the core behavior (batched search, comma-separated terms, scopes) but does not disclose potential limitations such as rate limits, error handling for invalid terms, or authentication requirements. Thus, transparency is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with two paragraphs and bullet examples. It front-loads the purpose. A slight redundancy exists in the first paragraph (repeats 'batch query' idea), but overall it's efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides enough context for using the tool with required parameters and common optional ones, but does not cover all parameters (size, email, species) or error scenarios. Given the output schema exists, return values are not needed, but the description could be more complete regarding optional fields and behavior on failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains query_list (comma-separated terms) and scopes (fields to search against) with examples, and hints at fields via default 'all'. However, it does not explain size, email, or species parameters. Overall, it adds meaningful context for the essential parameters but misses several.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that this tool performs batch queries for multiple gene terms and returns a list of gene details. It explicitly distinguishes itself from the sibling tool query_genes by noting that query_list takes multiple terms rather than full query strings, and provides concrete examples (e.g., CDK2,BRCA1).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes explicit usage guidelines: it contrasts with query_genes, explains when to use this tool (for multiple terms), and provides endpoint usage examples with different scopes. This helps the agent choose correctly among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_query_many_taxonsA

Batch query taxa by multiple terms (e.g., scientific names, common names).

    Perform multiple taxon queries in a single request.
    
    **Supported Usage:**
    1. Multiple Query Types: ["Homo sapiens", "Mus musculus"] (scientific names), ["human", "mouse"] (common names)
    2. Field Scoping: Search in specific fields using scopes parameter: ["scientific_name", "common_name"]
    3. Result Filtering: Return specific fields using fields parameter: ["scientific_name", "common_name", "rank"]
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
scopesNo
query_listYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It only states the tool performs multiple queries and gives examples, but does not disclose behavioral traits such as query limits, case sensitivity, partial match handling, or whether it is read-only. This lacks sufficient transparency for a batch query tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately sized and well-structured with a brief intro and bullet points. It is front-loaded with the main purpose. Some sentences could be trimmed, but overall it is clear and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters, no annotations, and an output schema, the description covers major usage patterns but omits details on query_list format and email parameter. The complexity warrants more complete guidance, especially for a tool that expects a list-like input as a string.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates by explaining the usage of scopes and fields parameters with concrete examples. However, the email parameter is not mentioned, and the query_list parameter format (JSON array as string) is not clarified. Still, it adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs batch queries for taxa using multiple terms, with specific examples of scientific and common names. It distinguishes itself from sibling tools like biothings_get_taxon by emphasizing batch capability and multiple query types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios: multiple query types, field scoping, and result filtering. It implies use for batch queries but does not explicitly mention when not to use or compare to biothings_query_taxons, though sibling names provide some context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_query_many_variantsA

Batch query variants by multiple identifiers (e.g., rsIDs, HGVS IDs).

    Perform multiple variant queries in a single request using a comma-separated list of variant identifiers.
    This tool takes multiple **terms** (like rsIDs, HGVS IDs) in `query_list` and searches for them within the specified `scopes`.
    
    **Endpoint Usage:**
    - Query multiple rsIDs: `query_list=rs58991260,rs2500` with `scopes=dbsnp.rsid`
    - Query multiple HGVS IDs: `query_list=chr7:g.140453134T>C,chr1:g.69511A>G`
    - Query mixed IDs: `query_list=rs58991260,chr1:g.69511A>G` with `scopes=dbsnp.rsid,_id`
    
ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
fieldsNoall
scopesNo
query_listYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It explains the batch query mechanism and scope usage, but omits details on error handling, rate limits, or response structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately concise, using bullet points and examples efficiently, though it could be organized more tightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is an output schema and no annotations, the description covers the core functionality and parameter usage, but lacks behavioral details and full parameter explanations, leaving some gaps for a 4-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description should explain each parameter. It elaborates on query_list and scopes via examples, but does not clarify email or fields (defaults are mentioned but not explained).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs batch queries for multiple variant identifiers (rsIDs, HGVS IDs) and distinguishes itself from siblings like biothings_get_variant by emphasizing multiple terms in a single request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides examples of when to use the tool (e.g., multiple rsIDs, HGVS IDs), but does not explicitly compare to sibling tools like biothings_query_variants or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_query_taxonsB

Search taxa via Lucene query (e.g., scientific name, rank), returning taxon details and query metadata.

    Search for taxa using a query string with various filtering options.
    
    **Supported Query Features:**
    1. Simple Queries: "scientific_name:Homo sapiens", "common_name:human"
    2. Fielded Queries: "rank:species", "parent_taxid:9606", "has_gene:true"
    3. Range Queries: "taxid:[9606 TO 10090]", "lineage:>9606"
    4. Boolean Queries: "rank:species AND has_gene:true", "scientific_name:Homo* AND NOT rank:genus"
    5. Wildcard Queries: "scientific_name:Homo*", "common_name:*mouse*"
    
ParametersJSON Schema
NameRequiredDescriptionDefault
qYes
sizeNo
skipNo
sortNo
emailNo
fieldsNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitsYes
tookNo
totalNo
max_scoreNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose all behavioral traits. It describes query types but omits safety (read-only), rate limits, authentication needs, or error handling. The description is honest but incomplete for non-query behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with headings and bullet points, front-loading the purpose. It is informative but could be slightly more concise by trimming redundant phrasing like 'Search for taxa using a query string with various filtering options.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters and an output schema, the description fails to document pagination (size, skip), sorting (sort), fields selection, or output structure beyond 'taxon details and query metadata.' This leaves the agent underinformed for effective invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. Only the 'q' parameter is explained with examples; 'size', 'skip', 'sort', 'email', and 'fields' are not described, leaving significant gaps in parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches taxa via Lucene query, returning taxon details and metadata. It distinguishes from sibling tools like biothings_get_taxon (retrieval by ID) and biothings_query_many_taxons (batch query) by emphasizing query flexibility.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for complex, fielded, or boolean queries but does not explicitly state when to use this tool vs alternatives (e.g., get_taxon for known IDs). No when-not guidance or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

biothings_query_variantsA

Search variants via Lucene query (e.g., rsID, gene name), returning variant details and query metadata.

    Search for variants using a query string with various filtering options, leveraging the MyVariant.info API.
    **Use this tool for *searching* variants based on criteria.** 
    If you already know the exact variant ID (HGVS, rsID), use the `get_variant` tool for faster direct retrieval.

    **Supported Query Features (Lucene syntax):**
    1. Simple Queries: `q=rs58991260` (Find by rsID)
    2. Fielded Queries: `q=dbsnp.vartype:snp`, `q=dbnsfp.polyphen2.hdiv.pred:(D P)`
    3. Range Queries: `q=dbnsfp.polyphen2.hdiv.score:>0.99`
    4. Wildcard Queries: `q=dbnsfp.genename:CDK*`
    5. Boolean Queries: `q=_exists_:dbsnp AND dbsnp.vartype:snp`
    6. Genomic Interval Queries: `q=chr1:69000-70000`
    
ParametersJSON Schema
NameRequiredDescriptionDefault
qYes
sizeNo
skipNo
sortNo
emailNo
fieldsNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitsYes
tookNo
totalNo
max_scoreNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description carries full burden. It discloses API dependency (MyVariant.info) and Lucene query features. Could mention pagination or rate limits but is quite transparent for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with bullet points for query features. Each sentence adds value, no fluff. The description is appropriately sized for the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists. Description covers query capabilities thoroughly and references the API. Could mention how to use 'fields' to restrict output and explain pagination parameters, but overall sufficient for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%. The description only explains the 'q' parameter with examples. Other parameters like 'size', 'skip', 'sort', 'email', 'fields' are not described. Partial compensation, but significant gaps remain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches variants via Lucene query and returns variant details and query metadata. It distinguishes itself from the 'get_variant' tool by specifying when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this tool for *searching* variants based on criteria' and recommends 'get_variant' for exact IDs, providing clear when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 19 tool updatesv0.1.6
    • First observedbiothings_download_entrez_data
    • First observedbiothings_download_entrez_data_local
    • First observedbiothings_get_chem
    • First observedbiothings_get_chems
    • First observedbiothings_get_gene
    • First observedbiothings_get_gene_metadata
    • First observedbiothings_get_genes
    • First observedbiothings_get_taxon
    • First observedbiothings_get_taxons
    • First observedbiothings_get_variant
    • First observedbiothings_get_variants
    • First observedbiothings_query_chems
    • First observedbiothings_query_genes
    • First observedbiothings_query_many_chems
    • First observedbiothings_query_many_genes
    • First observedbiothings_query_many_taxons
    • First observedbiothings_query_many_variants
    • First observedbiothings_query_taxons
    • First observedbiothings_query_variants

TDQS

A3.7/5.0
Disambiguation4/5

Tools are generally distinct through singular/plural and get/query patterns, and descriptions are detailed. However, the large number of similar patterns (e.g., get_chem vs get_chems) may cause slight confusion for agents without careful reading.

Naming Consistency5/5

All tools follow a consistent 'biothings_' prefix with a verb_noun pattern, and the same structure is applied across domains (get, gets, query, query_many). Singular/plural naming is uniform.

Tool Count5/5

19 tools is well-scoped for a biological data retrieval server covering genes, chemicals, taxa, variants, and Entrez download. Each tool serves a clear purpose without redundancy.

Completeness4/5

The tool surface covers single fetch, multiple fetch, search, and batch search for each data type. However, metadata endpoints are only provided for genes, not for chemicals, taxa, or variants, which is a minor gap.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that interfaces with Biomart databases, allowing models to discover biological datasets, explore attributes/filters, retrieve biological data, and translate between different biological identifiers.
    8
    8
    MIT
  • A
    license
    C
    quality
    F
    maintenance
    A Model Context Protocol server that exposes Synapse Entities (Datasets, Projects, Folders, Files, Tables) with their annotations, enabling programmatic access to Synapse data resources through a RESTful API.
    7
    11
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/longevity-genie/biothings-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server