Skip to main content
Glama
musharna

plant-genomics-mcp

by musharna

Synthesis: Consensus Homologs

consensus_homologs
Read-onlyIdempotent

Find consensus plant homologs by merging Gramene and BLAST results, deduplicating hits, and scoring by source count and mean identity.

Instructions

Synthesis: cross-source homology consensus. Resolves UniProt + FASTA sequence, then runs Gramene homology calls and NCBI BLAST in parallel. Dedupes hits by normalized locus token and scores by n_sources * mean_identity — Gramene contributes identity=1.0, BLAST contributes pident/100.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
locusYes
top_nNo
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. First observedv1.8.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered by structured data. The description adds genuinely useful behavioral context beyond that: the parallel execution model, deduplication by 'normalized locus token', and the exact scoring formula including the identity=1.0 default for Gramene and pident/100 for BLAST. 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?

Roughly 40 words, densely packed, with the purpose front-loaded in the first phrase ('cross-source homology consensus'). Every sentence earns its place: pipeline order, parallel sources, dedup rule, and scoring formula. There is zero fluff or repetition of schema/annotation 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 moderately complex multi-step pipeline, the description covers the essential mechanics: resolution step, parallel homology calls, dedup, and scoring. The output schema exists, so return-value documentation is not the description's job, and annotations cover the safety/read-only profile. Remaining gaps are the when-to-use routing (vs. find_homologs_synth) and parameter detail for locus/top_n, which were already penalized in other dimensions.

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 only 33% — only 'organism' has a schema description. The tool description partially compensates by explaining that the locus is 'resolved to UniProt + FASTA sequence' and that hits are scored, which implies what locus and top_n do. However, it never specifies the expected locus format (e.g., AGI ID vs symbol) or clarifies that top_n caps the returned hit list. The compensation is partial, not complete.

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 specific verbs and resources: it 'resolves UniProt + FASTA sequence', 'runs Gramene homology calls and NCBI BLAST in parallel', 'dedupes hits', and 'scores by n_sources * mean_identity'. The opening phrase 'cross-source homology consensus' immediately distinguishes it from single-source siblings like gramene_homologs and blast_sequence, so an agent can tell this is the synthesis tool without opening the schema.

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 context — choose this when you want a consensus across multiple homology sources rather than any single one — but it never explicitly states when to use this tool versus alternatives like gramene_homologs, blast_sequence, or the similarly-named find_homologs_synth. No 'when not to use' or alternative-routing guidance is given.

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