MCP server exposing intervals.icu weekly training data as tools and resources for AI coaching
The server provides 5 tools with mixed quality. Tool names are action-oriented (prepare_, get_, list_, validate_, upload_), which is good. However, descriptions vary significantly in completeness. Parameter schemas are present but lack detailed descriptions for most parameters. The two read-only data retrieval tools (prepare_week_data, get_latest_activities) have better structure, while the utility tools (validate_week_plan, upload_week_plan) are sparse on parameter guidance. No output schemas are documented in the visible code, forcing LLMs to infer response structure. Error handling is minimal, no recovery guidance, categorization, or actionable error messages visible.
returns a compact list of latest rides
lists the caller's own workout library entries with optional filtering and tagging
runs the full data pipeline and returns consolidated coach input JSON (activity/fueling window controlled by lookback_days)
uploads a JSON training plan to intervals.icu
validates plan JSON against upload schema
No output schemas documented. LLMs cannot infer what fields tools return, forcing them to guess or make wasteful follow-up calls to understand response structure.
Parameter descriptions are sparse or missing detail. 'limit' has no bounds; 'match_mode' is not formally constrained as an enum; 'plan_json' lacks guidance on required fields or structure.
No error handling guidance or recovery paths. Tools return errors but do not tell LLMs what to do next, how to self-correct, or whether to retry.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Short descriptions undersell tool purpose. 'get_latest_activities' is 33 chars (below sweet spot); 'validate_week_plan' is 55 chars. Descriptions lack WHEN to call each tool and how they differ.
No pagination or result-limiting guidance. 'list_library_workouts' accepts a limit but the tool description doesn't state the cap or default, risking context window exhaustion.
Write operations lack confirmation or dry-run guidance. 'upload_week_plan' is irreversible but no description warns of side effects or suggests a validation-before-execute pattern.