Skip to main content
Glama
musharna

plant-genomics-mcp

by musharna

Gene Tree Members

gene_tree_members
Read-onlyIdempotent

List member genes of a plant gene tree from Ensembl Compara. Query by any member locus or tree ID; returns locus, protein, species, and organism per member.

Instructions

List the member genes of an Ensembl Compara (plants) gene tree (rest.ensembl.org /genetree; free, no key). Name the tree by locus= (any member gene, with organism=) and Ensembl finds the tree that gene is in now, or by gene_tree_id=; exactly one. A gramene_homologs gene_tree_id comes from an older Compara release and may not exist here, so prefer locus=. Each member gives the locus (the id the locus-keyed tools accept), protein_id, species and taxid, and organism (the canonical slug, or null for a species outside this server's 12). target_organism= keeps one organism's members; omit it for every species. total counts members before limit; truncated=true when limit cut some off. gene_tree_id in the answer is the tree served. An unknown tree id, or a locus in no tree, is a not-found error.

Input Schema

NameRequiredDescriptionDefault
limitNo
locusNoAny member gene, e.g. AT1G01010; Ensembl finds its current tree. Omit when passing gene_tree_id.
organismNoThe organism of locus — canonical slug, scientific or common name, or NCBI taxid.arabidopsis_thaliana
gene_tree_idNoe.g. EPlGT00940000167082. Omit when passing locus.
target_organismNoKeep one organism's members — canonical slug, scientific or common name, or NCBI taxid. Omit for every species.

Output Schema

NameRequiredDescriptionDefault
locusNoThe member locus asked by; null when asked by gene_tree_id
totalYesHow many members after the organism filter exist upstream for this query, all pages (pre-cap) (#123)
membersYes
organismNoThe organism of locus; null when asked by gene_tree_id
returnedYesRows in this payload (#123)
truncatedYesTrue when limit cut members off
gene_tree_idYesThe tree answered, e.g. EPlGT00940000167082: the id asked for, or the tree Ensembl holds the locus in now
target_organismYesThe organism filter; null = every species
upstream_versionNoEnsembl release that produced THIS response, — always null today: this backend states no release on its responses; upstream_release(backend='ensembl_plants') reports the release its own endpoint calls current at query time, or why there is none. null means Ensembl did not state one — never that no release exists, and never inferred from a separate metadata call, which can describe a different release than the one that answered.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv1.29.3
    • changedInput schema / properties / gene_tree_id / description
      Previous value: -"e.g. EPlGT00940000167082 (from gramene_homologs)"New value: +"e.g. EPlGT00940000167082. Omit when passing locus."
    • addedInput schema / properties / locus
      Added value: +{
      +  "description": "Any member gene, e.g. AT1G01010; Ensembl finds its current tree. Omit when passing gene_tree_id.",
      +  "type": "string"
      +}
    • addedInput schema / properties / organism
      Added value: +{
      +  "default": "arabidopsis_thaliana",
      +  "description": "The organism of locus — canonical slug, scientific or common name, or NCBI taxid.",
      +  "type": [
      +    "string",
      +    "integer"
      +  ]
      +}
    • changedInput schema / required
      Previous value: -[
      -  "gene_tree_id"
      -]New value: +[]
    • changedOutput schema / properties / gene_tree_id / description
      Previous value: -"The tree asked about, e.g. EPlGT00940000167082"New value: +"The tree answered, e.g. EPlGT00940000167082: the id asked for, or the tree Ensembl holds the locus in now"
    • addedOutput schema / properties / locus
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The member locus asked by; null when asked by gene_tree_id",
      +  "title": "Locus"
      +}
    • addedOutput schema / properties / organism
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The organism of locus; null when asked by gene_tree_id",
      +  "title": "Organism"
      +}
  2. Changed1 schema field changedv1.27.0
    • changedOutput schema / properties / upstream_version / description
      Previous value: -"Ensembl release that produced THIS response, — always null today: this backend states no release on its responses. null means Ensembl did not state one — never that no release exists, and never inferred from a separate metadata call, which can describe a different release than the one that answered."New value: +"Ensembl release that produced THIS response, — always null today: this backend states no release on its responses; upstream_release(backend='ensembl_plants') reports the release its own endpoint calls current at query time, or why there is none. null means Ensembl did not state one — never that no release exists, and never inferred from a separate metadata call, which can describe a different release than the one that answered."
  3. Addedv1.24.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/open-world safety, and the description adds genuinely new behavior: free access with no API key, pagination semantics (total counts members before limit; truncated=true when limit cut some off), that the returned gene_tree_id is the tree actually served, that organism is null for species outside this server's 12, and the not-found failure mode.

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?

Front-loaded with purpose and source, then access, tree-naming rules, filtering, and output/error semantics in a tight sequence. It is dense and slightly run-on across semicolons, but nearly every clause carries usable information.

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?

Complete for a 5-parameter, zero-required tool with an output schema: it covers tree selection, mutual exclusivity, filtering, pagination, return-field meanings, and error behavior, so an agent can call it correctly without further inference.

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 already 80%, so most parameter meaning is in the schema. The description still adds value the schema does not: the provenance caveat for gene_tree_id, the limit/total/truncated relationship, and that organism pairs with locus. Limit's own bounds remain schema-only.

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 and resource with its data source: 'List the member genes of an Ensembl Compara (plants) gene tree'. It also positions itself against siblings by noting that a gramene_homologs gene_tree_id comes from an older release and may not resolve here, and by calling out that member loci are the ids the locus-keyed tools accept.

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?

Explicit routing: name the tree by locus= or gene_tree_id=, exactly one, and 'prefer locus=' with the reason (gramene_homologs ids may not exist here). It also states when to omit target_organism (every species) and what triggers a not-found error.

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