MCP resources and prompts
icuvisor exposes MCP Resources for long-form reference material and MCP Prompts for curated starting points in clients that support them. Resources and prompts keep bulky guidance out of every tool description while still letting an AI client fetch it when needed.
Implementation source of truth: internal/resources/ and internal/prompts/.
Resources
| URI | Name | MIME type | Description |
|---|---|---|---|
icuvisor://workout-syntax | workout_syntax | text/markdown | Intervals.icu structured-workout DSL syntax supported by icuvisor. |
icuvisor://event-categories | event_categories | text/markdown | intervals.icu calendar event category enum values and meanings. |
icuvisor://custom-item-schemas | custom_item_schemas | text/markdown | Representative content schemas for intervals.icu custom item types. |
icuvisor://athlete-profile | athlete_profile | application/json | Dynamic cached athlete profile, units, thresholds, zones, and response metadata shaped like get_athlete_profile. This resource is registered when the server has a profile client and is disabled for coach-mode startup to avoid one cached profile representing a whole roster. |
Clients that do not expose resources/list can still use the equivalent MCP tools or ordinary docs pages. Resource URIs are stable identifiers for clients that support MCP Resources.
Prompts
| Prompt | Arguments | Description | Code-truth workflow |
|---|---|---|---|
training_analysis | Optional start_date, end_date | Guide a terse training-load, trend, and best-effort readout from existing icuvisor read tools. | Reads icuvisor://athlete-profile; uses get_athlete_profile, get_fitness, get_training_summary, get_best_efforts, and get_activities. |
recovery_check | Optional date, lookback_days | Guide a wellness-led recovery and readiness check with correct sleep scales and staleness handling. | Reads icuvisor://athlete-profile; uses get_athlete_profile, get_wellness_data, and get_fitness. |
weekly_planning | Optional week_start | Guide week planning from calendar events, training plans, and completed activity context. | Reads icuvisor://athlete-profile, icuvisor://event-categories, and icuvisor://workout-syntax; uses get_athlete_profile, get_events, get_training_plan, get_activities, get_training_summary, and icuvisor_list_advanced_capabilities. |
race_week_taper | Required race_date; optional race_name | Guide race-week taper analysis using calendar race context and recent fitness/load reads. | Reads icuvisor://athlete-profile, icuvisor://event-categories, and icuvisor://workout-syntax; uses get_athlete_profile, get_events, get_fitness, get_training_summary, and get_activities. |
coach_roster_triage | Required athlete_id; optional start_date, end_date | Guide a coach-mode per-athlete scan; athlete_id is a selector, not a credential. | Reads icuvisor://athlete-profile and icuvisor://event-categories; uses get_athlete_profile, get_wellness_data, get_fitness, get_training_summary, get_events, and get_activities. |
Prompt guardrails
The rendered prompts include two default guardrails unless a prompt overrides them:
- Do not request or accept intervals.icu API keys in chat.
- Prefer terse default tool responses; use
include_fullonly when the user asks or evidence is missing.
The race_week_taper and coach_roster_triage prompts validate required arguments before rendering. Missing race_date or athlete_id returns a short user-facing error instead of a stack trace.