biothings-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@biothings-mcpannotate gene BRCA1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
biothings-mcp
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:
mygene.info — Gene annotation and query service
myvariant.info — Variant annotation and query service
mychem.info — Chemical compound annotation and query service
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(wrapsGeneClientAsync)Variant Interface:
VariantTools(wrapsVariantClientAsync)Chemical Interface:
ChemTools(wrapsChemClientAsync)Taxon Interface:
TaxonTools(wrapsTaxonClientAsync)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 directoryCustom Location: Use
--output-dirparameter to specify a custom output directoryAutomatic 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:
.fastaextension for sequence dataGenBank:
.gbextension for GenBank format dataAlignment:
.alnextension for alignment resultsJSON:
.jsonextension for structured dataText:
.txtextension 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 --versionuvx 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_dataHTTP 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_dataSSE 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 8000The 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-mcpAdd -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-mcpYou can also run inspector manually and put server parameters in the interface:
npx @modelcontextprotocol/inspectorAfter 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 syncRunning 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_dataIntegration 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 viauv run server(see Running the MCP Server) ordocker-compose up(see Docker Deployment).For connecting to the publicly hosted server: Use
mcp-config-remote.json. This connects tohttps://biothings.longevity-genie.info/mcpand 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:

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 -sYou 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
BioThings for the REST API and original client library
MCP Protocol for the protocol specification
Pydantic for the data validation framework
FastAPI-MCP for the MCP server implementation
This project is part of the Longevity Genie organization, which develops open-source AI assistants and libraries for health, genetics, and longevity research.
We are supported by:

HEALES - Healthy Life Extension Society
and

IBIMA - Institute for Biostatistics and Informatics in Medicine and Ageing Research
Available Tools
19 toolsbiothings_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"
)
```
| Name | Required | Description | Default |
|---|---|---|---|
| db | Yes | ||
| ids | Yes | ||
| reftype | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
)
```
| Name | Required | Description | Default |
|---|---|---|---|
| db | Yes | ||
| ids | Yes | ||
| reftype | Yes | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| chem_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Chemical identifier (typically InChIKey) |
| pubchem | No | Detailed PubChem information |
| version | No | Version number of the data |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| chem_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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`
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| gene_id | Yes | ||
| species | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Gene identifier |
| name | No | Gene name |
| score | No | Search score |
| taxid | No | Taxonomy ID |
| refseq | No | RefSeq information |
| symbol | No | Gene symbol |
| ensembl | No | Ensembl information |
| summary | No | Gene summary |
| uniprot | No | UniProt information |
| entrezgene | No | Entrez Gene ID |
| genomic_pos | No | Genomic position information |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| No |
Output Schema
| Name | Required | Description |
|---|---|---|
| index | No | |
| stats | Yes | |
| fields | No | |
| version | No |
TDQS
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.
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.
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.
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.
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.
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`
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| species | No | ||
| gene_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| taxon_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| _id | Yes | Taxon identifier |
| rank | No | Taxonomic rank |
| taxid | No | Taxon ID |
| lineage | No | Taxonomic lineage IDs |
| _version | No | Version number |
| has_gene | No | Whether the taxon has gene data |
| authority | No | Taxonomic authority |
| common_name | No | Common name |
| other_names | No | Other names |
| parent_taxid | No | Parent taxon ID |
| uniprot_name | No | UniProt name |
| scientific_name | No | Scientific name |
| genbank_common_name | No | GenBank common name |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| taxon_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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`)
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| variant_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Variant identifier |
| vcf | No | VCF information |
| cadd | No | CADD scores and predictions |
| docm | No | DoCM annotations |
| hg19 | No | HG19 genomic location |
| chrom | No | Chromosome number |
| dbsnp | No | dbSNP annotations |
| mutdb | No | MutDB annotations |
| cosmic | No | COSMIC annotations |
| dbnsfp | No | dbNSFP functional predictions |
| snpeff | No | SnpEff annotations |
| clinvar | No | ClinVar annotations |
| version | No | Version number |
TDQS
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.
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.
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.
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.
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.
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`
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| variant_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| size | No | ||
| skip | No | ||
| sort | No | ||
| No | |||
| fields | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| took | No | |
| total | No | |
| max_score | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| size | No | ||
| skip | No | ||
| sort | No | ||
| No | |||
| fields | No | all | |
| species | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| took | No | |
| total | No | |
| max_score | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| scopes | No | ||
| query_list | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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`
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| No | |||
| fields | No | all | |
| scopes | No | entrezgene,ensemblgene,retired | |
| species | No | ||
| query_list | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"]
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| scopes | No | ||
| query_list | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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`
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| fields | No | all | |
| scopes | No | ||
| query_list | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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*"
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| size | No | ||
| skip | No | ||
| sort | No | ||
| No | |||
| fields | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| took | No | |
| total | No | |
| max_score | No |
TDQS
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.
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.
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.
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.
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.
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`
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| size | No | ||
| skip | No | ||
| sort | No | ||
| No | |||
| fields | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| took | No | |
| total | No | |
| max_score | No |
TDQS
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.
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.
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.
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.
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.
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.
19 tool updates
v0.1.6- First observed
biothings_download_entrez_data - First observed
biothings_download_entrez_data_local - First observed
biothings_get_chem - First observed
biothings_get_chems - First observed
biothings_get_gene - First observed
biothings_get_gene_metadata - First observed
biothings_get_genes - First observed
biothings_get_taxon - First observed
biothings_get_taxons - First observed
biothings_get_variant - First observed
biothings_get_variants - First observed
biothings_query_chems - First observed
biothings_query_genes - First observed
biothings_query_many_chems - First observed
biothings_query_many_genes - First observed
biothings_query_many_taxons - First observed
biothings_query_many_variants - First observed
biothings_query_taxons - First observed
biothings_query_variants
TDQS
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.
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.
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.
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
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
Model Context Protocol server for Studex tools, notifications, and profile integrations
A Model Context Protocol server for Wix AI tools
MCP server for querying BrainKB, a knowledge base for neuroscience knowledge graphs.
MCP gateway federating 22 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.
Related MCP Servers
- AlicenseAqualityDmaintenanceA 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.88MIT
- AlicenseCqualityFmaintenanceA 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.711MIT
- FlicenseBqualityDmaintenanceUnofficial Model Context Protocol server for accessing Open Targets platform data for gene-drug-disease associations research.611-
- FlicenseAqualityDmaintenanceModel Context Protocol server for accessing Reactome pathway and systems biology data.812-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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