GTEx — Genotype-Tissue Expression human gene-expression atlas
GTEx MCP defines 5 tools with basic schemas and descriptions. All tools have input schemas with type definitions and most parameters are described. However, descriptions are minimal (10-80 chars, well below the 194-char baseline), lack context on WHEN to use each tool, and omit dependency hints. Parameter descriptions are sparse: 'tissue' in top_expressed_genes lacks format guidance (what is a tissueSiteDetailId?), 'num' lacks explicit range validation in description, and 'gencode_id' vs 'gencode_id_or_symbol' naming is inconsistent. No output schemas documented. Error handling is basic (generic HTTP errors). Tools are read-only (low risk) but lack idempotency hints. Naming follows verb_noun pattern (gene, median_expression) but some names are vague: 'gene' could mean lookup, create, or update, should be 'get_gene'. No tool annotations present.
Gene metadata by Gencode id or symbol.
Median expression across tissues for a gene (TPM).
Significant single-tissue eQTLs for a gene.
List of tissues.
Top expressed genes for a tissue.
Descriptions are too brief (10-80 chars vs 194-char baseline). Missing WHEN to use each tool and dependencies. E.g., 'gene' lacks context: is this a lookup? Does it require a Gencode ID or symbol? When should I call it vs median_expression?
Parameter descriptions lack format/constraint guidance. 'tissue' in top_expressed_genes says 'GTEx tissueSiteDetailId (e.g. "Liver", "Whole_Blood")' but examples in descriptions are anti-pattern, LLMs reuse them literally. Should use enum or pattern constraint instead.
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing what each tool returns. E.g., does 'gene' return gene_id, symbol, chromosome, transcript_count? Unknown.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Inconsistent parameter naming: 'gencode_id_or_symbol' vs 'gencode_id' vs 'gencodeId' (in API calls). Naming mismatch forces LLM to reason about field mappings, increasing errors.
Tool name 'gene' is ambiguous, could mean lookup, create, or update. Should be 'get_gene' to clarify action. Verb_noun naming (get_, list_, search_) helps LLMs parse intent from name alone.