An open, evidence-graded bank of health and performance protocols: behaviors, triggers, progression ladders, and citations. Queryable by agents over MCP.
Two tools with clear, domain-specific purposes and well-structured schemas. Naming is verb-forward (list_, get_) and unambiguous. Descriptions are detailed and contextual (194 - 250 chars, within baseline p10 - p90 range of 34 - 392). Input schemas are properly typed with enums and descriptions. However, output schemas are not explicitly documented in the source, forcing LLMs to infer response structure. Error handling guidance is absent, no recovery hints or categorization. No tool annotations (readOnlyHint, idempotentHint) despite both tools being read-only. Parameter descriptions are thorough but could be more concise.
Get full records by id: rationale, ladder target, triggers, contraindications (`avoidWhen`), evidence summary, citations, and guide link. Pass every id you are considering in one call. Always read `avoidWhen` and cite `evidence.sources` before recommending a protocol to someone.
Return the protocol catalog: id, what to do, what it buys, evidence grade, ladder position, and `indications` (the observable triggers that indicate trying it). Call with no arguments to get all 227 protocols (~18k tokens) and choose among them yourself by comparing the person's actual situation against each protocol's indications. This server does no ranking; you are better at that than it is. Filters are for narrowing a large catalog, not for finding matches. Evidence grades, strongest first: strong, moderate, emerging, anecdotal. Then call get_protocol for the few you picked, to get rationale, contraindications, and citations before recommending.
Output schemas not documented. LLMs cannot infer the structure of list_protocols or get_protocol responses, forcing them to guess at field names and types. This risks malformed downstream reasoning.
No error handling guidance. Descriptions lack recovery hints (e.g., 'If protocol id is invalid, call list_protocols to find valid ids'). Agents cannot self-correct on failures.
Tool annotations missing. Both tools are read-only and idempotent, but lack readOnlyHint and idempotentHint annotations. This prevents agents from optimizing caching and retry logic.
list_protocols description mentions '~18k tokens' and '227 protocols' as examples. LLMs may treat these as constraints rather than current values, causing confusion if the dataset grows.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
get_protocol requires an array of ids but does not specify a maximum length or pagination strategy. Agents could pass hundreds of ids, causing unbounded response size.