Human Protein Atlas (HPA) MCP — keyless. Expression & localization atlas for human proteins: search genes, get a protein's tissue/cell expression, subcellular localization, protein class, and disease involvement, or list its top-expressing tissues by RNA nTPM.
Three tools with complete schemas and clear descriptions. Naming follows verb_noun convention (search_genes, get_protein, top_tissues). Descriptions are concise (100-180 chars) and explain purpose and prerequisites. All parameters have types and descriptions. However, output schemas are not documented, LLMs cannot predict response structure for planning. Error handling is minimal (generic error objects). No enum constraints on parameters. Parameter descriptions lack format/range guidance (e.g., 'limit' has no bounds). No idempotency hints or destructive operation warnings. Keyless design is good for accessibility but not mentioned in tool descriptions.
Get a trimmed Human Protein Atlas profile for one protein by Ensembl gene id (e.g. "ENSG00000146648"): gene, description, protein class, biological process, molecular function, RNA tissue specificity/distribution, subcellular location, and disease involvement. Use search_genes to find the Ensembl id. Keyless.
Search the Human Protein Atlas for human genes/proteins by gene symbol or keyword. Returns each gene with its Ensembl gene id (needed by get_protein and top_tissues), synonyms, and description. Keyless.
List a protein's top-expressing human tissues by RNA expression (nTPM), highest first, for one Ensembl gene id. Use search_genes to find the Ensembl id. Keyless.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting) for downstream planning or error handling.
Numeric parameters (limit) lack bounds. No min/max specified; LLMs could pass 0, negative, or absurdly large values.
Error responses are generic objects {error: string}. No guidance on recovery (retryable? user-fixable? fatal?). LLMs cannot determine next action.
Parameter descriptions include example IDs (ENSG00000146648). LLMs may reuse these literally in real calls instead of adapting to context.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, idempotentHint). All three tools are read-only and idempotent, but this is not declared for agent optimization.