A unified MCP server for 299 life science APIs and databases
Two tools with complete schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. findTools has minimal parameter descriptions; callTools has better descriptions but lacks output schema documentation. Neither tool documents error recovery paths or provides actionable error guidance. Parameter naming is inconsistent (endpoint vs query). No tool annotations (readOnlyHint, idempotentHint). Descriptions are adequate (194-250 chars) but lack WHEN-to-use context and dependency hints. Output structure is returned as TOON-encoded text rather than structured JSON, forcing LLM parsing overhead.
Execute one or more life science endpoints. Each endpoint aggregates data from dozens of authoritative sources and returns a unified response. Options: - fields: request specific output groups (e.g. ["identity","structure"]) to reduce response size - compact: true returns shape summaries instead of full data — use this first to see what's available, then request specific fields - provenance: true includes source attribution for each field
Find life science tools by keyword, domain, or intent. Returns endpoint names, descriptions, accepted input, available output groups, and tags — enough to call them directly.
Output schema not documented. Both tools return TOON-encoded text (via reply() helper) rather than structured JSON. LLMs cannot parse unstructured text output reliably, they must infer field names and types from the encoded string, wasting tokens and inviting hallucination.
Parameter descriptions incomplete or missing. findTools 'query' and 'tags' parameters lack descriptions explaining what query syntax is supported, what tags are available, or how filtering works. callTools 'batch' parameter lacks description of batch semantics (parallel vs sequential, failure handling).
Error handling lacks recovery guidance. callTools returns generic error messages ('Unknown endpoint', 'Error: <message>') without suggesting next steps. No distinction between retryable vs fatal errors. LLM cannot self-correct without explicit guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2025-06-18+ | v2 |
Tool naming ambiguity. 'callTools' is generic and does not reflect that it executes life-science endpoints. 'findTools' suggests discovery but actually searches an endpoint index. Names should be verb_noun (e.g., search_endpoints, execute_endpoint) to clarify intent.
No tool annotations. Neither tool declares readOnlyHint (both are read-only) or idempotentHint (both are idempotent). Annotations help agents reason about safety and retry logic.