BioContextAI Knowledgebase MCP
OfficialThe BioContextAI Knowledgebase MCP server provides AI systems with unified access to over 15 major biomedical databases and research tools through the Model Context Protocol.
Core Capabilities:
Protein & Gene Information: Query UniProt for protein IDs and details, access AlphaFold structure predictions (PDB/CIF), convert gene symbols to Ensembl IDs, retrieve InterPro domain architectures, and query Human Protein Atlas for expression data and tractability
Molecular Interactions & Pathways: Access STRING protein-protein interaction networks and visualizations, query Reactome pathways, and search KEGG pathways/genes/compounds (local use only)
Scientific Literature: Search EuropePMC articles with full-text XML access, bioRxiv/medRxiv preprints by date/category, and Google Scholar publications (local use only)
Clinical Research: Search ClinicalTrials.gov studies by condition, intervention, location, and eligibility criteria; search Grants.gov for funding opportunities
Drug Information: Search OpenFDA for approved drugs, generic equivalents, drug labels, and pharmacologic classes
Disease & Target Associations: Execute GraphQL queries against Open Targets for target-disease associations, drug mechanisms, and genetic evidence
Ontologies: Search multiple biomedical ontologies via OLS including Gene Ontology, EFO (diseases), ChEBI (chemicals), Cell Ontology, and Mondo
Specialized Resources: Search Antibody Registry for validated antibodies, query PanglaoDB for cell type marker genes, and search PRIDE Archive for proteomics projects and protein identifications
Cross-Database Integration: Convert identifiers between databases (gene symbols ↔ Ensembl IDs ↔ UniProt IDs ↔ KEGG IDs) with support for multiple species (primarily human and mouse)
Suggested as an alternative reverse proxy for accessing the MCP server in public deployments.
Mentioned as a recommended security measure for public deployments, providing DDOS protection for the MCP server.
Provides containerization for the MCP server with gunicorn and multiple uvicorn workers, offering a deployment option with isolation.
Integration with GitHub CI workflows for continuous integration, as indicated by the badge in the README.
Enables academic publication and author search with Google Scholar's database, though only available for local use due to rate limiting.
Recommended as a reverse proxy option for accessing the MCP server in public deployments to enhance security.
Mentioned as an alternative to Docker for rootless setup in secure deployments of the MCP server.
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., "@BioContextAI Knowledgebase MCPfind recent papers on CRISPR gene editing in EuropePMC"
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.
BioContextAI - Knowledgebase MCP
A Model Context Protocol (MCP) server for biomedical research that provides a standardized connection layer between artificial intelligence systems and biomedical resources. Documentation and usage guides are available at: https://biocontext.ai
Overview
BioContextAI Knowledgebase MCP is an MCP server implementation for common biomedical resources, enabling agentic large language models (LLMs) to retrieve verified information and perform domain-specific tasks. Unlike previous approaches that required custom integration for each resource, BioContextAI KB MCP provides a unified access layer through the Model Context Protocol that enables interoperability between AI systems and domain-specific data sources.
The Knowledgebase MCP is available both as:
An open-source software package for local hosting (see Installation) - Choose this option for Claude Desktop, IDEs or your own agentic systems
A remote server for setup-free integration at https://biocontext-kb.fastmcp.app/mcp (for testing purposes only, subject to fair use)
If possible, we encourage you to run BioContextAI Knowledgebase MCP locally to avoid rate limits and ensure the service's availability for applications that rely on remote hosting.
The Knowledgebase MCP is part of the wider BioContextAI project. The BioContextAI Registry catalogues community servers that expose biomedical databases and analysis tools, providing the community with a resource for tool discovery and distribution. The registry index can be found at: https://biocontext.ai/registry.
Related MCP server: BioContextAI Knowledgebase MCP
Implemented Tools
BioContextAI Knowledgebase MCP exposes a number of external biomedical APIs. You can think of BioContextAI as a browser for your LLM that allows it to find relevant information across these knowledge bases. Please make sure to adhere to the usage limits (e.g., rate limits) of the respective services when using BioContextAI Knowledgebase MCP. If you use data from these services in your research, please make sure to cite both BioContextAI as well as the respective data source/tool.
The data accessed through these APIs is not covered by the BioContextAI Knowledgebase MCP license. You are responsible for ensuring that your use of the data aligns with permitted practices.
Tools
Antibody Registry - Gene id conversion
bioRxiv/medRxiv - Recent preprint search and metadata access
Ensembl - Gene id conversion
EuropePMC - Literature search and full-text access
Google Scholar - Academic publication and author search (only available for local use due to rate limiting)
InterPro - Protein families, domains, and functional sites classification
KEGG - Pathways, gene and drug-drug interaction database (only available for local use due to licensing restrictions)
OpenTargets - Target-disease associations
PanglaoDB - Single-cell RNA-sequencing cell type markers
PRIDE - Proteomics data repository for mass spectrometry data
Protein Atlas - Protein expression data
Reactome - Pathways database
STRING - Protein-protein interaction networks
AlphaFold DB - Tertiary protein structure predictions
OpenAPI MCP Servers
FastMCP allows for easy conversion of REST endpoints following the OpenAPI specification into MCP servers. We have added code to automatically create such servers based on schemas provided through a configuration file, so that users deploying their own version of BioContextAI can easily extend the list of available tools. The configuration file is located at src/biocontext_kb/openapi/config.yaml. By default, no OpenAPI servers are included, but you can edit the configuration file to add services.
Installation
Local setup with Claude Desktop:
Edit your claude_desktop_config.json file. To find it, click on your name and then “Settings”. Next, click on “Developer” to see “Local MCP servers” and then click on “Edit Config”.
{
"mcpServers": {
"biocontext_kb": {
"command": "uvx", // On Mac, use "brew install uv"
"args": [
"biocontext_kb@latest"
],
"env": {
"UV_PYTHON": "3.12"
}
}
}
}Don't forget to restart Claude to apply the changes.
Local setup with
uv
Run the server with streamable HTTP and uvicorn:
export MCP_ENVIRONMENT=PRODUCTION && export PORT=8000 && uvx biocontext_kbRun the server with stdio transport:
export MCP_ENVIRONMENT=DEVELOPMENT && uvx biocontext_kbLocal setup with IDEs
Change the configuration file of your coding agents, e.g., VS Code (.vscode/mcp.json), Cursor (.cursor/mcp.json), or WindSurf (.codeium/windsurf/mcp_config.json):
{
// VS Code: Use "servers" instead of "mcpServers"
"mcpServers": {
"biocontext_kb": {
// if it doesn't work, replace with the `which uvx` path (installation via Homebrew recommended on macOS)
"command": "uvx",
"args": [
"biocontext_kb@latest"
],
}
}
}When using Windows and WSL2 the above config needs to be adapted as follows:
{
// VS Code: "servers"
"mcpServers": {
"biocontext_kb": {
"command": "wsl",
"args": [
"~/.local/bin/uvx", // set to the path to your `uvx`
"biocontext_kb"
]
}
}
}Docker
Clone the latest version of this repository:
git clone https://github.com/biocontext-ai/knowlegebase-mcp.git
cd knowlegebase-mcpThen build the container, running gunicorn with multiple uvicorn workers:
# Build the docker container
docker build -t biocontext_kb:latest .
docker run -p 127.0.0.1:8000:8000 biocontext_kb:latestThis exposes your MCP server at: http://127.0.0.1:8000/mcp/
For public deployments, you should disable unnecessary ports and access your MCP server through a reverse proxy, e.g., Nginx or Caddy. You may also want to configure the running user and the directory to have limited rights, use Docker or podman in a rootless setup and take additional security measures like DDOS protection with Cloudflare or fail2ban.
MCP Clients
To develop your own agentic systems that make use of the MCP server, you may want to consider some of the following options:
Publication & Documentation
You can find our Nature Biotechnology correspondence here: https://www.nature.com/articles/s41587-025-02900-9.
If our work is useful to your research, please cite it as below.
@article{BioContext_AI_Kuehl_Schaub_2025,
title={BioContextAI is a community hub for agentic biomedical systems},
url={http://dx.doi.org/10.1038/s41587-025-02900-9},
urldate = {2025-11-06},
doi={10.1038/s41587-025-02900-9},
year = {2025},
month = nov,
journal={Nature Biotechnology},
publisher={Springer Science and Business Media LLC},
author={Kuehl, Malte and Schaub, Darius P. and Carli, Francesco and Heumos, Lukas and Hellmig, Malte and Fernández-Zapata, Camila and Kaiser, Nico and Schaul, Jonathan and Kulaga, Anton and Usanov, Nikolay and Koutrouli, Mikaela and Ergen, Can and Palla, Giovanni and Krebs, Christian F. and Panzer, Ulf and Bonn, Stefan and Lobentanzer, Sebastian and Saez-Rodriguez, Julio and Puelles, Victor G.},
year={2025},
month=nov,
language={en},
}Further Resources
Project documentation: https://biocontext.ai
API documentationt: https://docs.kb.biocontext.ai/
BioContextAI Registry: https://github.com/biocontext-ai/registry
Chat Interface: https://biocontext.ai/chat
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
The Apache 2.0 License only applies to the code provided in this repository. For usage limitations and licenses of the individually integrated APIs, users should directly refer to the respective API providers. We provide an overview below.
Data Sources and Licensing
Data Source | License | URL | Notes |
AlphaFold (EMBL-EBI) | CC BY 4.0 | ||
Antibody Registry (RRIDs) | CC0 (metadata: CC-NC) | Commercial reuse restrictions on some metadata | |
bioRxiv/medRxiv | CC BY 4.0 | Preprint content licenses vary | |
ClinicalTrials.gov API | Terms of Service | Attribution required | |
Ensembl | No restrictions* | *Some third-party data may have restrictions | |
EuropePMC | Various/Copyright protected | Individual article licenses vary | |
Google Scholar | Terms of Service | Rate limiting; use responsibly | |
Grants.gov API | Terms of Service | Attribution required | |
Human Protein Atlas | CC BY-SA 4.0 | ||
InterPro | CC0 1.0 Universal | Includes InterPro, Pfam, PRINTS, and SFLD data | |
KEGG | Proprietary (Free academic use) | Commercial services/remote hosting not permitted | |
Ontology Lookup Service (EMBL-EBI) | Generally CC0/CC BY | Refer to EMBL-EBI general licensing | |
Open Targets | CC0 1.0 | ||
OpenFDA | CC0 1.0 Universal* | *Some data may have restrictions | |
PanglaoDB | Public data | All data are public | |
PRIDE | CC0/CC BY 4.0* | *CC0 for datasets from June 2018+, CC BY 4.0 for derived resources | |
Reactome | CC0 | ||
STRING | CC BY 4.0 | https://string-db.org/cgi/access?footer_active_subpage=licensing | |
UniProt | CC BY 4.0 |
Disclaimer
Users are solely responsible for ensuring compliance with all applicable license terms and conditions when accessing data through this MCP server. The licenses and terms listed above are subject to change, and additional citation requirements may apply for specific datasets or publications. Before using any data for commercial purposes, redistribution, or publication, please review the current license terms directly from each data source. Some data sources may have additional restrictions not fully captured in this summary.
For KEGG data specifically, please note that while academic use is permitted, providing commercial services or remote hosting using KEGG data is not allowed under their proprietary license terms.
Available Tools
52 toolsbc_count_drugs_by_fieldA
Count unique values in a field across FDA-approved drugs. Useful for statistical analysis.
Returns: dict: Results array with term and count for each unique value or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | Field to count (e.g., 'sponsor_name', 'products.dosage_form', 'products.route', 'openfda.pharm_class_epc') | |
| search_filter | No | Optional search filter to apply before counting | |
| limit | No | Maximum number of count results to return |
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 clearly states the output format (dict with term and count) and indicates it operates on FDA-approved drugs. Though it doesn't discuss side effects, the operation is inherently non-destructive.
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 extremely concise with two sentences plus a return note. Every sentence adds value: purpose and utility upfront, then output format. No wasted words.
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 simplicity, the description covers the essential behavior and output. The presence of an output schema (indicated by context) reduces the need for additional detail. The description is complete for an agent to understand and invoke the 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 100%, so the description adds little beyond what the schema already provides. The description does not elaborate on parameter behavior or constraints beyond the schema examples.
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 ('Count unique values') and resource ('in a field across FDA-approved drugs'), with a hint of utility ('Useful for statistical analysis'). It does not explicitly distinguish from sibling tools, but the purpose is unambiguous.
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 statistical analysis but lacks explicit guidance on when to use this tool versus alternatives like bc_get_drug_statistics or bc_search_drugs_fda. No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_alphafold_info_by_protein_symbolA
Query AlphaFold database using protein name. First converts protein symbol to UniProt ID, then fetches structure predictions.
Returns: dict: AlphaFold prediction data including PDB/CIF file URLs, confidence scores, and metadata or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | Taxonomy ID (e.g., '9606' for human) | 9606 |
| protein_symbol | Yes | Gene/protein name (e.g., 'SYNPO') |
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, the description carries full burden and effectively discloses the two-step workflow, return type (dict with URLs, scores, metadata, or error). It clearly describes the behavior beyond just 'get info' by detailing the conversion and prediction steps.
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 very concise: two sentences state purpose and process, followed by a structured returns block. No unnecessary words; front-loaded with the main action.
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 covers purpose, process, and output structure. It mentions error handling ('or error message'). However, it could explicitly note that it requires network access to query an external database, but this is implied. Overall complete for a query tool with a clear output schema.
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 100%, providing descriptions for both parameters. The tool description does not add additional parameter semantics beyond what the schema already offers (e.g., specifying that protein_symbol is used for UniProt conversion). Baseline 3 is appropriate.
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 queries AlphaFold using a protein name and explains the two-step process (converting symbol to UniProt ID, then fetching predictions). This distinguishes it from sibling tools like bc_get_uniprot_id_by_protein_symbol which only convert to UniProt 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?
No guidance on when to use this tool vs alternatives like bc_get_uniprot_id_by_protein_symbol or bc_get_uniprot_protein_info. The description does not mention that this tool includes the UniProt lookup, so an agent might not know when to choose this over a simpler ID lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_antibody_informationA
Get detailed antibody information by ID. Retrieves catalog number, vendor, clonality, epitope, applications, and more.
Returns: dict: Antibody details including abId, catalog numbers, vendor, clonality, epitope, applications, target species, isotype, citations or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| ab_id | Yes | Antibody Registry ID (e.g., '3643095') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the burden. It states that a dict of details is returned, but does not disclose read-only behavior, permissions, rate limits, or failure modes. The tool is likely read-only, but this is not explicitly stated.
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?
Two concise sentences plus a Returns section with no filler. Information is front-loaded and each 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 tool's simplicity (one parameter), output schema existence, and lack of complex behavior, the description fully covers what an agent needs to select and invoke it 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 100%, so the schema already explains the parameter. The description adds no new meaning about `ab_id` beyond 'by ID', which is redundant. The return value list is helpful but does not enhance 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 it retrieves detailed antibody information by ID, listing specific fields like catalog number and vendor. It distinguishes from sibling bc_get_antibody_list, which likely provides a list rather than details.
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 an antibody ID is available, but does not explicitly mention when not to use it or suggest alternatives like bc_get_antibody_list for searching. However, the context is clear enough for a focused tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_antibody_listC
Search Antibody Registry for antibodies. Returns catalog numbers, vendors, clonality, applications, and metadata.
Returns: dict: Search results containing list of antibodies with catalog numbers, vendors, clonality, applications, metadata or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default: 1) | |
| size | No | Number of results per page (default: API default) | |
| search | Yes | Gene symbol, protein name, or UniProt ID (e.g., 'TRPC6') |
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 describes a read-only search but does not explicitly state that it is non-destructive or safe. No mention of side effects, permissions, or rate limits.
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 sentences: first the action, then the return. It is front-loaded and to the point, though it could benefit from brief usage context.
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, the return value explanation is partially covered. However, the description does not mention pagination behavior or error handling, leaving some gaps for a list-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 100%, so the description adds little beyond what the schema already provides. The description lists return fields but does not augment parameter descriptions (e.g., format or constraints). Baseline 3 is appropriate.
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 the Antibody Registry for antibodies and lists the return fields (catalog numbers, vendors, etc.). This distinguishes it from sibling tools like bc_get_antibody_information, which likely gets details on a specific antibody. However, it could explicitly contrast with that tool.
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?
No guidance on when to use this tool versus alternatives such as bc_get_antibody_information. Missing any when-to-use or when-not-to-use context, even though a sibling tool exists that might be confused.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_available_ontologiesA
Query OLS for all available ontologies with their metadata. Use this first to discover available ontologies.
Returns: dict: Ontologies list with id, name, description, prefix, homepage, number of terms, status or error message.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 describes the return data but does not disclose behavioral traits like idempotency, external dependencies, or error handling beyond mentioning an error message. This is adequate but minimal.
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 extremely concise: two purpose-oriented sentences plus a return format. It is front-loaded and contains zero wasted words.
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 lack of parameters and the existence of an output schema, the description is fairly complete. It covers purpose, usage order, and return structure. It could mention potential latency or external service dependencies, but it is sufficient for a simple listing 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?
With zero parameters and 100% schema coverage, the description does not need to add parameter information. Baseline for 0 parameters is 4, and the description is sufficient.
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 queries OLS for all available ontologies with metadata, and explicitly positions it as a first step to discover ontologies, distinguishing it from sibling tools that require an ontology 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?
The description says 'Use this first to discover available ontologies,' providing clear context for when to use it. It does not explicitly mention alternatives or when not to use it, but the sibling tools context implies it is for discovery before other ontology-specific operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_available_pharmacologic_classesA
Get available pharmacologic classes from FDA database. Call this first to see available options.
Returns: dict: Class type, field, available_classes array with term/count, total_found or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of unique classes to return | |
| class_type | No | Class type: 'epc' (Established Pharmacologic Class), 'moa' (Mechanism of Action), 'pe' (Physiologic Effect), or 'cs' (Chemical Structure) | epc |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 discloses the return type (dict) and structure (class_type, field, available_classes, total_found/error). However, it does not mention if the operation is read-only or any prerequisites. The behavioral info is partial.
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 at three sentences, with the purpose stated first. Every sentence adds value: purpose, usage hint, and return format. No redundant or missing information, though minor trimming could be possible.
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 simplicity of the tool (2 optional parameters) and the presence of an output schema, the description is largely complete. It covers the return structure and guidance to use first. However, it could elaborate on the source (FDA database) or typical use cases to fully compensate for the lack of 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?
Both parameters ('limit' and 'class_type') have comprehensive descriptions in the input schema (100% coverage). The description does not add additional meaning beyond the schema, so it meets the baseline. No extra elaboration on parameter usage is needed.
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's function: 'Get available pharmacologic classes from FDA database'. It uses a specific verb-resource pair and includes a usage hint. While it distinguishes from sibling tools by focusing on pharmacologic classes, it could be more explicit about its unique role.
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 suggests a usage order: 'Call this first to see available options.' This provides context for when to use the tool, though it does not include when-not-to-use or alternative tools. The hint is valuable for task sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_biorxiv_preprint_detailsA
Get detailed preprint metadata by DOI. Retrieves title, authors, abstract, date, version, category, license, and publication status.
Returns: dict: Preprint metadata including doi, title, authors, abstract, date, version, category, license, publication status or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | Yes | Preprint DOI (e.g., '10.1101/2020.09.09.20191205') | |
| server | No | 'biorxiv' or 'medrxiv' | biorxiv |
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, the description carries the full burden. It states the tool retrieves metadata and returns a dict, which implies a read-only operation, but does not disclose error handling (e.g., invalid DOI), authentication needs, or rate limits. The behavioral traits are minimally covered.
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 fairly concise with two clear sentences. The first sentence states the purpose, the second lists return fields. Slight redundancy in the returns line 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 an output schema exists, the description sufficiently covers the main return fields. It does not explain error handling or pagination, but these are not critical for a simple retrieval tool. The description is complete enough for basic use.
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 100%, so baseline is 3. The description does not add extra meaning to the parameters beyond the schema; it only lists return fields. No additional syntax or format details are provided for 'doi' or 'server'.
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 retrieves detailed preprint metadata by DOI, listing specific fields (title, authors, abstract, etc.). This distinguishes it from sibling tools like bc_get_recent_biorxiv_preprints, which focuses on recent preprints rather than metadata by DOI.
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 no guidance on when to use this tool versus alternatives, such as bc_get_recent_biorxiv_preprints for listing recent preprints or other search tools. No when-not-to-use instructions or context for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_cell_ontology_termsA
Search OLS for Cell Ontology (CL) terms using a controlled vocabulary for cell types.
Returns: dict: Cell ontology terms with cl_terms array containing id, label, definition, synonyms or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Maximum number of results to return | |
| cell_type | Yes | Cell type to search for (e.g., 'T cell', 'neuron') | |
| exact_match | No | Whether to perform exact match search |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 mentions using OLS, a controlled vocabulary, and specifies the return structure (dict with cl_terms array). However, it does not discuss error cases or rate limits, which would enhance 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 very concise: a single sentence stating purpose, followed by a bullet list of return fields. No redundant information, and the purpose is 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 the tool has 3 parameters and an output schema, the description adequately covers purpose, source (OLS), and return format. It mentions controlled vocabulary. With output schema present, no need to detail return values further. Could mention search behavior nuances, but sufficient overall.
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 100%, so the description does not add parameter semantics beyond what the schema provides. The schema descriptions are clear, so the baseline score of 3 is appropriate.
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 OLS for Cell Ontology (CL) terms, specifying the controlled vocabulary for cell types. This distinguishes it from sibling tools like bc_search_ontology_terms (which searches all ontologies) and bc_get_term_details (which retrieves specific term details).
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 implicitly indicates use for cell type terms but provides no explicit guidance on when to use vs alternatives (e.g., other ontology search tools). No when-not-to-use or alternative recommendations are given, which is a gap given many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_chebi_terms_by_chemicalB
Search OLS for ChEBI (Chemical Entities of Biological Interest) terms for a chemical or drug name.
Returns: dict: ChEBI terms with chebi_terms array containing id, label, description, synonyms or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Maximum number of results to return | |
| exact_match | No | Whether to perform exact match search | |
| chemical_name | Yes | Chemical or drug name to search for (e.g., 'aspirin', 'glucose') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 mentions return format and error messages but lacks behavioral details such as rate limits, authorization, or side effects. For a read-only search tool, this is minimal disclosure.
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 sentences: purpose and return format. It is front-loaded and 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 existence of an output schema and full schema coverage, the description summarizes return values sufficiently. However, it lacks context about usage constraints and does not differentiate from related ontology search 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?
Input schema has 100% description coverage, so baseline is 3. The description adds no extra semantic information beyond the schema's parameter 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 tool searches for ChEBI terms for a chemical/drug name, specifies the source (OLS), and outlines the return structure. This is specific and differentiates 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 provides no guidance on when to use this tool versus alternatives like bc_search_ontology_terms or other chemical search tools. No when/when-not criteria or context for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_drug_by_application_numberA
Get detailed information about an FDA-approved drug by application number. Format: NDA/ANDA/BLA followed by 6 digits.
Returns: dict: FDA drug results with application details, products, sponsor information or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| application_number | Yes | FDA application number (e.g., 'NDA021436', 'ANDA123456', 'BLA761234') |
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, the description carries the burden. It discloses that the tool returns a dict with application details, products, sponsor info, or an error message. It does not explicitly state it's read-only, but the 'Get' verb implies a safe read operation. The return type and possible error are mentioned.
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?
Two sentences: first states purpose and input format, second describes return. No redundant words. Front-loaded with key information.
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 low complexity (single parameter, simple lookup) and presence of an output schema (so return structure can be inferred), the description is complete. It covers input format, what the tool does, and the type of output.
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 already describes the parameter with examples. The description adds the formatting rule 'NDA/ANDA/BLA followed by 6 digits', which adds clarity beyond the schema examples. Schema coverage is 100%, so the baseline is 3; the added format specifier raises it to 4.
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 'Get' and resource 'detailed information about an FDA-approved drug', and specifies the input format (application number with prefix and 6 digits). It distinguishes from sibling search tools (e.g., bc_search_drugs_fda) by indicating this is a direct lookup by application number.
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 an application number in the correct format. It does not explicitly state when not to use or provide alternatives, but the sibling tools include search functions, making the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_drug_label_infoB
Get comprehensive drug labeling information from FDA. Includes active ingredients, dosage forms, administration routes.
Returns: dict: Drug label results with indications, warnings, dosage, active ingredients or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_name | No | Brand name of the drug | |
| generic_name | No | Generic name of the drug | |
| ndc | No | National Drug Code (NDC) |
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, the description carries full burden for behavioral disclosure. It mentions the return format (dict with results or error message) but does not address authentication, rate limits, or what happens when parameters are all missing. The description is too sparse for a tool with no annotation support.
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 very concise, with two sentences covering purpose and included data, plus a separate line for return format. It is front-loaded and contains no redundant or extraneous information.
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 (so return format is partially covered), the description is fairly complete. It specifies the source, coverage, and return type. However, it could mention that at least one parameter is typically required for meaningful results, even though all are optional in schema.
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 100%, so the baseline is 3. The description does not add extra meaning beyond the schema's parameter descriptions; it focuses on output content. No enhancement is needed, but also no degradation.
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 retrieves comprehensive drug labeling information from the FDA, with specific examples of included data (active ingredients, dosage forms, administration routes). This is a specific verb+resource combination that distinguishes it from sibling tools that focus on other drug-related queries.
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?
No guidance is provided on when to use this tool versus its siblings (e.g., bc_search_drugs_fda, bc_get_drug_by_application_number). It does not state prerequisites, when-not-to-use, or alternatives, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_drug_statisticsA
Get general statistics about the FDA Drugs@FDA database. Includes top sponsors, dosage forms, routes, marketing status.
Returns: dict: Top sponsors, dosage_forms, administration_routes, marketing_statuses with counts or error message.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions it returns a dict with counts or an error message, but it lacks explicit disclosure of side effects like being read-only, requiring authentication, or having rate limits. Since no annotations are provided, the description should cover these behavioral traits.
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 extremely concise: two sentences plus a returns line. Every word adds value, no filler.
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 simple tool with no parameters and an output schema, the description provides sufficient context on the return format. It could mention if any setup is needed, but overall it's complete enough.
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?
There are no input parameters, so the description's listing of output fields adds clarity beyond the empty schema. This compensates well for the lack of parameter information.
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 returns general statistics about the FDA Drugs@FDA database and lists the specific fields included (sponsors, dosage forms, routes, marketing status). This distinguishes it from sibling tools that query specific drugs or fields, making its purpose unambiguous.
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 for obtaining aggregate statistics, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., bc_count_drugs_by_field). No when-not-to-use or prerequisite information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_efo_id_by_disease_nameA
Search OLS for EFO/Mondo/HP IDs related to a disease name. Use this to get EFO IDs for Open Targets queries.
Returns: dict: EFO IDs with efo_ids array containing id, label, description or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Maximum number of results to return | |
| exact_match | No | Whether to perform exact match search | |
| disease_name | Yes | Disease name to search for (e.g., 'choledocholithiasis') |
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, the description carries full burden. It states the tool searches OLS and returns a dict with efo_ids array or error message, indicating safe, read-only behavior. But it lacks details on rate limits, authentication requirements, or potential side effects, which is acceptable for this simple search but not fully transparent.
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 extremely concise: two short sentences and a returns section. It front-loads the primary action and purpose with no extraneous information. Every sentence earns its place.
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 simplicity (search, 3 parameters, no annotations, output schema present), the description covers the essential behavior and return format. It mentions error handling. The presence of an output schema likely provides additional details, so the description is sufficient without being verbose.
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?
All parameters are described in the input schema (100% coverage), but the description adds value by specifying that the search returns EFO/Mondo/HP IDs, which is not in the param descriptions. It frames the purpose of the parameters (e.g., search for disease name) effectively.
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 OLS for EFO/Mondo/HP IDs related to a disease name and is used to get EFO IDs for Open Targets queries. However, it does not explicitly distinguish itself from similar sibling tools like bc_search_ontology_terms, which might also search for ontology 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?
It provides context by stating 'Use this to get EFO IDs for Open Targets queries,' implying when to use. However, it does not mention when not to use or provide alternatives, leaving room for confusion with other search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_ensembl_id_from_gene_symbolB
Get Ensembl gene ID from gene symbol. Returns the stable Ensembl ID (ENSG*) for the given gene symbol and species.
Returns: dict: Ensembl gene ID in format {'ensembl_id': 'ENSG...'} or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | Taxonomy ID (e.g., 9606 for human, 10090 for mouse) | 9606 |
| gene_symbol | Yes | Gene name (e.g., 'TP53') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions return format (dict or error) but does not disclose behavior on failure, required permissions, or rate limits. Minimal 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 extremely concise: two sentences plus a return format note. Every part is necessary, with no redundancy. Well-structured for quick parsing.
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 simplicity and full schema coverage, the description is largely complete. It specifies return format and error indications. Could benefit from an example, but outputs are implied by schema.
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 100% with descriptions for both parameters. The description adds no new information beyond restating the purpose—no elaboration on parameter usage, default behavior, or constraints. Baseline 3 is appropriate.
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 gets an Ensembl gene ID from a gene symbol, with a specific return format. It is distinguishable from sibling tools like bc_get_kegg_id_by_gene_symbol by naming, but does not explicitly differentiate its purpose for Ensembl ID mapping.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., other gene ID lookups). The description implies its use for mapping gene symbols to Ensembl IDs but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_europepmc_articlesA
Search Europe PMC articles by query, title, abstract, or author. Combine search terms with 'and'/'or' logic.
Returns: dict: Search results with resultList containing articles (title, authors, abstract, journal, PMC/DOI IDs) or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | General search query | |
| title | No | Search in article titles | |
| author | No | Author name (e.g., 'lastname,firstname') | |
| sort_by | No | 'recent' or 'cited' (default: none) | |
| abstract | No | Search in abstracts | |
| page_size | No | Results per page (1-1000) | |
| search_type | No | 'and' or 'or' (default: 'or') | or |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral transparency. It discloses that the tool returns search results with specific fields (title, authors, abstract, etc.) and error messages, but it does not mention rate limiting, pagination behavior, or handling of empty results. The disclosure is basic but not fully 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 very concise, with only two sentences for the purpose and a clear list of return values. Every sentence is necessary and no fluff.
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 there is an output schema, the description sufficiently covers the core functionality of searching articles across multiple fields. It mentions the return structure (resultList with article details) and the ability to combine terms. However, it omits details about the sort_by parameter and the maximum page_size, which are covered in the schema. Overall, it is complete for a search tool of 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 100%, so baseline is 3. The description adds value by explaining how to combine search terms and what the return format contains, going beyond the individual parameter descriptions in the schema. However, it does not add detailed semantics for each parameter, such as sort_by options.
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's purpose: 'Search Europe PMC articles by query, title, abstract, or author.' It uses specific verbs ('Search') and resources ('Europe PMC articles'), distinguishing it from siblings like bc_get_europepmc_fulltext which retrieves full text rather than searching.
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 usage guidance by mentioning combining search terms with 'and'/'or' logic, but it does not explicitly state when to use this tool versus sibling search tools like bc_search_studies or bc_search_google_scholar_publications. The guidance is present but lacks exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_europepmc_fulltextA
Get full-text XML for a PMC ID. Returns the complete article XML for processing and analysis.
Returns: dict: Full-text XML content in format {'fulltext_xml': '...'} or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| pmc_id | Yes | PMC ID (e.g., 'PMC11629965') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions return format with error handling, but does not disclose authentication needs, rate limits, or data volume. 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?
Two concise sentences with front-loaded action. No superfluous words.
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?
Low complexity with one parameter and output schema present. Description covers the essential but could mention XML parsing or size limits.
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 100% with description for pmc_id including an example format. The description adds no further semantics beyond the schema, so baseline score of 3 applies.
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 'Get full-text XML for a PMC ID' with the specific verb 'Get' and resource 'full-text XML'. It distinguishes from sibling tools like bc_get_europepmc_articles which likely returns metadata.
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?
No guidance on when to use this tool versus alternatives such as bc_get_europepmc_articles. No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_generic_equivalentsA
Find generic equivalents for a brand name drug. Searches ANDA entries with matching active ingredients.
Returns: dict: Brand drug info, generic_equivalents array, total_generics_found count or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_name | Yes | Brand name drug to find generics for |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses it searches ANDA entries, implying a read operation. However, it does not detail any behavioral traits like required permissions or limitations, such as requiring exact brand name matching.
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 clear sentences: one for purpose and one for return structure. No unnecessary words.
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 simplicity, the description explains the return format and the search logic, making it complete for the agent's selection and 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 coverage is 100%, and the description adds context ('brand name drug') but does not significantly enhance meaning beyond the schema's description.
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 'Find generic equivalents for a brand name drug' and specifies the resource (ANDA entries). It effectively distinguishes from sibling tools like bc_get_drug_by_application_number and bc_search_drugs_fda.
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 indicates when to use the tool (when you have a brand name drug and need generics), but lacks explicit guidance on when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_go_terms_by_geneA
Search OLS for Gene Ontology (GO) terms related to a gene name using structured vocabularies.
Returns: dict: GO terms with go_terms array containing id, label, description, type or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Maximum number of results to return | |
| gene_name | Yes | Gene name or symbol to search for (e.g., 'TP53', 'BRCA1') | |
| exact_match | No | Whether to perform exact match search |
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 should disclose behavioral traits like idempotency or authorization needs. It only describes return format, lacking context on side effects, rate limits, or safety.
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 two sentences: purpose and return format. No wasted words, front-loaded, and efficient for rapid scanning.
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 simplicity (3 params, output schema exists), the description covers key aspects. However, the return description could be more detailed about error cases or pagination.
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 100% with each parameter described. The description adds marginal value beyond schema (e.g., example gene names) but does not significantly deepen 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 it searches OLS for GO terms related to a gene name, using structured vocabularies. It is specific and distinguishes from sibling tools like search_ontology_terms.
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 GO term lookups but does not explicitly state when to use this tool versus alternatives like bc_search_ontology_terms or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_human_protein_atlas_infoA
Retrieve Human Protein Atlas information including expression, localization, and pathology data. Provide either gene_id or gene_symbol.
Returns: dict: Protein atlas data with tissue_expression, subcellular_location, pathology, antibodies, RNA/protein levels or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| gene_id | Yes | Ensembl gene ID (e.g., 'ENSG00000141510') | |
| gene_symbol | Yes | Gene symbol (e.g., 'TP53') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 does not disclose if the operation is read-only, authentication requirements, or behavior on invalid input. The return type is mentioned but lacks deeper 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?
Two concise sentences: first states action and output types, second specifies parameter condition. No fluff, front-loaded with key info, and includes return structure.
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?
Has output schema (summarized in description), parameter descriptions are complete, and usage condition is clear. Lacks examples or edge-case handling, but is sufficient for a simple retrieval 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 descriptions already cover both parameters (100% coverage). The description adds value by clarifying the mutual exclusivity ('either') role, which is not captured in the required array (which lists both).
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 ('Retrieve') and resource ('Human Protein Atlas information'), and clearly distinguishes this tool from sibling tools that deal with drugs, KEGG, STRING, etc.
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?
It states 'Provide either gene_id or gene_symbol,' giving clear parameter usage condition. While it doesn't explicitly list when not to use, the unique domain makes it clear that this tool is for Human Protein Atlas queries only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_interpro_entryA
Get InterPro entry details (family, domain, or functional site). Returns metadata from member databases like PFAM, PROSITE.
Returns: dict: Entry metadata including name, type, description, member databases, optionally interactions/pathways/cross-references or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| interpro_id | Yes | InterPro ID (e.g., 'IPR000001') | |
| include_pathways | No | Include pathway information | |
| include_interactions | No | Include protein-protein interactions data | |
| include_cross_references | No | Include cross-references to other databases |
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 burden of disclosing behaviors. It clearly states that the tool returns metadata and optionally includes interactions, pathways, and cross-references based on parameters. It also mentions an error message in the return dict. While it does not explicitly state read-only behavior or rate limits, it sufficiently describes the tool's operation and output for an agent to understand its 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?
The description is very concise: two sentences plus a short bulleted return list. The first sentence front-loads the core purpose and resource, the second adds context about member databases, and the returns section is clearly formatted. Every sentence earns its place without waste.
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, the description appropriately covers return values with a high-level summary. It describes the main fields (name, type, description, member databases, optional extras, error message). For a tool with 4 parameters and no nested objects, this is sufficiently complete. Minor omissions like error handling details are acceptable.
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 100%, so description adds minimal extra meaning beyond the schema. The description mentions optional inclusions (interactions, pathways, cross-references) which correspond to the boolean parameters, but this information is already present in the schema descriptions. No deeper semantics or usage tips are provided.
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 gets InterPro entry details for families, domains, or functional sites, and specifies the resource (InterPro entry) and action (get). It implicitly distinguishes from sibling tool bc_search_interpro_entries which is for searching, making the purpose specific and unique.
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 a specific InterPro ID is known to retrieve metadata, but does not explicitly state when to use this tool versus alternatives like bc_search_interpro_entries. No guidance on prerequisites or exclusion criteria is provided, leaving usage context largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_kegg_id_by_gene_symbolA
Convert gene symbol to KEGG ID for use in subsequent API calls. Returns KEGG gene ID required for query_kegg().
Returns: str or dict: KEGG gene ID string (e.g., 'hsa:7157') or error dict.
| Name | Required | Description | Default |
|---|---|---|---|
| gene_symbol | Yes | Gene symbol (e.g., 'TP53' for human, 'Trp53' for mouse) | |
| organism_code | Yes | Taxonomy ID: 9606 (human), 10090 (mouse), 10116 (rat), 562 (E. coli), 4932 (yeast) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only mentions return type (str or dict) without detailing error handling, side effects, or network 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?
Two concise sentences: first states purpose, second states return type. No unnecessary words.
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 simple two-parameter conversion tool, the description covers purpose and return type. Output schema exists, but description does not enumerate all possible responses. Still adequate.
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?
Input schema covers both parameters with descriptions. Tool description adds no extra meaning beyond schema, which is already descriptive. Baseline 3 due to high schema coverage.
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?
Clearly states the verb 'convert' and resource 'gene symbol to KEGG ID'. Emphasizes prerequisite role for query_kegg, distinguishing it from sibling tools like bc_get_string_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?
Indicates use before query_kegg, providing clear context. No explicit when-not or alternatives, but sibling differentiation is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_open_targets_graphql_schemaA
Retrieve the Open Targets GraphQL schema for query construction.
Returns: dict: Schema string in format {'schema': '...'} containing GraphQL type definitions or error message.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return format (dict with 'schema' key or error message). No annotations, but simple read operation; no side effects mentioned but no hidden behaviors expected.
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?
Two sentences, front-loaded purpose, no waste. Highly concise and well-structured.
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?
Describes purpose and return value adequately. Simple tool with no parameters; output schema existence adds structure but description covers it.
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?
No parameters, so schema coverage is irrelevant. Description adds no param detail but also no need, baseline 4.
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?
Clearly states the action ('Retrieve') and resource ('Open Targets GraphQL schema'), with context 'for query construction' distinguishing it from siblings like bc_query_open_targets_graphql.
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?
Implies usage via 'for query construction' but lacks explicit when-to-use or alternatives. No guidance on when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_open_targets_query_examplesA
Retrieve example GraphQL queries for the Open Targets API. Examples demonstrate common use cases.
Returns: dict: Example queries mapped by category (informationForTarget, drugsForTarget, associatedDiseases, etc.) with GraphQL query strings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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, the description carries full burden. It only describes return structure (dict mapping categories), lacking side effects, rate limits, or authorization needs. The read-only nature is implied but not confirmed.
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?
Two sentences plus return type line, front-loaded with key info. No redundant or missing words.
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 output schema exists, the description adequately covers the tool's purpose and return format. The tool is simple (no parameters), and nothing critical is omitted.
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?
No parameters exist, so baseline is 4. Description adds value by specifying the return shape (mapped by category) and listing example categories, which aids understanding 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 verb 'retrieve' and resource 'example GraphQL queries for the Open Targets API', distinguishing it from siblings like bc_query_open_targets_graphql and bc_get_open_targets_graphql_schema.
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 for obtaining example queries, but does not explicitly state when to use this tool versus alternatives like executing queries or getting schema. No exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_panglaodb_marker_genesA
Retrieve marker genes from PanglaoDB dataset with optional filters. Supports filtering by species, scores, organ, cell type, gene symbol.
Returns: dict: Markers array with gene symbols, cell types, organs, sensitivity/specificity scores or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| species | Yes | Species: 'Hs' for Human or 'Mm' for Mouse | |
| min_sensitivity | No | Minimum sensitivity score (0-1), applied to species-specific column | |
| min_specificity | No | Minimum specificity score (0-1), applied to species-specific column | |
| organ | No | Organ filter (e.g., 'Brain', 'Lung'), case-insensitive | |
| cell_type | No | Cell type filter (e.g., 'Smooth muscle cells', 'T cells'), case-insensitive | |
| gene_symbol | No | Gene symbol filter (e.g., 'MAFB', 'SYNPO'), case-insensitive |
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, the description must disclose behavioral traits. It specifies the return format (dict with markers array including gene symbols, cell types, organs, scores) and mentions error messages, but does not cover side effects, authentication, rate limits, or pagination. It is 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 concise, with a clear first sentence stating the core function, followed by a list of filters and a return description. No unnecessary words, well-structured for quick parsing.
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 6 parameters with optional filters and an output schema, the description covers the return format and filter options well. However, it does not mention behavior when filters yield no results, defaults, or error handling specifics, leaving minor 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 100%, so the description adds little beyond restating the filter types (species, scores, organ, cell type, gene symbol). It does not provide examples or explain relationships between parameters, making it baseline adequate.
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 marker genes from the PanglaoDB dataset, specifying the data source and optional filters. It distinguishes itself from sibling tools that focus on drugs, proteins, and other biomedical data, leaving no ambiguity about its purpose.
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 retrieving marker genes with filters but does not explicitly state when to use this tool versus alternatives, nor does it provide context on appropriate use cases or limitations. The purpose is clear from sibling names, but explicit guidance is lacking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_panglaodb_optionsA
Retrieve available filter options for PanglaoDB marker genes. Returns unique values for organs and cell types.
Returns: dict: Lists of unique organ and cell_type values available in PanglaoDB dataset or error message.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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, the description must fully disclose behavior. It states it returns a dict or error message, which is adequate for a simple retrieval tool with no parameters. However, it does not mention side effects, authentication needs, or rate limits, which are likely not applicable but not explicitly stated.
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 two sentences: the first sentence states the purpose, the second describes the return value. No unnecessary words, front-loaded, and easy to parse.
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 zero parameters, an output schema, and a straightforward purpose, the description fully covers its functionality. The return type and source (PanglaoDB dataset) are mentioned, making it complete for selection and 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?
There are no parameters, and schema coverage is 100% (vacuous). Per rules, baseline is 3. The description adds no parameter information because none is needed.
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 states the verb 'Retrieve' and resource 'available filter options for PanglaoDB marker genes', and specifies the return values 'organs and cell types'. It is specific and clearly distinguishes from sibling tools like bc_get_panglaodb_marker_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 implies the tool provides filter options, likely for use before querying marker genes, but does not explicitly state when to use it versus alternatives such as bc_get_panglaodb_marker_genes. No direct usage or exclusion instructions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_pride_projectA
Retrieve detailed information about a specific PRIDE mass spectrometry proteomics project. Returns metadata and experimental details.
Returns: dict: Project details with accession, title, description, organisms, instruments, publications, optionally files/similar_projects or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| project_accession | Yes | PRIDE project accession (e.g., 'PRD000001') | |
| include_files | No | Include file information (limited to first 20 files) | |
| include_similar_projects | No | Include similar projects based on metadata (limited to 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, and the description does not disclose safety or side effects. It is a read operation but lacks explicit statements about permissions or data freshness.
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?
Two sentences, clear and to the point. Slight redundancy with return type paragraph 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?
Covers key return fields and optional parameters. Lacks detail on error conditions, but acceptable for a simple retrieval 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 100%, but the description adds useful limits for include_files (first 20 files) and include_similar_projects (limited to 10), which are not in 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 retrieves detailed information about a specific PRIDE project by accession. It distinguishes from sibling search tools that find projects by query.
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?
No explicit guidance on when to use this tool versus search tools. Usage is implied but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_protein_domainsA
Get protein domain architecture and InterPro matches. Returns all InterPro domains, functional sites, and domain architecture.
Returns: dict: Protein metadata with interpro_matches array, interpro_match_count, domain_architecture, optionally structure data or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| source_db | No | Database source ('uniprot', 'reviewed', or 'unreviewed') | uniprot |
| protein_id | Yes | UniProt ID/accession (e.g., 'P04637' or 'CYC_HUMAN') | |
| species_filter | No | Taxonomy ID filter (e.g., '9606' for human) | |
| include_structure_info | No | Include structural information |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 return format (dict with interpro_matches, domain_architecture, optionally structure data) but lacks details on performance, rate limits, or side effects. The read-only nature is implied but not explicit.
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 two sentences plus a return format snippet, providing essential information without unnecessary words. Information is front-loaded with 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?
Given full schema coverage and the presence of an output schema, the description adequately explains the tool's function and return structure. However, it could be more complete by explaining how it differs from related protein 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?
All 4 parameters are described in the input schema (100% coverage). The description adds no additional meaning beyond reiterating that protein_id is required. Baseline score of 3 is appropriate.
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 protein domain architecture and InterPro matches, specifying the output includes interpro_matches, functional sites, and domain architecture. This distinguishes it from sibling tools like bc_get_uniprot_protein_info or bc_get_interpro_entry by focusing on domain architecture.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., bc_get_interpro_entry or bc_get_uniprot_protein_info). The description only states what it does, not context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_reactome_info_by_identifierA
Query the Reactome API identifier endpoint.
Use this endpoint to retrieve pathways associated with a given identifier. Always provide the species parameter to ensure the correct protein is returned.
Args: identifier (str): The identifier of the element to be retrieved base_url (str): Base URL for the Reactome API interactors (bool): Include interactors species (str or list): List of species to filter the result (accepts taxonomy ids, species names and dbId) page_size (int): Pathways per page page (int): Page number sort_by (str): Field to sort results by (e.g., "ENTITIES_PVALUE", "ENTITIES_FDR") order (str): Sort order ("ASC" or "DESC") resource (str): Resource to filter by (TOTAL includes all molecule types) p_value (float): P-value threshold (only pathways with p-value <= threshold will be returned) include_disease (bool): Set to False to exclude disease pathways min_entities (int): Minimum number of contained entities per pathway max_entities (int): Maximum number of contained entities per pathway importable_only (bool): Filter to only include importable resources timeout (int): Request timeout in seconds
Returns: dict: API response data or error information
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | The identifier of the element to be retrieved | |
| base_url | No | Base URL for the Reactome API | https://reactome.org/AnalysisService |
| interactors | No | Include interactors | |
| species | No | List of species to filter the result (accepts taxonomy ids, species names and dbId) | |
| page_size | No | Pathways per page | |
| page | No | Page number | |
| sort_by | No | Field to sort results by (e.g., 'ENTITIES_PVALUE', 'ENTITIES_FDR') | ENTITIES_PVALUE |
| order | No | Sort order ('ASC' or 'DESC') | ASC |
| resource | No | Resource to filter by (TOTAL includes all molecule types) | TOTAL |
| p_value | No | P-value threshold (only pathways with p-value <= threshold will be returned) | |
| include_disease | No | Set to False to exclude disease pathways | |
| min_entities | No | Minimum number of contained entities per pathway | |
| max_entities | No | Maximum number of contained entities per pathway | |
| importable_only | No | Filter to only include importable resources | |
| timeout | No | Request timeout in seconds |
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 full burden for behavioral disclosure. It states the tool returns a dict with API response or error, which is helpful. However, it omits critical details such as idempotency, side effects, authentication requirements, rate limits, or the nature of the API call (GET vs POST). The focus is heavily on parameters rather than 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 a front-loaded purpose sentence followed by an Args section. However, the Args section is a verbose list that largely duplicates the schema's property descriptions, making it longer than necessary. Every sentence could be more concise; for example, the parameter details could be summarized or omitted given the schema.
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 (15 parameters, 1 required) and that an output schema exists, the description covers the basic purpose and parameter details. However, it lacks guidance on when to use this tool versus siblings, does not explain error handling beyond 'error information', and misses behavioral constraints. The output schema may cover return structure, but the description's contextual gaps remain.
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 100%, so the baseline is 3. The description repeats the schema's parameter descriptions almost verbatim without adding new semantic information beyond the usage tip about species. While it lists all parameters, it does not provide deeper meaning or contextualize parameter interactions beyond what the schema already offers.
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 queries the Reactome API identifier endpoint to retrieve pathways for a given identifier, using a specific verb ('Query') and resource ('Reactome API identifier endpoint'). It distinguishes from sibling tools like bc_query_kegg (different database) and bc_get_string_id, as it targets Reactome pathways.
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 advises to always provide the species parameter for correct results, which is a useful usage condition. However, it does not explicitly mention when not to use this tool or compare it with alternatives among the many sibling tools (e.g., bc_query_kegg for KEGG pathways). This limits guidance for an agent choosing among similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_recent_biorxiv_preprintsA
Search bioRxiv/medRxiv preprints by date range or recent count. Specify one search method: date range, days, or recent_count.
Returns: dict: Search results with server, search_params, total_returned, papers list (each with title, authors, abstract, metadata), pagination info or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Search last N days (1-365, alternative to date range) | |
| cursor | No | Pagination: starting position | |
| server | No | 'biorxiv' or 'medrxiv' | biorxiv |
| category | No | Filter by subject (e.g., 'cell biology', 'neuroscience') | |
| end_date | No | End date (YYYY-MM-DD) | |
| start_date | No | Start date (YYYY-MM-DD) | |
| max_results | No | Max results per page (1-500) | |
| recent_count | No | Most recent N preprints (1-1000, alternative to date range) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 details the return structure (dict with server, search_params, etc.) and mentions pagination. However, it omits potential rate limits, error conditions, or any read-only guarantees.
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: first states purpose, second explains return. It is front-loaded and efficient, though a more structured format (e.g., bullet points) could improve 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?
With 8 parameters and an output schema, the description adequately covers search methods and return format. However, it could be more complete by mentioning error handling, edge cases, or how this tool relates to bc_get_biorxiv_preprint_details given the many 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?
Schema description coverage is 100%, so baseline is 3. The description adds value by specifying the mutual exclusivity of search methods (date range, days, recent_count) and summarizing the return format, which is not in 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 searches bioRxiv/medRxiv preprints by date range or recent count, with a specific verb and resource. It differentiates from sibling tools like bc_get_biorxiv_preprint_details, which likely handles individual preprint details.
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 instructs to specify one search method (date range, days, or recent_count) but does not provide explicit context on when to use this tool over siblings or what not to do. No alternatives are mentioned, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_recruiting_studies_by_locationA
Find recruiting clinical trials by geographic location. Returns paginated results with summary breakdowns.
Returns: dict: Studies list with summary containing search location, total studies, study type/phase/condition breakdowns, recruiting locations or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| age_range | No | 'CHILD', 'ADULT', 'OLDER_ADULT', or 'ALL' | ALL |
| condition | No | Medical condition filter (e.g., 'cancer') | |
| page_size | No | Results per page (1-1000) | |
| study_type | No | 'INTERVENTIONAL', 'OBSERVATIONAL', or 'ALL' | ALL |
| location_city | No | City name | |
| location_state | No | State/province (e.g., 'California') | |
| location_country | Yes | Country name (e.g., 'United States', 'Germany') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions pagination and return format (summary breakdowns), which provides some behavioral context. However, without annotations, it lacks details on data freshness, required permissions, or error handling beyond a brief 'or error message'.
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 purpose. The returns section is somewhat redundant given the presence of an output schema, slightly reducing conciseness.
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 tool with rich schema and pagination, the description covers key points: location-based search, recruiting filter, pagination, and return summary. It is missing explicit differentiation from siblings but is otherwise adequate.
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 100% coverage with descriptions for all 7 parameters. The description does not add additional semantic meaning beyond what the schema already provides, meeting the baseline expectation.
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 finds recruiting clinical trials by geographic location, specifying the verb and resource. It distinguishes itself from sibling tools like bc_get_studies_by_condition by focusing on location-based filtering.
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?
No explicit guidance is provided on when to use this tool versus alternatives. With many sibling tools (e.g., bc_search_studies, bc_get_studies_by_condition), the description should mention when to prefer this location-based search over other methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_string_idA
Map protein identifiers (gene names, synonyms, UniProt IDs) to STRING database IDs. Using STRING IDs improves reliability.
Returns: str or dict: STRING ID string (e.g., '9606.ENSP00000269305') or dict with error message.
| Name | Required | Description | Default |
|---|---|---|---|
| protein_symbol | Yes | Protein name or identifier (e.g., 'TP53') | |
| species | No | Species taxonomy ID (e.g., '9606' for human) | |
| return_field | No | Field to return: 'stringId' or 'preferredName' | stringId |
| limit | No | Maximum number of matches to return |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 return type (str or dict with error) and gives an example, but does not discuss potential behaviors such as handling multiple matches, rate limits, or authentication. The description is moderately transparent but could be more 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 concise with two sentences and a return specification. It front-loads the purpose and includes a brief justification. No unnecessary words, though the return format could be omitted if output schema is present.
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 simplicity and the presence of an output schema, the description covers the core functionality well. It explains what the tool does and what it returns, but could mention error handling or the role of the limit parameter. Overall, fairly complete.
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?
Input schema has 100% description coverage, so the schema already documents each parameter. The description adds no additional meaning beyond stating the function. Baseline score of 3 is appropriate.
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 maps protein identifiers to STRING database IDs, with specific input types and an example output. This distinguishes it from sibling tools that focus on interactions, networks, or other operations.
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 when one needs a STRING ID, stating 'Using STRING IDs improves reliability.' However, it does not explicitly state when to use this tool versus alternatives like bc_get_kegg_id, nor does it provide any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_string_interactionsA
Retrieve protein-protein interactions for a given protein with scores above threshold. Always provide species parameter.
Returns: list or dict: Protein interactions array with stringId_A, stringId_B, preferredName_A/B, score, evidence channels or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| protein_symbol | Yes | Protein name to search for (e.g., 'TP53') | |
| species | Yes | Species taxonomy ID (e.g., '10090' for mouse) | |
| min_score | No | Minimum combined score threshold (0-1000) |
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 discloses the return format (list/dict with specific fields) and mentions possible error messages. However, it does not state that the tool is read-only, whether it calls an external API, or any side effects. The behavior is inferable but not explicitly transparent.
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 two sentences plus a returns section, all front-loaded. Every sentence provides necessary information without extraneous words. The structure is efficient and easy to parse.
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 and no output schema, the description adequately explains the return fields (stringId_A, score, etc.) and usage requirement (species). It could be improved by naming the underlying database (STRING) to better distinguish from other protein interaction tools, but overall it is fairly complete.
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?
Input schema has 100% coverage for all three parameters. The description adds little beyond the schema: it reiterates the species requirement and implies the threshold concept, but these are already covered. No new parameter meaning is added, so baseline score of 3 is appropriate.
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 retrieves protein-protein interactions for a given protein with a score threshold, which distinguishes it from siblings like bc_get_string_id (ID lookup) and bc_get_string_network_image (image generation). The verb 'retrieve' and resource 'protein-protein interactions' are specific and unambiguous.
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 instructs 'Always provide species parameter', which is a usage guideline. However, it does not explain when to use this tool versus alternatives like bc_get_string_similarity_scores or bc_get_string_network_image, nor does it mention conditions where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_string_network_imageA
Generate protein-protein interaction network image from STRING database. Always provide species parameter.
Returns: Image or dict: Network visualization as PNG image object or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| protein_symbol | Yes | Protein name to search for (e.g., 'TP53') | |
| species | Yes | Species taxonomy ID (e.g., '10090' for mouse) | |
| flavor | No | Network flavor (e.g., 'confidence', 'evidence', 'actions') | confidence |
| min_score | No | Minimum combined score threshold (0-1000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It discloses the return type (image or dict/error) and the mandatory parameter. However, it lacks details on potential side effects, authentication requirements, or rate limits. Given the simplicity of the tool, the transparency is 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 extremely concise: two sentences and a return line with no extraneous information. Every part adds value, and it is front-loaded with the core 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?
Given there is no output schema, the description adequately explains the return format (image or dict error). The tool is simple, and the description covers the essential behavioral context. It could mention the flavor and min_score parameters, but those are already fully described in the schema.
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?
All 4 parameters have descriptions in the input schema, resulting in 100% schema coverage. The description does not add significant new meaning beyond restating the need for the species parameter. Per criteria, baseline is 3 when schema coverage is high.
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 'Generate protein-protein interaction network image from STRING database', specifying both the action and the resource. It distinguishes from sibling tools like bc_get_string_interactions (returns data) and bc_get_string_similarity_scores (returns scores), making it easy to select for visual output.
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 one guideline: 'Always provide species parameter.' However, it does not explicitly state when to use this tool versus alternatives like bc_get_string_interactions for data or bc_get_string_id for identifiers. The context is implied but not directly referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_string_similarity_scoresA
Retrieve protein homology similarity scores from STRING database based on Smith-Waterman bit scores. Only scores above 50 reported.
Returns: list or dict: Similarity scores array with stringId_A, stringId_B, bitscore or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| protein_symbol | Yes | First protein symbol (e.g., 'TP53') | |
| protein_symbol_comparison | Yes | Second protein symbol (e.g., 'MKI67') | |
| species | No | Species taxonomy ID (e.g., '9606' for human) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the score threshold and return types (list or dict) but omits details like authentication, rate limits, or side effects. 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?
Description is very concise: three sentences with no redundant information. First sentence front-loads the core purpose. Every sentence adds value without extraneous text.
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, 2 required, and an output schema exists, the description covers key aspects: purpose, threshold, and return structure. Minor gaps like missing example usage or format details prevent a perfect score.
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 100% with clear descriptions for each parameter (e.g., 'First protein symbol (TP53)'). The description adds context about Smith-Waterman bit scores but does not enhance parameter meaning significantly, so baseline 3 is appropriate.
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 'Retrieve' and specifies the resource: protein homology similarity scores from STRING database. It distinguishes from sibling tools like bc_get_string_interactions by focusing on Smith-Waterman bit scores with a threshold.
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?
No explicit guidance on when to use this tool vs alternatives. The threshold constraint ('Only scores above 50 reported') is mentioned but not tied to usage contexts. Implied purpose but lacks comparative directives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_studies_by_conditionA
Search trials by condition with summary statistics. Returns paginated results with breakdowns by status, study type, and phase.
Returns: dict: Studies list with summary containing condition searched, total studies, status/study type/phase breakdowns or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | 'LastUpdatePostDate:desc', 'StudyFirstPostDate:desc', or 'EnrollmentCount:desc' | LastUpdatePostDate:desc |
| status | No | 'RECRUITING', 'ACTIVE_NOT_RECRUITING', 'COMPLETED', or 'ALL' | ALL |
| condition | Yes | Medical condition/disease (e.g., 'cancer', 'diabetes') | |
| page_size | No | Results per page (1-1000) | |
| study_type | No | 'INTERVENTIONAL', 'OBSERVATIONAL', or 'ALL' | ALL |
| location_country | No | Country filter (e.g., 'United States') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates the tool returns paginated results with summaries and error messages, implying a read-only operation. However, with no annotations, it does not explicitly state whether it is safe (non-destructive), authentication needs, or rate limits, which are important for behavioral 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 concise with two sentences followed by a return format. The first sentence clearly states the purpose, and every piece of information contributes meaningfully 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?
Given the tool's moderate complexity (6 parameters, 1 required), full schema coverage, and presence of an output schema, the description covers the essential purpose and return structure. However, it lacks details on pagination behavior and error handling, which could be supplemented by the output schema.
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 100%, so the baseline is 3. The description adds little beyond the schema, only reiterating the condition parameter and summary output. It does not explain parameter interactions or provide examples, failing to add significant value.
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 'search' and the resource 'trials by condition', and mentions summary statistics with breakdowns by status, study type, and phase. It differentiates from sibling tools like bc_search_studies or bc_get_studies_by_intervention by focusing on condition-based search with aggregated statistics.
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 no explicit guidance on when to use this tool over alternatives such as bc_search_studies or bc_get_recruiting_studies_by_location. It does not mention when not to use it or prerequisites, leaving the agent to infer usage from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_studies_by_interventionA
Search trials by intervention with condition and phase filters. Returns paginated results with breakdowns.
Returns: dict: Studies list with summary containing intervention searched, total studies, status/phase breakdowns, top conditions/sponsors or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | 'LastUpdatePostDate:desc', 'StudyFirstPostDate:desc', or 'EnrollmentCount:desc' | LastUpdatePostDate:desc |
| phase | No | 'PHASE1', 'PHASE2', 'PHASE3', 'PHASE4', or 'EARLY_PHASE1' | |
| status | No | 'RECRUITING', 'ACTIVE_NOT_RECRUITING', 'COMPLETED', or 'ALL' | ALL |
| condition | No | Medical condition filter (e.g., 'cancer') | |
| page_size | No | Results per page (1-1000) | |
| intervention | Yes | Drug/therapy name (e.g., 'aspirin', 'pembrolizumab', 'radiation') | |
| intervention_type | No | 'DRUG', 'BIOLOGICAL', 'DEVICE', 'PROCEDURE', 'RADIATION', 'BEHAVIORAL', or 'ALL' | ALL |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes pagination and return dict structure (intervention, total studies, breakdowns, error message) but no annotations exist. Lacks details on data freshness, authorization, or side effects. 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?
Two sentences: first states purpose and filters, second describes return. No wasted words, highly 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 7 parameters and output schema existence, the description covers core functionality (intervention search, filters, paginated results with breakdowns). Could mention sort or intervention_type but those are in schema. Nearly complete.
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 100%, so parameters are documented. Description adds no additional meaning beyond schema, but reinforces that 'intervention' is the primary filter. Baseline 3 is appropriate.
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?
Clearly states 'Search trials by intervention' with specific filters (condition, phase), distinguishing it from siblings like bc_get_studies_by_condition and bc_search_studies. The verb 'Search' and resource 'trials' are explicit.
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?
No guidance on when to use this tool versus alternatives such as bc_get_studies_by_condition or bc_recruiting_studies_by_location. Does not mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_study_detailsA
Get complete trial details by NCT ID. Retrieves study design, eligibility, outcomes, locations, contacts, and metadata.
Returns: dict: Study details with protocol sections including identification, status, sponsors, description, conditions, design, interventions, outcomes, eligibility, locations or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated fields or 'all' for complete data. Default includes key modules. | IdentificationModule,StatusModule,SponsorCollaboratorsModule,DescriptionModule,ConditionsModule,DesignModule,ArmsInterventionsModule,OutcomesModule,EligibilityModule,ContactsLocationsModule |
| nct_id | Yes | NCT ID (e.g., 'NCT01234567') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description solely bears the responsibility for behavioral disclosure. It states the tool retrieves study details and returns a dictionary, which implies a read-only operation. However, it does not mention any potential side effects, authentication needs, rate limits, or other behavioral traits beyond the basic read action.
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 very concise, consisting of two sentences and a return type definition. It is front-loaded with the main action and avoids unnecessary words or repetition.
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, complete schema descriptions, and only two parameters, the description covers the essential aspects. It clearly states the purpose and return structure. A minor gap is the lack of mention that it is for a single study and requires an exact NCT ID, but overall it is sufficiently complete.
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 100% schema description coverage, the baseline is 3. The description adds minimal value beyond the schema; it reiterates that the tool retrieves details by NCT ID but does not explain the fields parameter in more detail or provide usage examples. The schema already documents the parameters sufficiently.
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 verb 'Get', the resource 'complete trial details', and the method 'by NCT ID'. It lists the types of data retrieved (study design, eligibility, etc.), distinguishing it from sibling tools like bc_search_studies that return lists rather than complete details.
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 mentions using an NCT ID but does not provide guidance on when to use this tool versus alternatives such as bc_search_studies or bc_get_recruiting_studies_by_location. No exclusions or prerequisite information is given, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_term_detailsA
Get comprehensive details about a specific ontology term including definition, synonyms, hierarchical relationships.
Returns: dict: Term details with id, label, definition, synonyms, hierarchical info, num_descendants or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| term_id | Yes | Term ID in CURIE format (e.g., 'EFO:0000001', 'GO:0008150') | |
| ontology_id | Yes | Ontology ID where the term is defined (e.g., 'efo', 'go', 'chebi') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It discloses the return format (dict with details or error message) and hints at read-only behavior by listing fields. However, it does not explicitly state it is a non-destructive read operation or note any authentication requirements.
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 sentences and a return type specification. No unnecessary words; the purpose is 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 output schema exists (not shown but context confirms), the description is complete for a simple retrieval tool with two well-documented parameters. It lists all relevant fields returned and mentions error handling.
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 100%, so the description adds little beyond what the schema already provides. The schema already describes term_id as CURIE format and ontology_id with examples. The description does not introduce new parameter semantics.
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 comprehensive details about a specific ontology term, listing definition, synonyms, hierarchical relationships, and num_descendants. This distinguishes it from sibling tools like 'bc_search_ontology_terms' (search-oriented) and 'bc_get_term_hierarchical_children' (only children).
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 the tool is used when a term_id and ontology_id are known, but it does not explicitly state when to use this tool versus alternatives, nor does it provide conditions or exclusions. For example, it could mention to use 'bc_search_ontology_terms' if the term ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_term_hierarchical_childrenA
Get hierarchical children of an ontology term from OLS. Includes subclasses and hierarchical properties.
Returns: dict: Parent term, hierarchical_children array with id/label/definition, total_children, page_info or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Maximum number of children to return | |
| term_id | Yes | Term ID in CURIE format (e.g., 'EFO:0000001', 'GO:0008150') | |
| ontology_id | Yes | Ontology ID (e.g., 'efo', 'go', 'chebi') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It explains that the tool returns a dict with parent term, children array, total_children, page_info, or error message. However, it does not disclose potential large payloads, rate limits, authentication needs, or details about pagination beyond mentioning 'page_info'. The description is adequate but could be more transparent.
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 extremely concise: a single sentence for purpose and a short list for return values. No unnecessary words, and the most critical information is front-loaded. Every sentence contributes 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 that an output schema exists (per context signals), the description's coverage of return structure is good. It explains the main components but could elaborate on what 'hierarchical children' entails (e.g., subclasses vs. other relationships). For a simple retrieval tool, it is mostly complete.
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?
Input schema coverage is 100% with good descriptions for all three parameters. The description does not add new meaning beyond the schema; it only restates the return structure that includes page_info, which indirectly relates to the 'size' parameter. With high schema coverage, baseline is 3, and no extra semantic value is provided.
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 retrieves hierarchical children of an ontology term from OLS, using specific verbs and resource. It is easily distinguishable from sibling tools like bc_get_term_details (which likely returns flat details) and bc_search_ontology_terms (which searches for terms).
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 getting hierarchical children but provides no explicit guidance on when to use this tool over alternatives, nor does it mention exclusions or prerequisites. Sibling tools exist but no comparative advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_uniprot_id_by_protein_symbolA
Retrieve UniProt accession ID from protein name and species. Returns the primary accession or None if not found.
Returns: str or None: UniProt accession ID string (e.g., 'P04637') or None if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | Organism taxonomy ID (e.g., '9606' for human) | 9606 |
| protein_symbol | Yes | Gene or protein name to search for (e.g., 'SYNPO') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. Returns primary accession or None, but does not disclose behavior on multiple matches or error cases. Adequate but minimal.
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?
Two sentences, front-loaded with purpose, no wasted words. Perfectly 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 simple 2-parameter tool with output schema, description covers the essential purpose and return value. Could mention default species behavior, but overall complete.
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 100%, so description adds little beyond schema. It restates that it uses protein name and species, but no additional formatting or constraints beyond 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?
Clearly states it retrieves a UniProt accession ID from protein name and species, specifies return type as string or None, and the name differentiates it from sibling bc_get_uniprot_protein_info.
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?
Implied usage: when you need an accession ID from protein name. No explicit when-not-to-use or alternatives mentioned, which would be helpful given siblings like bc_get_uniprot_protein_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_get_uniprot_protein_infoA
Retrieve protein information from UniProt database. Provide at least one of protein_id, protein_name, or gene_symbol.
Returns: dict: Protein information with accession, proteinDescription, genes, organism, sequence, functions, keywords, references or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | Taxonomy ID (e.g., '10090') or species name | |
| protein_id | No | Protein accession number (e.g., 'P04637') | |
| gene_symbol | No | Gene symbol to search for (e.g., 'TP53') | |
| protein_name | No | Protein name to search for (e.g., 'P53') | |
| include_references | No | Include references and cross-references in response |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 return type (dict with listed fields) and mentions possible error messages, but does not state whether the operation is read-only, requires authentication, or how it handles missing data. Acceptable for a retrieval tool but could be more explicit.
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 extremely concise: two sentences plus a returns line. No redundant information. Every sentence serves a purpose, and the key constraint is front-loaded. Ideal length for quick understanding.
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 (context signal), the description does not need to fully explain return values, but it still lists key fields. However, it could mention the usage of the 'species' parameter to narrow results. Overall, adequate for the tool's 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 100% (all 5 parameters have descriptions). The description adds value by specifying that at least one of protein_id, protein_name, or gene_symbol must be provided, which is not enforced by the schema (all optional). This helps the agent understand the constraint.
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?
Description clearly states the action ('Retrieve protein information') and the resource ('UniProt database'). It specifies the key parameters (protein_id, protein_name, gene_symbol) and differentiates from sibling tools like bc_get_uniprot_id_by_protein_symbol by focusing on full info 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?
Description advises 'Provide at least one of protein_id, protein_name, or gene_symbol', which is a usage constraint. However, it does not explicitly compare to sibling tools or state when to use this tool versus alternatives (e.g., bc_get_protein_domains, bc_get_human_protein_atlas_info).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_query_keggA
Execute flexible KEGG API queries across pathways, genes, compounds, diseases, drugs. Use get_kegg_id_by_gene_symbol() first.
Returns: str or dict: Raw text response from KEGG API with requested data (pathways, genes, compounds, etc.) or error dict.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | info, list, find, get, conv, link, or ddi | |
| database | No | pathway, compound, genes, organism code (hsa, mmu, etc.), or other DB | |
| target_db | No | Target DB for conversion/linking operations | |
| source_db | No | Source DB for conversion/linking operations | |
| query | No | Query string for FIND/LIST, or organism code for LIST | |
| option | No | aaseq, ntseq, mol, formula, exact_mass, mol_weight, etc. | |
| entries | No | KEGG entry IDs (e.g., ['hsa:7157', 'hsa00010']) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses return type ('Raw text response... or error dict'), which is helpful. No annotations exist, so description carries burden; it mentions the dependency which is a behavioral trait. Could be improved by noting potential side effects or rate limits.
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?
Two sentences plus return statement; no wasted words. Front-loaded with purpose and prerequisite. Highly 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's complexity (7 parameters, many enums) and existence of output schema, the description is adequate but lacks guidance on parameter combinations or query construction. It covers basic use but leaves gaps for complex scenarios.
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 100%, so parameters are well documented in schema. The description adds minimal extra meaning beyond stating the tool's flexibility and prerequisite, so baseline 3 is appropriate.
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 'Execute flexible KEGG API queries across pathways, genes, compounds, diseases, drugs,' using specific verb and resource. It distinguishes from sibling tools by referencing get_kegg_id_by_gene_symbol() as a prerequisite.
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 instructs use of get_kegg_id_by_gene_symbol() first, providing prerequisite context. However, it lacks explicit when-not scenarios or alternative tools for specific operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_query_open_targets_graphqlA
Execute GraphQL queries against the Open Targets API. Use get_open_targets_query_examples() or get_open_targets_graphql_schema() first.
Returns: dict: GraphQL response with data field containing targets, diseases, drugs, variants, studies or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| query_string | Yes | GraphQL query string starting with 'query' keyword | |
| variables | No | Optional variables for the GraphQL query |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, placing burden on the description. It states the tool queries an API and returns a dict, implying read-only operation, but does not explicitly mention side effects, authentication, or rate limits. Acceptable but minimal.
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 two sentences plus a return note, front-loaded with purpose. No redundant or missing information for the described functionality.
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 shown but indicated), the description covers the essential return format. The tool is straightforward, and the description, while minimal, is complete enough for the intended use case.
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 100% and both parameters have adequate descriptions. The description does not add additional semantic information beyond what the schema provides, so baseline score applies.
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 states 'Execute GraphQL queries against the Open Targets API' with a clear verb and resource. It also directs to helper tools, but does not explicitly differentiate from sibling tools, which are more specialized.
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 advises using helper functions first, giving a prerequisite order. However, it lacks explicit guidance on when to use this tool versus sibling tools (e.g., for ad-hoc queries vs. dedicated get/search functions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_search_drugs_by_therapeutic_classA
Search for drugs by therapeutic or pharmacologic class. Use get_available_pharmacologic_classes() first for exact terms.
Returns: dict: FDA drug results array with application info, products, sponsor names or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| therapeutic_class | Yes | Exact therapeutic/pharmacologic class term from FDA (use get_available_pharmacologic_classes first) | |
| class_type | No | Class type: 'epc' (Established Pharmacologic Class), 'moa' (Mechanism of Action), 'pe' (Physiologic Effect), or 'cs' (Chemical Structure) | epc |
| limit | No | Number of results to return |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the sole source of behavioral info. It mentions returning a dictionary with FDA results or an error, but does not disclose rate limits, authentication needs, or what happens with invalid terms. 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 extremely concise: two sentences covering purpose, prerequisite, and return value. No unnecessary words, well-structured.
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 sibling tools, this focused search is well-defined. The output schema exists (though not visible), and the description indicates the content of the return object. Minor gaps (pagination, error types) but overall sufficient.
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?
Input schema has 100% coverage, so baseline is 3. The description adds value by reiterating the prerequisite for the therapeutic_class parameter, which is not in the schema, thus enhancing understanding beyond the schema alone.
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 for drugs by therapeutic or pharmacologic class, distinguishing from siblings like bc_search_drugs_fda by specifying the search criterion.
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 advises using get_available_pharmacologic_classes() first for exact terms, providing clear context on prerequisites. It lacks explicit when-not-to-use guidance but is otherwise helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_search_drugs_fdaB
Search FDA Drugs@FDA database for approved drug products. Supports multiple search criteria.
Returns: dict: Results array with drug products including application numbers, sponsors, products array or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_name | No | Brand or trade name (e.g., 'Tylenol') | |
| generic_name | No | Generic name (e.g., 'acetaminophen') | |
| active_ingredient | No | Active ingredient name | |
| sponsor_name | No | Company/sponsor name | |
| application_number | No | FDA application number (NDA, ANDA, or BLA) | |
| marketing_status | No | Marketing status: 'Prescription', 'Over-the-counter', 'Discontinued', or 'None (Tentative Approval)' | |
| dosage_form | No | Dosage form (e.g., 'TABLET', 'INJECTION', 'CAPSULE') | |
| route | No | Route of administration (e.g., 'ORAL', 'INJECTION', 'TOPICAL') | |
| search_type | No | 'and' for all terms must match, 'or' for any term matches | or |
| sort_by | No | Field to sort by (e.g., 'sponsor_name', 'application_number') | |
| limit | No | Number of results to return | |
| skip | No | Number of results to skip for pagination |
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 full burden. It mentions the return structure but does not disclose that the operation is read-only, nor does it discuss pagination behavior, rate limits, or potential side effects. Safety profile is unclear.
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 only two sentences plus a return note, very concise. Purpose is front-loaded. Every sentence earns its place 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?
The tool has 12 optional parameters and an output schema, so the description need not detail return values. However, it lacks guidance on combining parameters or typical use cases. Given the sibling tools, more context on when to use multiple search fields would improve completeness.
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 100%, so the baseline is 3. The description adds 'Supports multiple search criteria' but does not elaborate on parameter semantics beyond what the schema provides. No extra value.
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 the FDA Drugs@FDA database for approved drug products, which is a specific verb and resource. It is distinguishable from siblings like bc_search_drugs_by_therapeutic_class, though it does not explicitly differentiate. The mention of 'approved drug products' adds specificity.
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?
No guidance on when to use this tool versus siblings (e.g., therapeutic class search, application number lookup). There is no mention of when not to use it or prerequisites. The description leaves the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_search_google_scholar_publicationsA
Search Google Scholar for publications with support for author search using 'author:"Name"' syntax. WARNING: Use responsibly, may block excessive queries.
Returns: dict: Publications list with title, authors, venue, year, citations, abstract, bib entry or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g., 'machine learning' or 'author:"John Smith" deep learning') | |
| max_results | No | Maximum number of publications to return (1-50) | |
| use_proxy | No | Use free proxies to avoid rate limiting |
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, the description carries the full burden. It discloses return format and rate-limiting risk, but does not state whether the operation is read-only, authentication requirements, or other behavioral aspects.
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 a single sentence plus a warning and return type line, front-loaded with purpose, and contains no unnecessary words.
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 3 parameters all documented and a return field list, the description is fairly complete. However, it lacks details on pagination or error handling, but is sufficient for most use cases.
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?
Input schema has 100% coverage with parameter descriptions. The description adds context about author syntax and warning, but adds little meaning beyond what the schema already provides.
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 'Search Google Scholar for publications' and highlights the specific author search syntax, making the tool's purpose distinct from sibling tools that focus on drugs and biomedical data.
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 a warning about responsible use and rate limiting, but does not provide explicit guidance on when to use this tool versus other alternatives or 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.
bc_search_grants_govA
Search grants.gov by keyword, agency, or other criteria. Returns opportunity listings with deadlines and eligibility.
Returns: dict: Grant opportunities list with titles, agencies, deadlines, funding amounts, eligibility criteria or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| aln | No | Assistance Listing Number | |
| rows | No | Results to return | |
| keyword | No | Search keyword | |
| opp_num | No | Opportunity number | |
| agencies | No | Agency codes (comma-separated) | |
| opp_statuses | No | 'forecasted|posted' (pipe-separated, default: 'forecasted|posted') | forecasted|posted |
| eligibilities | No | Eligibilities (comma-separated) | |
| funding_categories | No | Categories (comma-separated) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It states the return type (dict) and lists fields, which is good. However, it does not mention any side effects (likely none), rate limits, authentication needs, pagination, or error handling beyond 'error message'. The presence of an output schema (context signal) helps, but the description lacks depth on 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 extremely concise: two sentences and a return type line. It front-loads the main action and includes no unnecessary words. Every sentence provides essential information.
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 8 optional parameters, a description that mentions only 'keyword, agency, or other criteria' is somewhat vague. The output schema is present (context signal), but the description does not clarify how multiple filters interact (AND/OR), default behavior, or search scope. It is minimally complete for a search tool but lacks some contextual details.
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 100%, so the input schema already documents all 8 parameters. The description only adds 'keyword, agency, or other criteria' and does not elaborate on parameter usage, formatting, or constraints beyond what the schema provides. With full schema coverage, baseline is 3.
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 grants.gov by keyword, agency, or other criteria, and returns opportunity listings. It uses a specific verb 'Search' and resource 'grants.gov', and the tool's domain (grants) distinctly sets it apart from all sibling tools which focus on biomedical/drug/gene data.
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 does not explicitly state when to use this tool or when not to, nor does it mention alternatives. However, given the distinct domain of grants.gov compared to all sibling tools (which are about drugs, proteins, studies, etc.), usage is implicitly clear. No exclusions or preconditions are provided, so a score of 3 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_search_interpro_entriesA
Search InterPro entries by name, type, database, GO term, or species. Returns matching entries with metadata.
Returns: dict: Search results with results array (InterPro entries), count, total_available, search_criteria or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search term for entry names/descriptions | |
| go_term | No | GO term filter (e.g., 'GO:0006122') | |
| page_size | No | Results per page (max 200) | |
| entry_type | No | family, domain, homologous_superfamily, repeat, conserved_site, binding_site, active_site, or ptm | |
| species_filter | No | Taxonomy ID filter (e.g., '9606') | |
| source_database | No | pfam, prosite, panther, smart, cdd, hamap, pirsf, prints, etc. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 format (results, count, total_available, search_criteria or error) but does not explicitly state the tool's read-only nature or any side effects, which is adequate 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?
The description is two sentences plus a Returns section, front-loaded with the main purpose, concise with no wasted words, and effectively communicates the tool's function.
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 (6 optional parameters) and presence of an output schema, the description covers the main search functionality and output structure. However, it omits mention of pagination (page_size parameter) and how filters combine, leaving minor 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?
With 100% schema coverage and parameter descriptions, the description adds modest value by listing searchable criteria (name, type, database, GO term, species) that correspond to parameters, but does not significantly enhance understanding 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 'Search InterPro entries' with specific criteria (name, type, database, GO term, or species), distinguishing it from sibling tools like bc_get_interpro_entry which retrieves a single entry.
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 searching by various criteria but does not explicitly address when to use this tool versus alternatives, nor does it provide when-not-to-use guidance or mention bc_get_interpro_entry as a better fit for known entries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_search_ontology_termsA
Search for terms across multiple ontologies in OLS. Use get_available_ontologies() first to discover ontologies.
Returns: dict: Terms array, terms_by_ontology grouped results, total_results, ontologies_found list or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Maximum number of results to return | |
| ontologies | No | Comma-separated ontology IDs (e.g., 'efo,go,chebi'). Leave empty for all. Use get_available_ontologies() to see options | |
| exact_match | No | Whether to perform exact match search | |
| search_term | Yes | Term to search for |
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, the description carries the full burden. It mentions the return structure (Terms array, etc.) and that it can return an error message, but does not state whether it is read-only or has side effects. Some transparency is added, but more context on behavior would be beneficial.
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 two sentences plus a returns block, all front-loaded with the main action. No extraneous words, and the structure efficiently conveys purpose, precondition, and output format.
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 an output schema and 100% parameter coverage, the description is fairly complete: it states the action, necessary prerequisite, and high-level return structure. It could mention read-only nature, but overall it is sufficient for an agent.
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 100%, and the schema descriptions are already detailed (e.g., 'Comma-separated ontology IDs...'). The description does not add new parameter-level meaning beyond what the schema provides, so baseline 3 is appropriate.
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 starts with 'Search for terms across multiple ontologies in OLS,' which is a specific verb+resource. It also instructs to use get_available_ontologies() first, distinguishing it from tools that search within a single ontology or retrieve details for a known term.
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 tells the agent to use get_available_ontologies() first, providing a clear precondition. It does not explicitly state when not to use it (e.g., for known ontology-specific searches), but the sibling tools imply alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_search_pride_projectsA
Search PRIDE database for mass spectrometry proteomics projects using keywords and filters.
Returns: dict: Results array with project accessions, titles, descriptions, organisms, instruments, experiment types, count, search_criteria or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | Search keywords (e.g., 'proteome', 'cancer', 'human') | |
| organism_filter | No | Organism filter (e.g., 'Homo sapiens', 'human') | |
| instrument_filter | No | Instrument type filter (e.g., 'Orbitrap', 'LTQ') | |
| experiment_type_filter | No | Experiment type filter (e.g., 'TMT', 'Label-free') | |
| page_size | No | Number of results to return (max 100) | |
| sort_field | No | Sort field: submissionDate or publicationDate | submissionDate |
| sort_direction | No | Sort direction: ASC or DESC | DESC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only mentions the return type (dict with fields) but does not state whether the operation is read-only, any side effects, rate limits, or error cases. This is insufficient for a search tool without annotations.
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 two sentences: the first states the purpose, the second lists return fields. It is concise without wordiness, though the structure could be improved by front-loading the purpose more prominently.
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 7 parameters with full schema coverage and an output schema described, the description covers the basics. However, it lacks details on pagination behavior (beyond page_size), combination logic for filters, and absence of any mention of error handling, which would be beneficial for completeness.
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 100% (all 7 parameters have descriptions). The description adds no extra meaning beyond the schema, merely listing top-level return fields. Baseline is 3 due to high coverage, and no additional parameter context is provided.
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's purpose: searching the PRIDE database for mass spectrometry proteomics projects using keywords and filters. It is distinct from sibling tools like bc_get_pride_project (retrieves a single project) and bc_search_pride_proteins (searches proteins), providing specific verb+resource 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?
The description implies usage for searching PRIDE projects but does not provide explicit guidance on when to use this tool versus alternatives. No exclusions or context for sibling tools are mentioned, leaving the agent to infer based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_search_pride_proteinsA
Search for proteins identified in a specific PRIDE mass spectrometry project. Useful for finding specific proteins in proteomics datasets.
Returns: dict: Proteins list with accessions, names, genes, sequences, modifications, associated projects or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| project_accession | Yes | PRIDE project accession to search proteins in | |
| keyword | No | Search keyword for protein names or accessions | |
| page_size | No | Number of results to return (max 100) | |
| sort_field | No | Sort field: accession, proteinName, or gene | accession |
| sort_direction | No | Sort direction: ASC or DESC | ASC |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 format as a dict but does not disclose potential side effects, error conditions, or read-only nature. It is adequate but lacks detail on behavior beyond the return.
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 very concise: two sentences and a return type line. Every sentence is valuable and front-loaded with the main purpose. No wasted words.
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 5 parameters, an output schema, and no annotations, the description is mostly complete: it explains the main purpose and return format. It does not explain how optional parameters like keyword or sorting work, but these are covered by schema. Slightly lacking in contextual depth.
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 100%, so baseline is 3. The description adds no additional meaning beyond the schema descriptions; it does not elaborate on how parameters interact or provide examples.
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 identifies the tool as searching for proteins within a specific PRIDE mass spectrometry project. It uses specific verbs ('Search for') and resources ('proteins identified in a specific PRIDE mass spectrometry project'), and it is well-distinguished from sibling tools like bc_search_pride_projects and bc_get_pride_project.
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 states the tool is 'useful for finding specific proteins in proteomics datasets,' which implies when to use it. However, it does not explicitly mention when not to use it or provide alternatives among siblings, lacking full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bc_search_studiesA
Advanced search for trials with flexible multi-field filtering. Specify at least one search parameter.
Returns: dict: Paginated search results containing studies list with trial metadata or error message.
| Name | Required | Description | Default |
|---|---|---|---|
| sex | No | 'ALL', 'FEMALE', or 'MALE' | |
| sort | No | 'LastUpdatePostDate:desc', 'StudyFirstPostDate:desc', or 'EnrollmentCount:desc' | LastUpdatePostDate:desc |
| phase | No | 'PHASE1', 'PHASE2', 'PHASE3', 'PHASE4', 'EARLY_PHASE1', or 'NA' | |
| status | No | 'RECRUITING', 'ACTIVE_NOT_RECRUITING', 'COMPLETED', 'TERMINATED', 'SUSPENDED', 'WITHDRAWN', or 'NOT_YET_RECRUITING' | |
| max_age | No | Max participant age (years) | |
| min_age | No | Min participant age (years) | |
| sponsor | No | Sponsor org (e.g., 'Pfizer') | |
| condition | No | Medical condition (e.g., 'cancer') | |
| page_size | No | Results per page (1-1000) | |
| study_type | No | 'INTERVENTIONAL', 'OBSERVATIONAL', or 'EXPANDED_ACCESS' | |
| intervention | No | Drug/therapy name (e.g., 'aspirin') | |
| location_country | No | Country (e.g., 'United States') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states the return type (dict with paginated studies or error) and notes it's a search with filtering. However, it does not cover potential rate limits, authentication requirements, data freshness, or other behavioral aspects. The description is adequate but lacks depth.
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 extremely concise: two sentences plus a return type specification. Every sentence adds meaningful information with no superfluous content. The structure is clear and front-loaded with the main 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?
Given the complexity of 12 parameters and no required fields, the description provides the essential constraint and return format. An output schema is present, so return values are covered. However, it lacks guidance on pagination (e.g., how to get next page) and integration with other tools. It is nearly complete 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 100%, so baseline is 3. The description adds value by explicitly stating 'Specify at least one search parameter,' which enforces a constraint not present in the schema. This helps clarify usage beyond the parameter descriptions themselves.
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's an 'Advanced search for trials with flexible multi-field filtering,' which defines the purpose well. However, it does not explicitly differentiate from sibling tools like bc_get_studies_by_condition or bc_get_recruiting_studies_by_location, which are more specific. The name and description imply it's a general search, but no direct comparison is made.
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 the constraint 'Specify at least one search parameter,' which is a useful guideline. However, it does not mention when to use this tool versus the more specific sibling tools, nor does it provide any exclusions or prerequisites. Usage context is implied but not explicit.
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.
47 tool updates
v1.0.0- Changed
bc_count_drugs_by_field4 fields changed- changed
Input schema / properties / field / descriptionPrevious value: -"Field to count by (e.g., 'sponsor_name', 'products.dosage_form', 'products.route', 'products.marketing_status', 'openfda.pharm_class_epc')"New value: +"Field to count (e.g., 'sponsor_name', 'products.dosage_form', 'products.route', 'openfda.pharm_class_epc')" - removed
Input schema / properties / field / titleRemoved value: -"Field" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / search_filter / titleRemoved value: -"Search Filter"
- Changed
bc_get_alphafold_info_by_protein_symbol4 fields changed- changed
Input schema / properties / protein_symbol / descriptionPrevious value: -"The name of the gene to search for (e.g., 'SYNPO')"New value: +"Gene/protein name (e.g., 'SYNPO')" - removed
Input schema / properties / protein_symbol / titleRemoved value: -"Protein Symbol" - changed
Input schema / properties / species / descriptionPrevious value: -"The organism ID (e.g., '9606' for human)"New value: +"Taxonomy ID (e.g., '9606' for human)" - removed
Input schema / properties / species / titleRemoved value: -"Species"
- Changed
bc_get_antibody_information2 fields changed- changed
Input schema / properties / ab_id / descriptionPrevious value: -"Antibody ID from the Antibody Registry (e.g., '3643095')"New value: +"Antibody Registry ID (e.g., '3643095')" - removed
Input schema / properties / ab_id / titleRemoved value: -"Ab Id"
- Changed
bc_get_antibody_list4 fields changed- added
Input schema / properties / pageAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Page number for pagination (default: 1)" +} - changed
Input schema / properties / search / descriptionPrevious value: -"Search term for antibodies (e.g., gene symbol, protein name, UniProt ID)"New value: +"Gene symbol, protein name, or UniProt ID (e.g., 'TRPC6')" - removed
Input schema / properties / search / titleRemoved value: -"Search" - added
Input schema / properties / sizeAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Number of results per page (default: API default)" +}
- Changed
bc_get_available_pharmacologic_classes3 fields changed- changed
Input schema / properties / class_type / descriptionPrevious value: -"Type of pharmacologic class: 'epc' (Established Pharmacologic Class), 'moa' (Mechanism of Action), 'pe' (Physiologic Effect), or 'cs' (Chemical Structure)"New value: +"Class type: 'epc' (Established Pharmacologic Class), 'moa' (Mechanism of Action), 'pe' (Physiologic Effect), or 'cs' (Chemical Structure)" - removed
Input schema / properties / class_type / titleRemoved value: -"Class Type" - removed
Input schema / properties / limit / titleRemoved value: -"Limit"
- Changed
bc_get_biorxiv_preprint_details4 fields changed- changed
Input schema / properties / doi / descriptionPrevious value: -"DOI of the preprint (e.g., '10.1101/2020.09.09.20191205')"New value: +"Preprint DOI (e.g., '10.1101/2020.09.09.20191205')" - removed
Input schema / properties / doi / titleRemoved value: -"Doi" - changed
Input schema / properties / server / descriptionPrevious value: -"Server to search: 'biorxiv' or 'medrxiv'"New value: +"'biorxiv' or 'medrxiv'" - removed
Input schema / properties / server / titleRemoved value: -"Server"
- Changed
bc_get_cell_ontology_terms6 fields changed- changed
Input schema / properties / cell_type / descriptionPrevious value: -"The cell type to search for (e.g., 'T cell', 'neuron', 'hepatocyte')"New value: +"Cell type to search for (e.g., 'T cell', 'neuron')" - removed
Input schema / properties / cell_type / titleRemoved value: -"Cell Type" - changed
Input schema / properties / exact_match / descriptionPrevious value: -"Whether to perform an exact match search"New value: +"Whether to perform exact match search" - removed
Input schema / properties / exact_match / titleRemoved value: -"Exact Match" - changed
Input schema / properties / size / descriptionPrevious value: -"The maximum number of results to return"New value: +"Maximum number of results to return" - removed
Input schema / properties / size / titleRemoved value: -"Size"
- Changed
bc_get_chebi_terms_by_chemical6 fields changed- changed
Input schema / properties / chemical_name / descriptionPrevious value: -"The chemical or drug name to search for (e.g., 'aspirin', 'glucose')"New value: +"Chemical or drug name to search for (e.g., 'aspirin', 'glucose')" - removed
Input schema / properties / chemical_name / titleRemoved value: -"Chemical Name" - changed
Input schema / properties / exact_match / descriptionPrevious value: -"Whether to perform an exact match search"New value: +"Whether to perform exact match search" - removed
Input schema / properties / exact_match / titleRemoved value: -"Exact Match" - changed
Input schema / properties / size / descriptionPrevious value: -"The maximum number of results to return"New value: +"Maximum number of results to return" - removed
Input schema / properties / size / titleRemoved value: -"Size"
- Changed
bc_get_drug_by_application_number1 field changed- removed
Input schema / properties / application_number / titleRemoved value: -"Application Number"
- Changed
bc_get_drug_label_info4 fields changed- removed
Input schema / properties / brand_name / titleRemoved value: -"Brand Name" - removed
Input schema / properties / generic_name / titleRemoved value: -"Generic Name" - changed
Input schema / properties / ndc / descriptionPrevious value: -"National Drug Code (NDC) number"New value: +"National Drug Code (NDC)" - removed
Input schema / properties / ndc / titleRemoved value: -"Ndc"
- Changed
bc_get_efo_id_by_disease_name6 fields changed- changed
Input schema / properties / disease_name / descriptionPrevious value: -"The name of the disease to search for (e.g., 'choledocholithiasis')"New value: +"Disease name to search for (e.g., 'choledocholithiasis')" - removed
Input schema / properties / disease_name / titleRemoved value: -"Disease Name" - changed
Input schema / properties / exact_match / descriptionPrevious value: -"Whether to perform an exact match search"New value: +"Whether to perform exact match search" - removed
Input schema / properties / exact_match / titleRemoved value: -"Exact Match" - changed
Input schema / properties / size / descriptionPrevious value: -"The maximum number of results to return"New value: +"Maximum number of results to return" - removed
Input schema / properties / size / titleRemoved value: -"Size"
- Changed
bc_get_ensembl_id_from_gene_symbol4 fields changed- changed
Input schema / properties / gene_symbol / descriptionPrevious value: -"The name of the gene to search for (e.g., 'TP53')"New value: +"Gene name (e.g., 'TP53')" - removed
Input schema / properties / gene_symbol / titleRemoved value: -"Gene Symbol" - changed
Input schema / properties / species / descriptionPrevious value: -"Taxonomy ID (e.g., 10090) or species name as string"New value: +"Taxonomy ID (e.g., 9606 for human, 10090 for mouse)" - removed
Input schema / properties / species / titleRemoved value: -"Species"
- Changed
bc_get_europepmc_articles14 fields changed- changed
Input schema / properties / abstract / descriptionPrevious value: -"Search term for article abstracts"New value: +"Search in abstracts" - removed
Input schema / properties / abstract / titleRemoved value: -"Abstract" - changed
Input schema / properties / author / descriptionPrevious value: -"Author name (e.g., 'kuehl,malte')"New value: +"Author name (e.g., 'lastname,firstname')" - removed
Input schema / properties / author / titleRemoved value: -"Author" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of results to return"New value: +"Results per page (1-1000)" - removed
Input schema / properties / page_size / titleRemoved value: -"Page Size" - changed
Input schema / properties / query / descriptionPrevious value: -"Search query string, not specific to any field"New value: +"General search query" - removed
Input schema / properties / query / titleRemoved value: -"Query" - changed
Input schema / properties / search_type / descriptionPrevious value: -"Search type: 'and' or 'or'"New value: +"'and' or 'or' (default: 'or')" - removed
Input schema / properties / search_type / titleRemoved value: -"Search Type" - changed
Input schema / properties / sort_by / descriptionPrevious value: -"Sort by: 'recent' for most recent, 'cited' for most cited or None for no specific sorting"New value: +"'recent' or 'cited' (default: none)" - removed
Input schema / properties / sort_by / titleRemoved value: -"Sort By" - changed
Input schema / properties / title / descriptionPrevious value: -"Search term for article titles"New value: +"Search in article titles" - removed
Input schema / properties / title / titleRemoved value: -"Title"
- Changed
bc_get_europepmc_fulltext2 fields changed- changed
Input schema / properties / pmc_id / descriptionPrevious value: -"PMC ID starting with 'PMC' (e.g., 'PMC11629965')"New value: +"PMC ID (e.g., 'PMC11629965')" - removed
Input schema / properties / pmc_id / titleRemoved value: -"Pmc Id"
- Changed
bc_get_generic_equivalents2 fields changed- changed
Input schema / properties / brand_name / descriptionPrevious value: -"Brand name drug to find generic equivalents for"New value: +"Brand name drug to find generics for" - removed
Input schema / properties / brand_name / titleRemoved value: -"Brand Name"
- Changed
bc_get_go_terms_by_gene6 fields changed- changed
Input schema / properties / exact_match / descriptionPrevious value: -"Whether to perform an exact match search"New value: +"Whether to perform exact match search" - removed
Input schema / properties / exact_match / titleRemoved value: -"Exact Match" - changed
Input schema / properties / gene_name / descriptionPrevious value: -"The gene name or symbol to search for (e.g., 'TP53', 'BRCA1')"New value: +"Gene name or symbol to search for (e.g., 'TP53', 'BRCA1')" - removed
Input schema / properties / gene_name / titleRemoved value: -"Gene Name" - changed
Input schema / properties / size / descriptionPrevious value: -"The maximum number of results to return"New value: +"Maximum number of results to return" - removed
Input schema / properties / size / titleRemoved value: -"Size"
- Changed
bc_get_human_protein_atlas_info4 fields changed- changed
Input schema / properties / gene_id / descriptionPrevious value: -"The Ensembl gene ID (e.g., 'ENSG00000141510')"New value: +"Ensembl gene ID (e.g., 'ENSG00000141510')" - removed
Input schema / properties / gene_id / titleRemoved value: -"Gene Id" - changed
Input schema / properties / gene_symbol / descriptionPrevious value: -"The gene name (e.g., 'TP53')"New value: +"Gene symbol (e.g., 'TP53')" - removed
Input schema / properties / gene_symbol / titleRemoved value: -"Gene Symbol"
- Changed
bc_get_interpro_entry8 fields changed- changed
Input schema / properties / include_cross_references / descriptionPrevious value: -"Whether to include cross-references to other databases"New value: +"Include cross-references to other databases" - removed
Input schema / properties / include_cross_references / titleRemoved value: -"Include Cross References" - changed
Input schema / properties / include_interactions / descriptionPrevious value: -"Whether to include protein-protein interactions data"New value: +"Include protein-protein interactions data" - removed
Input schema / properties / include_interactions / titleRemoved value: -"Include Interactions" - changed
Input schema / properties / include_pathways / descriptionPrevious value: -"Whether to include pathway information"New value: +"Include pathway information" - removed
Input schema / properties / include_pathways / titleRemoved value: -"Include Pathways" - changed
Input schema / properties / interpro_id / descriptionPrevious value: -"The InterPro entry identifier (e.g., 'IPR000001')"New value: +"InterPro ID (e.g., 'IPR000001')" - removed
Input schema / properties / interpro_id / titleRemoved value: -"Interpro Id"
- Changed
bc_get_kegg_id_by_gene_symbol6 fields changed- changed
Input schema / properties / gene_symbol / descriptionPrevious value: -"Gene symbol to convert to KEGG ID (e.g., 'TP53' for human, 'Trp53' for mouse)"New value: +"Gene symbol (e.g., 'TP53' for human, 'Trp53' for mouse)" - removed
Input schema / properties / gene_symbol / titleRemoved value: -"Gene Symbol" - changed
Input schema / properties / organism_code / descriptionPrevious value: -"KEGG organism code or taxonomy ID (e.g., '9606' for human, '10090' for mouse)"New value: +"Taxonomy ID: 9606 (human), 10090 (mouse), 10116 (rat), 562 (E. coli), 4932 (yeast)" - removed
Input schema / properties / organism_code / titleRemoved value: -"Organism Code" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
bc_get_panglaodb_marker_genes12 fields changed- changed
Input schema / properties / cell_type / descriptionPrevious value: -"Filter by cell type (e.g., 'Smooth muscle cells', 'T cells'). Case-insensitive."New value: +"Cell type filter (e.g., 'Smooth muscle cells', 'T cells'), case-insensitive" - removed
Input schema / properties / cell_type / titleRemoved value: -"Cell Type" - changed
Input schema / properties / gene_symbol / descriptionPrevious value: -"Filter by gene symbol (e.g., 'MAFB', 'SYNPO'). Case-insensitive."New value: +"Gene symbol filter (e.g., 'MAFB', 'SYNPO'), case-insensitive" - removed
Input schema / properties / gene_symbol / titleRemoved value: -"Gene Symbol" - changed
Input schema / properties / min_sensitivity / descriptionPrevious value: -"Minimum sensitivity score (0-1). Applied to species-specific column."New value: +"Minimum sensitivity score (0-1), applied to species-specific column" - removed
Input schema / properties / min_sensitivity / titleRemoved value: -"Min Sensitivity" - changed
Input schema / properties / min_specificity / descriptionPrevious value: -"Minimum specificity score (0-1). Applied to species-specific column."New value: +"Minimum specificity score (0-1), applied to species-specific column" - removed
Input schema / properties / min_specificity / titleRemoved value: -"Min Specificity" - changed
Input schema / properties / organ / descriptionPrevious value: -"Filter by organ (e.g., 'Brain', 'Lung'). Case-insensitive."New value: +"Organ filter (e.g., 'Brain', 'Lung'), case-insensitive" - removed
Input schema / properties / organ / titleRemoved value: -"Organ" - changed
Input schema / properties / species / descriptionPrevious value: -"The species ('Hs' for Human or 'Mm' for Mouse)"New value: +"Species: 'Hs' for Human or 'Mm' for Mouse" - removed
Input schema / properties / species / titleRemoved value: -"Species"
- Changed
bc_get_pride_project6 fields changed- changed
Input schema / properties / include_files / descriptionPrevious value: -"Whether to include file information for the project"New value: +"Include file information (limited to first 20 files)" - removed
Input schema / properties / include_files / titleRemoved value: -"Include Files" - changed
Input schema / properties / include_similar_projects / descriptionPrevious value: -"Whether to include similar projects based on metadata"New value: +"Include similar projects based on metadata (limited to 10)" - removed
Input schema / properties / include_similar_projects / titleRemoved value: -"Include Similar Projects" - changed
Input schema / properties / project_accession / descriptionPrevious value: -"The PRIDE project accession (e.g., 'PRD000001')"New value: +"PRIDE project accession (e.g., 'PRD000001')" - removed
Input schema / properties / project_accession / titleRemoved value: -"Project Accession"
- Changed
bc_get_protein_domains8 fields changed- changed
Input schema / properties / include_structure_info / descriptionPrevious value: -"Whether to include structural information"New value: +"Include structural information" - removed
Input schema / properties / include_structure_info / titleRemoved value: -"Include Structure Info" - changed
Input schema / properties / protein_id / descriptionPrevious value: -"The protein identifier/accession (e.g., 'P04637' or 'CYC_HUMAN')"New value: +"UniProt ID/accession (e.g., 'P04637' or 'CYC_HUMAN')" - removed
Input schema / properties / protein_id / titleRemoved value: -"Protein Id" - changed
Input schema / properties / source_db / descriptionPrevious value: -"The protein database source ('uniprot', 'reviewed', or 'unreviewed')"New value: +"Database source ('uniprot', 'reviewed', or 'unreviewed')" - removed
Input schema / properties / source_db / titleRemoved value: -"Source Db" - changed
Input schema / properties / species_filter / descriptionPrevious value: -"Taxonomy ID to filter results (e.g., '9606' for human)"New value: +"Taxonomy ID filter (e.g., '9606' for human)" - removed
Input schema / properties / species_filter / titleRemoved value: -"Species Filter"
- Changed
bc_get_reactome_info_by_identifier15 fields changed- removed
Input schema / properties / base_url / titleRemoved value: -"Base Url" - removed
Input schema / properties / identifier / titleRemoved value: -"Identifier" - removed
Input schema / properties / importable_only / titleRemoved value: -"Importable Only" - removed
Input schema / properties / include_disease / titleRemoved value: -"Include Disease" - removed
Input schema / properties / interactors / titleRemoved value: -"Interactors" - removed
Input schema / properties / max_entities / titleRemoved value: -"Max Entities" - removed
Input schema / properties / min_entities / titleRemoved value: -"Min Entities" - removed
Input schema / properties / order / titleRemoved value: -"Order" - removed
Input schema / properties / p_value / titleRemoved value: -"P Value" - removed
Input schema / properties / page / titleRemoved value: -"Page" - removed
Input schema / properties / page_size / titleRemoved value: -"Page Size" - removed
Input schema / properties / resource / titleRemoved value: -"Resource" - removed
Input schema / properties / sort_by / titleRemoved value: -"Sort By" - removed
Input schema / properties / species / titleRemoved value: -"Species" - removed
Input schema / properties / timeout / titleRemoved value: -"Timeout"
- Changed
bc_get_recent_biorxiv_preprints16 fields changed- changed
Input schema / properties / category / descriptionPrevious value: -"Subject category filter (e.g., 'cell biology', 'neuroscience')"New value: +"Filter by subject (e.g., 'cell biology', 'neuroscience')" - removed
Input schema / properties / category / titleRemoved value: -"Category" - changed
Input schema / properties / cursor / descriptionPrevious value: -"Starting position for pagination"New value: +"Pagination: starting position" - removed
Input schema / properties / cursor / titleRemoved value: -"Cursor" - changed
Input schema / properties / days / descriptionPrevious value: -"Number of recent days to search (alternative to date range)"New value: +"Search last N days (1-365, alternative to date range)" - removed
Input schema / properties / days / titleRemoved value: -"Days" - changed
Input schema / properties / end_date / descriptionPrevious value: -"End date in YYYY-MM-DD format"New value: +"End date (YYYY-MM-DD)" - removed
Input schema / properties / end_date / titleRemoved value: -"End Date" - changed
Input schema / properties / max_results / descriptionPrevious value: -"Maximum number of results to return"New value: +"Max results per page (1-500)" - removed
Input schema / properties / max_results / titleRemoved value: -"Max Results" - changed
Input schema / properties / recent_count / descriptionPrevious value: -"Number of most recent preprints (alternative to date range)"New value: +"Most recent N preprints (1-1000, alternative to date range)" - removed
Input schema / properties / recent_count / titleRemoved value: -"Recent Count" - changed
Input schema / properties / server / descriptionPrevious value: -"Server to search: 'biorxiv' or 'medrxiv'"New value: +"'biorxiv' or 'medrxiv'" - removed
Input schema / properties / server / titleRemoved value: -"Server" - changed
Input schema / properties / start_date / descriptionPrevious value: -"Start date in YYYY-MM-DD format"New value: +"Start date (YYYY-MM-DD)" - removed
Input schema / properties / start_date / titleRemoved value: -"Start Date"
- Changed
bc_get_recruiting_studies_by_location14 fields changed- changed
Input schema / properties / age_range / descriptionPrevious value: -"Age group: 'CHILD', 'ADULT', 'OLDER_ADULT', 'ALL'"New value: +"'CHILD', 'ADULT', 'OLDER_ADULT', or 'ALL'" - removed
Input schema / properties / age_range / titleRemoved value: -"Age Range" - changed
Input schema / properties / condition / descriptionPrevious value: -"Medical condition to filter by (e.g., 'cancer', 'diabetes')"New value: +"Medical condition filter (e.g., 'cancer')" - removed
Input schema / properties / condition / titleRemoved value: -"Condition" - changed
Input schema / properties / location_city / descriptionPrevious value: -"City name (e.g., 'Los Angeles', 'Boston')"New value: +"City name" - removed
Input schema / properties / location_city / titleRemoved value: -"Location City" - changed
Input schema / properties / location_country / descriptionPrevious value: -"Country name (e.g., 'United States', 'Germany', 'United Kingdom')"New value: +"Country name (e.g., 'United States', 'Germany')" - removed
Input schema / properties / location_country / titleRemoved value: -"Location Country" - changed
Input schema / properties / location_state / descriptionPrevious value: -"State or province (e.g., 'California', 'New York')"New value: +"State/province (e.g., 'California')" - removed
Input schema / properties / location_state / titleRemoved value: -"Location State" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of results to return"New value: +"Results per page (1-1000)" - removed
Input schema / properties / page_size / titleRemoved value: -"Page Size" - changed
Input schema / properties / study_type / descriptionPrevious value: -"Type of study: 'INTERVENTIONAL', 'OBSERVATIONAL', 'ALL'"New value: +"'INTERVENTIONAL', 'OBSERVATIONAL', or 'ALL'" - removed
Input schema / properties / study_type / titleRemoved value: -"Study Type"
- Changed
bc_get_string_id10 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Limit the number of matches returned"New value: +"Maximum number of matches to return" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - changed
Input schema / properties / protein_symbol / descriptionPrevious value: -"The name of the protein to search for (e.g., 'TP53')"New value: +"Protein name or identifier (e.g., 'TP53')" - removed
Input schema / properties / protein_symbol / titleRemoved value: -"Protein Symbol" - changed
Input schema / properties / return_field / descriptionPrevious value: -"Which field to return. Either `stringId` (default) or `preferredName`."New value: +"Field to return: 'stringId' or 'preferredName'" - removed
Input schema / properties / return_field / titleRemoved value: -"Return Field" - changed
Input schema / properties / species / descriptionPrevious value: -"The species taxonomy ID (e.g., '9606' for human)"New value: +"Species taxonomy ID (e.g., '9606' for human)" - removed
Input schema / properties / species / titleRemoved value: -"Species" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
bc_get_string_interactions8 fields changed- changed
Input schema / properties / min_score / descriptionPrevious value: -"Minimum combined score threshold"New value: +"Minimum combined score threshold (0-1000)" - removed
Input schema / properties / min_score / titleRemoved value: -"Min Score" - changed
Input schema / properties / protein_symbol / descriptionPrevious value: -"The name of the protein to search for (e.g., 'TP53')"New value: +"Protein name to search for (e.g., 'TP53')" - removed
Input schema / properties / protein_symbol / titleRemoved value: -"Protein Symbol" - changed
Input schema / properties / species / descriptionPrevious value: -"The species taxonomy ID (e.g., '10090' for mouse)"New value: +"Species taxonomy ID (e.g., '10090' for mouse)" - removed
Input schema / properties / species / titleRemoved value: -"Species" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
bc_get_string_network_image8 fields changed- changed
Input schema / properties / flavor / descriptionPrevious value: -"The network flavor to use"New value: +"Network flavor (e.g., 'confidence', 'evidence', 'actions')" - removed
Input schema / properties / flavor / titleRemoved value: -"Flavor" - changed
Input schema / properties / min_score / descriptionPrevious value: -"Minimum combined score threshold"New value: +"Minimum combined score threshold (0-1000)" - removed
Input schema / properties / min_score / titleRemoved value: -"Min Score" - changed
Input schema / properties / protein_symbol / descriptionPrevious value: -"The name of the protein to search for (e.g., 'TP53')"New value: +"Protein name to search for (e.g., 'TP53')" - removed
Input schema / properties / protein_symbol / titleRemoved value: -"Protein Symbol" - changed
Input schema / properties / species / descriptionPrevious value: -"The species taxonomy ID (e.g., '10090' for mouse)"New value: +"Species taxonomy ID (e.g., '10090' for mouse)" - removed
Input schema / properties / species / titleRemoved value: -"Species"
- Changed
bc_get_string_similarity_scores8 fields changed- changed
Input schema / properties / protein_symbol / descriptionPrevious value: -"The protein symbol of the first protein (e.g., 'TP53')"New value: +"First protein symbol (e.g., 'TP53')" - removed
Input schema / properties / protein_symbol / titleRemoved value: -"Protein Symbol" - changed
Input schema / properties / protein_symbol_comparison / descriptionPrevious value: -"The protein symbol of the second protein (e.g., 'MKI67')"New value: +"Second protein symbol (e.g., 'MKI67')" - removed
Input schema / properties / protein_symbol_comparison / titleRemoved value: -"Protein Symbol Comparison" - changed
Input schema / properties / species / descriptionPrevious value: -"The species taxonomy ID (e.g., '9606' for human)"New value: +"Species taxonomy ID (e.g., '9606' for human)" - removed
Input schema / properties / species / titleRemoved value: -"Species" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
bc_get_studies_by_condition12 fields changed- changed
Input schema / properties / condition / descriptionPrevious value: -"Medical condition or disease name (e.g., 'breast cancer', 'diabetes', 'alzheimer')"New value: +"Medical condition/disease (e.g., 'cancer', 'diabetes')" - removed
Input schema / properties / condition / titleRemoved value: -"Condition" - changed
Input schema / properties / location_country / descriptionPrevious value: -"Country filter (e.g., 'United States', 'Germany')"New value: +"Country filter (e.g., 'United States')" - removed
Input schema / properties / location_country / titleRemoved value: -"Location Country" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of results to return"New value: +"Results per page (1-1000)" - removed
Input schema / properties / page_size / titleRemoved value: -"Page Size" - changed
Input schema / properties / sort / descriptionPrevious value: -"Sort order: 'LastUpdatePostDate:desc', 'StudyFirstPostDate:desc', 'EnrollmentCount:desc'"New value: +"'LastUpdatePostDate:desc', 'StudyFirstPostDate:desc', or 'EnrollmentCount:desc'" - removed
Input schema / properties / sort / titleRemoved value: -"Sort" - changed
Input schema / properties / status / descriptionPrevious value: -"Study status filter: 'RECRUITING', 'ACTIVE_NOT_RECRUITING', 'COMPLETED', 'ALL'"New value: +"'RECRUITING', 'ACTIVE_NOT_RECRUITING', 'COMPLETED', or 'ALL'" - removed
Input schema / properties / status / titleRemoved value: -"Status" - changed
Input schema / properties / study_type / descriptionPrevious value: -"Type of study: 'INTERVENTIONAL', 'OBSERVATIONAL', 'ALL'"New value: +"'INTERVENTIONAL', 'OBSERVATIONAL', or 'ALL'" - removed
Input schema / properties / study_type / titleRemoved value: -"Study Type"
- Changed
bc_get_studies_by_intervention14 fields changed- changed
Input schema / properties / condition / descriptionPrevious value: -"Medical condition to filter by (e.g., 'cancer', 'diabetes')"New value: +"Medical condition filter (e.g., 'cancer')" - removed
Input schema / properties / condition / titleRemoved value: -"Condition" - changed
Input schema / properties / intervention / descriptionPrevious value: -"Drug, therapy, or treatment name (e.g., 'aspirin', 'pembrolizumab', 'radiation therapy')"New value: +"Drug/therapy name (e.g., 'aspirin', 'pembrolizumab', 'radiation')" - removed
Input schema / properties / intervention / titleRemoved value: -"Intervention" - changed
Input schema / properties / intervention_type / descriptionPrevious value: -"Type of intervention: 'DRUG', 'BIOLOGICAL', 'DEVICE', 'PROCEDURE', 'RADIATION', 'BEHAVIORAL', 'ALL'"New value: +"'DRUG', 'BIOLOGICAL', 'DEVICE', 'PROCEDURE', 'RADIATION', 'BEHAVIORAL', or 'ALL'" - removed
Input schema / properties / intervention_type / titleRemoved value: -"Intervention Type" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of results to return"New value: +"Results per page (1-1000)" - removed
Input schema / properties / page_size / titleRemoved value: -"Page Size" - changed
Input schema / properties / phase / descriptionPrevious value: -"Clinical trial phase: 'PHASE1', 'PHASE2', 'PHASE3', 'PHASE4', 'EARLY_PHASE1'"New value: +"'PHASE1', 'PHASE2', 'PHASE3', 'PHASE4', or 'EARLY_PHASE1'" - removed
Input schema / properties / phase / titleRemoved value: -"Phase" - changed
Input schema / properties / sort / descriptionPrevious value: -"Sort order: 'LastUpdatePostDate:desc', 'StudyFirstPostDate:desc', 'EnrollmentCount:desc'"New value: +"'LastUpdatePostDate:desc', 'StudyFirstPostDate:desc', or 'EnrollmentCount:desc'" - removed
Input schema / properties / sort / titleRemoved value: -"Sort" - changed
Input schema / properties / status / descriptionPrevious value: -"Study status: 'RECRUITING', 'ACTIVE_NOT_RECRUITING', 'COMPLETED', 'ALL'"New value: +"'RECRUITING', 'ACTIVE_NOT_RECRUITING', 'COMPLETED', or 'ALL'" - removed
Input schema / properties / status / titleRemoved value: -"Status"
- Changed
bc_get_study_details4 fields changed- changed
Input schema / properties / fields / descriptionPrevious value: -"Comma-separated list of fields to return or 'all' for complete study data"New value: +"Comma-separated fields or 'all' for complete data. Default includes key modules." - removed
Input schema / properties / fields / titleRemoved value: -"Fields" - changed
Input schema / properties / nct_id / descriptionPrevious value: -"NCT ID of the clinical trial (e.g., 'NCT01234567')"New value: +"NCT ID (e.g., 'NCT01234567')" - removed
Input schema / properties / nct_id / titleRemoved value: -"Nct Id"
- Changed
bc_get_term_details4 fields changed- changed
Input schema / properties / ontology_id / descriptionPrevious value: -"The ontology ID where the term is defined (e.g., 'efo', 'go', 'chebi')"New value: +"Ontology ID where the term is defined (e.g., 'efo', 'go', 'chebi')" - removed
Input schema / properties / ontology_id / titleRemoved value: -"Ontology Id" - changed
Input schema / properties / term_id / descriptionPrevious value: -"The term ID (CURIE) to get details for (e.g., 'EFO:0000001', 'GO:0008150')"New value: +"Term ID in CURIE format (e.g., 'EFO:0000001', 'GO:0008150')" - removed
Input schema / properties / term_id / titleRemoved value: -"Term Id"
- Changed
bc_get_term_hierarchical_children6 fields changed- changed
Input schema / properties / ontology_id / descriptionPrevious value: -"The ontology ID where the term is defined (e.g., 'efo', 'go', 'chebi')"New value: +"Ontology ID (e.g., 'efo', 'go', 'chebi')" - removed
Input schema / properties / ontology_id / titleRemoved value: -"Ontology Id" - changed
Input schema / properties / size / descriptionPrevious value: -"The maximum number of children to return"New value: +"Maximum number of children to return" - removed
Input schema / properties / size / titleRemoved value: -"Size" - changed
Input schema / properties / term_id / descriptionPrevious value: -"The term ID (CURIE) to get children for (e.g., 'EFO:0000001', 'GO:0008150')"New value: +"Term ID in CURIE format (e.g., 'EFO:0000001', 'GO:0008150')" - removed
Input schema / properties / term_id / titleRemoved value: -"Term Id"
- Changed
bc_get_uniprot_id_by_protein_symbol6 fields changed- changed
Input schema / properties / protein_symbol / descriptionPrevious value: -"The name of the gene to search for (e.g., 'SYNPO')"New value: +"Gene or protein name to search for (e.g., 'SYNPO')" - removed
Input schema / properties / protein_symbol / titleRemoved value: -"Protein Symbol" - changed
Input schema / properties / species / descriptionPrevious value: -"The organism ID (e.g., '9606' for human)"New value: +"Organism taxonomy ID (e.g., '9606' for human)" - removed
Input schema / properties / species / titleRemoved value: -"Species" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
bc_get_uniprot_protein_info10 fields changed- changed
Input schema / properties / gene_symbol / descriptionPrevious value: -"The gene symbol to search for (e.g., 'TP53')"New value: +"Gene symbol to search for (e.g., 'TP53')" - removed
Input schema / properties / gene_symbol / titleRemoved value: -"Gene Symbol" - changed
Input schema / properties / include_references / descriptionPrevious value: -"Whether to include references and cross-references in the response"New value: +"Include references and cross-references in response" - removed
Input schema / properties / include_references / titleRemoved value: -"Include References" - changed
Input schema / properties / protein_id / descriptionPrevious value: -"The protein identifier or accession number (e.g., 'P04637')"New value: +"Protein accession number (e.g., 'P04637')" - removed
Input schema / properties / protein_id / titleRemoved value: -"Protein Id" - changed
Input schema / properties / protein_name / descriptionPrevious value: -"The name of the protein to search for (e.g., 'P53')"New value: +"Protein name to search for (e.g., 'P53')" - removed
Input schema / properties / protein_name / titleRemoved value: -"Protein Name" - changed
Input schema / properties / species / descriptionPrevious value: -"Taxonomy ID (e.g., 10090) or species name as string"New value: +"Taxonomy ID (e.g., '10090') or species name" - removed
Input schema / properties / species / titleRemoved value: -"Species"
- Changed
bc_query_kegg22 fields changed- removed
Input schema / $defs / KeggDatabase / titleRemoved value: -"KeggDatabase" - removed
Input schema / $defs / KeggFindOption / titleRemoved value: -"KeggFindOption" - removed
Input schema / $defs / KeggOperation / titleRemoved value: -"KeggOperation" - removed
Input schema / $defs / KeggOption / titleRemoved value: -"KeggOption" - removed
Input schema / $defs / KeggOutsideDb / titleRemoved value: -"KeggOutsideDb" - removed
Input schema / $defs / KeggRdfFormat / titleRemoved value: -"KeggRdfFormat" - changed
Input schema / properties / database / descriptionPrevious value: -"The KEGG database to query (e.g., pathway, genes, compound) or organism code (e.g., hsa)"New value: +"pathway, compound, genes, organism code (hsa, mmu, etc.), or other DB" - removed
Input schema / properties / database / titleRemoved value: -"Database" - changed
Input schema / properties / entries / descriptionPrevious value: -"List of KEGG entry IDs (e.g., ['hsa:7157', 'hsa:00010'])"New value: +"KEGG entry IDs (e.g., ['hsa:7157', 'hsa00010'])" - removed
Input schema / properties / entries / titleRemoved value: -"Entries" - changed
Input schema / properties / operation / descriptionPrevious value: -"The KEGG API operation to perform (info, list, find, get, conv, link, ddi)"New value: +"info, list, find, get, conv, link, or ddi" - removed
Input schema / properties / operation / titleRemoved value: -"Operation" - changed
Input schema / properties / option / descriptionPrevious value: -"Additional options like sequence formats, chemical formula search, etc."New value: +"aaseq, ntseq, mol, formula, exact_mass, mol_weight, etc." - removed
Input schema / properties / option / titleRemoved value: -"Option" - changed
Input schema / properties / query / descriptionPrevious value: -"Query string for operations like FIND, or organism code for LIST"New value: +"Query string for FIND/LIST, or organism code for LIST" - removed
Input schema / properties / query / titleRemoved value: -"Query" - changed
Input schema / properties / source_db / descriptionPrevious value: -"Source database for conversion or linking operations"New value: +"Source DB for conversion/linking operations" - removed
Input schema / properties / source_db / titleRemoved value: -"Source Db" - changed
Input schema / properties / target_db / descriptionPrevious value: -"Target database for conversion or linking operations"New value: +"Target DB for conversion/linking operations" - removed
Input schema / properties / target_db / titleRemoved value: -"Target Db" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
bc_query_open_targets_graphql4 fields changed- changed
Input schema / properties / query_string / descriptionPrevious value: -"The GraphQL query string"New value: +"GraphQL query string starting with 'query' keyword" - removed
Input schema / properties / query_string / titleRemoved value: -"Query String" - changed
Input schema / properties / variables / descriptionPrevious value: -"The variables for the GraphQL query"New value: +"Optional variables for the GraphQL query" - removed
Input schema / properties / variables / titleRemoved value: -"Variables"
- Changed
bc_search_drugs_by_therapeutic_class5 fields changed- changed
Input schema / properties / class_type / descriptionPrevious value: -"Type of pharmacologic class: 'epc' (Established Pharmacologic Class), 'moa' (Mechanism of Action), 'pe' (Physiologic Effect), or 'cs' (Chemical Structure)"New value: +"Class type: 'epc' (Established Pharmacologic Class), 'moa' (Mechanism of Action), 'pe' (Physiologic Effect), or 'cs' (Chemical Structure)" - removed
Input schema / properties / class_type / titleRemoved value: -"Class Type" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - changed
Input schema / properties / therapeutic_class / descriptionPrevious value: -"Exact therapeutic/pharmacologic class term from FDA database (use get_available_pharmacologic_classes first to see options)"New value: +"Exact therapeutic/pharmacologic class term from FDA (use get_available_pharmacologic_classes first)" - removed
Input schema / properties / therapeutic_class / titleRemoved value: -"Therapeutic Class"
- Changed
bc_search_drugs_fda16 fields changed- removed
Input schema / properties / active_ingredient / titleRemoved value: -"Active Ingredient" - removed
Input schema / properties / application_number / titleRemoved value: -"Application Number" - changed
Input schema / properties / brand_name / descriptionPrevious value: -"Brand or trade name of the drug (e.g., 'Tylenol')"New value: +"Brand or trade name (e.g., 'Tylenol')" - removed
Input schema / properties / brand_name / titleRemoved value: -"Brand Name" - removed
Input schema / properties / dosage_form / titleRemoved value: -"Dosage Form" - changed
Input schema / properties / generic_name / descriptionPrevious value: -"Generic name of the drug (e.g., 'acetaminophen')"New value: +"Generic name (e.g., 'acetaminophen')" - removed
Input schema / properties / generic_name / titleRemoved value: -"Generic Name" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / marketing_status / titleRemoved value: -"Marketing Status" - removed
Input schema / properties / route / titleRemoved value: -"Route" - changed
Input schema / properties / search_type / descriptionPrevious value: -"Search type: 'and' for all terms must match, 'or' for any term matches"New value: +"'and' for all terms must match, 'or' for any term matches" - removed
Input schema / properties / search_type / titleRemoved value: -"Search Type" - removed
Input schema / properties / skip / titleRemoved value: -"Skip" - changed
Input schema / properties / sort_by / descriptionPrevious value: -"Sort by field (e.g., 'sponsor_name', 'application_number')"New value: +"Field to sort by (e.g., 'sponsor_name', 'application_number')" - removed
Input schema / properties / sort_by / titleRemoved value: -"Sort By" - removed
Input schema / properties / sponsor_name / titleRemoved value: -"Sponsor Name"
- Changed
bc_search_google_scholar_publications6 fields changed- changed
Input schema / properties / max_results / descriptionPrevious value: -"Maximum number of publications to return"New value: +"Maximum number of publications to return (1-50)" - removed
Input schema / properties / max_results / titleRemoved value: -"Max Results" - changed
Input schema / properties / query / descriptionPrevious value: -"Search query for publications (e.g., 'machine learning' or 'author:\"John Smith\" deep learning')"New value: +"Search query (e.g., 'machine learning' or 'author:\"John Smith\" deep learning')" - removed
Input schema / properties / query / titleRemoved value: -"Query" - changed
Input schema / properties / use_proxy / descriptionPrevious value: -"Whether to use free proxies to avoid rate limiting"New value: +"Use free proxies to avoid rate limiting" - removed
Input schema / properties / use_proxy / titleRemoved value: -"Use Proxy"
- Changed
bc_search_grants_gov13 fields changed- removed
Input schema / properties / agencies / titleRemoved value: -"Agencies" - removed
Input schema / properties / aln / titleRemoved value: -"Aln" - changed
Input schema / properties / eligibilities / descriptionPrevious value: -"Eligibility criteria (comma-separated)"New value: +"Eligibilities (comma-separated)" - removed
Input schema / properties / eligibilities / titleRemoved value: -"Eligibilities" - changed
Input schema / properties / funding_categories / descriptionPrevious value: -"Funding categories (comma-separated)"New value: +"Categories (comma-separated)" - removed
Input schema / properties / funding_categories / titleRemoved value: -"Funding Categories" - changed
Input schema / properties / keyword / descriptionPrevious value: -"Keyword to search for"New value: +"Search keyword" - removed
Input schema / properties / keyword / titleRemoved value: -"Keyword" - removed
Input schema / properties / opp_num / titleRemoved value: -"Opp Num" - changed
Input schema / properties / opp_statuses / descriptionPrevious value: -"Opportunity statuses (pipe-separated, e.g. 'forecasted|posted')"New value: +"'forecasted|posted' (pipe-separated, default: 'forecasted|posted')" - removed
Input schema / properties / opp_statuses / titleRemoved value: -"Opp Statuses" - changed
Input schema / properties / rows / descriptionPrevious value: -"Number of results to return"New value: +"Results to return" - removed
Input schema / properties / rows / titleRemoved value: -"Rows"
- Changed
bc_search_interpro_entries12 fields changed- changed
Input schema / properties / entry_type / descriptionPrevious value: -"Filter by entry type: family, domain, homologous_superfamily, repeat, conserved_site, binding_site, active_site, ptm"New value: +"family, domain, homologous_superfamily, repeat, conserved_site, binding_site, active_site, or ptm" - removed
Input schema / properties / entry_type / titleRemoved value: -"Entry Type" - changed
Input schema / properties / go_term / descriptionPrevious value: -"Filter by GO term (e.g., 'GO:0006122')"New value: +"GO term filter (e.g., 'GO:0006122')" - removed
Input schema / properties / go_term / titleRemoved value: -"Go Term" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of results to return (max 200)"New value: +"Results per page (max 200)" - removed
Input schema / properties / page_size / titleRemoved value: -"Page Size" - changed
Input schema / properties / query / descriptionPrevious value: -"Search term for InterPro entry names or descriptions"New value: +"Search term for entry names/descriptions" - removed
Input schema / properties / query / titleRemoved value: -"Query" - changed
Input schema / properties / source_database / descriptionPrevious value: -"Filter by member database: pfam, prosite, panther, smart, etc."New value: +"pfam, prosite, panther, smart, cdd, hamap, pirsf, prints, etc." - removed
Input schema / properties / source_database / titleRemoved value: -"Source Database" - changed
Input schema / properties / species_filter / descriptionPrevious value: -"Filter by taxonomy ID (e.g., '9606' for human)"New value: +"Taxonomy ID filter (e.g., '9606')" - removed
Input schema / properties / species_filter / titleRemoved value: -"Species Filter"
- Changed
bc_search_ontology_terms8 fields changed- changed
Input schema / properties / exact_match / descriptionPrevious value: -"Whether to perform an exact match search"New value: +"Whether to perform exact match search" - removed
Input schema / properties / exact_match / titleRemoved value: -"Exact Match" - changed
Input schema / properties / ontologies / descriptionPrevious value: -"Comma-separated list of ontology IDs to search in (e.g., 'efo,go,chebi'). Leave empty to search all ontologies. Use get_available_ontologies() to see all available ontology IDs."New value: +"Comma-separated ontology IDs (e.g., 'efo,go,chebi'). Leave empty for all. Use get_available_ontologies() to see options" - removed
Input schema / properties / ontologies / titleRemoved value: -"Ontologies" - changed
Input schema / properties / search_term / descriptionPrevious value: -"The term to search for across all ontologies"New value: +"Term to search for" - removed
Input schema / properties / search_term / titleRemoved value: -"Search Term" - changed
Input schema / properties / size / descriptionPrevious value: -"The maximum number of results to return"New value: +"Maximum number of results to return" - removed
Input schema / properties / size / titleRemoved value: -"Size"
- Changed
bc_search_pride_projects11 fields changed- changed
Input schema / properties / experiment_type_filter / descriptionPrevious value: -"Filter by experiment type (e.g., 'TMT', 'Label-free')"New value: +"Experiment type filter (e.g., 'TMT', 'Label-free')" - removed
Input schema / properties / experiment_type_filter / titleRemoved value: -"Experiment Type Filter" - changed
Input schema / properties / instrument_filter / descriptionPrevious value: -"Filter by instrument type (e.g., 'Orbitrap', 'LTQ')"New value: +"Instrument type filter (e.g., 'Orbitrap', 'LTQ')" - removed
Input schema / properties / instrument_filter / titleRemoved value: -"Instrument Filter" - removed
Input schema / properties / keyword / titleRemoved value: -"Keyword" - changed
Input schema / properties / organism_filter / descriptionPrevious value: -"Filter by organism (e.g., 'Homo sapiens', 'human')"New value: +"Organism filter (e.g., 'Homo sapiens', 'human')" - removed
Input schema / properties / organism_filter / titleRemoved value: -"Organism Filter" - removed
Input schema / properties / page_size / titleRemoved value: -"Page Size" - removed
Input schema / properties / sort_direction / titleRemoved value: -"Sort Direction" - changed
Input schema / properties / sort_field / descriptionPrevious value: -"Field to sort by: submissionDate, publicationDate"New value: +"Sort field: submissionDate or publicationDate" - removed
Input schema / properties / sort_field / titleRemoved value: -"Sort Field"
- Changed
bc_search_pride_proteins7 fields changed- removed
Input schema / properties / keyword / titleRemoved value: -"Keyword" - removed
Input schema / properties / page_size / titleRemoved value: -"Page Size" - changed
Input schema / properties / project_accession / descriptionPrevious value: -"The PRIDE project accession to search proteins in"New value: +"PRIDE project accession to search proteins in" - removed
Input schema / properties / project_accession / titleRemoved value: -"Project Accession" - removed
Input schema / properties / sort_direction / titleRemoved value: -"Sort Direction" - changed
Input schema / properties / sort_field / descriptionPrevious value: -"Field to sort by: accession, proteinName, gene"New value: +"Sort field: accession, proteinName, or gene" - removed
Input schema / properties / sort_field / titleRemoved value: -"Sort Field"
- Changed
bc_search_studies24 fields changed- changed
Input schema / properties / condition / descriptionPrevious value: -"Medical condition or disease (e.g., 'cancer', 'diabetes')"New value: +"Medical condition (e.g., 'cancer')" - removed
Input schema / properties / condition / titleRemoved value: -"Condition" - changed
Input schema / properties / intervention / descriptionPrevious value: -"Drug, therapy, or treatment name (e.g., 'aspirin', 'chemotherapy')"New value: +"Drug/therapy name (e.g., 'aspirin')" - removed
Input schema / properties / intervention / titleRemoved value: -"Intervention" - changed
Input schema / properties / location_country / descriptionPrevious value: -"Country where study is conducted (e.g., 'United States', 'Germany')"New value: +"Country (e.g., 'United States')" - removed
Input schema / properties / location_country / titleRemoved value: -"Location Country" - changed
Input schema / properties / max_age / descriptionPrevious value: -"Maximum age of participants in years"New value: +"Max participant age (years)" - removed
Input schema / properties / max_age / titleRemoved value: -"Max Age" - changed
Input schema / properties / min_age / descriptionPrevious value: -"Minimum age of participants in years"New value: +"Min participant age (years)" - removed
Input schema / properties / min_age / titleRemoved value: -"Min Age" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of results to return"New value: +"Results per page (1-1000)" - removed
Input schema / properties / page_size / titleRemoved value: -"Page Size" - changed
Input schema / properties / phase / descriptionPrevious value: -"Study phase: 'PHASE1', 'PHASE2', 'PHASE3', 'PHASE4', 'EARLY_PHASE1', 'NA'"New value: +"'PHASE1', 'PHASE2', 'PHASE3', 'PHASE4', 'EARLY_PHASE1', or 'NA'" - removed
Input schema / properties / phase / titleRemoved value: -"Phase" - changed
Input schema / properties / sex / descriptionPrevious value: -"Sex of participants: 'ALL', 'FEMALE', 'MALE'"New value: +"'ALL', 'FEMALE', or 'MALE'" - removed
Input schema / properties / sex / titleRemoved value: -"Sex" - changed
Input schema / properties / sort / descriptionPrevious value: -"Sort order: 'LastUpdatePostDate:desc', 'StudyFirstPostDate:desc', 'EnrollmentCount:desc'"New value: +"'LastUpdatePostDate:desc', 'StudyFirstPostDate:desc', or 'EnrollmentCount:desc'" - removed
Input schema / properties / sort / titleRemoved value: -"Sort" - changed
Input schema / properties / sponsor / descriptionPrevious value: -"Study sponsor organization (e.g., 'Pfizer', 'NIH')"New value: +"Sponsor org (e.g., 'Pfizer')" - removed
Input schema / properties / sponsor / titleRemoved value: -"Sponsor" - changed
Input schema / properties / status / descriptionPrevious value: -"Study status: 'RECRUITING', 'ACTIVE_NOT_RECRUITING', 'COMPLETED', 'TERMINATED', 'SUSPENDED', 'WITHDRAWN', 'NOT_YET_RECRUITING'"New value: +"'RECRUITING', 'ACTIVE_NOT_RECRUITING', 'COMPLETED', 'TERMINATED', 'SUSPENDED', 'WITHDRAWN', or 'NOT_YET_RECRUITING'" - removed
Input schema / properties / status / titleRemoved value: -"Status" - changed
Input schema / properties / study_type / descriptionPrevious value: -"Type of study: 'INTERVENTIONAL', 'OBSERVATIONAL', 'EXPANDED_ACCESS'"New value: +"'INTERVENTIONAL', 'OBSERVATIONAL', or 'EXPANDED_ACCESS'" - removed
Input schema / properties / study_type / titleRemoved value: -"Study Type"
52 tool updates
- First observed
bc_count_drugs_by_field - First observed
bc_get_alphafold_info_by_protein_symbol - First observed
bc_get_antibody_information - First observed
bc_get_antibody_list - First observed
bc_get_available_ontologies - First observed
bc_get_available_pharmacologic_classes - First observed
bc_get_biorxiv_preprint_details - First observed
bc_get_cell_ontology_terms - First observed
bc_get_chebi_terms_by_chemical - First observed
bc_get_drug_by_application_number - First observed
bc_get_drug_label_info - First observed
bc_get_drug_statistics - First observed
bc_get_efo_id_by_disease_name - First observed
bc_get_ensembl_id_from_gene_symbol - First observed
bc_get_europepmc_articles - First observed
bc_get_europepmc_fulltext - First observed
bc_get_generic_equivalents - First observed
bc_get_go_terms_by_gene - First observed
bc_get_human_protein_atlas_info - First observed
bc_get_interpro_entry - First observed
bc_get_kegg_id_by_gene_symbol - First observed
bc_get_open_targets_graphql_schema - First observed
bc_get_open_targets_query_examples - First observed
bc_get_panglaodb_marker_genes - First observed
bc_get_panglaodb_options - First observed
bc_get_pride_project - First observed
bc_get_protein_domains - First observed
bc_get_reactome_info_by_identifier - First observed
bc_get_recent_biorxiv_preprints - First observed
bc_get_recruiting_studies_by_location - First observed
bc_get_string_id - First observed
bc_get_string_interactions - First observed
bc_get_string_network_image - First observed
bc_get_string_similarity_scores - First observed
bc_get_studies_by_condition - First observed
bc_get_studies_by_intervention - First observed
bc_get_study_details - First observed
bc_get_term_details - First observed
bc_get_term_hierarchical_children - First observed
bc_get_uniprot_id_by_protein_symbol - First observed
bc_get_uniprot_protein_info - First observed
bc_query_kegg - First observed
bc_query_open_targets_graphql - First observed
bc_search_drugs_by_therapeutic_class - First observed
bc_search_drugs_fda - First observed
bc_search_google_scholar_publications - First observed
bc_search_grants_gov - First observed
bc_search_interpro_entries - First observed
bc_search_ontology_terms - First observed
bc_search_pride_projects - First observed
bc_search_pride_proteins - First observed
bc_search_studies
TDQS
Each tool targets a distinct database and operation. Even within the same database (e.g., FDA drugs: count, get, search, statistics), the purposes are clearly differentiated by the verb and noun combination, leaving no ambiguity.
All tools follow a strict 'bc_verb_noun' pattern in snake_case, using common verbs (get, search, query, count) and specific nouns. The naming is entirely predictable and consistent.
With 24 tools, the server covers a broad range of biomedical databases. While slightly above the typical 3-15 range, each tool has a clear purpose and the count is justified by the number of integrated resources.
The tool surface covers core operations for each database (retrieval, search, statistics). Minor gaps exist, such as missing STRING functional enrichment or direct cross-database queries, but the core workflows are supported.
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
Auditable MCP server for PubMed, Europe PMC, ClinicalTrials.gov, and bioRxiv/medRxiv queries
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that provides direct access to PubMed and PubMed Central via the NCBI E-utilities API. It enables AI models to search biomedical literature, retrieve detailed article metadata, and download open-access full texts.5MIT
- AlicenseNot gradedqualityDmaintenanceA unified MCP server for biomedical research that connects AI systems to resources like Ensembl, EuropePMC, STRING, and more, enabling retrieval of verified domain-specific information.Apache 2.0
- AlicenseAqualityAmaintenanceA high-performance MCP server that gives LLMs access to 25 biomedical tools federated across 50+ upstream APIs for genes, variants, drugs, diseases, literature, clinical trials, and structural biology.412,0542Apache 2.0
- AlicenseNot gradedqualityCmaintenanceUnified MCP server providing AI-agent-ready access to AlphaFold, PubMed, ChEMBL, Ensembl, and 37+ scientific databases.MIT
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/biocontext-ai/knowledgebase-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server