Tool reference
This reference is generated from the MCP tool registry. It lists every tool icuvisor registers, grouped by domain, with its toolset tier, safety gate, concise argument schema, and curated input examples where available. Tool names are stable; the color key marks each tool as a read, create, update, or delete operation.
For background on how particular tools behave — how fitness projection is modelled, what interval data really represents, how calendar notes work — see Explanation.
Color key read create update delete
Activities
| Tool | Summary and inputs | Tier | Safety |
|---|---|---|---|
add_activity_message | Append a non-destructive comment/message to one activity when write tools are enabled. Arguments (3)
| core | write |
delete_activity | Delete one activity by activity_id. Arguments (1)
| full toolset | delete |
get_activities | Scan an athlete-local date window and return a paginated activity index: terse unit-disambiguated summary rows with IDs, source/device hints, tags, explicitly requested custom_fields, and Strava-unavailable markers. Arguments (8)
| core | read |
get_activities_around | Find activities recorded near or around a known reference activity_id without asking the model to invent a date window. Arguments (3)
| core | read |
get_activity_details | Get one activity's terse metadata and metrics by activity_id, including upstream activity tags when returned, calories_burned as active/exercise calories (distinct from wellness kcal_consumed), carbs_ingested_g for athlete-logged carb intake, carbs_used_g for upstream carbs-burned estimate, and explicitly requested athlete-defined custom_fields when upstream provides them. Arguments (3)
| core | read |
get_activity_histogram | Use when the prompt asks for a single activity's power, heart-rate, or pace distribution; do not fetch get_activity_streams samples and bin them in chat. Arguments (3)
| full toolset | read |
get_activity_intervals | Get analyzed intervals for one activity by activity_id, including scalar custom interval fields such as lactate under custom_fields when upstream includes them. Arguments (2)
| core | read |
get_activity_messages | List comments and notes on one activity by activity_id. Arguments (4)
| core | read |
get_activity_splits | Get manual or virtual per-km/per-mile activity splits by activity_id. Arguments (3)
| core | read |
get_activity_streams | Get canonical activity stream channels by activity_id. Arguments (3)
| full toolset | read |
get_extended_metrics | Get one activity's upstream-exposed extended metrics by activity_id. Arguments (2)
| full toolset | read |
set_activity_intervals | Set or correct the interval structure on one completed activity by writing a structured workout_doc as the activity's description; intervals.icu re-parses the DSL into rendered intervals overlaid on the recording. Arguments (4)
| full toolset | delete |
update_activity | Rename and/or replace the free-text description of one completed activity by activity_id. Arguments (4)
| core | write |
Workout library
| Tool | Summary and inputs | Tier | Safety |
|---|---|---|---|
apply_training_plan | Apply a workout-library training plan to the athlete calendar from an anchor start date. Arguments (4)
Input examples (2) | full toolset | write |
create_workout | Create a reusable workout-library template, not a calendar event. Arguments (6)
Input examples (2) | full toolset | write |
delete_workout | Delete one reusable workout-library template by workout_id. Arguments (1)
| full toolset | delete |
get_annual_training_plan | Use when the prompt asks about annual training plan, season phase, weekly load/TSS targets, recovery weeks, taper context, or periodization summary; do not manually join raw get_events rows in chat. Arguments (5)
| full toolset | read |
get_planning_context | Fetch read-only weekly planning context without creating an ATP or calendar writes: athlete-local week events/workouts, active training-plan assignment summary, current fitness context, upcoming races, and caveats. Arguments (2)
| full toolset | read |
get_training_plan | Fetch the athlete's active training-plan assignment, not calendar events or workout-library templates. Arguments (1)
| full toolset | read |
get_workout_library | List workout-library folders and plans, not calendar events or the active training-plan assignment. Arguments (1)
| full toolset | read |
get_workouts_in_folder | List workout-library templates inside one folder or plan by folder_id. Arguments (2)
| full toolset | read |
update_workout | Update one reusable workout-library template by workout_id with sparse fields only. Arguments (7)
Input examples (2) | full toolset | write |
validate_workout | Validate an intervals.icu workout description, a structured workout_doc, or both, and return the canonical merged DSL plus estimated duration that icuvisor would submit on a write. Arguments (2)
Input examples (2) | core | read |
Events & calendar
| Tool | Summary and inputs | Tier | Safety |
|---|---|---|---|
add_or_update_event | Create or update a non-destructive calendar event such as a planned workout, race, or note. Arguments (15)
Input examples (2) | core | write |
add_unavailable_date_range | Create unavailable calendar markers across an inclusive athlete-local date range for Sick, Injured, or Holiday/time-off blocks. Arguments (6)
Input examples (2) | core | write |
delete_event | Delete one calendar event by event_id. Arguments (1)
| full toolset | delete |
delete_events_by_date_range | Delete calendar events in a required athlete-local YYYY-MM-DD start_date/end_date range, optionally filtered by category. Arguments (3)
| full toolset | delete |
get_event_by_id | Fetch a single calendar event detail by event_id. Arguments (6)
| core | read |
get_events | List calendar events across a bounded athlete-local YYYY-MM-DD date range. Arguments (7)
| core | read |
link_activity_to_event | Manually pair one completed activity with one planned calendar event when intervals.icu auto-pairing misses (forum #97). Arguments (3)
| core | write |
resolve_calendar_dates | Resolve athlete-local calendar anchors before planning, scheduling, or answering date-sensitive prompts such as today, tomorrow, next week, or N days from today. Arguments (2)
| core | read |
Fitness metrics
| Tool | Summary and inputs | Tier | Safety |
|---|---|---|---|
get_best_efforts | Get upstream best efforts grouped by sport and default/requested power, heart-rate, and pace buckets. Arguments (6)
| core | read |
get_fitness | Get CTL, ATL, and TSB fitness trends for a local date range. Arguments (4)
| core | read |
get_fitness_projection | Use when the prompt asks to project CTL, ATL, or TSB forward; do not fetch get_fitness rows and model the curve in chat. Arguments (10)
| full toolset | read |
get_hr_curves | Get upstream-computed heart-rate best-effort curves for a date range. Arguments (5)
| full toolset | read |
get_pace_curves | Get upstream-computed pace best-effort curves for a date range. Arguments (5)
| full toolset | read |
get_performance_potential | Summarize per-sport performance potential from explicit athlete profile thresholds plus upstream power, pace, and heart-rate curve anchors. Arguments (7)
| full toolset | read |
get_power_curves | Get the upstream-computed mean-maximal power curve for a date range. Arguments (5)
| full toolset | read |
get_today | Answer how's today looking with one terse daily digest: today's CTL/ATL/TSB fitness, wellness, completed activities, planned events, and NOTE/race annotations. Arguments (1)
| core | read |
get_training_summary | Get aggregated training volume, neutral training load, sRPE, and upstream zone-order totals for a local date range. Arguments (3)
| core | read |
Analyzers
| Tool | Summary and inputs | Tier | Safety |
|---|---|---|---|
analyze_correlation | Use when the prompt asks whether two analysis metrics are correlated or lagged together, including explicitly requested activity custom fields via metric custom:<field_code> plus custom_fields; do not fetch get_* rows or streams and reduce them in chat. Arguments (9)
| full toolset | read |
analyze_distribution | Use when the prompt asks for an analysis metric's distribution, histogram, quantiles, or outliers; do not fetch get_* rows or streams and reduce them in chat. Arguments (7)
| full toolset | read |
analyze_efforts_delta | Use when the prompt asks about named best-effort curve buckets (for example 5 min power, 20 min HR, or 5k pace) and current-vs-baseline deltas; do not fetch get_* rows or streams and reduce them in chat. Arguments (7)
| full toolset | read |
analyze_trend | Use when the prompt asks for slope or rolling trend direction over time for one analysis metric; do not fetch get_* rows or streams and reduce them in chat. Arguments (6)
| core | read |
compute_activity_segment_stats | Use when the prompt asks for mean, median, p90, normalized power, intensity factor, drift, or decoupling over an explicit activity segment, including first-vs-last distance comparisons, as the analyzer-family raw-stream exception, or when get_activity_intervals reports a single averaged/collapsed lap caveat and the user needs stream-based evidence before judging interval execution; do not fetch get_activity_streams samples and reduce them in chat. Arguments (9)
| full toolset | read |
compute_baseline | Use when the prompt asks whether current metric values are unusual relative to a historical baseline via z-score/status bands; do not fetch get_* rows or streams and reduce them in chat. Arguments (8)
| core | read |
compute_compliance_rate | Use when the prompt asks how well completed activities matched scheduled workouts, targets, sport, or event type; do not fetch get_* rows or streams and reduce them in chat. Arguments (8)
| full toolset | read |
compute_load_balance | Use when the prompt asks whether training distribution is polarized, pyramidal, threshold-heavy, or balanced across low/moderate/high intensity; do not fetch get_* rows or streams and reduce them in chat. Arguments (5)
| full toolset | read |
compute_zone_time | Use when the prompt asks for zone-time totals or intensity distribution (seconds/share in Z1-Zn) across activities in a date window; do not fetch get_* rows or streams and reduce them in chat. Arguments (5)
| core | read |
get_data_quality_report | Report whether icuvisor can see enough activities, streams, load, wellness, thresholds, and calendar data to answer common coaching questions, with actionable diagnostics for Strava restrictions, HR/TRIMP-only load, stale wellness, missing thresholds, and sparse history. Arguments (4)
| core | read |
Wellness
| Tool | Summary and inputs | Tier | Safety |
|---|---|---|---|
get_wellness_data | Get daily wellness rows for a local date range with distinct sleepQuality, sleepScore, sleepSecs, nutrition keys calories_intake/carbs_g/protein_g/fat_g when present, custom fields, native provider sidecars, and provider-native provenance scale labels for sleep/readiness. Arguments (4)
| core | read |
update_wellness | Update one athlete-local wellness row with sparse manual fields: subjective scales, measurements, injury text, and locked; legacy feel remains in the input schema for compatibility but rejects with field_not_writable: feel (not accepted by intervals.icu wellness write), device-owned sleepScore rejects with field_not_writable: sleepScore (device-managed), and _native rejects with field_not_writable: _native (bridge-managed). Arguments (24)
Input examples (2) | core | write |
Custom items
| Tool | Summary and inputs | Tier | Safety |
|---|---|---|---|
create_custom_item | Create one custom item definition. Arguments (8)
Input examples (2) | full toolset | write |
delete_custom_item | Delete one custom item definition by item_id. Arguments (1)
| full toolset | delete |
get_custom_item_by_id | Fetch one custom item by item_id and preserve its full content payload. Arguments (1)
| full toolset | read |
get_custom_items | List custom item definitions such as charts, fields, streams, panels, histograms, maps, and zones. Arguments (1)
| full toolset | read |
update_custom_item | Update one custom item definition by item_id with sparse fields only. Arguments (8)
Input examples (2) | full toolset | write |
Sport settings
| Tool | Summary and inputs | Tier | Safety |
|---|---|---|---|
delete_gear | Delete one gear item by gear_id. Arguments (1)
| full toolset | delete |
delete_sport_settings | Delete one sport-settings definition by sport_settings_id. Arguments (1)
| full toolset | delete |
get_athlete_profile | Get the configured athlete profile, FTP/thresholds, zones, and sport settings from intervals.icu. Arguments (1)
| core | read |
get_gear_list | List the athlete's intervals.icu gear with IDs and human-readable names for resolving activity gear_id fields. Arguments (2)
| full toolset | read |
update_sport_settings | Update one sport's FTP, threshold heart rate, threshold pace, or zone definitions referenced by get_athlete_profile _meta.warnings. Arguments (6)
Input examples (2) | full toolset | write |
Coach mode
| Tool | Summary and inputs | Tier | Safety |
|---|---|---|---|
list_athletes | List the coach-mode roster configured for this icuvisor server. | core | read |
select_athlete | Select the default target athlete for subsequent coach-mode tool calls in this MCP session. Arguments (1)
| core | read |
Server
| Tool | Summary and inputs | Tier | Safety |
|---|---|---|---|
icuvisor_check_server_version | Check whether the MCP client is using stale icuvisor tool descriptions after an upgrade. | core | read |
icuvisor_list_advanced_capabilities | Use only when the user asks what other icuvisor tools are available or when a requested advanced/delete capability is not visible in the current tool catalog. | core | read |