Skip to main content
Glama
musharna

plant-genomics-mcp

by musharna

Synthesis: Gene Report (Markdown dossier)

gene_report
Read-onlyIdempotent

Generate a one-shot gene dossier for a plant locus: resolves Ensembl/UniProt, then compiles cross-references, pathways, interactors, literature, and GO terms into Markdown plus structured sections.

Instructions

Synthesis: one-shot 'tell me about this gene' dossier. Resolves a locus through Ensembl Plants + UniProt, then fans out to cross-references, KEGG pathways, STRING interactors, Europe PMC literature, and QuickGO GO terms. Returns a SynthesisEnvelope whose result.markdown is a rendered Markdown gene dossier (the headline output) alongside a structured result.sections mirror; each backend payload appears once, under sections, while steps[] carries status and per-step timing only. The literature section carries no abstracts (abstracts_included: false) and the GO section no withFrom (with_from_included: false); locus_literature and locus_go_annotations return them. result.gene_names labels the Ensembl and UniProt gene names separately when they differ. Any single backend failure degrades that section to an 'Unavailable' note; the rest of the dossier still renders.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
locusYesLocus name, e.g. AT1G01010
top_nNoCaps GO terms, pathways, interactors, xrefs, and papers per section
organismNoPlant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxidarabidopsis_thaliana

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
toolYesSynthesis tool name, e.g. analyze_locus_synth
inputYesEchoed input arguments
stepsYesPer-backend execution rows
resultNoComposed cross-source result; None if root step failed
elapsed_sYesTotal orchestrator wall time
started_atYesISO 8601 UTC timestamp

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.22.0
    • changedOutput schema / $defs / StepRow / description
      Previous value: -"One backend call inside a synthesis envelope.\n\n``status=\"ok\"`` populates ``result``; ``status=\"error\"`` populates ``error``\nwith the existing ``[ExceptionClass] message`` wire format from\n``errors.PlantGenomicsError.__str__``. ``status=\"skipped\"`` populates\n``error`` with a human-readable skip reason (e.g. phase 1 failed)."New value: +"One backend call inside a synthesis envelope.\n\n``status=\"ok\"`` populates ``result`` — unless the orchestrator carries the\npayload elsewhere in the envelope (``gene_report`` keeps it once, under\n``result.sections``), in which case the row is the audit trail alone and\n``result`` is None. ``status=\"error\"`` populates ``error`` with the\nexisting ``[ExceptionClass] message`` wire format from\n``errors.PlantGenomicsError.__str__``. ``status=\"skipped\"`` populates\n``error`` with a human-readable skip reason (e.g. phase 1 failed)."
    • changedOutput schema / $defs / StepRow / properties / elapsed_s / description
      Previous value: -"Per-step wall time when separately measurable, else None. Phase-2 gather rows and phase-0 pre-call validation failures return None because their wall time can't be honestly attributed per-step; SynthesisEnvelope.elapsed_s carries the authoritative total."New value: +"Per-step wall time: every awaited backend call is timed on its own, including inside a phase-2 gather. None only for rows that never ran (skipped, or a phase-0 pre-call validation failure); SynthesisEnvelope.elapsed_s carries the orchestrator total."
  2. Addedv1.21.0
  3. Removedv1.20.0
  4. Addedv1.18.2

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the (safety-only) annotations, the description discloses the output shape (result.markdown headline plus result.sections mirror, steps[] carrying only status/timing), the intentional omissions (abstracts_included: false, with_from_included: false), gene_names labeling, and graceful degradation where a single backend failure becomes an 'Unavailable' note without breaking the rest. That is exactly the behavioral context annotations cannot convey.

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?

It is dense but front-loaded, leading with the one-line purpose before the fan-out and output details. Each sentence carries information, though the section/steps and omissions details are packed tightly enough that a little trimming would sharpen it.

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 complex multi-backend synthesis tool with an output schema, the description covers the resolution pipeline, the callable surfaces, degraded-failure behavior, and the deliberate section differences versus sibling tools. An agent has everything needed to invoke it correctly.

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 schema already documents locus, top_n (with its 1-50 cap and per-section capping semantics), and organism. The description adds no syntax or meaning beyond what the schema provides, so the 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 and resource (one-shot 'tell me about this gene' dossier) and enumerates the backend fan-out (Ensembl Plants, UniProt, KEGG, STRING, Europe PMC, QuickGO), so an agent can distinguish it from the many single-source siblings like locus_literature and locus_go_annotations without opening a schema.

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 implicitly routes the agent: it notes that locus_literature and locus_go_annotations return the abstracts and withFrom that this report omits, giving a clear condition for choosing those siblings. It lacks an explicit 'use this instead of the individual tools when…' statement or exclusions, so it falls 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.