Plant Genomics
PYPI · PLANT-GENOMICS-MCP · SCANNED SEP 20
Plant genomics MCP — 50 tools across 23 backends with cross-source synthesis.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 1 of 32 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 44 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 9925 tokens (~183/item across 54 items; 50 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 90% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 50 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 51 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the Plant Genomics MCP server?
Plant Genomics runs locally as a PyPI package, launched with uvx plant-genomics-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · plant-genomics-mcp
claude mcp add musharna-plant-genomics-mcp -- uvx plant-genomics-mcp
{
"mcpServers": {
"musharna-plant-genomics-mcp": {
"command": "uvx",
"args": [
"plant-genomics-mcp"
]
}
}
} {
"servers": {
"musharna-plant-genomics-mcp": {
"command": "uvx",
"args": [
"plant-genomics-mcp"
]
}
}
} codex mcp add musharna-plant-genomics-mcp -- uvx plant-genomics-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"musharna-plant-genomics-mcp": {
"type": "local",
"command": [
"uvx",
"plant-genomics-mcp"
],
"enabled": true
}
}
} openclaw mcp add musharna-plant-genomics-mcp --command uvx --arg plant-genomics-mcp
mcp_servers:
musharna-plant-genomics-mcp:
command: "uvx"
args: ["plant-genomics-mcp"] {
"McpServers": {
"musharna-plant-genomics-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"plant-genomics-mcp"
]
}
}
} assistant mcp add musharna-plant-genomics-mcp -t stdio -c uvx -a plant-genomics-mcp
{
"mcpServers": {
"musharna-plant-genomics-mcp": {
"command": "uvx",
"args": [
"plant-genomics-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 0
- Stability: 0.97 → pass security
- 19 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 17 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- 15 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −18
- Malware scan: pass → unverified ▼ security
- Stability: pass → 0.80 functional
- 13 Sept 26 0
- Stability: 0.97 → pass security
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/plant-genomics-mcp@1.21.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 32 packages
| Packages resolved | 32 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
alphafold_structure AlphaFold: Predicted Structure ~235
Fetch the AlphaFold DB predicted-structure summary for a locus (alphafold.ebi.ac.uk; free, no key). Resolves the locus → UniProt accession, then returns the predicted model's global mean pLDDT confidence, the per-band pLDDT distribution, modelled residue span, latest model version, and mmCIF / PDB / PAE download URLs. A valid protein with no deposited model returns found=false (a normal outcome, not an error); a locus with no UniProt entry raises a typed NotFoundError. Works for all 12 organisms (UniProt-keyed). Complements resolve_locus_to_uniprot (sequence-level) with the structure-level view. Defaults to arabidopsis_thaliana; pass organism= for other species.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT4G09760 (Arabidopsis), Os01g0100100 (rice RAP-DB) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| accession | string | yes | Resolved UniProt accession |
| cif_url | – | – | mmCIF model download URL |
| description | – | – | UniProt protein description |
| found | boolean | yes | True if a predicted model exists |
| gene | – | – | Gene name from UniProt |
| latest_version | – | – | Latest AlphaFold model version |
| locus | string | yes | – |
| mean_plddt | – | – | Global mean pLDDT confidence (0–100) |
| model_created | – | – | Model creation date (ISO 8601) |
| model_entity_id | – | – | e.g. AF-Q9SZ92-F1 |
| organism | – | – | Organism scientific name |
| pae_image_url | – | – | Predicted-aligned-error image URL |
| pdb_url | – | – | PDB model download URL |
| plddt_bands | – | – | Fraction of residues per confidence band |
| residue_range | – | – | Modelled residue span {start, end} |
No examples provided.
analyze_locus_synth Synthesis: Locus Overview ~128
Synthesis: one-call equivalent of the analyze_locus prompt. Resolves a locus through Ensembl Plants, then fans out to xrefs, UniProt, Europe PMC, and QuickGO in parallel. Returns a SynthesisEnvelope with per-step status and a reconciled summary flagging cross-source name/accession disagreements.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | Locus name, e.g. AT1G01010 |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| elapsed_s | number | yes | Total orchestrator wall time |
| input | object | yes | Echoed input arguments |
| result | – | – | Composed cross-source result; None if root step failed |
| started_at | string | yes | ISO 8601 UTC timestamp |
| steps | array | yes | Per-backend execution rows |
| tool | string | yes | Synthesis tool name, e.g. analyze_locus_synth |
No examples provided.
arabidopsis_natural_variation 1001 Genomes: Natural Variation ~189
Fetch 1001 Genomes natural-variation SNP effects for an Arabidopsis locus (tools.1001genomes.org; free, no key) — the variation observed across 1135 resequenced natural accessions. Returns per-SNP effect rows (chromosome, position, accession id, effect, impact, amino-acid change, transcript) plus the gene's genomic span. variant_count is the true row total even when capped. ARABIDOPSIS-ONLY — any other organism raises OrganismNotSupported. Defaults to arabidopsis_thaliana.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | Arabidopsis AGI locus, e.g. AT1G01060 (a bare AGI is transcript-scoped to .1) |
| organism | string|integer | – | Arabidopsis only (the 1001 Genomes panel is A. thaliana) |
| Name | Type | Req | Description |
|---|---|---|---|
| found | boolean | yes | True once the effects endpoint returned 200 |
| locus | string | yes | – |
| organism | string | yes | Always arabidopsis_thaliana |
| region | – | – | Genomic span, e.g. 'Chr1:33666..37840' |
| returned | integer | yes | Effect rows returned (post-cap) |
| transcript | string | yes | Transcript-scoped gene id used (e.g. AT1G01060.1) |
| truncated | boolean | yes | True if the effect list was capped |
| variant_count | integer | yes | Total effect rows (pre-cap) |
| variants | array | – | Per-effect {chr, position, accession_id, effect, impact, amino_acid_change, …} |
No examples provided.
aragwas_associations AraGWAS: GWAS Associations ~170
Fetch AraGWAS genome-wide association study hits for an Arabidopsis locus (aragwas.1001genomes.org; free, no key). Returns each significant SNP association overlapping the gene with effect size (score), minor-allele frequency, the SNP's predicted molecular effect (impact, amino-acid change), and the phenotype/study it came from. association_count is the true total even when page-capped. ARABIDOPSIS-ONLY — any other organism raises OrganismNotSupported. Defaults to arabidopsis_thaliana.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | Arabidopsis AGI locus, e.g. AT1G01060 |
| organism | string|integer | – | Arabidopsis only (the 1001 Genomes panel is A. thaliana) |
| Name | Type | Req | Description |
|---|---|---|---|
| association_count | integer | yes | Total associations (pre-cap) |
| associations | array | – | Per-hit {score, maf, mac, snp{…}, study{…}} |
| found | boolean | yes | True once the associations endpoint returned 200 |
| locus | string | yes | – |
| organism | string | yes | Always arabidopsis_thaliana |
| returned | integer | yes | Associations returned (post page-cap) |
| truncated | boolean | yes | True if pagination was capped |
No examples provided.
atted_coexpression ATTED-II: Coexpression ~217
Fetch co-expressed gene neighbors from ATTED-II (atted.jp, API v5) for a plant locus. Returns top_n neighbors with target locus + NCBI Entrez gene ID + z-score (higher = stronger coexpression). The ATTED-II release (e.g. Ath-u.c4-0 for Arabidopsis, Osa-u.c1-0 for rice) is resolved per-organism; wheat, sorghum, barley, poplar, and brachypodium have no published release and raise OrganismNotSupported. Pairs with string_interactions to surface high-confidence functional partners (interactors that are also coexpressed).
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | Plant locus, e.g. AT1G01010 (Arabidopsis) or Os01g0100100 (rice) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| top_n | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| atted_release | string | yes | ATTED-II DB identifier, e.g. Ath-u.c4-0 (release version included) |
| locus | string | yes | – |
| neighbors | array | yes | – |
No examples provided.
bar_aiv_interactions BAR: Predicted Interactions ~241
Fetch BAR AIV (Arabidopsis Interactions Viewer) interactions for an Arabidopsis or rice locus. Dispatches by organism: Arabidopsis returns curated GRN paper refs from /interactions/get_paper_by_agi/{locus} (PubMed ID, title, image, comments, pipe-split tags); rice returns predicted PPI partners from /interactions/rice/{locus} with Pearson co-expression r (pcc), evidence hits, and quality score. The `kind` field discriminates the response shape (grn_papers vs ppi_predictions). Rice requires the MSU LOC_Os* locus format — RAP-DB Os*g* is rejected upstream. Only Arabidopsis and rice are supported by AIV; other organisms raise OrganismNotSupported.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | AGI locus (AT1G01010) for Arabidopsis or MSU locus (LOC_Os01g01080) for rice |
| organism | string|integer | – | arabidopsis_thaliana or oryza_sativa — slug, scientific/common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Total rows returned (len of papers or partners) |
| kind | string | yes | Discriminator: grn_papers (Arabidopsis) or ppi_predictions (rice) |
| locus | string | yes | – |
| organism | string | yes | – |
| papers | array | – | GRN paper refs (populated when kind=grn_papers) |
| partners | array | – | PPI predictions (populated when kind=ppi_predictions) |
| source_url | string | yes | BAR AIV endpoint URL for traceability |
No examples provided.
bar_efp_expression BAR: eFP Expression ~148
Fetch BAR/eFP world-map natural-variation expression for an Arabidopsis locus. Wraps the world-eFP view at /microarray_gene_expression/world_efp/arabidopsis/{locus} — returns expression across ~36 ecotypes (Bay-0, Col-0, Cvi-1, Ler-2, ...) with per-replicate values, control samples, collection lat/lng, and a per-ecotype mean computed client-side. Arabidopsis only. BAR is keyless and a Global Core Biodata Resource (2023).
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | Arabidopsis AGI locus, e.g. AT1G01010 |
| Name | Type | Req | Description |
|---|---|---|---|
| ecotype_count | integer | yes | Number of ecotype rows in `ecotypes` |
| ecotypes | array | yes | – |
| locus | string | yes | – |
| probeset | – | – | Microarray probeset ID, uniform across ecotypes for one gene |
| source_url | string | yes | BAR world-eFP endpoint URL for traceability |
| species | string | yes | – |
No examples provided.
bar_gene_summary BAR: Gene Summary ~175
Fetch the BAR (Bio-Analytic Resource, U Toronto) merged ThaleMine + GAIA-aliases summary for an Arabidopsis locus. Returns the TAIR curator summary + Araport11 computational description from /thalemine/gene_information/ together with the NCBI Gene ID and cross-DB aliases (RefSeq, UniProt, TIGR locus-model IDs) from /gaia/aliases/. Arabidopsis only — ThaleMine carries taxon 3702 plus yeast/human for ortholog cross-reference. BAR is keyless and a Global Core Biodata Resource (2023); replaces the v0.9 subscription-gated tair_locus_info stub for the curator-summary use case.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | Arabidopsis AGI locus, e.g. AT1G01010 |
| Name | Type | Req | Description |
|---|---|---|---|
| agi | – | – | AGI primary identifier echoed by ThaleMine, e.g. "AT1G01010" |
| aliases | array | – | Cross-DB aliases from /gaia/aliases/ (RefSeq accessions, UniProt accessions, TIGR locus-model IDs, and TAIR aliases). Empty list if /gaia degraded. |
| brief_description | – | – | Gene.briefDescription — short blurb (often same as full_name) |
| computational_description | – | – | Gene.tairComputationalDescription — Araport11-sourced computed description |
| curator_summary | – | – | Gene.tairCuratorSummary — the TAIR-curated functional summary prose |
| full_name | – | – | Gene name from ThaleMine |
| locus | string | yes | – |
| ncbi_gene_id | – | – | NCBI Gene ID from /gaia/aliases/ — None if BAR has no NCBI cross-ref |
| source_url | string | yes | ThaleMine endpoint URL for traceability |
| species | string | yes | – |
| symbol | – | – | Gene symbol, e.g. "NAC001" |
| synonyms | array | – | TAIR aliases (CSV from Gene.tairAliases, split on commas + stripped) |
| tair_locus_id | – | – | TAIR locus ID from Gene.secondaryIdentifier, e.g. "locus:2200935" |
| tair_short_description | – | – | Gene.tairShortDescription — TAIR-specific short description |
No examples provided.
batch_atted_coexpression Batch: ATTED-II Coexpression ~76
Batch version of atted_coexpression. Up to 50 loci per call.
| Name | Type | Req | Description |
|---|---|---|---|
| loci | array | yes | – |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| top_n | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_bar_aiv_interactions Batch: BAR Predicted Interactions ~158
Batch variant of bar_aiv_interactions. Fans out per-locus BAR AIV calls in parallel (up to 50 loci); all loci in a single call share the same organism. Each results[locus] is the full single-locus payload (kind=grn_papers for Arabidopsis with `papers` list, kind=ppi_predictions for rice with `partners` list).
| Name | Type | Req | Description |
|---|---|---|---|
| loci | array | yes | List of locus identifiers (1–50). Successes land in results[locus]; PlantGenomicsError failures in errors[locus]. |
| organism | string|integer | – | arabidopsis_thaliana or oryza_sativa — slug, scientific/common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_bar_gene_summary Batch: BAR Gene Summary ~111
Batch variant of bar_gene_summary. Fans out per-locus BAR ThaleMine + GAIA-aliases calls in parallel (up to 50 loci). Each results[locus] is the full single-locus payload (curator summary, computational description, NCBI Gene ID, cross-DB aliases). Arabidopsis only.
| Name | Type | Req | Description |
|---|---|---|---|
| loci | array | yes | List of locus identifiers (1–50). Successes land in results[locus]; PlantGenomicsError failures in errors[locus]. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_ensembl_plants_lookup_locus Batch: Ensembl Plants Locus Metadata ~202
Batch variant of ensembl_plants_lookup_locus. Uses Ensembl's native POST /lookup/id endpoint — one HTTP round-trip for up to 50 loci, materially cheaper than N parallel GETs. Successes in results[] with the same shape as the single-locus tool. Retries 429/5xx via the shared `_http` helper (Retry-After capped at 60 s). Misses (loci with no record) still land in `errors[]` with the `[NotFoundError]` prefix; the whole batch only fails when the retry budget is exhausted.
| Name | Type | Req | Description |
|---|---|---|---|
| loci | array | yes | List of locus identifiers (1–50). Successes land in results[locus]; PlantGenomicsError failures in errors[locus]. |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_get_gene_xrefs Batch: Gene Cross-References ~132
Batch variant of get_gene_xrefs. Fans out per-locus xref lookups over Ensembl Plants in parallel (up to 50 loci). Each results[locus] is the full single-locus shape (count + xrefs[] + by_db rollup).
| Name | Type | Req | Description |
|---|---|---|---|
| loci | array | yes | List of locus identifiers (1–50). Successes land in results[locus]; PlantGenomicsError failures in errors[locus]. |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_gramene_homologs Batch: Gramene Homologs ~80
Batch version of gramene_homologs. Up to 50 loci per call; shares the homology_type filter across all loci. Returns the standard batch envelope (count + results dict + errors dict).
| Name | Type | Req | Description |
|---|---|---|---|
| homology_type | string | – | – |
| loci | array | yes | List of locus identifiers (max 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_kegg_pathways Batch: KEGG Pathways ~134
Batch version of kegg_pathways. Up to 50 loci per call. v1.1.0: only arabidopsis_thaliana resolves — KEGG uses NCBI Entrez Gene IDs for other plants and our cross-backend locus contract can't produce those yet, so a non-ath organism= raises OrganismNotSupported before any HTTP fan-out.
| Name | Type | Req | Description |
|---|---|---|---|
| loci | array | yes | – |
| organism | string|integer | – | Plant organism — only arabidopsis_thaliana is supported in v1.1.0; other plants raise OrganismNotSupported until an Entrez bridge lands |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_locus_go_annotations Batch: GO Annotations ~152
Batch variant of locus_go_annotations. Two-stage fanout — each locus is resolved to UniProt and then queried in QuickGO. Per-locus NotFoundError from either stage lands in errors[] with the typed prefix preserved. Capped at 50 loci.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max annotations per locus from QuickGO (1–100, default 50) |
| loci | array | yes | List of locus identifiers (1–50). Successes land in results[locus]; PlantGenomicsError failures in errors[locus]. |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_locus_literature Batch: Literature ~146
Batch variant of locus_literature. Fans out per-locus Europe PMC searches in parallel (up to 50 loci). Each results[locus] is the full single-locus payload (query + hitCount + returned + hits[]).
| Name | Type | Req | Description |
|---|---|---|---|
| loci | array | yes | List of locus identifiers (1–50). Successes land in results[locus]; PlantGenomicsError failures in errors[locus]. |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| size | integer | – | Max results per locus (1–25, default 10) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_phytozome_lookup_locus Batch: Phytozome Locus Metadata ~138
Batch variant of phytozome_lookup_locus. Fans out per-locus BioMart queries in parallel (up to 50 loci). Each results[locus] is the full single-locus row (organism_name, gene_name, chromosome, start/end/strand, description).
| Name | Type | Req | Description |
|---|---|---|---|
| loci | array | yes | List of locus identifiers (1–50). Successes land in results[locus]; PlantGenomicsError failures in errors[locus]. |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_resolve_locus_to_uniprot Batch: Resolve Locus → UniProt ~150
Batch variant of resolve_locus_to_uniprot. Fans out per-locus UniProtKB searches in parallel (up to 50 loci). Each results[locus] is the full single-locus record (primaryAccession + uniProtkbId + entryType + geneNames + organism + sequenceLength + web_url + …).
| Name | Type | Req | Description |
|---|---|---|---|
| loci | array | yes | List of locus identifiers (1–50). Successes land in results[locus]; PlantGenomicsError failures in errors[locus]. |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
batch_string_interactions Batch: STRING Interactions ~76
Batch version of string_interactions. Up to 50 inputs per call.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| loci_or_accessions | array | yes | – |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of distinct loci queried, returned (== len(results) + len(errors)). The input list is de-duplicated first, so this is LOWER than the number of loci you sent if you sent a duplicate — that is d… |
| errors | object | yes | locus → '[ClassName] message' for PlantGenomicsError failures |
| results | object | yes | locus → per-locus result dict (same shape as the single-locus tool) |
| tool | string | yes | The batch tool name, e.g. batch_resolve_locus_to_uniprot |
No examples provided.
biological_context_synth Synthesis: Biological Context ~118
Synthesis: one-call equivalent of the biological_context prompt. Resolves UniProt accession, then fans out to Gramene homologs, KEGG pathways, STRING-DB partners, and ATTED-II coexpression in parallel. Adds a consensus_partners ranking that merges STRING + ATTED scores.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | – |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| top_n | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| elapsed_s | number | yes | Total orchestrator wall time |
| input | object | yes | Echoed input arguments |
| result | – | – | Composed cross-source result; None if root step failed |
| started_at | string | yes | ISO 8601 UTC timestamp |
| steps | array | yes | Per-backend execution rows |
| tool | string | yes | Synthesis tool name, e.g. analyze_locus_synth |
No examples provided.
blast_sequence BLAST: Sequence Search (NCBI) ~333
Run a BLAST sequence-similarity search against NCBI BLAST URLAPI. Async Put/Get under the hood — submits the query, polls the RID (honoring NCBI's per-RID 60s floor), and returns the parsed top hits + raw text report excerpt. Programs: blastn / blastp / blastx / tblastn / tblastx. Database defaults to swissprot for protein programs, core_nt for nucleotide. Emits notifications/progress on each poll. Long searches (>10 min) raise [NotFoundError] with the RID preserved so the client can re-poll. Set PLANT_GENOMICS_MCP_NCBI_EMAIL to identify the request per NCBI etiquette.
| Name | Type | Req | Description |
|---|---|---|---|
| database | string | – | NCBI BLAST database slug (e.g. swissprot, core_nt, refseq_protein). Defaults to swissprot for protein programs and core_nt for nucleotide programs. |
| expect | number | – | E-value threshold (default 10). |
| hitlist_size | integer | – | Max hits to return (default 10). |
| max_wait | number | – | Max seconds to wait for the search to finish before raising NotFoundError with the RID preserved (default 600). |
| megablast | boolean | – | Enable megablast (blastn only). Default false. |
| poll_interval | number | – | Seconds between polls. Clamped up to NCBI's per-RID 60s floor. |
| program | string | – | BLAST program — default blastp. |
| sequence | string | yes | Raw or FASTA-formatted query sequence. |
| Name | Type | Req | Description |
|---|---|---|---|
| database | string | yes | NCBI BLAST database, e.g. swissprot, core_nt |
| elapsed_seconds | number | yes | Wall-clock from submit to READY |
| hitCount | integer | yes | Number of rows parsed from the alignment summary |
| hits | array | yes | Top alignments, sorted by BLAST default order |
| program | string | yes | blastn | blastp | blastx | tblastn | tblastx |
| raw_report_excerpt | string | yes | First 50 KB of the FORMAT_TYPE=Text report |
| raw_report_truncated | boolean | yes | True if the upstream report exceeded the cap |
| rid | string | yes | NCBI BLAST request ID — re-usable via fetch_result() |
| status | string | yes | Always "READY" when this object is returned |
No examples provided.
consensus_homologs Synthesis: Consensus Homologs ~128
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.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | – |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| top_n | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| elapsed_s | number | yes | Total orchestrator wall time |
| input | object | yes | Echoed input arguments |
| result | – | – | Composed cross-source result; None if root step failed |
| started_at | string | yes | ISO 8601 UTC timestamp |
| steps | array | yes | Per-backend execution rows |
| tool | string | yes | Synthesis tool name, e.g. analyze_locus_synth |
No examples provided.
ensembl_plants_lookup_locus Ensembl Plants: Locus Metadata ~140
Fetch metadata for a plant locus identifier from Ensembl Plants. Defaults to arabidopsis_thaliana; pass organism= for other plant species (oryza_sativa, zea_mays, ...). Locus is the TAIR-style identifier (e.g. AT1G01010 for Arabidopsis NAC001).
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT1G01010 (Arabidopsis), Os01g0100100 (rice) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| assembly_name | – | – | e.g. TAIR10 |
| biotype | – | – | protein_coding, lncRNA, miRNA, ... |
| canonical_transcript | – | – | – |
| db_type | – | – | Usually "core" |
| description | – | – | – |
| display_name | – | – | Human-readable gene symbol |
| end | – | – | – |
| id | string | yes | Locus identifier, e.g. AT1G01010 |
| logic_name | – | – | Source annotation pipeline |
| object_type | – | – | Usually "Gene" |
| organism | string | yes | Plant organism canonical slug, e.g. arabidopsis_thaliana |
| seq_region_name | – | – | Chromosome / contig name |
| source | – | – | – |
| start | – | – | – |
| strand | – | – | 1 forward, -1 reverse |
No examples provided.
ensembl_region_query Genomic Region → Features ~211
List features overlapping a genomic interval via Ensembl Plants /overlap/region. region is the seq-region name (chromosome / contig, e.g. '1'); start and end are 1-based inclusive. feature is one of gene / transcript / cds / exon (default gene). Answers 'what genes are in this QTL interval / assembly window' without a per-locus lookup. Ensembl caps the span — oversized regions error. Defaults to arabidopsis_thaliana; pass organism= for other species.
| Name | Type | Req | Description |
|---|---|---|---|
| end | integer | yes | 1-based inclusive end |
| feature | string | – | Feature type to return |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| region | string | yes | seq-region name (chromosome / contig), e.g. '1' or 'Chr1' |
| start | integer | yes | 1-based start |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of overlapping features returned |
| feature | string | yes | Feature type queried |
| features | array | yes | Raw Ensembl overlap records |
| organism | string | yes | – |
| region | string | yes | seq_region:start-end, e.g. 1:3000-10000 |
No examples provided.
experimental_interactions ThaleMine: Experimental Interactions ~293
Fetch CURATED EXPERIMENTAL protein/genetic interaction partners for an Arabidopsis locus from ThaleMine (BAR's InterMine instance; free, no key), sourced from BioGRID, IntAct and PSI-MI. Unlike string_interactions (predicted / text-mined, scored) and bar_aiv_interactions (which returns GRN *paper references* for Arabidopsis, not partner pairs), every partner here carries the actual experimental provenance: detection method (two hybrid, pull down, genetic interference, ...), PSI-MI relationship type, physical vs genetic class, source database, and the PubMed IDs that reported it. ThaleMine emits one row per evidence record, so rows are aggregated to one entry per partner with evidence_count as a crude support signal; partners are ordered by that count. found=false means the gene is real but has no curated interaction on record — a normal outcome; an unknown locus raises a typed NotFoundError. Arabidopsis only (ThaleMine carries genes for taxon 3702; other organisms raise OrganismNotSupported).
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | AGI locus, e.g. AT5G11260 (HY5) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid. ThaleMine supports Arabidopsis only. |
| Name | Type | Req | Description |
|---|---|---|---|
| evidence_count | integer | yes | Total evidence records across all partners (pre-cap) — counted over every partner upstream, not only the partners listed here |
| found | boolean | yes | True if any curated interaction exists for this locus |
| gene_symbol | – | – | Gene symbol from ThaleMine |
| locus | string | yes | – |
| organism | string | yes | Canonical organism slug (Arabidopsis only) |
| partner_count | integer | yes | Total distinct partners (pre-cap) |
| partners | array | – | Partners ordered by evidence count, descending |
| source_url | string | yes | ThaleMine gene report page |
| truncated | boolean | yes | True if the partner list was capped |
No examples provided.
experimental_structures PDBe: Experimental Structures ~244
Fetch experimentally-solved (X-ray / cryo-EM / NMR) protein structures for a locus from PDBe (www.ebi.ac.uk/pdbe; free, no key). Resolves the locus → UniProt accession, then returns PDBe's best_structures mapping ranked best-first: per entry the PDB id, chain, experimental method, resolution, coverage, and modelled residue span. Most plant proteins have NO deposited structure — that returns found=false (a normal outcome, not an error); a locus with no UniProt entry raises a typed NotFoundError. structure_count is the true total even when the list is capped. Complements alphafold_structure (the predicted view). Works for all 12 organisms (UniProt-keyed). Defaults to arabidopsis_thaliana; pass organism= for other species.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT4G09760 (Arabidopsis), Os01g0100100 (rice RAP-DB) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| accession | string | yes | Resolved UniProt accession |
| found | boolean | yes | True if any experimental structure is deposited |
| locus | string | yes | – |
| structure_count | integer | yes | Total deposited structures (pre-cap) |
| structures | array | – | Best-first {pdb_id, chain_id, experimental_method, resolution, coverage, …} |
| truncated | boolean | yes | True if the structure list was capped |
No examples provided.
find_homologs_synth Synthesis: Homolog Search ~97
Synthesis: one-call equivalent of the find_homologs prompt. Runs BLAST then resolves UniProt-shaped subject accessions via the batch UniProt helper. Returns ranked hits each annotated with their UniProt record (or null if subject_id is not a UniProt accession).
| Name | Type | Req | Description |
|---|---|---|---|
| program | string | – | – |
| sequence | string | yes | Query sequence (protein or nucleotide) |
| top_n | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| elapsed_s | number | yes | Total orchestrator wall time |
| input | object | yes | Echoed input arguments |
| result | – | – | Composed cross-source result; None if root step failed |
| started_at | string | yes | ISO 8601 UTC timestamp |
| steps | array | yes | Per-backend execution rows |
| tool | string | yes | Synthesis tool name, e.g. analyze_locus_synth |
No examples provided.
gene_report Synthesis: Gene Report (Markdown dossier) ~187
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. Any single backend failure degrades that section to an 'Unavailable' note; the rest of the dossier still renders.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | Locus name, e.g. AT1G01010 |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| top_n | integer | – | Caps GO terms, pathways, interactors, xrefs, and papers per section |
| Name | Type | Req | Description |
|---|---|---|---|
| elapsed_s | number | yes | Total orchestrator wall time |
| input | object | yes | Echoed input arguments |
| result | – | – | Composed cross-source result; None if root step failed |
| started_at | string | yes | ISO 8601 UTC timestamp |
| steps | array | yes | Per-backend execution rows |
| tool | string | yes | Synthesis tool name, e.g. analyze_locus_synth |
No examples provided.
get_gene_xrefs Gene Cross-References ~167
Fetch cross-database references (UniProt, NCBI Gene, TAIR, ArrayExpress, …) for a plant locus from Ensembl Plants. Defaults to arabidopsis_thaliana; pass organism= for other Ensembl Plants species. Returns count + raw xref list + a by_db rollup keyed on Ensembl's dbname (e.g. 'Uniprot_gn', 'EntrezGene') for fast lookup of a single foreign identifier.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT1G01010 (Arabidopsis), Os01g0100100 (rice) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| by_db | object | yes | dbname → primary_ids[]; e.g. {'Uniprot_gn': ['Q0WV96']} |
| count | integer | yes | Number of xref records returned |
| locus | string | yes | – |
| organism | string | yes | – |
| xrefs | array | yes | Raw Ensembl xref records |
No examples provided.
get_sequence Gene / CDS / Protein Sequence ~166
Fetch a locus's sequence from Ensembl Plants. seq_type is one of genomic / cds / cdna / protein (default protein — the canonical-transcript product). Closes the lookup → fetch → BLAST loop: feed the returned `sequence` straight to blast_sequence (protein for blastp, cds/cdna for blastn). Defaults to arabidopsis_thaliana; pass organism= for other plant species.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT1G01010 (Arabidopsis), Os01g0100100 (rice) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| seq_type | string | – | Sequence type to fetch |
| Name | Type | Req | Description |
|---|---|---|---|
| description | – | – | – |
| ensembl_id | – | – | Resolved Ensembl stable id |
| length | integer | yes | Sequence length (residues for protein, bases otherwise) |
| locus | string | yes | – |
| molecule | – | – | "dna" or "protein" |
| organism | string | yes | Resolved canonical organism slug |
| sequence | string | yes | The sequence string; feed to blast_sequence |
| type | string | yes | Sequence type requested |
| version | – | – | Ensembl sequence version |
No examples provided.
go_enrichment GO / KEGG Enrichment (gene list) ~362
GO + KEGG over-representation analysis for a gene LIST via g:Profiler g:GOSt (biit.cs.ut.ee/gprofiler; free, no API key). Unlike locus_go_annotations (one locus → its terms), this answers 'what is my gene SET enriched for?' — the dominant question for a differential-expression or co-expression cluster. loci is the query gene list (e.g. AT-codes for Arabidopsis, RAP-DB IDs for rice). sources defaults to GO:BP/GO:MF/GO:CC + KEGG; user_threshold is the g:SCS-corrected significance cutoff (default 0.05). Optional background sets a custom statistical domain (default: all annotated genes). Returns enriched[] (term_id/name/p_value/intersection_size/…, capped at top_n by p-value) plus unmapped[] — query loci g:Profiler could not recognize, surfaced so a locus-namespace mismatch is visible. Defaults to arabidopsis_thaliana; pass organism= for any of the 12 species.
| Name | Type | Req | Description |
|---|---|---|---|
| background | array | – | Optional custom statistical background gene set |
| loci | array | yes | Query gene set, e.g. ['AT2G46830', 'AT1G01060', ...] |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| sources | array | – | Annotation sources to test (default: all four) |
| top_n | integer | – | Max terms returned, sorted by p-value (1–200, default 50) |
| user_threshold | number | – | Significance cutoff, g:SCS-corrected (default 0.05) |
| Name | Type | Req | Description |
|---|---|---|---|
| enriched | array | yes | – |
| gprofiler_id | string | yes | g:Profiler organism ID used, e.g. athaliana |
| mapped | integer | yes | Loci g:Profiler recognized |
| organism | string | yes | Canonical organism slug |
| query_size | integer | yes | Number of loci submitted |
| returned | integer | yes | Terms in enriched[] after the top_n cap |
| sources | array | yes | Annotation sources queried |
| total_terms | integer | yes | Significant terms before the top_n cap |
| unmapped | array | yes | Loci g:Profiler could not map |
No examples provided.
gramene_homologs Gramene Homologs ~197
Fetch orthologs and paralogs for a plant locus from Gramene compara (data.gramene.org v69). Default homology_type='ortholog'; pass 'paralog' for in-species duplicates or 'all' for everything. Returns target_locus + homology category (type) + shared gene_tree_id per hit. The fl=homology projection does not carry per-row taxon, identity, or protein ID; pair with resolve_locus_to_uniprot for protein-level enrichment and with blast_sequence for sequence similarity discovery.
| Name | Type | Req | Description |
|---|---|---|---|
| homology_type | string | – | Filter on homology kind |
| limit | integer | – | Max homolog rows to return. 'total' always reports the true pre-cap count and 'truncated' says whether the cap bit. |
| locus | string | yes | e.g. AT1G01010 (Arabidopsis), Os01g0100100 (rice) |
| Name | Type | Req | Description |
|---|---|---|---|
| homologs | array | yes | – |
| locus | string | yes | – |
| release | string | yes | Gramene release identifier, e.g. v69 |
| total | integer | yes | Number of homologs after filtering, BEFORE the row cap |
| truncated | boolean | – | True when the row list was capped (< total); pass limit= to change the cap |
No examples provided.
interpro_domains InterPro: Protein Domains ~245
Fetch the InterPro domain / family architecture for a locus (www.ebi.ac.uk/interpro; free, no key). Resolves the locus → UniProt accession, then returns the protein's InterPro entries — each with accession, name, type (domain / family / homologous_superfamily / …), source_database (Pfam appears here as source_database='pfam', not a separate tool), the integrated InterPro accession, and residue spans — plus a count_by_type rollup. A protein with no annotated domains returns found=true with an empty list; a locus with no UniProt entry raises a typed NotFoundError. domain_count is the true total even when the row list is page-capped. Works for all 12 organisms (UniProt-keyed). Defaults to arabidopsis_thaliana; pass organism= for other species.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT4G09760 (Arabidopsis), Os01g0100100 (rice RAP-DB) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| accession | string | yes | Resolved UniProt accession |
| count_by_type | object | yes | Rollup of entry count by type |
| domain_count | integer | yes | Total InterPro entries (pre-cap) |
| domains | array | yes | – |
| found | boolean | yes | True once the locus resolved to a UniProt entry |
| locus | string | yes | – |
| truncated | boolean | yes | True if the row list was page-capped (< domain_count) |
| upstream_version | – | – | InterPro release that produced THIS response, as stated by the upstream's own header (e.g. '109.0'). null means InterPro did not state one — never that no release exists, and never inferred from a se… |
No examples provided.
jaspar_motif JASPAR: Motif Matrix ~162
Fetch one JASPAR binding profile by matrix id, including its raw position-frequency matrix (PFM: per-base count vectors keyed A/C/G/T) plus TF class/family, assay type, source species, UniProt accessions, PubMed refs, IUPAC consensus, and the sequence-logo URL. The drill-down companion to tf_binding_motifs, which returns the derived consensus but not the matrix. Accepts a versioned id (MA0570.1) or a bare base id (MA0570, which resolves to the newest version). Unknown ids raise a typed NotFoundError.
| Name | Type | Req | Description |
|---|---|---|---|
| matrix_id | string | yes | JASPAR profile id, e.g. MA0570.1 or MA0570 (latest version) |
| Name | Type | Req | Description |
|---|---|---|---|
| base_id | – | – | Version-less profile id, e.g. MA0570 |
| collection | – | – | CORE / PBM / UNVALIDATED / … |
| consensus | – | – | IUPAC consensus derived from the PFM, e.g. 'AAATATCT' (the Evening Element) |
| data_type | – | – | Assay the profile derives from: SELEX / ChIP-seq / PBM / DAP-seq |
| length | – | – | Motif width in bases |
| matrix_id | – | – | JASPAR profile id, e.g. MA0570.1 |
| name | – | – | TF name as curated by JASPAR |
| pfm | – | – | Position-frequency matrix: per-base count vectors keyed A/C/G/T |
| pubmed_ids | array | – | Supporting PubMed IDs |
| sequence_logo | – | – | URL of the SVG sequence logo |
| species | array | – | Source species [{tax_id, name}] |
| tf_class | – | – | Structural class, e.g. ['Basic leucine zipper factors (bZIP)'] |
| tf_family | – | – | TF family, e.g. ['MYB-related'] |
| uniprot_ids | array | – | UniProt accessions JASPAR attributes the profile to |
| version | – | – | JASPAR release version of the profile |
| web_url | – | – | JASPAR profile page |
No examples provided.
kegg_pathways KEGG Pathways ~239
Fetch KEGG pathway memberships for an Arabidopsis locus from rest.kegg.jp. Returns a list of pathway IDs + names + KEGG category classes the locus participates in. Pairs with locus_go_annotations for the GO-level functional view. Multi-organism caveat (v1.1.0): the organism= field accepts any plant in the matrix for symmetry with the other backends, but only arabidopsis_thaliana resolves — KEGG uses NCBI Entrez Gene IDs for rice/maize/etc. and our cross-backend locus contract can't produce those yet, so any other organism raises OrganismNotSupported before any HTTP call. KEGG v118+ is case-sensitive on the locus: pass AGI loci as uppercase.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | Arabidopsis AGI locus, e.g. AT1G01010 (case preserved verbatim — KEGG v118+ is case-sensitive) |
| organism | string|integer | – | Plant organism — only arabidopsis_thaliana is supported in v1.1.0; other plants raise OrganismNotSupported until an Entrez bridge lands |
| Name | Type | Req | Description |
|---|---|---|---|
| entrez_gene_id | – | – | Entrez Gene ID from the non-Arabidopsis KEGG↔Entrez bridge; absent for ath. |
| errors | array | – | Per-pathway step-2 failures (kept inline so the call doesn't abort) |
| kegg_gene_id | string | yes | e.g. "ath:at1g01010" |
| locus | string | yes | – |
| organism | string | yes | Resolved canonical organism slug, e.g. arabidopsis_thaliana |
| pathways | array | yes | – |
No examples provided.
locus_gene_rifs GeneRIF Functional Statements ~242
Fetch curated GeneRIF functional statements for an Arabidopsis locus from ThaleMine (free, no key). A GeneRIF is a one-sentence, manually curated statement of what the gene does, each anchored to the PubMed ID of the publication that demonstrated it — dense, directly citable functional context that GO terms (locus_go_annotations) and raw abstracts (locus_literature) do not provide. Well-studied genes have many: HY5 (AT5G11260) has 114. Upstream order is preserved because ThaleMine supplies no meaningful ranking, so `truncated` means later statements were cut, not that they were less relevant. found=false means the gene exists but has no GeneRIF; an unknown locus raises a typed NotFoundError. Arabidopsis only.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | AGI locus, e.g. AT5G11260 (HY5) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid. ThaleMine supports Arabidopsis only. |
| Name | Type | Req | Description |
|---|---|---|---|
| found | boolean | yes | True if the gene has at least one GeneRIF |
| gene_rifs | array | – | Curated statements in upstream order |
| gene_symbol | – | – | Gene symbol from ThaleMine |
| locus | string | yes | – |
| organism | string | yes | Canonical organism slug (Arabidopsis only) |
| rif_count | integer | yes | Total GeneRIFs (pre-cap) |
| source_url | string | yes | ThaleMine gene report page |
| truncated | boolean | yes | True if the GeneRIF list was capped |
No examples provided.
locus_go_annotations GO Annotations ~209
Fetch Gene Ontology annotations for a plant locus from QuickGO (EBI). Free, no API key. The locus is first resolved to a UniProt accession via the same logic as resolve_locus_to_uniprot, then QuickGO is queried by geneProductId. Returns annotations[] with goId/goName/goAspect/qualifier/evidence + a by_aspect rollup ({molecular_function: [{goId, goName}, ...], biological_process: [...], cellular_component: [...]}) deduped on goId so the high-level term set is one read away.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max annotations from QuickGO (1–100, default 50) |
| locus | string | yes | e.g. AT1G01010 (Arabidopsis), Os01g0100100 (rice) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| annotations | array | yes | – |
| by_aspect | object | yes | aspect → [{goId, goName}, ...], deduped on goId |
| locus | string | yes | – |
| numberOfHits | integer | yes | Total annotations available upstream |
| returned | integer | yes | Number of annotations in annotations[] |
| uniprot_accession | string | yes | UniProt accession used to query QuickGO |
No examples provided.
locus_literature Literature (Europe PMC) ~251
Search Europe PMC for literature mentioning a plant locus. Free, no API key. Returns up to `size` results (default 10, capped at 25) with title, authors, journal, year, DOI, PMID, open-access status, citation count, and abstract. For non-Arabidopsis species the species common name is appended to the query to disambiguate locus IDs (rice, maize, ...). Pair with resolve_locus_to_uniprot or ensembl_plants_lookup_locus to ground the locus before fanning out to the literature.
| Name | Type | Req | Description |
|---|---|---|---|
| include_abstract | boolean | – | Set false to null out abstractText, which is ~67% of this payload. The response echoes 'abstracts_included' so a null abstract is not mistaken for an article that has none. |
| locus | string | yes | e.g. AT1G01010 (Arabidopsis), Os01g0100100 (rice) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| size | integer | – | Max results (1–25, default 10) |
| Name | Type | Req | Description |
|---|---|---|---|
| abstracts_included | boolean | – | False when include_abstract=False was passed, in which case every abstractText is null because it was not requested — not because the article lacks one. Abstracts are ~67% of this payload. |
| hitCount | integer | yes | Total hits available upstream (may exceed returned) |
| hits | array | yes | – |
| locus | string | yes | – |
| organism | string | yes | – |
| query | string | yes | Final query string sent to Europe PMC |
| returned | integer | yes | Number of hits actually in hits[] |
No examples provided.
locus_plant_ontology Plant Ontology (PO/TO) Terms ~306
Fetch Plant Ontology (PO) + Trait Ontology (TO) + experimental-condition (PECO) annotations for a plant locus from Planteome (browser.planteome.org, AmiGO2/GOlr; free, no API key). Complements locus_go_annotations: QuickGO serves GO (species-agnostic), Planteome serves the plant-specific ontologies — PO (anatomy + developmental stage), TO (traits). The locus is matched across Planteome's searchable bioentity fields and filtered by the organism's NCBI taxon. Returns annotations[] (term_id / term_name / ontology / aspect / evidence / reference) + a by_ontology rollup ({PO: [{term_id, term_name}, ...], TO: [...], PECO: [...]}) deduped on term_id. Coverage is strong for arabidopsis, rice, maize, grape, soybean, tomato; other organisms return an empty list, not an error. Defaults to arabidopsis_thaliana; pass organism= for other species.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max annotations from Planteome (1–200, default 100) |
| locus | string | yes | e.g. AT1G01010 (Arabidopsis), Os01g0100100 (rice) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| annotations | array | yes | – |
| by_ontology | object | yes | namespace → [{term_id, term_name}, ...], deduped on term_id |
| locus | string | yes | – |
| numberOfHits | integer | yes | Total annotations available upstream |
| organism | string | yes | Canonical organism slug |
| returned | integer | yes | Number of annotations in annotations[] |
| taxon | string | yes | NCBI taxon filter applied, e.g. NCBITaxon:3702 |
No examples provided.
locus_variants Known Variants ~232
List natural (germline) variants overlapping a locus's genomic span via Ensembl (rest.ensembl.org; free, no key). Resolves the locus → gene coordinates, then returns EVA/dbSNP-sourced SNPs and indels with id, source, consequence class, alleles, and clinical significance. variant_count is the true overlap total; the variant list is capped for payload size with truncated flagged. Opens the variation axis (distinct from get_sequence / ensembl_region_query). Works for all 12 organisms. Defaults to arabidopsis_thaliana; pass organism= for other species.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max variant rows to return. 'variant_count' always reports the true pre-cap total and 'truncated' says whether the cap bit. |
| locus | string | yes | e.g. AT1G01010 (Arabidopsis), Os01g0100100 (rice RAP-DB) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| gene_end | – | – | Gene span end (1-based) |
| gene_start | – | – | Gene span start (1-based) |
| locus | string | yes | – |
| organism | string | yes | Resolved Ensembl species slug |
| region | string | yes | Queried gene span, e.g. '1:33666-37840' |
| truncated | boolean | yes | True if the variant list was capped |
| variant_count | integer | yes | Total overlapping variants (pre-cap) |
| variants | array | – | Per-variant {id, source, consequence_type, alleles, …} |
No examples provided.
What is the Plant Genomics MCP server?
Plant Genomics is an MCP server listed in the public MCP registry as io.github.musharna/plant-genomics-mcp. Plant genomics MCP, 50 tools across 23 backends with cross-source synthesis. This page covers its PyPI package (plant-genomics-mcp).
Is the Plant Genomics MCP server safe to use?
Plant Genomics scores 86 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Plant Genomics MCP server expose?
Plant Genomics exposes 50 tools: ensembl_plants_lookup_locus, get_gene_xrefs, get_sequence, ensembl_region_query, phytozome_lookup_locus, and 45 more. Their descriptions and schemas cost roughly 9,711 tokens of context every time the server is loaded.
Is the Plant Genomics MCP server still maintained?
Plant Genomics is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Plant Genomics MCP server under?
Plant Genomics declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.