Skip to main content
Glama
musharna

plant-genomics-mcp

by musharna

Gene Tree Members

gene_tree_members
Read-onlyIdempotent

Retrieve all member genes of an Ensembl Compara plant gene tree by ID. Each member includes locus, protein ID, species, and taxonomy, with optional filtering by target organism.

Instructions

List the member genes of an Ensembl Compara (plants) gene tree — the gene_tree_id that gramene_homologs returns on every homolog (rest.ensembl.org /genetree; free, no key). 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. An unknown tree id is a not-found error.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
gene_tree_idYese.g. EPlGT00940000167082 (from gramene_homologs)
target_organismNoKeep one organism's members — canonical slug, scientific or common name, or NCBI taxid. Omit for every species.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
totalYesHow many members after the organism filter exist upstream for this query, all pages (pre-cap) (#123)
membersYes
returnedYesRows in this payload (#123)
truncatedYesTrue when limit cut members off
gene_tree_idYesThe tree asked about, e.g. EPlGT00940000167082
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. 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."
  2. Addedv1.24.0

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/openWorld/idempotent annotations, the description reveals significant runtime behavior: 'free, no key', total counts members before limit, truncated=true when limit cuts results, canonical slug or null for species outside the server's 12, and 'An unknown tree id is a not-found error.' This is rich, honest behavioral disclosure.

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 dense but every sentence earns its place: purpose, output contents, filtering, pagination semantics, and error behavior. It front-loads the core action and naturally orders supporting details, 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?

For a tool with an output schema and strong annotations, the description covers everything an agent needs to call it correctly: required input provenance, optional filtering, pagination/count behavior, server scope, and failure mode. Nothing essential is missing.

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?

Schema coverage is 67%, and the description compensates meaningfully. It explains where gene_tree_id comes from, how target_organism can be a slug/name/taxid and that omitting it returns all species, and how limit interacts with total and truncated. All three parameters gain real semantic value 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?

The description opens with a specific verb and resource: 'List the member genes of an Ensembl Compara (plants) gene tree.' It clearly identifies the input (gene_tree_id from gramene_homologs) and the value of each member (locus, protein_id, species, taxid, organism), which distinguishes it from sibling tools like gramene_homologs.

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 clear context: this consumes the gene_tree_id that gramene_homologs returns on every homolog and produces locus ids accepted by locus-keyed tools. It does not explicitly name alternatives or state when not to use the tool, so it falls 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.