Skip to main content
Glama

BioMCP

npm version downloads/mo downloads YTD commits/30d software DOI

BioMCP-TS architecture

Highlights

Democratizing agentic access to bioinformatics and biopharmaceutical databases and analyses.

  • Section-based federated access to 50+ bioinformatics, pharmaceutical, and patent databases

  • Optional toolboxes for local database curation and dependency-free analysis with Bioconductor and SAM/BED/BCFtools — no R installation, C toolchain, or containers

  • Concrete example vignettes, developed fully in the open

Related MCP server: PubMed Advanced MCP Server

Install

npx -y biomcp doctor   # diagnose a machine: Node gate, config health, feature gates, peer deps
npx biomcp             # zero-config stdio MCP server (this is what MCP clients run); Node >= 22.13

Setup is guided in docs/AGENT-INSTALL.md — a one-minute start, copy-paste config entries for Claude Desktop, Claude Code, Codex, and OpenCode (one canonical pinned command covering every feature), biomcp doctor as the single troubleshooting entry point, and agent-friendly paths for API keys and optional features.

Available Tools

Full tool schemas (params, enums, defaults) live in src/server/README.md.

Gene (7)

Tool

Description

gene_search

Search genes by symbol, name, or keyword with chromosome filter

gene_get

Get detailed gene info by HGNC symbol with optional sections (core, pathways, protein, ontology, go, interactions, expression, protein_atlas, constraint, druggability, dosage_sensitivity, clinical_evidence, disease_associations, diseases, funding). Set smart=true to auto-resolve gene aliases (e.g., "HER2" → "ERBB2")

gene_diseases

Get diseases associated with a gene (DisGeNET / OpenTargets)

gene_drugs

Find drugs targeting a gene (OpenTargets)

gene_trials

Find clinical trials for a gene

gene_articles

Find articles about a gene

gene_enrich

Pathway enrichment analysis for a gene list (Reactome)

Variant (4)

Tool

Description

variant_search

Search variants by rsid, HGVS, gene, ClinVar significance, frequency, CADD

variant_get

Get detailed variant info with optional sections (frequency, predictions, clinical; alphagenome_scores currently returns an unavailability error pending reimplementation)

variant_oncokb

Get OncoKB cancer variant annotations (requires ONCOKB_TOKEN)

variant_trials

Find clinical trials for a variant

Drug (3)

Tool

Description

drug_search

Search drugs by name, mechanism, or keyword

drug_get

Get detailed drug info with optional sections (us_regulatory, eu_regulatory, who_regulatory, safety, targets, indications, adverse_events — FDA FAERS reactions ranked by report count)

drug_trials

Find clinical trials for a drug

Disease (4)

Tool

Description

disease_search

Search diseases by name, phenotype, or keyword

disease_get

Get detailed disease info by ID (DOID, MONDO, OMIM, etc.) with optional sections (gene_associations, phenotypes, pathways)

disease_drugs

Get drugs for a disease (OpenTargets)

disease_trials

Get clinical trials for a disease (ClinicalTrials.gov)

Article (2)

Tool

Description

article_search

Federated literature search across PubMed, EuropePMC, Semantic Scholar, PubTator, and LitSense with optional date range filtering

article_get

Get detailed article info by identifier (PMID, PMCID, or DOI) with optional sections: oa (open access / license info), annotations, graph (citation graph), citation (fast/full citation data)

Trial (2)

Tool

Description

trial_search

Search clinical trials by condition, intervention, status, or phase. Cursor-based pagination via page_token

trial_get

Get detailed trial info by NCT ID with optional sections (eligibility, locations, outcomes)

Utility (2)

Tool

Description

discover

Free-text concept resolution across all entity types

batch_get

Retrieve multiple entities in parallel

Structural Biology (1)

Tool

Description

pdb

Search PDB structures, get entry metadata with optional sections (polymer entities, ligands, assembly, experiment, citation), and download structure files (mmCIF/PDB)

Patents (2)

Tool

Description

patent_search

Search patents worldwide (US, EP, WO, JP, 100+ authorities) with assignee/inventor/CPC/status/date filters and relevance ranking (sort_by). Quote exact multi-word concepts (e.g. "mRNA display"). Foundational prior art is auto-discovered via co-citation mining (seminal_prior_art; disable with seminal: false). Default backends: USPTO Public Search full-text (US, keyless, relevance-ranked) + EPO OPS (worldwide, keyed); uspto_odp (US bibliographic metadata) and google_patents (best-effort) available via source

patent_get

Get patent details by publication number with sections: abstract, claims (US fulltext via USPTO Public Search; EP/WO via EPO OPS), citations (forward + backward), family, classifications

GEO (2)

Tool

Description

geo_search

Search NCBI GEO for functional genomics studies (expression microarrays, RNA-seq, single-cell series) by entry type (GSE/GSM/GPL/GDS) and organism; results carry cross-links (sra_project, bioproject, pubmed_ids) for chaining

geo_get

Get the full SOFT record for a GEO series/sample/platform: summary, organisms, sample preview (≤20), supplementary file URLs, and cross-references; optionally download the first supplementary file

SRA (2)

Tool

Description

sra_search

Search NCBI's Sequence Read Archive for sequencing experiments and runs by free text, accession, or field syntax; returns experiment/study/sample accessions with library strategy and run counts

sra_get

Get full details for an SRA accession: SRR run (instrument, spots, bases, size), SRX experiment (library design), SRP study (experiment list), or SRS sample; ENA/DDBJ accessions rejected with an ENA pointer

GenBank (3)

Tool

Description

genbank_search

Search NCBI nucleotide records (GenBank/RefSeq/INSDC) by plain terms, accession, or field syntax; results include accession.version, definition, length, organism, topology

genbank_get

Fetch a GenBank/RefSeq record as GenBank flat file or FASTA; whole records capped at 2 Mb — larger records require a seq_start/seq_stop region (up to 10 Mb, reverse-strand via strand=2)

genbank_genes

Map a GenBank/RefSeq accession to its NCBI Gene IDs (elink nuccore→gene) for bridging into gene tools

GTEx (2)

Tool

Description

gtex_expression

Get median gene expression across GTEx tissues (Analysis v10, 54 tissue sites, TPM, highest first); accepts HGNC symbol or Ensembl gene ID, with optional single-tissue filter

gtex_eqtl

Get significant cis-eQTL associations for a gene in a specific GTEx tissue (v10): variant_id, p_value, NES, slope, sorted by ascending p-value

Ensembl (4)

Tool

Description

ensembl_lookup

Resolve a gene in Ensembl terms for any of ~356 species: stable ID (+version), symbol, coordinates on the current assembly, canonical transcript; expand=true adds transcripts with translation/protein IDs

ensembl_homology

Find orthologues/paralogues across species via Ensembl Compara — target stable IDs, taxonomy level, percent identity, sorted by identity; filter with target_species/target_taxon

ensembl_consequence

Compute variant consequences on demand via Ensembl VEP for NOVEL variants and non-human species: most severe consequence, per-transcript effects (SIFT/PolyPhen), co-located ClinVar/COSMIC/gnomAD data. Known human variants get deeper pre-computed scores via variant_get; prefer HGVS input over rsIDs for precision

ensembl_region

Query genes/transcripts/known variants in a genomic interval (chr:start-end) on the current assembly — locus triage

R Analysis (4, optional — ANALYSIS_R=1)

Tool

Description

analysis_r_deseq2

Differential expression for RNA-seq counts with Bioconductor DESeq2 (negative binomial, independent filtering, optional LFC shrinkage) in sandboxed WebAssembly R. Inputs: integer count matrix + sample metadata + design formula; output: markdown table of top genes by adjusted p-value with summary (format="json", include_full=true for full base64(gzip(TSV)) table)

analysis_r_edger

Differential expression with edgeR — TMM normalization, empirical-Bayes dispersion, quasi-likelihood F-test (test="qlm") or 2-group exact test; same input/output contract

analysis_r_limma

Differential expression with limma-voom — precision-weighted linear models with empirical-Bayes moderation; same input/output contract

analysis_r_session_info

R runtime report: R/webR versions, installed package versions, memory, mirror endpoint — for diagnosing analysis issues

First use starts a ~1 GB WebAssembly R worker and downloads the wasm package bundle (~62 MB) from GitHub releases (cached). Requires webr installed next to biomcp. Guide: docs/R-ANALYSIS.md.

Biowasm Analysis (8, optional — ANALYSIS_BIOWASM=1)

Tool

Description

analysis_bam_summary

Inspect an alignment (SAM/BAM/CRAM): header contigs, sample/read groups, flagstat mapping metrics, per-contig counts via idxstats when indexed — "what's in this BAM?" before region work

analysis_bam_view_region

Reads, depth, pileup, or read extraction in a genomic region (samtools view/depth/mpileup); indexed sources use fast positional retrieval, indexless sources stream a BED filter (depth requires coordinate-sorted input and detects order violations), returning counts, coverage tables, SAM rows, or a BAM artifact

analysis_bcf_summary

Inspect a VCF/BCF: contigs, sample count and names, INFO/FORMAT field inventory from the header

analysis_bcf_view_region

Variants in a region as a narrow field projection (bcftools query): chosen columns, sample subsets, expression filters, variant types — or a sliced VCF.gz artifact

analysis_bed_op

Interval algebra on BED tracks (bedtools intersect/merge/subtract/coverage/jaccard/sort) with the streaming -sorted algorithm for sorted inputs

analysis_biowasm_convert

Format plumbing: SAM/BAM/CRAM via samtools view, VCF/BCF via bcftools view, VCF/BCF → TSV via bcftools query; results are artifact handles reusable as artifact_id

analysis_biowasm_session_info

Biowasm runtime report: pinned tool versions, asset cache state, engine status, retained artifacts, memory

analysis_biowasm_cli

Constrained escape hatch: an allowlisted samtools/bedtools/bcftools subcommand with schema-validated args (no shell, paths under /shared only)

First use downloads checksum-verified wasm assets (~4.5 MB, cached); no extra npm packages. Indexed sources answer region queries with fast positional retrieval (~0.2 % of file read); indexless sources fall back to streaming BED filters. Guide: docs/BIOWASM-ANALYSIS.md.

Citation Module

Citations federate 5 providers in fast (~4s) or full (~15-30s) mode. Forward citation lists come from Europe PMC, OpenCitations, and Semantic Scholar; Crossref supplies counts and backward references. Provider matrix and schema details: src/server/README.md.

Optional Features

Capabilities that ship with the package but stay inactive until enabled. Each links to its own guide:

Feature

Enable

Guide

Database access — read-only SQL tools (db_query, db_list_tables, db_describe_table) for MySQL and local-file SQLite

Set DB_TYPE (+ connection env vars); MySQL needs the mysql2 peer dep — use the pinned one-shot client command (see docs/DATABASE.md)

docs/DATABASE.md

R analysis — Bioconductor differential expression (analysis_r_deseq2, analysis_r_edger, analysis_r_limma, analysis_r_session_info) running DESeq2/edgeR/limma in sandboxed WebAssembly R; wasm packages download from GitHub releases at first use (~62 MB, cached; slow links: asset_timeout_ms or a self-fetched mirror_url)

Set ANALYSIS_R=1; needs the webr peer dep — use the pinned one-shot client command ["npx","-y","-p","biomcp@1.1","-p","webr@0.6","biomcp"] (all-features variant adds -p mysql2@3); expect ~1 GB RSS

docs/R-ANALYSIS.md

Biowasm analysis — samtools/bedtools/bcftools (BAM/BED/VCF) in sandboxed WebAssembly; streams/indexes real human-scale datasets (~300 MB BAM scans, region queries touch ~0.2 % of the file); assets ~4.5 MB cached at first use; no extra npm packages

Set ANALYSIS_BIOWASM=1

docs/BIOWASM-ANALYSIS.md

Instead of hand-editing env blocks, agents (and users) can self-serve through the always-available biomcp_configure tool: it reports every parameter's status/provenance, writes the .biomcp.json project config file for the optional features above (env vars keep precedence; env-only parameters are query-only and value-masked), validates changes, detects conflicts, checks peer-dependency prerequisites, and spells out the restart/verify steps. Details: docs/ENV-VARS.md → Project config file.

Documentation

Doc

Contents

docs/AGENT-INSTALL.md

Guided installation & client configuration (Claude Desktop, Claude Code, Codex, OpenCode)

docs/ENV-VARS.md

Single source of truth for every environment variable

docs/DATABASE.md

Database access feature guide

docs/R-ANALYSIS.md

R analysis feature guide (Bioconductor in WebAssembly)

docs/BIOWASM-ANALYSIS.md

Biowasm analysis feature guide (samtools/bedtools/bcftools in WebAssembly)

docs/DEVELOPMENT.md

Build, test, publish workflow

docs/development/CI.md

CI pipeline, Dependabot automation, auto-merge safety model

src/server/README.md

Full tool schemas (params, enums, defaults)

agent-test/README.md

User-agent E2E tests for the analysis tools

License

Licensed under the Apache License, Version 2.0. See NOTICE for attributions.

BioMCP-TS is adapted from the upstream BioMCP Rust project (MIT) with an agent-first development approach and enhancements — kudos to the original authors.

Available Tools

41 tools
article_getA
Read-only

Get article by PMID/PMCID/DOI. Citation: fast mode (~4s, 4 providers, auto-fallback to PubMed) or full mode (~15-30s, all 5 providers incl. PubMed). Forward citation lists come from Europe PMC, Semantic Scholar, and OpenCitations; Crossref provides counts and references only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesArticle identifier: PMID (numeric, e.g. "12345"), PMCID (e.g. "PMC1234567"), or DOI (e.g. "10.1038/s41586-021-03819-2")
limitNoMaximum items per section (e.g., 20 citations)
sectionsNoSections to include. Use ["citation"] for citation data, ["all"] for everything.
citation_modeNoFast: Europe PMC, Semantic Scholar, OpenCitations, Crossref counts/references (~4s). Full: All 5 providers incl. PubMed (~15-30s). Fast mode auto-falls back to PubMed when other providers return no items.fast
citation_directionNoCitation direction: "forward" (articles citing this one), "backward" (references), "both" (default)both

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark this as read-only, and the description goes beyond that by disclosing latency expectations (~4s vs ~15-30s), provider composition (Europe PMC, Semantic Scholar, OpenCitations, Crossref, PubMed), and the fallback rule. It does not describe output structure or pagination, but the safety profile is already covered by annotations.

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

Conciseness5/5

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

Three dense sentences, with the core purpose front-loaded and each subsequent sentence adding distinct value (mode selection, provider behavior). No filler or redundant restatement of the tool name.

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

Completeness3/5

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

For a parameterized lookup tool with no output schema, the description covers the main invocation decision (mode and direction) well, but it does not clarify what the returned article/citation payload contains, nor does it resolve the confusing limit/sections parameter. This is adequate but leaves notable gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3; the description adds some context for citation_mode and provider roles beyond the schema. However, it omits the 'limit' parameter entirely, and that parameter's schema description is inconsistent (integer type but 'sections to include' semantics), leaving a real ambiguity unresolved.

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

Purpose5/5

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

The description leads with a specific verb and resource: 'Get article by PMID/PMCID/DOI', and enumerates the exact identifier formats accepted. This clearly distinguishes it from sibling article_search, which would be used for queries rather than known identifiers.

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

Usage Guidelines4/5

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

The description establishes the context for use (you have a known identifier) and gives concrete guidance for selecting citation_mode (fast vs full with latency and provider tradeoffs) and the auto-fallback behavior. It does not explicitly name alternatives like article_search or state when not to use this tool, so it stops just short of a 5.

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

article_searchA
Read-only

Search literature across multiple backends with federated search and deduplication

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return. Applied to final deduplicated results, not per-source. Each source may fetch more internally before deduplication.
queryYesSearch query (title, abstract, or keyword)
offsetNoResult offset
sourceNoSpecific source to search
dateRangeNoDate range as YYYY-MM-DD/YYYY-MM-DD. Open-ended: "2020-01-01/" or "/2023-12-31". Only pubmed, europepmc, semantic_scholar support this.

TDQS

A3.8/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it reveals federated search and deduplication. Annotations already indicate read-only and open-world. The description could further explain deduplication logic or result ordering, but its current level is satisfactory.

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

Conciseness5/5

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

The description is two sentences, front-loads the main purpose, and contains no fluff. Every word adds value.

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

Completeness2/5

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

Despite no output schema, the description fails to explain what the tool returns (e.g., list of articles with fields, pagination info). For a search tool with 5 parameters and no output schema, this is a significant gap.

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

Parameters3/5

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

Schema coverage is 100%, so parameter descriptions are already present. The main description does not add extra parameter meaning beyond the schema. The limit and dateRange parameter descriptions in the schema are helpful, meeting the baseline threshold.

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

Purpose5/5

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

The description 'Search literature across multiple backends with federated search and deduplication' clearly states the action (search), resource (literature), and key differentiators (multiple backends, federated, deduplication). This distinguishes it from siblings like article_get (single article) and other domain-specific searches.

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

Usage Guidelines3/5

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

The description implies it is for cross-source literature search, but provides no explicit guidance on when to use this tool versus alternatives like individual backend tools (e.g., pubmed directly). It lacks when-not advice or when to prefer other search tools among siblings.

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

batch_getB
Read-only

Get multiple entities in parallel

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYesList of entity requests

TDQS

B3.4/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this as a safe read operation, and the description adds the parallel-execution behavior. However, it does not disclose failure modes, partial-result behavior, ordering guarantees, or batch limits.

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

Conciseness5/5

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

The description is a single concise sentence with no redundant wording. The core behavior and primary distinguishing trait, parallel retrieval of multiple entities, is front-loaded.

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

Completeness2/5

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

There is no output schema, so the description should explain what the tool returns or at least hint at response behavior, but it does not. It also omits guidance on invalid IDs, mixed entity types, or relationship to sibling single-get tools, leaving the agent with only the input schema to work from.

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

Parameters3/5

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

Schema description coverage is 100%, and the input schema fully documents the 'inputs' array, including required fields, the entity enum, and optional sections. The description adds no extra parameter semantics but also does not need to compensate for a schema gap.

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

Purpose4/5

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

The description states a specific action ('Get') and resource ('multiple entities in parallel'), making the batch nature clear and distinguishing it from the single-entity get_* siblings. It is not fully explicit that the entities are selected by 'id' or that the entity types are limited to the enum, but the input schema supplies that detail.

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

Usage Guidelines3/5

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

The phrase 'multiple entities in parallel' implies the tool is for batch retrieval rather than repeated single calls, but the description does not explicitly say when to prefer batch_get over gene_get, variant_get, etc. No exclusions or thresholds are provided.

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

biomcp_configureA
DestructiveIdempotent

Inspect and configure biomcp — unified observability and restricted controllability for every parameter.

What it covers: three optional feature groups (database, analysis_r, analysis_biowasm) whose knobs live in the .biomcp.json project config file (written by this tool, loaded at server startup — a restart applies changes), plus every environment-only parameter (API keys, proxy, security boundaries), which is query-only.

Actions:

  • status (default; call with {}): per-feature running state (with each feature's settable_keys), config file health, conflicts (e.g. an env var vetoing the file), pending-restart flags, dependency prerequisites, and parameter counts. The full parameter catalog is NOT inlined — use filter for detailed rows: 'file', 'env', a feature id ('analysis_r'), or a dotted-id prefix ('features.database').

  • set: create/modify file parameters in one atomic batch. Enable/disable is just features..enabled. null removes a key (restores default). Sensitive keys (connection targets, mirrors) require confirm_sensitive=true. Nothing is written when any key is invalid (dry_run=true validates and diffs without writing).

  • reset: remove a feature section (target: feature id) or specific keys (target: [dotted ids]).

Hard rules: environment parameters are never settable here (the response tells you how to set them in your client's env block); env var values are never displayed (masked: presence + fingerprint only); the file write is refused when the server's working directory is not a project root — the response then carries a paste-ready env block instead.

Examples: {"action":"status"} · {"action":"status","filter":"features.analysis_r"} · {"action":"set","values":{"features.analysis_biowasm.enabled":true}} · {"action":"set","values":{"features.database.enabled":true,"features.database.type":"sqlite","features.database.sqlite_path":["data/geo.db"]}} · {"action":"set","values":{"features.analysis_r.mirror_url":null}} · {"action":"reset","target":"analysis_r"}

Changes apply at server startup: finish dependency prerequisites first (see prerequisites in the response), then restart the client/session once, then re-call this tool with {} to verify running_now.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNostatus = inspect (default, works with no other arguments); set = create/modify file parameters; reset = remove.status
filterNoFor status: "file" | "env" | feature id | dotted-id prefix — returns detailed rows (effects, how-to-set).
targetNoFor reset: a feature id ("database" | "analysis_r" | "analysis_biowasm") removes the whole section, or a list of dotted file-param ids removes those keys.
valuesNoFor set: {"<dotted file-param id>": <value|null>} — e.g. {"features.analysis_r.enabled": true}. null removes the key. Valid ids are listed by status.
dry_runNoValidate and diff without writing (set/reset).
confirm_sensitiveNoRequired true when set/reset touches sensitive keys (connection targets, mirrors, credentials).

TDQS

A5/5.0
Behavior5/5

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

Annotations indicate a non-read-only, destructive, idempotent tool, and the description richly expands on these traits: atomic batch writes, null removal semantics, dry-run validation, sensitive-key confirmation, write refusal outside project roots, env masking, and pending-restart behavior. There is no contradiction with the annotations.

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

Conciseness5/5

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

The description is long but appropriately so for a tool with three actions, hard rules, and restart semantics. It is structured with clear headings, compact bullet-like action definitions, and illustrative examples; the front-loaded purpose and action summary make it easy to scan.

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

Completeness5/5

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

With no output schema, the description compensates by explaining what status returns, how filtering works, what happens on invalid writes or dry runs, and how the response guides env-parameter setup. It also covers sensitive keys, project-root refusal, dependency prerequisites, and the post-change verification workflow, making the tool safely callable without additional documentation.

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

Parameters5/5

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

Although the schema already describes all six parameters at 100% coverage, the description adds substantial semantic context beyond the schema: valid filter categories and dotted-id prefixes, the meaning of empty values as null-removal, the distinction between feature-section reset and key-list reset, and the behavior of dry_run and confirm_sensitive.

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

Purpose5/5

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

The description states a specific verb and resource: inspect and configure biomcp's parameters across feature groups and environment-only settings. It clearly distinguishes this tool from the biomedical query siblings by scoping it to biomcp configuration, and it enumerates the three actions and the config file involved.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance for each action: status for inspection, set for creation/modification, reset for removal, plus filter usage for detailed rows. It also states hard exclusions — environment parameters are never settable here and env var values are never displayed — and provides concrete examples and a restart workflow.

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

discoverC
Read-only

Free-text concept resolution - find entities matching a free-text query

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesFree-text query (e.g., "BRAF V600E", "lung cancer", "imatinib")

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, indicating safe read operations. The description adds minimal additional behavioral context (e.g., 'free-text concept resolution'), but does not disclose details like result count limits, pagination, or how the resolution works.

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

Conciseness3/5

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

The description is extremely concise (two noun phrases), which is efficient but lacks structure. It front-loads the key action but omits any sentences or additional details, making it borderline insufficient.

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

Completeness2/5

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

Given the many sibling tools and lack of output schema, the description is incomplete. It does not explain return format, result count, or how discover differs from specific entity searches, leaving the agent uncertain about its utility.

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

Parameters3/5

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

Schema coverage is 100% and the schema already describes the 'query' parameter with examples. The description's phrase 'free-text query' adds no new meaning beyond the schema, so it meets the baseline without improvement.

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

Purpose4/5

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

The description 'Free-text concept resolution - find entities matching a free-text query' clearly identifies the tool's purpose as resolving free-text queries to entities, distinguishing it from specific entity search siblings. However, it does not specify what types of entities (e.g., biomedical concepts) are resolved.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like disease_search or drug_search. It does not mention any context or exclusions, leaving the agent to infer usage from the free-text nature.

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

disease_drugsA
Read-only

Get drugs for a disease via OpenTargets

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
disease_idYesDisease ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds that the data comes from OpenTargets, which is behavioral context but does not disclose other important traits like rate limits, pagination, or data freshness. It does not contradict annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no unnecessary words. It efficiently communicates the core function.

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

Completeness3/5

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

While the tool is simple with two parameters and no output schema, the description lacks information about the expected output format or any caveats. Given the large number of sibling tools, more context on when this tool is appropriate would improve completeness.

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

Parameters2/5

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

The schema provides minimal descriptions for disease_id ('Disease ID') and limit (just 'limit'), with 50% coverage. The tool description does not add any additional explanation about the parameters, leaving their meaning and usage unclear, especially for limit.

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

Purpose5/5

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

The description clearly states that the tool retrieves drugs for a given disease via OpenTargets, using a specific action verb and resource. It distinguishes itself from sibling tools like disease_trials or gene_drugs by specifying the data source and relationship.

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

Usage Guidelines3/5

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

The description implies the tool should be used when drug information for a disease is needed, referencing OpenTargets as the data source. However, it does not explicitly state when to prefer this tool over alternatives like gene_drugs or disease_trials, nor does it provide exclusions.

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

disease_getA
Read-only

Get detailed disease information by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sectionsNoSections to include
disease_idYesDisease ID (e.g., "DOID:0060268", "C0018794")

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint and openWorldHint, so the safety profile is known. The description adds that the response is 'detailed,' but it does not explain how sections or limit affect the returned data or what the response shape looks like. It adds some context without being 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.

Conciseness5/5

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

One concise sentence with no redundant wording. The key selector, 'by ID,' is placed at the end but the overall structure is clear and efficient.

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

Completeness4/5

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

This is a simple read-only lookup with one required parameter, and the schema covers the important inputs. With no output schema, 'detailed disease information' gives a reasonable expectation of the return value. The description is complete enough for this level of tool complexity.

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

Parameters3/5

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

Two of the three parameters (disease_id and sections) already have useful schema descriptions, and the description reiterates the central role of the ID. However, the limit parameter is undocumented in both the schema and the description, and the tool description itself adds no further parameter insight.

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

Purpose5/5

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

The description uses a specific verb ('Get'), a specific resource ('detailed disease information'), and the key access pattern ('by ID'). This makes the tool's purpose immediately clear and distinguishes it from disease_search and other disease_* siblings.

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

Usage Guidelines4/5

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

The phrase 'by ID' clearly communicates when this tool should be used: when the agent already has a disease identifier. It does not explicitly name alternative tools or list exclusion cases, so it stops just short of full guidance.

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

disease_trialsB
Read-only

Get clinical trials for a disease

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
disease_idYesDisease ID

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds no further behavioral context (e.g., data freshness, pagination, or authentication needs). Consistent but not additive.

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

Conciseness4/5

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

Single sentence, very concise. No fluff, but could be slightly more structured (e.g., specifying that it returns a list of trials). Appropriate length.

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

Completeness2/5

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

Given no output schema and many sibling tools, the description lacks details about return format, pagination (limit param), or how this differs from 'trial_search'. Incomplete for effective tool selection.

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

Parameters2/5

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

Schema has 50% parameter description coverage (disease_id described, limit lacks description). The description does not elaborate on parameter semantics beyond the schema, missing an opportunity to clarify the limit parameter.

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

Purpose5/5

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

Description clearly states 'Get clinical trials for a disease' with a specific verb and resource, and it distinguishes from sibling tools like 'trial_search' or 'drug_trials'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'trial_search' or 'disease_drugs'. The description does not mention any prerequisites or conditions.

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

drug_getB
Read-only

Get detailed drug information by name

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDrug name (e.g., "imatinib", "aspirin")
limitNo
sectionsNoSections to include (adverse_events = FDA FAERS adverse reactions ranked by report count; limit applies to reaction rows)

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds little behavioral context beyond that: it does not state return shape, exact-match behavior, or how sections and limit affect output.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. 'Detailed' is slightly generic, but the structure is clear and easy to parse.

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

Completeness3/5

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

For a read-only get-by-name tool, the description plus schema and annotations are mostly sufficient. Missing pieces include any indication of what the response looks like or what happens when a drug is not found, but the tool's simplicity reduces the severity of these omissions.

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

Parameters3/5

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

The schema already documents the 'name' and 'sections' parameters well, including the meaning of the adverse_events section and that limit applies to reaction rows. The description only restates the name parameter; it adds no meaning beyond what the schema provides.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('detailed drug information') with a lookup key ('by name'). It is more specific than a vague tool description, but it does not explicitly contrast itself with sibling tools like drug_search or drug_trials.

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

Usage Guidelines3/5

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

The phrase 'by name' implies this is for exact-name lookups rather than keyword search, which is useful usage context. However, no explicit guidance is given about when to choose this tool over drug_search or other drug-related alternatives.

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

drug_trialsA
Read-only

Find clinical trials for a drug

ParametersJSON Schema
NameRequiredDescriptionDefault
drugYesDrug name

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint: true, so the description needs no additional read-only disclosure. However, the description adds no other behavioral context (e.g., result scope, pagination, phase filtering). It is adequate for a simple tool 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.

Conciseness5/5

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

The description is a single, efficient phrase with no extraneous words. It is front-loaded and earns its place.

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

Completeness3/5

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

Given the tool's simplicity (one required param, no output schema), the description is mostly complete. However, it could benefit from clarifying the scope of trials (e.g., all phases) or how results are ordered. Sibling differentiation is also missing.

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

Parameters3/5

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

Schema coverage is 100% with the parameter described as 'Drug name'. The tool description adds 'for a drug' but does not provide additional meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description specifies the action ('Find') and resource ('clinical trials') and indicates the input ('for a drug'). It clearly distinguishes from sibling tools like 'trial_search' or 'disease_trials' by focusing on drug-based lookup.

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

Usage Guidelines3/5

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

The description implies usage for drug-based trial lookup but does not explicitly contrast with sibling tools like 'trial_search' (for broader criteria) or 'disease_trials'. No when-not-to-use or alternative guidance is provided.

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

ensembl_consequenceA
Read-only

Predict the functional consequence of a variant on demand via Ensembl VEP — works even for NOVEL variants absent from every database, and for non-human species.

Input forms: HGVS c./p./g. notation ("NM_004333:c.1799T>A", "ENST00000288602:c.1799T>A") or a dbSNP rsID ("rs113488060"). Prefer HGVS over rsIDs when both are available — rsIDs are resolved through dbSNP's coordinate mapping, which can yield less specific consequences. Returns the most severe consequence plus per-transcript effects (impact, codon/amino-acid change, SIFT/PolyPhen where available) and co-located known variants (ClinVar/COSMIC IDs, gnomAD/1000G frequencies when present). For KNOWN human variants, variant_get additionally provides deep pre-computed scores (CADD, REVEL, AlphaMissense, ClinVar stars) — prefer it there.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax transcript consequences returned (sorted by impact severity)
speciesNoSpecies — 'human' (default), 'mouse', …human
variantYesHGVS notation (NM_004333:c.1799T>A) or dbSNP rsID (rs113488060)

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description enriches this by explaining on-demand VEP behavior, that novel variants work, that non-human species are supported, and what results look like (most severe consequence, per-transcript effects, co-located variants). It also discloses the caveat that rsID resolution via dbSNP can yield less specific consequences. No contradiction with annotations.

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

Conciseness5/5

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

Four focused sentences, each earning its place: scope, input forms and preferences, return contents, sibling routing. The core purpose is front-loaded, and the alternative-tool guidance is saved for the end. No filler or redundant restatement of schema fields.

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

Completeness5/5

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

For a tool with no output schema, the description sufficiently explains return values, including impact, codon/amino-acid change, SIFT/PolyPhen, and co-located variant metadata. It also covers input formats, species support, novel-variant behavior, rsID caveats, and when to choose variant_get. Nothing critical for an agent to call this tool correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents variant, species, and limit. The description adds meaningful value beyond this: concrete HGVS notation examples (NM_004333:c.1799T>A, ENST00000288602:c.1799T>A), the c./p./g. notation forms, and a clear preference rule for HGVS over rsIDs. This is more than the schema alone provides, though not every parameter nuance is expanded.

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

Purpose5/5

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

Description states a specific verb ('Predict'), a clear resource ('functional consequence of a variant via Ensembl VEP'), and immediately distinguishes itself from variant_get by noting that variant_get is preferred for known human variants. It also highlights unique capabilities (novel variants, non-human species) that make it easy to differentiate from sibling tools.

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

Usage Guidelines5/5

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

Explicitly tells the agent when to use this tool: for novel variants, non-human species, and general VEP-based consequence prediction. It also provides concrete routing guidance: prefer variant_get for known human variants when deep pre-computed scores are needed, and prefer HGVS notation over rsIDs when both are available.

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

ensembl_homologyA
Read-only

Find orthologues or paralogues of a gene across species (Ensembl Compara) — the cross-species gene mapping source in biomcp.

Returns target stable IDs, species, taxonomy level, and percent identity, sorted by identity. Accepts an HGNC symbol or Ensembl gene ID; scope to one species with target_species ('mouse') or target_taxon (10090). Use it for conservation questions ('is this gene conserved?', 'what is the mouse orthologue of BRAF?').

ParametersJSON Schema
NameRequiredDescriptionDefault
geneYesGene symbol (BRAF) or Ensembl gene ID (ENSG00000157764)
typeNoHomology type to fetchorthologues
limitNoMaximum homologies to return (sorted by percent identity)
speciesNoSource species — 'human' (default), 'mouse', …human
target_taxonNoRestrict results to a taxon ID, e.g. 10090 (Mus musculus)
target_speciesNoRestrict results to one species, e.g. 'mouse'

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds useful behavioral detail: returns target stable IDs, species, taxonomy level, and percent identity, sorted by identity. This goes beyond the structured annotations by describing the result shape and ordering without contradicting the read-only hint.

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

Conciseness5/5

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

The description is compact and well-structured: the first sentence front-loads purpose and domain, the second covers return values and scoping, and the third gives user intent. Every sentence earns its place with no filler.

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

Completeness5/5

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

There is no output schema, but the description supplies return fields and sort order, which covers what an agent needs to interpret results. The required gene parameter and key optional scope parameters are explained with examples, making the tool complete for a read-only cross-species lookup.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining accepted gene input formats (HGNC symbol vs Ensembl gene ID) and by giving concrete examples for target_species ('mouse') and target_taxon (10090).

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Find orthologues or paralogues of a gene across species (Ensembl Compara)'. It also explicitly labels itself 'the cros-species gene mapping source in biomcp', which clearly distinguishes it from gene_search, ensembl_lookup, and other sibling tools.

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

Usage Guidelines4/5

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

It gives explicit use-case guidance: conservation questions and the example 'what is the mouse orthologue of BRAF?'. It does not name alternative tools to avoid, but the cross-species positioning and usage examples make the appropriate context clear.

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

ensembl_lookupA
Read-only

Resolve a gene in Ensembl terms for ANY Ensembl species (356 available): stable ID (ENSG…), symbol↔ID mapping, versioned identifier, canonical transcript, and coordinates on the current assembly (GRCh38 human, GRCm39 mouse, …). With expand=true, returns all transcripts with translation/protein IDs.

Accepts an HGNC symbol (BRAF) or Ensembl gene ID (ENSG00000157764, versioned or bare — versions are resolved to the current record). Species accepts scientific names or aliases ('homo_sapiens'/'human', 'mus_musculus'/'mouse'). For rich human gene annotation (summary, pathways, drugs, diseases) use gene_get instead — this tool is the identifier/structure authority.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoInclude all transcripts with translation/protein IDs
speciesNoSpecies name or alias — 'human' (default), 'mouse', 'mus_musculus', 'rat', …human
gene_or_idYesHGNC symbol (BRAF) or Ensembl gene ID (ENSG00000157764, versioned or bare)

TDQS

A4.6/5.0
Behavior4/5

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

The annotations already signal readOnlyHint and openWorldHint, so the safety profile is covered. The description adds meaningful behavioral context: expand=true returns all transcripts with translation/protein IDs, versioned IDs are resolved to the current record, and species aliases are accepted. No contradiction with annotations.

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

Conciseness5/5

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

The description is front-loaded with the core purpose and output, followed by input formats and then a clear alternative routing. Each sentence earns its place and the examples make the syntax immediately usable without redundancy.

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

Completeness4/5

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

With no output schema, the description correctly takes responsibility for explaining return values: stable ID, symbol↔ID mapping, versioned identifier, canonical transcript, coordinates, and expanded transcript details. It does not cover edge-case behavior such as not-found handling or exact default output, but for a read-only lookup tool this is largely sufficient.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining that versioned IDs are resolved to the current record, that species accepts scientific names or aliases like 'homo_sapiens'/'human', and what expand=true changes about the response.

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

Purpose5/5

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

The description opens with a clear verb-resource pair: 'Resolve a gene in Ensembl terms' and enumerates the exact outputs (stable ID, symbol↔ID mapping, versioned identifier, canonical transcript, coordinates). It also distinguishes itself from gene_get by declaring that it is the identifier/structure authority.

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

Usage Guidelines5/5

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

It explicitly tells the agent when to use a different tool: 'For rich human gene annotation (summary, pathways, drugs, diseases) use gene_get instead.' It also defines its own role as the identifier/structure authority, giving clear selection guidance among siblings.

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

ensembl_regionA
Read-only

Query what lives in a genomic interval on the current assembly (GRCh38 for human): genes/transcripts (stable IDs, symbols, biotypes) and known variants (rsIDs, alleles, consequence terms, clinical significance).

Ideal for locus triage — "what genes and known variants sit in this GWAS hit interval?". Keep spans modest (<1 Mb recommended); output is capped at limit with a truncated marker. For sequence text use genbank_get; for entity-level annotation chain IDs into gene_get / variant_get.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum features returned
regionYesGenomic region chr:start-end (1-based, GRCh38 for human) — e.g. 7:140450000-140480000
speciesNoSpecies — 'human' (default), 'mouse', …human
featuresNoFeature types to include

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds valuable behavioral context beyond this: output is capped at the limit with a truncated marker, the current assembly is specified as GRCh38 for human, and spans should be kept modest. It does not contradict the annotations and gives the agent practical knowledge about response handling.

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

Conciseness5/5

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

The description is compact and front-loaded: the first sentence states purpose and payload, the second gives a concrete use case, and the third provides operational guidance and sibling routing. Every sentence earns its place with zero repetition of schema content.

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

Completeness4/5

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

For a 4-parameter read-only tool with no output schema, the description covers what is returned, how output is truncated, which assembly is used, and when to choose alternatives. It does not describe the exact response format, but the field-level detail (stable IDs, rsIDs, consequence terms) plus the truncation note make the tool sufficiently complete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the structured schema already documents all parameters. The description adds contextual nuance (assembly, span caution, output cap) that enriches the region parameter semantics, but does not materially expand on limit, species, or features beyond what the schema provides. This matches the baseline-3 expectation for fully covered schemas.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Query what lives in a genomic interval') and enumerates exact content: genes/transcripts with stable IDs, symbols, biotypes, and variants with rsIDs, alleles, consequence terms, and clinical significance. It also explicitly distinguishes itself from siblings like genbank_get and gene_get/variant_get, making its scope unambiguous.

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

Usage Guidelines5/5

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

Provides a clear use case ('Ideal for locus triage — what genes and known variants sit in this GWAS hit interval?'), a recommendation ('Keep spans modest (<1 Mb recommended)'), and explicit routing to alternatives ('For sequence text use genbank_get; for entity-level annotation chain IDs into gene_get / variant_get').

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

genbank_genesA
Read-only

Map a GenBank/RefSeq nucleotide accession to its NCBI Gene IDs (elink nuccore→gene).

The returned gene_ids are entrezgene IDs usable directly with MyGene-backed gene tools (gene_get, gene_search). Useful bridge from a sequence record to gene-level annotation.

ParametersJSON Schema
NameRequiredDescriptionDefault
accessionYesGenBank/RefSeq accession, versioned or bare — e.g. NG_017013.2, NC_000023.11

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety. The description adds valuable behavioral detail: it uses the elink nuccore→gene mechanism and returns entrezgene IDs that are directly compatible with MyGene-backed tools. This goes beyond just saying 'maps an accession.'

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

Conciseness5/5

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

Two sentences, with the core mapping stated first and supporting detail (returned ID type, downstream compatibility) second. No wasted words or redundant restatement of the tool name.

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

Completeness4/5

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

For a single-parameter read-only lookup with no output schema, the description covers the essential points: what input is expected, how the mapping happens, what the output is (gene IDs), and how those IDs can be used. Minor gaps like zero/multiple hit behavior and exact response shape are not disclosed, but the description is complete enough for correct invocation.

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

Parameters3/5

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

Schema coverage is 100% and the parameter description already includes examples ('NG_017013.2, NC_000023.11') and versioning detail. The description repeats the GenBank/RefSeq context but doesn't add meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Map a GenBank/RefSeq nucleotide accession to its NCBI Gene IDs.' This clearly distinguishes it from sibling tools like genbank_search/genbank_get (which retrieve sequence records) and gene_search (which searches for genes by other criteria).

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

Usage Guidelines4/5

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

The phrase 'Useful bridge from a sequence record to gene-level annotation' gives clear context for when to use this tool. It does not explicitly state alternatives or when not to use it, but the mapping purpose is distinctive enough that an agent can infer the appropriate scenario.

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

genbank_getA
Read-only

Fetch a GenBank/RefSeq nucleotide record as text (GenBank flat file or FASTA).

Whole-record fetches are capped at 2,000,000 bp — larger records require a seq_start/seq_stop region (1-based, inclusive, up to 10 Mb span; set strand=2 for a reverse-strand slice where seq_start > seq_stop — the region field echoes the request as given, while NCBI's text shows complement(min..max)). Output guard: sequence_text is truncated to its first 200,000 characters when oversized — request a narrower region for the full text.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoRecord format: genbank flat file (default) or fastagenbank
strandNoStrand: 1=plus (default), 2=minus (reverse slice; allows seq_start > seq_stop)
seq_stopNoRegion stop (1-based, inclusive)
accessionYesGenBank/RefSeq accession, versioned or bare — NC_000023.11, NG_017013.2, KJ668569.2
seq_startNoRegion start (1-based, inclusive) — required with seq_stop for records over 2 Mb
max_response_bytesNoHard cap on the raw NCBI response in characters (default 30,000,000) — oversized responses error instead of truncating

TDQS

A4.6/5.0
Behavior5/5

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

The annotations provide readOnlyHint and openWorldHint, and the description adds substantial operational detail beyond those: the 2,000,000 bp cap, 10 Mb region span, reverse-strand semantics, region echo behavior, NCBI complement notation, 200,000-character truncation, and the max_response_bytes error behavior. There is no contradiction with the read-only annotation.

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

Conciseness5/5

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

The first sentence gives a crisp purpose statement, and the second paragraph packs multiple complex rules into compact prose with no filler. Every sentence contributes to correct invocation, and the most important scope-limiting facts appear early.

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

Completeness5/5

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

The description covers every edge case that could cause a failed or misleading call: record-size caps, region span limits, strand semantics, truncation behavior, and the max_response_bytes hard cap. Since there is no output schema, the description's detail about the returned text and its truncation behavior is especially valuable for an agent deciding whether a request will succeed.

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

Parameters5/5

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

The schema covers all six parameters with 100% description coverage, and the description goes well beyond it by explaining 1-based inclusive coordinates, the cap that makes seq_start/seq_stop required, the strand=2 reverse-slice usage, and the truncation guard that motivates max_response_bytes. This transforms the parameter names into actionable invocation knowledge.

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

Purpose5/5

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

The opening sentence, 'Fetch a GenBank/RefSeq nucleotide record as text (GenBank flat file or FASTA)', names a specific verb, a precise resource, and the output formats. This clearly distinguishes genbank_get from genbank_search, which is about discovery, and from genbank_genes, which targets gene records rather than nucleotide records.

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

Usage Guidelines3/5

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

The description gives detailed operational conditions: whole-record fetches are capped at 2,000,000 bp, larger records require seq_start/seq_stop, and strand=2 is needed for reverse-strand slices. However, it does not explicitly state when to choose this tool over alternatives such as genbank_search, gene_get, or ensembl_region; that guidance is implied by the tool name rather than stated.

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

gene_articlesB
Read-only

Find articles about a gene

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesHGNC gene symbol

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so description does not need to restate. It adds no additional behavioral context beyond the schema.

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

Conciseness4/5

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

Extremely concise at 4 words. Front-loaded and to the point, though it could be slightly more descriptive without losing efficiency.

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

Completeness3/5

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

Given the simplicity of the tool (single required parameter, read-only annotation), the description is adequate but does not mention the nature of the output (e.g., list of article IDs or abstracts).

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

Parameters3/5

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

Schema coverage is 100% (one parameter with description). The description 'about a gene' aligns with the 'symbol' parameter but adds no extra meaning beyond the schema.

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

Purpose4/5

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

Description clearly states verb 'Find' and resource 'articles about a gene', distinguishing it from general article or gene tools. However, it does not specify that it returns a list or any additional details.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like article_search, article_get, or gene_get. The description is too brief to indicate its specific niche.

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

gene_diseasesA
Read-only

Get diseases associated with a gene. Requires DISGENET_API_KEY environment variable for DisGeNET data; falls back to OpenTargets gene-disease associations when unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbolYesHGNC gene symbol

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it requires an environment variable and has a data source fallback. Annotations already indicate readOnly and openWorld, and the description does not contradict them.

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

Conciseness5/5

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

Two precise sentences with no wasted words. First sentence states purpose, second provides crucial configuration info.

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

Completeness4/5

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

The description covers the main functionality and a key dependency (env var). However, it does not describe the return format or structure, which could be helpful given no output schema.

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

Parameters3/5

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

Schema coverage is 50% (symbol described, limit not). The description adds no new parameter information beyond what's in the schema, such as the limit parameter's purpose or default behavior.

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

Purpose5/5

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

The description clearly states it retrieves diseases associated with a gene, using the verb 'Get' and resource 'diseases'. It distinguishes from sibling tools like gene_articles, gene_drugs, etc., by specifying the output type.

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

Usage Guidelines4/5

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

The description provides usage context by mentioning the DISGENET_API_KEY requirement and fallback to OpenTargets. However, it does not explicitly contrast with sibling tools for when to use this tool instead of others.

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

gene_drugsB
Read-only

Find drugs targeting a gene

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesHGNC gene symbol (e.g., "BRAF", "TP53")

TDQS

B3.3/5.0
Behavior2/5

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

Annotations declare readOnlyHint=true, and the description ('Find') is consistent but does not add further behavioral details such as potential limits, data source, or any side effects. The description carries little additional transparency beyond the annotation.

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

Conciseness5/5

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

A single sentence with no unnecessary words, directly conveying the tool's purpose. Highly concise and front-loaded.

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

Completeness3/5

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

For a simple one-parameter tool with annotations, the description is minimal but sufficient. However, it lacks information about output format or limitations, which would be helpful for completeness. Score reflects adequate but not exceptional coverage.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter 'symbol', which already includes examples. The description adds no extra meaning beyond what the schema provides, 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.

Purpose5/5

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

Description clearly states 'Find drugs targeting a gene' which is a specific verb-resource combination. It distinguishes from sibling tools like 'drug_search' (general drug search) and 'disease_drugs' (drugs for a disease) by specifying the relation to a gene.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives such as 'disease_drugs' or 'drug_search'. The description does not provide context for when not to use it or mention any conditions or prerequisites.

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

gene_enrichA
Read-only

Perform pathway enrichment analysis for a gene list

ParametersJSON Schema
NameRequiredDescriptionDefault
genesYesList of HGNC gene symbols

TDQS

A3.7/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, indicating a read operation. The description adds little beyond stating the analysis nature. It does not disclose computational behavior, dependencies, or output specifics, but with annotations covering the safety profile, the description is adequate but not enriched.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately communicates the tool's function. There is no extraneous information, and it is front-loaded with the action and target.

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

Completeness3/5

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

With only one parameter and annotations present, the description is minimal. It lacks details about the output or return format, which is important since there is no output schema. For a complex analysis tool, additional context about the analysis method or result type would improve completeness.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter, with a clear description ('List of HGNC gene symbols'). The tool description does not add further details about parameter constraints, formatting, or validation rules, so it scores at the baseline.

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

Purpose5/5

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

The description clearly identifies the action ('perform pathway enrichment analysis') and the resource ('a gene list'). This is distinct from sibling tools that retrieve or search for individual gene-related data, making the purpose 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.

Usage Guidelines3/5

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

The description states what the tool does but does not provide explicit guidance on when to use it versus alternatives or when not to use it. It implies enrichment analysis as opposed to simple gene lookup, 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.

gene_getC
Read-only

Get detailed gene information by symbol

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
smartNoWhen true, automatically resolves gene aliases and common names to the official HGNC symbol before lookup (e.g., "HER2" → "ERBB2"). Zero overhead when input is already a valid HGNC symbol.
symbolYesOfficial HGNC gene symbol (e.g., "BRAF", "TP53", "ERBB2"). Common aliases like "HER2" or "NEU" are NOT accepted unless smart=true is enabled.
sectionsNoSections to include

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=true (safe read) and openWorldHint=true (variable results). Description adds no additional behavioral context such as error handling, rate limits, or data scope beyond 'detailed', offering minimal extra transparency.

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

Conciseness4/5

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

Five-word sentence is extremely concise but includes the core action and resource. Could elaborate slightly without losing efficiency, but overall well-structured.

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

Completeness2/5

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

Given 4 parameters, no output schema, and complexity of gene data, the minimal description fails to convey the scope of information returned (e.g., sections, smart resolution) or any usage nuances. Incomplete for effective tool selection.

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

Parameters2/5

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

Schema description coverage is high (75%), but description provides zero additional parameter-level explanation. It does not compensate for 'limit' lacking schema description, and adds no semantics beyond the symbol parameter documented in schema.

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

Purpose5/5

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

Description clearly states verb 'Get' and resource 'detailed gene information by symbol', distinguishing it from sibling tools like gene_search or gene_articles which serve different retrieval purposes.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives (e.g., gene_search for partial matches, gene_articles for literature). No when-not or context provided.

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

gene_trialsA
Read-only

Find clinical trials for a gene

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesHGNC gene symbol

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, indicating a safe operation. The description adds no further behavioral details (e.g., what is returned or limitations), but it does not contradict the annotations.

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

Conciseness4/5

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

A single, concise sentence that is front-loaded and immediately conveys the tool's purpose. It is appropriately sized for a simple tool.

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

Completeness4/5

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

Given the low complexity (one parameter, no output schema), the description adequately explains what the tool does. It could mention that it uses HGNC symbols for searching, but the schema already clarifies that.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter 'symbol' with a description. The tool description adds no additional meaning beyond what the schema provides.

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

Purpose5/5

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

The description 'Find clinical trials for a gene' uses a specific verb ('Find') and resource ('clinical trials'), clearly distinguishing it from sibling tools like gene_articles or gene_diseases.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as disease_trials or drug_trials, nor are there any prerequisites or disclaimers.

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

geo_getA

Get the full SOFT record details for a GEO entry: series (GSE...), sample (GSM...), or platform (GPL...).

A series detail includes summary, organisms, platform_ids, a sample preview, supplementary file URLs, and cross-references for chaining: sra → sra_get(SRP.../SRR...), pubmed_ids → article_get, samples → geo_get(GSM...), platform_ids → geo_get(GPL...).

download=true additionally saves the first supplementary file (.gz/.csv/.txt, subject to max_bytes) to a local temp path and returns its path, size, and source URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
downloadNoDownload the first supplementary file (.gz) to a local temp path
accessionYesGEO accession (GSE series, GSM sample, or GPL platform; GDS curated DataSets return guidance pointing at the underlying GSE/GSM)
max_bytesNoSize cap in bytes for the downloaded supplementary file (default 52428800 = 50 MB)

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the main non-read-only behavior outside the annotations: download=true saves the first supplementary file to a local temp path and returns path/size/source URL, capped by max_bytes. This goes beyond readOnlyHint=false and openWorldHint=true, and it is consistent with them.

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

Conciseness5/5

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

The description is organized with a front-loaded core purpose, a compact enumeration of series-level return fields, and a separate sentence for the opt-in download behavior. Every sentence contributes either scope, chaining context, or side-effect disclosure, with no filler.

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

Completeness4/5

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

With no output schema, the description adequately covers return contents for series lookups and the download path, and it explains the tool's role in chaining across siblings. It is slightly less complete for sample/platform return shapes, but the 'full SOFT record details' framing plus the series example gives sufficient context for an agent to invoke it correctly.

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

Parameters4/5

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

The schema already fully describes all three parameters, so this is at baseline 3. The description adds value by clarifying accepted accession patterns, download file extensions (.gz/.csv/.txt), and the non-boolean effect of download, which strengthens the parameter story.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get the full SOFT record details for a GEO entry', and enumerates the accession types (GSE/GSM/GPL). It clearly distinguishes this lookup tool from search-oriented siblings like geo_search by emphasizing full record details and chaining cross-references.

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

Usage Guidelines3/5

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

Usage context is implied rather than explicit: the description explains what series/sample/platform lookups return and shows chaining paths (sra_get, article_get, geo_get), but it never states when to prefer geo_get over geo_search, batch_get, or other GET tools. A clear when-to-use statement is missing.

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

gtex_eqtlA
Read-only

Get significant cis-eQTL associations for a gene in a specific GTEx tissue (GTEx Analysis v10): variant_id, p_value, and NES (effect direction/size), sorted by ascending p-value.

tissue is a required GTEx tissueSiteDetailId (e.g. Whole_Blood, Brain_Cortex).

ParametersJSON Schema
NameRequiredDescriptionDefault
geneYesHGNC symbol (TP53) or Ensembl gene ID (ENSG00000141510, versioned or bare)
limitNoMaximum associations to return
tissueYesGTEx tissueSiteDetailId — required, e.g. Whole_Blood

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnly and openWorld intent. The description adds meaningful behavior: exact output fields, p-value sort order, GTEx v10 data source, and the required tissue constraint. This goes well beyond annotations, though it does not discuss pagination or significance threshold semantics.

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

Conciseness5/5

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

Two compact sentences with no filler. The core action, output shape, and sort order are front-loaded; the required parameter note is placed at the end. Every sentence earns its place.

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

Completeness5/5

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

For a modest list-style query with a well-documented schema and read-only annotations, the description fully supports correct invocation: what the tool returns, how results are sorted, what the required tissue value should look like, and what gene identifiers are acceptable. No critical gap remains.

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

Parameters3/5

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

Input schema covers all three parameters with clear descriptions and a required array. The description reinforces tissue formatting with examples, but does not materially extend parameter meaning beyond what the schema already provides. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('Get'), a specific resource ('significant cis-eQTL associations for a gene in a specific GTEx tissue'), and useful operational details (output fields, sorting order, data version). This clearly distinguishes it from sibling tools such as gtex_expression or gene-level lookups.

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

Usage Guidelines4/5

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

Provides clear context for use: it is for cis-eQTL associations in a specified GTEx tissue. It explicitly notes that tissue uses a tissueSiteDetailId and gives examples. It does not explicitly name alternatives or when-not-to-use conditions, so it misses the top bar.

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

gtex_expressionA
Read-only

Get median gene expression across GTEx tissues (GTEx Analysis v10, 54 tissue sites, TPM, sorted highest first).

Accepts an HGNC symbol (TP53) or Ensembl gene ID (ENSG00000141510, versioned or bare). Optionally filter to a single tissue via its tissueSiteDetailId (e.g. Brain_Cortex, Whole_Blood).

ParametersJSON Schema
NameRequiredDescriptionDefault
geneYesHGNC symbol (TP53) or Ensembl gene ID (ENSG00000141510, versioned or bare)
limitNoMaximum tissues to return (highest expression first)
tissueNoGTEx tissueSiteDetailId filter, e.g. Brain_Cortex, Whole_Blood

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description adds meaningful behavioral detail beyond annotations: GTEx Analysis v10, 54 tissue sites, TPM units, highest-first sorting, accepted identifier formats, and tissue filter semantics. This provides useful expectations without contradicting the annotations.

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

Conciseness5/5

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

The description is two short, front-loaded paragraphs: the first states the core function and key details, the second explains accepted inputs and optional filtering. Every sentence adds information, with no filler or redundancy.

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

Completeness4/5

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

For a simple read-only lookup tool with full schema coverage and clear annotations, the description covers the essential context: data source, units, sort order, identifier acceptance, and filtering. There is no output schema, but the first sentence implies the return shape (per-tissue median expression sorted high to low), which is sufficient for this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already fully documented in the schema. The description reinforces the meaning of gene and tissue with examples but does not add substantial new semantics beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get median gene expression across GTEx tissues', further specifying version, tissue count, units, and sort order. This clearly distinguishes it from sibling tools like gtex_eqtl and the gene_* family, which cover different biological queries.

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

Usage Guidelines4/5

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

The description gives clear usage context: accept an HGNC symbol or Ensembl gene ID, optionally filter by tissue, and return a limited number of top-expressing tissues. It does not explicitly name alternatives or state when not to use the tool, but the context is specific enough for an agent to select it appropriately.

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

patent_getA
Read-only

Get patent details by publication number (e.g. "US11027025B2", "EP3904939B1", "US20260240819A1"). Sections: abstract, claims (US fulltext via USPTO Public Search; EP/WO via EPO OPS), citations (backward + forward), family, classifications.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entries per section array
sectionsNoSections to include (default: core only)
patent_idYesPublication number, e.g. "US11027025B2"

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the tool read-only and open-world; the description adds useful behavioral details: it enumerates available sections, notes that US fulltext comes via USPTO Public Search while EP/WO uses EPO OPS, and specifies that citations include backward and forward directions. This goes beyond the schema without contradicting the read-only and open-world hints.

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

Conciseness5/5

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

The description is a single information-dense sentence that front-loads the primary action and identifier format, then efficiently lists section semantics. There is no fluff or repetition of schema details.

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

Completeness5/5

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

For a read-only detail lookup with three simple parameters, the description covers the essential input format, available sections, and source caveats. The schema handles defaults and limits, so nothing an agent needs to call the tool correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds value by giving realistic patent_id examples and clarifying the content and source of each section. For instance, the claim-source caveat and citation directionality are not in the schema descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get patent details by publication number,' and includes concrete accepted formats for the identifier. The listed sections (abstract, claims, citations, family, classifications) make it unmistakable that this is a fetch-by-ID tool rather than a search tool like patent_search.

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

Usage Guidelines4/5

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

The phrase 'by publication number' sets a clear prerequisite: use this tool when you already have a patent publication number and need its details. It does not explicitly name alternatives such as patent_search for query-based lookup, but the usage context is clear and no exclusions are stated.

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

pdbA

Access the Protein Data Bank (RCSB PDB) for macromolecular structure data.

SEARCH: Provide "query" to find structures (e.g., "kinase inhibitor", "hemoglobin"). GET: Provide "pdb_id" to retrieve entry metadata with optional detail sections. DOWNLOAD: Provide "pdb_id" + download=true to save the structure file and get the file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax search results
queryNoFree-text search query to find PDB entries. Omit pdb_id when searching.
formatNoFile format: "cif" (mmCIF, recommended, always available) or "pdb" (legacy format, may not exist for some entries). Only used with download=true.cif
offsetNoSearch result offset
pdb_idNoPDB identifier (e.g., "1CRN", "4HHB"). Required for get/download.
downloadNoSave the structure file to disk and return the file path. Only used with pdb_id.
sectionsNoMetadata sections: polymer_entities (chains and sequences), ligands (small molecules and ions), assembly (biological assembly), experiment (method, resolution), citation (publication). Use "all" for everything. Default: core summary only.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations convey openWorldHint=true and readOnlyHint=false, and the description adds context about the download side effect (saving a file to disk). This clarifies behavioral traits beyond the structured annotations. No contradictions.

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

Conciseness5/5

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

The description is extremely concise, using three short sentences to convey three modes of operation. It is front-loaded with the tool's purpose and uses line breaks for readability. No superfluous information.

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

Completeness3/5

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

Given the tool has 7 parameters and no output schema, the description partially compensates by explaining parameter usage for each mode. However, it does not specify the return format for search and get results (e.g., what data structure is returned) or error handling. This leaves some ambiguity for an AI agent.

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

Parameters4/5

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

Input schema has 100% description coverage, so baseline is 3. The description adds significant value by grouping parameters into modes (SEARCH, GET, DOWNLOAD) and explaining inter-parameter dependencies (e.g., download only used with pdb_id). This enhances understanding beyond individual parameter descriptions.

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

Purpose5/5

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

The description clearly states it accesses the Protein Data Bank for macromolecular structure data and enumerates three distinct operations (SEARCH, GET, DOWNLOAD) with specific verbs and resources. It distinguishes itself from siblings which focus on other data types like articles, diseases, etc.

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

Usage Guidelines4/5

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

The description provides explicit mapping of parameters to operations: query for searching, pdb_id for get/download, and download=true for saving files. It explains when to omit parameters. However, it does not explicitly state when not to use this tool or alternative tools, though the sibling context makes it implicit.

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

sra_getA
Read-only

Get full details for an NCBI SRA accession: SRR run (instrument, spots, bases, size), SRX experiment (library design), SRP study (experiment list), or SRS sample.

Chain from geo_get (sra field) or sra_search (experiment_accession / first_run_accession). European (ERP/ERR) and DDBJ (DRP/DRR) accessions are NOT indexed in NCBI SRA — use ENA (https://www.ebi.ac.uk/ena) for those.

ParametersJSON Schema
NameRequiredDescriptionDefault
accessionYesNCBI SRA accession: SRP (study), SRX (experiment), SRR (run), or SRS (sample), e.g. SRR14432476

TDQS

A4.7/5.0
Behavior4/5

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

The description adds value beyond the readOnlyHint/openWorldHint annotations by specifying what details are returned per accession type and that ERP/ERR/DRP/DRR are not indexed. It does not describe the response envelope or pagination, but for a read-only retrieval with this detail level the disclosure is strong.

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

Conciseness5/5

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

Two sentences carry all essential information, with the primary action and scope front-loaded before chain/alternative guidance. No filler or redundant restatement.

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

Completeness5/5

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

For a one-parameter read-only tool without an output schema, the description covers what can be retrieved, accepted formats, upstream callers, and unsupported accessions. An agent has everything needed to decide whether and how to invoke it.

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

Parameters4/5

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

The schema already documents the single parameter at 100% coverage, so the baseline is 3. The description adds accepted prefix list (SRP/SRX/SRR/SRS) and a concrete example (SRR14432476), giving the agent format guidance beyond the schema.

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

Purpose5/5

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

States a specific verb ('Get full details') and a precise resource ('NCBI SRA accession'), then enumerates the four accession types and the fields returned for each. This clearly separates it from sibling sra_search, which finds accessions rather than retrieving details.

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

Usage Guidelines5/5

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

Explicitly names upstream tools (geo_get, sra_search) and the fields to chain from, and explicitly excludes European/DDBJ accessions with a pointer to ENA. This gives an agent both the workflow and the when-not-to-use condition, meeting the 5-level bar.

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

trial_getA
Read-only

Get detailed trial information by NCT ID

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
nct_idYesNCT ID (e.g., "NCT01234567")
sectionsNoSections to include

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and variability. The description adds 'detailed trial information' but does not elaborate on response structure, pagination, or potential errors. With annotations providing the core behavioral disclosure, the description offers minimal extra value.

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

Conciseness4/5

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

The description is a single sentence, immediate, and wastes no words. However, it could be slightly expanded to include more context without losing conciseness.

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

Completeness3/5

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

Given there is no output schema, the description could explain what 'detailed information' entails (e.g., sections, fields returned). The description is minimal and leaves the agent to infer the response structure from the 'sections' parameter. This is adequate but not comprehensive.

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

Parameters2/5

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

The description does not provide any additional meaning beyond the input schema. While the schema covers 67% of parameters with descriptions, the 'limit' parameter lacks a schema description and the tool description does not compensate. No parameter details are elaborated.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'trial information', and the required identifier 'by NCT ID'. It effectively distinguishes this tool from sibling tools like 'trial_search' which would be used for searching without a known ID.

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

Usage Guidelines3/5

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

The description implies usage when an NCT ID is known, but does not explicitly state when to use this tool versus alternatives like 'trial_search' or other get tools. There is no mention of prerequisites 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.

variant_getA
Read-only

Get detailed variant information with optional sections. Core data (id, gene, rsid, significance) is always returned at the top level. Use sections to request additional data.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVariant ID (rsid, HGVS, or ClinVar ID)
limitNo
sectionsNoSections to include: core, frequency, predictions, clinical, alphagenome_scores (currently unavailable — returns an error stub pending AlphaGenome gRPC reimplementation)

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations by explaining that core data is always returned at the top level and that sections request additional data, helping the agent anticipate response structure even without an output schema.

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

Conciseness5/5

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

The description is two sentences, front-loads the core action, and wastes no words. The key facts—core data always returned and sections optional—are presented efficiently in the very first sentence.

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

Completeness3/5

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

The tool has no output schema, so the description bears responsibility for explaining return behavior; it does so partially by mentioning top-level core fields and optional sections. However, it omits limit semantics, section-level output detail, and route selection among siblings, leaving meaningful gaps for an agent deciding how to call the tool and interpret results.

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

Parameters3/5

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

Schema description coverage is 67%, with id and sections already documented in the schema. The description mentions 'sections' generically and names core response fields, but it does not clarify the semantics of the limit parameter, whose role remains ambiguous despite having defaults and bounds. Thus the description provides only partial value beyond the schema.

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

Purpose4/5

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

The description uses a specific verb ('Get') and resource ('detailed variant information'), and it clarifies that core fields are always returned while sections are optional. This distinguishes it from search-like siblings but does not explicitly contrast it with variant_oncokb or variant_trials, so it falls short of full sibling differentiation.

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

Usage Guidelines2/5

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

The description explains that sections are optional and that core data is always returned, but it provides no guidance on when to use this tool versus alternatives like variant_search or variant_oncokb. There is no explicit when-to-use, when-not-to-use, or alternative routing, which leaves the agent to infer usage context.

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

variant_oncokbA
Read-only

Get OncoKB annotations for a variant in a cancer gene. Requires ONCOKB_TOKEN environment variable.

ParametersJSON Schema
NameRequiredDescriptionDefault
geneYesGene symbol (e.g., BRAF, EGFR)
protein_changeYesProtein change (e.g., V600E, L858R)

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds the token requirement, which is useful but does not reveal other behavioral details (e.g., rate limits, error handling, return format).

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

Conciseness5/5

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

The description is two short sentences: the purpose and a single prerequisite. No superfluous text, and the purpose is front-loaded.

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

Completeness3/5

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

The tool has no output schema, so the description could have explained return values (e.g., mutation effect, drug associations). It is adequate for a simple lookup but leaves some gaps.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters ('Gene symbol' and 'Protein change'). The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get') and resource ('OncoKB annotations for a variant in a cancer gene'). It distinguishes itself from sibling tools like variant_get and variant_search by specifying 'OncoKB annotations' rather than general variant info.

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

Usage Guidelines2/5

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

The description mentions the 'ONCOKB_TOKEN' prerequisite but provides no guidance on when to use this tool versus alternatives like variant_get or variant_search. No explicit when-to-use or when-not-to-use context is given.

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

variant_trialsB
Read-only

Find clinical trials for a variant

ParametersJSON Schema
NameRequiredDescriptionDefault
variantYesVariant ID (rsID, HGVS, or variant ID)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, so the description adds minimal value by confirming a read operation. No additional behavioral details like pagination, result format, or scope are given.

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

Conciseness4/5

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

The description is a single short sentence, which is concise. However, it lacks sufficient detail to be highly effective, slightly lowering the score.

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

Completeness2/5

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

Despite low complexity and good annotations, the description does not indicate what the tool returns (e.g., list of trials). With no output schema, this is a significant gap.

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

Parameters3/5

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

Schema description coverage is 100%, with clear parameter description 'Variant ID (rsID, HGVS, or variant ID)'. The tool description adds no new meaning beyond the schema, meeting baseline expectations.

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

Purpose5/5

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

The description clearly states the verb 'find' and the resource 'clinical trials for a variant', which is specific and distinct from sibling tools like trial_search or variant_get.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as trial_search or variant_get. The description leaves the agent without context for selection among many siblings.

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

Tool Schema Changelog

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

  1. 1 tool updatev1.1.1
    • Changeddrug_get2 fields changed
      • changedInput schema / properties / sections / description
        Previous value: -"Sections to include"New value: +"Sections to include (adverse_events = FDA FAERS adverse reactions ranked by report count; limit applies to reaction rows)"
      • changedInput schema / properties / sections / items / enum
        Previous value: -[
        -  "core",
        -  "us_regulatory",
        -  "eu_regulatory",
        -  "who_regulatory",
        -  "safety",
        -  "targets",
        -  "indications",
        -  "all"
        -]New value: +[
        +  "core",
        +  "us_regulatory",
        +  "eu_regulatory",
        +  "who_regulatory",
        +  "safety",
        +  "targets",
        +  "indications",
        +  "adverse_events",
        +  "all"
        +]
  2. 1 tool updatev1.0.0
    • Addedbiomcp_configure
  3. 22 tool updatesv0.7.1
    • Changedarticle_get1 field changed
      • changedInput schema / properties / citation_mode / description
        Previous value: -"Fast: Europe PMC, Semantic Scholar, Crossref (~4s). Full: All 5 providers (~15-30s). Fast mode auto-falls back to PubMed when other providers return no items."New value: +"Fast: Europe PMC, Semantic Scholar, OpenCitations, Crossref counts/references (~4s). Full: All 5 providers incl. PubMed (~15-30s). Fast mode auto-falls back to PubMed when other providers return no items."
    • Changedbatch_get1 field changed
      • changedInput schema / properties / inputs / items / properties / entity / enum
        Previous value: -[
        -  "gene",
        -  "variant",
        -  "drug",
        -  "disease",
        -  "trial",
        -  "article"
        -]New value: +[
        +  "gene",
        +  "variant",
        +  "drug",
        +  "disease",
        +  "trial",
        +  "article",
        +  "patent"
        +]
    • Changeddisease_get1 field changed
      • changedInput schema / properties / sections / items / enum
        Previous value: -[
        -  "core",
        -  "gene_associations",
        -  "phenotypes",
        -  "pathways",
        -  "survival",
        -  "all"
        -]New value: +[
        +  "core",
        +  "gene_associations",
        +  "phenotypes",
        +  "pathways",
        +  "all"
        +]
    • Changeddisease_search1 field changed
      • removedInput schema / properties / disease_type
        Removed value: -{
        -  "description": "Filter by disease type",
        -  "type": "string"
        -}
    • Changeddrug_search3 fields changed
      • removedInput schema / properties / drug_type
        Removed value: -{
        -  "description": "Filter by drug type",
        -  "type": "string"
        -}
      • changedInput schema / properties / query / description
        Previous value: -"Drug name, mechanism, or keyword to search for"New value: +"Drug name, mechanism, or keyword to search"
      • removedInput schema / properties / source
        Removed value: -{
        -  "description": "Filter by source (mychem, chembl, openfda)",
        -  "type": "string"
        -}
    • Addedensembl_consequence
    • Addedensembl_homology
    • Addedensembl_lookup
    • Addedensembl_region
    • Addedgenbank_genes
    • Addedgenbank_get
    • Addedgenbank_search
    • Changedgene_search1 field changed
      • removedInput schema / properties / gene_type
        Removed value: -{
        -  "description": "Filter by gene type",
        -  "enum": [
        -    "protein-coding",
        -    "ncRNA",
        -    "pseudo"
        -  ],
        -  "type": "string"
        -}
    • Addedgeo_get
    • Addedgeo_search
    • Addedgtex_eqtl
    • Addedgtex_expression
    • Addedpatent_get
    • Addedpatent_search
    • Addedsra_get
    • Addedsra_search
    • Changedvariant_get1 field changed
      • changedInput schema / properties / sections / description
        Previous value: -"Sections to include: core, frequency, predictions, clinical, alphagenome_scores"New value: +"Sections to include: core, frequency, predictions, clinical, alphagenome_scores (currently unavailable — returns an error stub pending AlphaGenome gRPC reimplementation)"
  4. 25 tool updatesv0.1.8
    • First observedarticle_get
    • First observedarticle_search
    • First observedbatch_get
    • First observeddiscover
    • First observeddisease_drugs
    • First observeddisease_get
    • First observeddisease_search
    • First observeddisease_trials
    • First observeddrug_get
    • First observeddrug_search
    • First observeddrug_trials
    • First observedgene_articles
    • First observedgene_diseases
    • First observedgene_drugs
    • First observedgene_enrich
    • First observedgene_get
    • First observedgene_search
    • First observedgene_trials
    • First observedpdb
    • First observedtrial_get
    • First observedtrial_search
    • First observedvariant_get
    • First observedvariant_oncokb
    • First observedvariant_search
    • First observedvariant_trials

TDQS

A3.5/5.0
Disambiguation4/5

Most tools follow clear entity_search/get pairs with distinct resources (gene, variant, drug, disease, article, trial, patent, GEO, SRA, GenBank), so selection is usually obvious. However, generic tools like discover and batch_get partially overlap with entity-specific search/get, and pdb bundles search/get/download into one tool, introducing some ambiguity.

Naming Consistency4/5

The convention is overwhelmingly consistent: lowercase snake_case prefixes like gene_, variant_, drug_, disease_, ensembl_ followed by search/get or a specific action (trials, diseases, homology). A few tools (discover, batch_get, pdb) break the pattern but don't create confusion with different casing or verb styles.

Tool Count2/5

At 40 tools, this is a very large surface for an agent to navigate, exceeding the 25-tool threshold that typically feels overloaded. The broad biomedical scope partially justifies the count, but the set would benefit from consolidation (e.g., merging some search/get pairs or grouping related NCBI tools).

Completeness4/5

The set covers search/get for genes, variants, drugs, diseases, articles, trials, patents, GEO/SRA/GenBank, plus expression, eQTL, homology, and variant consequence prediction—impressive coverage for read-only biomedical data. Minor gaps remain, such as no dedicated variant-article association and no generic protein search outside PDB.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yeyuan98/biomcp-ts'

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