BioBTree
Server Details
A unified biomedical graph database that integrates 50+ primary data sources — genes, proteins, compounds, diseases, pathways, and clinical data — into a single queryable graph with billions of cross-reference edges. Its native MCP server gives LLMs direct access to structured, authoritative biomedical data, complementing their reasoning with reliable identifiers and up-to-date database content.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 4 of 4 tools scored.
Each tool has a distinct role: atlas for curated summaries, entry for full entry details, map for identifier mapping, and search for cross-database discovery. The descriptions clearly delineate when to use each, with workflow examples reducing any potential confusion.
All tool names share the 'biobtree_' prefix and use lower_snake_case. The suffixes mix nouns (atlas, entry) and verbs (map, search), but this is consistent with their function and does not hinder readability or predictability.
Four tools provide a well-scoped abstraction over 70+ databases. Each tool covers a distinct necessity: discovery, mapping, detailed lookup, and curated summaries. This is a solid, minimal set for the stated purpose.
The tool surface covers the full lifecycle of biological data exploration: search to find identifiers, map to translate between databases, entry to inspect connections and attributes, and atlas for citable summaries. No obvious dead ends; the workflow examples ensure agents can traverse the data graph effectively.
Available Tools
4 toolsbiobtree_atlasAInspect
Curated Sugi Atlas knowledge for genes, diseases, and drugs (built from biobtree's own data).
SYNTAX: biobtree_atlas(entities=["TP53","imatinib"])
CALL THIS FIRST for a gene/disease/drug question (what it is, its biology, disease/drug/clinical context) - returns a concise, citable digest to ground your answer. Cite the returned canonical_url.
Pass the entity name(s) from the question; covered entities return content + citation, uncovered ones are listed in not_covered.
Default returns a compact digest (Summary + Identifiers). Each result lists the page's
sections(top-level and sub-sections); pass section="Disease & clinical" (use a name fromsections) for one zone, or full=true for the entire page (large). For big sections, query one entity at a time; full=true and large sections across several entities may be trimmed to fit.For entities not covered, or for specific ID mappings / cross-references / filters, use biobtree_map / biobtree_entry instead.
RETURNS: per entity {type, canonical_url, content, sections} + not_covered list
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Return the entire page (large; may exceed output limits - avoid for multiple entities) | |
| section | No | Return one section instead of the digest; use a name from the result's `sections` (e.g. 'Disease & clinical') | |
| entities | Yes | Gene symbols / disease names / drug names from the question |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility and discloses key behavioral traits: returns a compact digest, lists not_covered entities, supports section/full modes, and notes potential output trimming for large requests. It could add more on error handling or rate limits, but it is notably transparent about return structure and performance caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear labels (SYNTAX, CALL THIS FIRST, RETURNS) and front-loaded purpose. Every sentence contributes useful guidance—no filler or redundancy—while remaining compact for the complexity covered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description explains the return format per entity, the not_covered behavior, section selection, and the trimming caveat. It also references sibling tools for fallback, making it fully self-contained for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaningful context: entities are 'gene symbols / disease names / drug names from the question', section is 'a name from the result's sections', and full is cautioned as 'large; may exceed output limits'. This enriches the bare schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides curated knowledge for genes, diseases, and drugs, with a specific 'CALL THIS FIRST' directive for such queries. It distinguishes itself from siblings by explicitly naming alternatives for other use cases, making purpose and scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is explicit: 'CALL THIS FIRST for a gene/disease/drug question' and 'For entities not covered, or for specific ID mappings / cross-references / filters, use biobtree_map / biobtree_entry instead.' It also advises querying one entity at a time for large sections, reinforcing when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
biobtree_entryAInspect
Get full details for one identifier.
SYNTAX: biobtree_entry(identifier="ID", dataset="dataset_name")
USE FOR:
See all attributes of an entry
Discover filterable fields
Get detailed info (sequences, scores, descriptions)
DISCOVER CONNECTIONS: xrefs show what datasets link to this entry
WORKFLOW: Get entry → see xrefs → check EDGES for where they lead → follow relevant paths
RETURNS: All attributes + xref counts to connected datasets
| Name | Required | Description | Default |
|---|---|---|---|
| dataset | Yes | The dataset containing the entry | |
| identifier | Yes | The identifier to look up |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses what the tool returns ('All attributes + xref counts to connected datasets') and outlines a workflow (entry → xrefs → edges). This gives the agent a clear model of the operation's behavior, though it doesn't address error cases or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into clear sections (SYNTAX, USE FOR, WORKFLOW, RETURNS), making it scannable. It is concise enough for the information it conveys, with no redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the two required parameters and no output schema, the description covers usage, workflow, and return value shape. It even hints at how to use xrefs to discover connections, which is useful for an AI agent. It could be improved by mentioning error behavior, but overall it is complete for a simple lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes both parameters ('The dataset containing the entry' and 'The identifier to look up'); the description's syntax line adds a concrete example but no additional semantic depth. With 100% schema coverage, the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get full details for one identifier,' clearly stating the tool's action and target. The 'USE FOR' list expands on this with specific use cases (attributes, filterable fields, detailed info, connections). While it doesn't explicitly differentiate from siblings, the purpose is unambiguous and distinct from search/map/atlas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'USE FOR' section provides explicit use cases for when to employ this tool, such as seeing all attributes or discovering xref connections. However, it does not mention when to avoid this tool or name alternative tools like 'biobtree_search' for when the identifier is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
biobtree_mapAInspect
Map identifiers between databases.
SYNTAX: biobtree_map(terms="ID", chain=">>source>>target")
Chain MUST start with ">>"
Source MUST match input ID type
ID TYPE → SOURCE:
ENSG* → >>ensembl
P*/Q*/O* → >>uniprot
CHEMBL* → >>chembl_molecule
GO:* → >>go
MONDO:* → >>mondo
HP:* → >>hpo
HGNC:* or gene symbols → >>hgnc
SOME DRUG EXPLORATION PATHS:
chembl_molecule>>chembl_target>>uniprot (drug targets)
pubchem>>pubchem_activity>>uniprot (bioactivity)
gtopdb_ligand>>gtopdb_interaction>>gtopdb>>uniprot (curated pharmacology with affinity data)
ensembl>>reactome>>chebi (pathway chemicals - when no direct targets)
Discover more via entry xrefs + EDGES
WARNING - GO terms with high xref_count (>100):
Don't map GO → proteins → drugs (too many results)
Instead: search drug class for condition → verify targets this GO term
DISEASE GENE PATTERNS:
mondo>>gencc>>hgnc (curated)
mondo>>clinvar>>hgnc (variant-based)
hgnc>>clingen_gene_validity (ClinGen evidence tier), >>hgnc>>clingen_dosage (haploinsufficiency), >>hgnc>>clingen_variant>>clinvar (ACMG, then dbsnp)
CANCER / CELL LINE:
hgnc>>intogen (cancer driver gene?), >>hgnc>>civic (clinical variant interpretations)
uniprot>>cellosaurus (cell lines for a protein/gene)
hgnc>>depmap (CRISPR essentiality / target tractability), >>hgnc>>entrez>>depmap_dependency>>cellosaurus (which lines depend on the gene)
GENE FUNCTION / LITERATURE:
entrez>>generif (cited one-line functional claims; >>generif>>pubmed for citations)
DISEASE → DRUG PATTERNS:
mesh>>chembl_molecule (MeSH disease/condition → drugs with indications)
mondo>>clinical_trials>>chembl_molecule (disease → trial drugs)
DISCOVERY APPROACH:
Use biobtree_entry to see xrefs (what's connected)
Use EDGES above to see where each dataset leads
Build chains based on what connections exist for YOUR entity
RETURNS: mapped identifiers with dataset and name
EDGES (what connects to what): ensembl: uniprot, go, transcript, exon, ortholog, paralog, hgnc, entrez, refseq, bgee, gwas, gencc, antibody, scxa, civic, intogen, hpa, hpa_antibody, pharmgkb_var_annotation, chembl_mechanism, ncrna_disease, ncrna_interaction, ncrna_drug, alliance_disease, gnomad_constraint, drugcentral, panelapp_gene hgnc: ensembl, uniprot, entrez, gencc, pharmgkb_gene, msigdb, clinvar, mim, refseq, alphafold, collectri, gwas, hpo, cellphonedb, civic, intogen, cellosaurus, clingen_gene_validity, clingen_dosage, clingen_variant, depmap, hpa, pharmgkb_var_annotation, chembl_mechanism, ncrna_disease, ncrna_interaction, ncrna_drug, alliance_disease, drugcentral, panelapp_gene, gnomad_constraint, mavedb entrez: ensembl, uniprot, refseq, go, biogrid, pubchem_activity, ctd_gene_interaction, dbsnp, civic, intogen, clingen_dosage, generif, depmap, depmap_dependency, hpa, pharmgkb_var_annotation, orthologentrez, relatedentrez, neighborentrez, mgi, rgd, zfin, wormbase, xenbase, sgd, flybase, gnomad_constraint, drugcentral orthologentrez: entrez # cross-species gene orthologs (NCBI gene_orthologs). >>entrez>>orthologentrez gives ortholog genes (filter species via taxonomy); reliable from model-organism genes (human-gene side currently incomplete) relatedentrez: entrez # related genes (bidirectional): NCBI gene_group (functional gene/pseudogene/readthrough/region) + HGNC gene-family co-members neighborentrez: entrez # genomic neighbors (left/right/overlapping); edge carries distance + side, neighbor strand/position in attrs; filter to genes via [type!="biological-region"] gnomad_constraint: ensembl, entrez, hgnc, transcript # gene LoF constraint (pLI/LOEUF/oe_lof); reach via >>ensembl>>gnomad_constraint drugcentral: chembl_molecule, pubchem, uniprot, ensembl, hgnc, entrez # approved drugs -> targets/MOA + FDA/EMA/PMDA approval; reach via name/INN/InChIKey or compound (chembl_molecule/pubchem >> drugcentral) refseq: ensembl, entrez, taxonomy, ccds, uniprot, mirdb mirdb: refseq transcript: ensembl, exon, ufeature, alphamissense, civic_variant, gnomad_constraint, mavedb uniprot: ensembl, alphafold, interpro, pfam, pdb, ufeature, intact, string, string_interaction, biogrid, biogrid_interaction, chembl_target, go, reactome, rhea, swisslipids, bindingdb, antibody, pubchem_activity, cellphonedb, jaspar, signor, diamond_similarity, esm2_similarity, alphamissense, cellosaurus, hpa, chembl_mechanism, ncrna_interaction, drugcentral, mavedb alphafold: uniprot interpro: uniprot, go, interproparent, interprochild chembl_molecule: mesh, chembl_activity, chembl_target, pubchem, chebi, clinical_trials, chembl_moleculeparent, chembl_moleculechild, chembl_mechanism, ncrna_drug, faers, drugcentral # parent=anhydrous/parent form, child=salt forms chembl_activity: chembl_molecule, chembl_assay, bao chembl_assay: chembl_activity, chembl_target, chembl_document, bao chembl_target: chembl_assay, uniprot, chembl_molecule, chembl_mechanism chembl_mechanism: chembl_molecule, chembl_target, uniprot, hgnc, ensembl # curated drug mechanism-of-action (incl. RNA therapeutics): drug >> chembl_mechanism, target/gene >> chembl_mechanism pubchem: chembl_molecule, chebi, hmdb, pubchem_activity, pubmed, patent_compound, bindingdb, ctd, pharmgkb, ncrna_drug, faers, drugcentral faers: chembl_molecule, pubchem, faers_reaction # openFDA FAERS drug->adverse-event; faers (per-drug master) -> faers_reaction children (PRR), reach via drug name or compound. NOTE co-occurrence not causation faers_reaction: faers # one per (drug,reaction): report_count, prr, serious_count, outcome; most-reported first pubchem_activity: pubchem, ensembl, uniprot chebi: pubchem, rhea, intact swisslipids: uniprot, go, chebi, uberon, cl lipidmaps: chebi, pubchem dbsnp: entrez, clinvar, pharmgkb_variant, alphamissense, spliceai, pharmgkb_var_annotation clinvar: hgnc, mondo, hpo, dbsnp, orphanet, civic_variant, cellosaurus, clingen_variant alphamissense: uniprot, transcript mavedb: uniprot, hgnc, ensembl, transcript # deep-mutational-scanning functional variant scores (ACMG PS3/BS3); reach via gene/protein >> mavedb; per-variant score + hgvs_pro + license
VARIANT-EFFECT SCORES — look up by the variant's OWN key with biobtree_entry(dataset=..), NOT via >>chains:
conservation key "chr:pos" (GRCh38) per-position phyloP / GERP / phastCons (also covers non-missense/splice positions)
gnomad_variant key "chr:pos:ref:alt" (GRCh38) gnomAD v4.1 genomes allele freq (af, grpmax, per-ancestry); also xrefs dbsnp
revel key "chr:pos:ref:alt" (GRCh38) REVEL ensemble missense pathogenicity (0-1, higher = pathogenic)
saprot key "uniprot:protein_variant" SaProt protein-LM variant effect (LLR <=0, lower = more damaging), e.g. P01116:G12D
gwas: gwas_study, efo, dbsnp, hgnc, mondo gwas_study: gwas, efo, mondo mondo: gencc, clinvar, efo, mesh, hpo, clinical_trials, antibody, cellxgene, cellxgene_celltype, orphanet, mondoparent, mondochild, gwas, gwas_study, civic, intogen, cellosaurus, doid, mim, ncit, umls, medgen, gard, sctid, icd9, icd10cm, icd10who, icd11, nando, meddra, nord, uberon, ncrna_disease, panelapp_gene # disease cross-refs + disease_has_location anatomy, from the Mondo OBO doid: mondo, alliance_disease, doidparent, doidchild # Disease Ontology (now a full ontology w/ hierarchy); reach MONDO + its disease graph via the mondo<->doid bridge alliance_disease: hgnc, mgi, rgd, zfin, sgd, wormbase, flybase, xenbase, doid, pubmed # cross-species + human gene->disease (Alliance of Genome Resources); gene >> alliance_disease >> doid, or doid >> alliance_disease >> mgi/rgd/... for model-organism genes alliance_phenotype: mgi, rgd, wormbase, xenbase, mp, wbphenotype, xpo, pubmed # model-organism gene -> OBSERVED knockout/mutant phenotypes (distinct from the upheno ontology-translation path). Reach from the model-organism gene directly: mgi/rgd/wormbase/xenbase >> alliance_phenotype >> mp gencc: mondo, hpo, hgnc, ensembl clingen_gene_validity: hgnc, entrez, ensembl, mondo # ClinGen gene-disease validity tier (Definitive..Refuted) + MOI clingen_dosage: entrez, hgnc, ensembl, mondo, mim, pubmed # ClinGen haploinsufficiency/triplosensitivity per gene clingen_variant: clinvar, hgnc, entrez, ensembl, mondo, pubmed # ClinGen VCEP ACMG variant pathogenicity (clinvar bridges to dbsnp) panelapp: panelapp_gene # Genomics England clinical gene panels (per-panel master); panel >> panelapp_gene >> hgnc for the panel's genes panelapp_gene: panelapp, hgnc, ensembl, mim, mondo # one per (panel,gene), green/amber confidence + mode-of-inheritance; a gene's panels via >>hgnc (panelapp_gene) ; the panel's disease via mondo/mim clinical_trials: mondo, chembl_molecule pharmgkb: hgnc, dbsnp, mesh, pharmgkb_gene, pharmgkb_variant, pharmgkb_clinical, pharmgkb_guideline, pharmgkb_pathway pharmgkb_variant: pharmgkb_clinical, hgnc, mesh, dbsnp pharmgkb_gene: hgnc, entrez, ensembl, pharmgkb pharmgkb_clinical: dbsnp, hgnc, mesh, pharmgkb_variant, pharmgkb # pharmgkb = reverse drug→clinical edge (drug >> pharmgkb >> pharmgkb_clinical) pharmgkb_guideline: hgnc, pharmgkb pharmgkb_pathway: hgnc, pharmgkb pharmgkb_var_annotation: hgnc, entrez, ensembl, dbsnp, pubmed # per-publication variant-annotation evidence (finding sentence, PMID, significance, study stats) beneath pharmgkb_clinical; reach via gene or rsID ctd: mesh, ctd_gene_interaction, ctd_disease_association, pubchem ctd_gene_interaction: ctd, entrez, taxonomy, pubmed ctd_disease_association: ctd, mesh, mim, pubmed intact: uniprot, chebi, rnacentral string: uniprot, string_interaction string_interaction: string, uniprot biogrid: entrez, uniprot, refseq, taxonomy bgee: ensembl, uberon, cl, taxonomy, bgee_evidence bgee_evidence: bgee, uberon, cl cellxgene: cl, uberon, mondo, efo, taxonomy cellxgene_celltype: cl, uberon, mondo scxa: cl, uberon, taxonomy, ensembl, scxa_gene_experiment scxa_expression: ensembl, scxa, scxa_gene_experiment scxa_gene_experiment: ensembl, scxa, scxa_expression, cl hpa: ensembl, uniprot, hgnc, entrez, go, uberon, hpa_expression, hpa_pathology, hpa_antibody # Human Protein Atlas gene card: subcellular location (→go), specificity calls, top tissues hpa_expression: hpa, uberon, cellosaurus # per (gene,tissue/cell-line) RNA nTPM + IHC staining; reach genes-in-a-tissue via uberon >> hpa_expression hpa_pathology: hpa # per (gene,cancer) prognostic survival association hpa_antibody: hpa, ensembl # HPA validation antibody (reliability, antigen) rnacentral: uniprot, ensembl, intact, hgnc, refseq, ena, go # go = Rfam-projected GO annotations; rfam_id/rfam_description are attrs on the entry ncrna_disease: hgnc, ensembl, mondo, efo, pubmed # curated ncRNA->disease (LncRNADisease + HMDD); reach from the ncRNA gene ncrna_interaction: hgnc, ensembl, uniprot, pubmed # experimentally-supported ncRNA->protein interactions (NPInter) ncrna_drug: hgnc, ensembl, chembl_molecule, pubchem, pubmed # ncRNA drug-resistance / drug-target (ncRNADrug) reactome: ensembl, uniprot, chebi, go, reactomeparent, reactomechild rhea: chebi, uniprot, go go: ensembl, uniprot, reactome, msigdb, swisslipids, bgee, interpro, goparent, gochild, hpa, rnacentral hpo: clinvar, gencc, mondo, msigdb, orphanet, mim, hmdb, hgnc, hpoparent, hpochild, upheno efo: gwas, mondo, cellxgene, efoparent, efochild, ncrna_disease upheno: hpo, mp, zp, xpo, wbphenotype, fypo, uphenoparent, uphenochild # cross-species phenotype hub. A GENE's model-organism phenotypes are reached THROUGH hpo (genes are NOT linked directly to mp/upheno): >>hgnc>>hpo>>upheno>>mp (mouse), >>hgnc>>hpo>>upheno>>zp (zebrafish), ...>>xpo/wbphenotype/fypo. So gene->human HP phenotypes -> their cross-species equivalents. mp: upheno, mpparent, mpchild, alliance_phenotype # Mammalian Phenotype Ontology (mouse/rat). Reach from a gene via >>hgnc>>hpo>>upheno>>mp (NOT >>hgnc>>mp); observed model phenotypes via alliance_phenotype. zp: upheno, zpparent, zpchild # Zebrafish Phenotype Ontology. Reach from a gene via >>hgnc>>hpo>>upheno>>zp. xpo: upheno, xpoparent, xpochild, alliance_phenotype # Xenopus Phenotype Ontology wbphenotype: upheno, wbphenotypeparent, wbphenotypechild, alliance_phenotype # C. elegans Phenotype Ontology fypo: upheno, fypoparent, fypochild # Fission Yeast Phenotype Ontology uberon: bgee, cellxgene, cellxgene_celltype, swisslipids, uberonparent, uberonchild, hpa, hpa_expression cl: bgee, cellxgene, cellxgene_celltype, scxa, scxa_gene_experiment, clparent, clchild taxonomy: ensembl, uniprot, bgee, biogrid, ctd_gene_interaction, taxparent, taxchild mesh: pharmgkb, ctd, ctd_disease_association, pubchem, mondo, chembl_molecule, meshparent, meshchild eco: ecoparent, ecochild antibody: ensembl, uniprot, mondo, pdb msigdb: hgnc, entrez, go, hpo orphanet: hpo, uniprot, mondo, hgnc, clinvar, mim, mesh mim: clinvar, hpo, mondo, uniprot, ctd_disease_association, panelapp_gene hmdb: pubchem, hpo, chebi, uniprot collectri: hgnc # transcription factor → target gene interactions esm2_similarity: uniprot # protein structural similarity diamond_similarity: uniprot # protein sequence similarity cellphonedb: uniprot, ensembl, hgnc, pubmed # ligand-receptor pairs for cell-cell communication spliceai: hgnc pdb: uniprot, go, interpro, pfam, taxonomy, pubmed fantom5_promoter: ensembl, hgnc, entrez, uniprot, uberon, cl fantom5_enhancer: ensembl, uberon, cl fantom5_gene: ensembl, hgnc, entrez jaspar: uniprot, pubmed, taxonomy encode_ccre: taxonomy bao: chembl_activity, chembl_assay, baoparent, baochild brenda: uniprot, pubmed, brenda_kinetics, brenda_inhibitor brenda_kinetics: brenda brenda_inhibitor: brenda gtopdb: uniprot, hgnc, gtopdb_ligand, gtopdb_interaction # drug targets (GPCRs, ion channels, enzymes) gtopdb_ligand: pubchem, chebi, chembl_molecule, gtopdb_interaction # ligands/drugs with binding data gtopdb_interaction: gtopdb, gtopdb_ligand, pubmed # target-ligand binding with affinity values civic: entrez, ensembl, civic_variant, civic_evidence, civic_assertion # clinical interpretation of cancer variants civic_variant: civic, clinvar, civic_evidence, civic_assertion, transcript civic_evidence: civic_variant, civic, mondo, chembl_molecule, pubmed, clinical_trials civic_assertion: civic_variant, civic, mondo, chembl_molecule intogen: hgnc, entrez, ensembl, mondo, pubmed # cancer driver genes cellosaurus: taxonomy, uniprot, hgnc, mondo, orphanet, clinvar, dbsnp, uberon, cl, chebi, doi, patent, pubmed, depmap_dependency, hpa_expression # cell lines (CVCL) generif: entrez, pubmed # NCBI cited per-gene functional claims (RAG grounding) depmap: entrez, hgnc, ensembl # CRISPR gene essentiality aggregate (cancer dependency / target tractability) depmap_dependency: entrez, cellosaurus # per cell-line gene dependency (effect < -0.5)
FILTER SYNTAX: >>dataset[field operator value]
OPERATORS: == equals >>dataset[field=="value"] != not equals >>dataset[field!="value"]
greater than >>dataset[field>value]
< less than >>dataset[field<value]
= greater or equal >>dataset[field>=value] <= less or equal >>dataset[field<=value] contains string match >>dataset[field.contains("value")]
LOGICAL OPERATORS: && AND >>dataset[field1>5 && field2<10] || OR >>dataset[field=="A" || field=="B"] ! NOT >>dataset[!field] or >>dataset[!(field=="value")]
TYPE RULES:
FLOAT: use decimal point (70.0 not 70)
INT: no decimal (2 not 2.0)
STRING: quote values ("Pathogenic", "PHASE3")
BOOL: true/false (no quotes)
EXAMPLES:
chembl_molecule[highestDevelopmentPhase==4] # approved drugs chembl_molecule[highestDevelopmentPhase>=3] # Phase 3+ clinical_trials[phase=="PHASE3"] go[type=="biological_process"] clinvar[germline_classification=="Pathogenic"] reactome[name.contains("signaling")] gtopdb[type=="gpcr"] # GPCR targets gtopdb[type=="ion_channel"] # ion channel targets gtopdb_ligand[approved==true] # approved drugs only gtopdb_interaction[endogenous==true] # endogenous ligand interactions
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination token | |
| chain | Yes | Mapping chain (e.g., >>ensembl>>uniprot) | |
| terms | Yes | Comma-separated identifiers to map |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It details strict syntax requirements ('Chain MUST start with >>'), warns about large result sets (GO >100 xrefs), explains the discovery workflow, and states the return format ('mapped identifiers with dataset and name'). It even warns about relationship semantics like co-occurrence not causation for FAERS.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally long, but it is well-structured with headers and each section (SYNTAX, EDGES, FILTER SYNTAX, EXAMPLES) carries high-value information. It is not concise, but the complexity of the tool justifies the length, and key info is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's high complexity (3 params, no output schema, many possible edge chains), the description is remarkably complete. It covers the input format, ID mapping rules, all edge types, filter syntax, type rules, examples, and behavioral warnings, fully equipping an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema descriptions are present (100% coverage), the description massively enriches parameter understanding. It explains what terms look like ('ENSG*', 'P*/Q*/O*', etc.) and provides a complete filter syntax and operator guide for the chain parameter, far beyond the schema's one-line example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Map identifiers between databases' and immediately provides the SYNTAX with clear examples. It distinguishes itself from sibling tools like biobtree_entry by explaining that entry is for viewing xrefs, while map is for chaining connections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance through example chains for drug exploration, disease-gene patterns, cancer/cell-line, etc. It also provides exclusions like the GO terms warning ('Don't map GO → proteins → drugs'), and recommends alternatives (e.g., 'use biobtree_entry to see xrefs').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
biobtree_searchAInspect
Search 70+ biological databases.
SYNTAX: biobtree_search(terms="entity")
BEFORE SEARCHING - Use your training knowledge to plan:
What type of entity is this? (disease, process, drug, gene, protein)
What is the query asking for? (drugs, genes, function, etc.)
What equivalent terms might give better results? (e.g., "temperature homeostasis" is a process → related condition is "fever")
Choose best entry point for query type (disease terms for drug queries)
WORKFLOW:
Search WITHOUT dataset filter first (discover where entity exists)
Use IDs from results with biobtree_map
QUERY PATTERNS (choose based on question):
"DRUG FOR DISEASE/CONDITION X":
Prefer disease terms (mesh/mondo/efo) over GO terms for drug queries
If search only returns GO term, search for the related CONDITION instead (e.g., "temperature homeostasis" → search "fever" instead)
Search disease → mondo → clinical_trials → chembl_molecule
OR search drug class directly (e.g., "antipyretic", "NSAID", "antibiotic")
Verify mechanism for top 2-3 drugs only (don't enumerate all proteins!)
"DRUG TARGETS" (use BOTH paths for complete picture):
chembl: >>chembl_molecule>>chembl_target>>uniprot (mechanism-level)
pubchem: >>pubchem>>pubchem_activity>>uniprot (protein-level, often 50+ targets)
Filter approved: >>chembl_molecule[highestDevelopmentPhase==4]
"DISEASE GENES":
Search disease → mondo/hpo → gencc/clinvar/orphanet → hgnc
"PROTEIN FUNCTION":
Search protein → uniprot → go/reactome
"MECHANISM QUERIES" (drug-disease):
Use biobtree_entry to see what's connected (xrefs)
Check EDGES to see where each xref leads
Follow connections relevant to your question
Build chain: Drug → Target → [connections] → Disease
RETURNS: id | dataset | name | xref_count
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination token | |
| terms | Yes | Comma-separated identifiers to search | |
| dataset | No | Filter to specific dataset (omit for discovery) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses return format ('RETURNS: id | dataset | name | xref_count') and explains fallback behavior (e.g., searching for related condition if only GO term is found). It does not mention rate limits or pagination details, but the behavioral guidance is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections and clear formatting, but it is quite long and includes verbose examples (e.g., the 'temperature homeostasis' scenario). While useful, it could be tightened without losing value, so it's not a model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of output schema, the description covers return format, search strategies, and workflow integration with sibling tools. It does not explain pagination behavior or result limits, but overall it is sufficiently complete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds strategic meaning beyond the schema: it explains how to choose 'terms' (e.g., disease terms for drug queries) and advises omitting the dataset filter for discovery. This enriches the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search 70+ biological databases' with a specific verb and resource. It differentiates from siblings by framing itself as the discovery/search entry point, with explicit references to biobtree_map and biobtree_entry in workflows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides extensive when-to-use guidance: 'Search WITHOUT dataset filter first', 'Use IDs from results with biobtree_map', and explicitly names biobtree_entry for mechanism queries. It also gives query patterns for different question types (drug-for-disease, drug targets, disease genes, protein function).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityAmaintenanceGTM signal intelligence suite for AI agents. Six tools: hiring signals, tech stack detection, company-to-LinkedIn resolution, ICP scoring, job board scanning, and a combined signals aggregator. Built for outbound sales workflows.117371MIT

industrylens-mcpofficial
Flicense-qualityCmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
Sociality MCPofficial
Alicense-qualityDmaintenanceSocial media analytics, post insights, and competitor benchmarking for AI agents.6MIT- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.1761MIT