A clean, extensible foundation for personal training management with LLM-powered coaching via MCP tools
Two tools with verb-noun naming (get_week_summary, get_day_details) and basic descriptions present. However, parameter descriptions are incomplete or missing type clarity. Input schemas visible but lack full JSON Schema rigor (e.g., 'boolean|number' is not valid JSON Schema type union). Output schemas are not documented, LLMs cannot predict response structure. No error handling guidance. Tool descriptions are adequate (100-150 chars) but parameters lack actionable constraints. No enum declarations for include_sessions despite it accepting specific modes. Overall structure is present but falls short of production quality.
Get detailed information about a specific training day including shape, sessions, and metrics
Get a natural language summary of a training week including shape, sessions, and plan
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Incomplete response documentation forces agents to guess at downstream field names.
Parameter 'include_sessions' uses invalid JSON Schema type 'boolean|number'. Should be oneOf with separate boolean and number schemas, or use enum for discrete modes (all/none/threshold).
Parameter descriptions lack actionable constraints. 'include_sessions' description mentions 'numeric threshold' but does not specify range, units, or valid values. 'now_iso_date' marked optional but no guidance on fallback behavior.
No error handling guidance. Code shows internal helper functions (_parse_include_sessions_mode, _parse_now_date) that silently default on invalid input. LLMs receive no recovery hints if calls fail.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Tool descriptions do not explain when to use each tool. get_week_summary vs get_day_details distinction is unclear, LLMs may pick wrong tool. No guidance on typical use cases or prerequisites.