Intervals.icu
integrationDirect access to your intervals.icu training data
Tier-1 integration with intervals.icu. Provides composable tools for fetching athlete profile, activities, wellness, and calendar events, plus creating and deleting workout events and completed activities. Designed to be composed by coaching agents, but also chattable directly for ad-hoc data lookups.
Source: Intervals.icu
Peers (5)
Gym Buddy
Your personal workout encyclopedia
Intervals Agent
AI cycling coach powered by intervals.icu
Mind Body
Recovery, mobility, and a calmer mind, matched to your training
Run Club
Your running coach: plans, paces, and race prep
Sleep Coach
Better sleep starts tonight
Tools (17)
Get athlete profile
Fetch the athlete's profile from intervals.icu. Returns FTP, weight, max HR, resting HR, power/HR zones, and sport settings.
Get recent activities
Fetch the athlete's recent activities/rides. Returns date, type, name, duration, distance, load, IF, average power (icu_average_watts), NP (icu_weighted_avg_watts), EF (icu_efficiency_factor), variability (icu_variability_index), Pw:Hr ratio (icu_power_hr), aerobic decoupling, and average/max HR for each. Use this to understand recent training load and patterns. For historical lookups across a long window (e.g. 'all my TT races back to 2024'), always pass a filter โ `name_contains` and/or `type` โ rather than a huge `limit`. Filtering happens after the fetch, so it returns only the matching activities and keeps the response small. An unfiltered broad request is capped and may be truncated.
Get activity intervals
Get detected intervals for a completed activity. Returns per-interval metrics: duration, distance, avg/max power, normalized power (NP), avg/max HR, avg cadence, avg speed (km/h), w/hr (power-to-HR ratio), EF (efficiency factor, NP/avg HR), and interval type (work/rest/warmup/cooldown). Use this to analyze structured workouts rep-by-rep โ power fade across sets, HR ceiling drift, aerobic decoupling, recovery quality, etc.
Get activity streams
Get second-by-second time-series data for a completed activity. Returns arrays of values for requested stream types (power, HR, cadence, etc.). Use for power curve analysis, HR recovery kinetics, or building custom visualizations. Can be large โ prefer get_activity_intervals for structured workout analysis.
Fix activity data
Correct the recorded sensor streams of a completed activity, mirroring intervals.icu's 'Fix Data' dialog. For each stream you name in `fixes` you can apply value = value * scale + offset (e.g. scale 0.72 to deflate an over-reading power meter), and optionally replace dropouts by carrying the preceding value forward (replace_missing / replace_zeros, limited to runs no longer than max_dropout_secs). Streams: power, cadence, heartrate, altitude (metres), speed (metres/second). WARNING: this OVERWRITES the activity's recorded data and triggers a recalculation of its summary metrics (average/normalized power, TSS). Only run it when the user has explicitly asked to fix or rescale the data, and confirm the activity_id and scale/offset with them first.
Get power curve
Get the athlete's best power for a range of durations over a date range, scoped to a sport โ the aggregated power curve / best-efforts table from intervals.icu's power page. Use to answer 'what's my best 5-minute power this season', to find the current ceiling at a duration before designing a test, or to read peak efforts. Returns watts (and w/kg when weight is known) at each duration, plus an eFTP estimate computed from this range's curve. For the authoritative current eFTP/CP/W' use get_power_model.
Get hr curve
Get the athlete's best (highest sustained) heart rate for a range of durations over a date range, scoped to a sport. Returns bpm at each duration โ useful for estimating max HR, checking HR ceilings, and interpreting effort. Mirrors intervals.icu's HR curve.
Get pace curve
Get the athlete's best pace for a range of distances over a date range, scoped to a sport (Run, Swim, etc.). Returns best speed and pace per distance. Set gap=true for gradient-adjusted pace on hilly runs. Mirrors intervals.icu's pace curve.
Get power model
Get the athlete's current authoritative power model from intervals.icu for a sport: eFTP, critical power (CP), W' (anaerobic capacity), and Pmax. This is the value intervals.icu itself uses and displays. Use it to answer 'what's my eFTP/CP/W' right now'. For a curve over a custom timeframe use get_power_curve (which also returns a date-range eFTP estimate).
Get wellness data
Fetch the athlete's daily wellness/readiness data. Returns CTL (fitness), ATL (fatigue), TSB (form), resting HR, HRV, sleep hours, sleep quality, soreness, fatigue, mood, and weight for each day.
Get calendar events
Fetch events (workouts, races, notes, targets) on the athlete's intervals.icu calendar. Defaults to the upcoming window, but it can look into the past too: pass `days_back` (or an explicit `oldest` date) to find an existing, ongoing, or past entry โ e.g. an injury note that started earlier โ so you can update or delete it. Use this to avoid scheduling conflicts and to find event IDs for update/delete. Optionally filter by category or by a substring of the event name (`name_contains`). intervals.icu matches events by their start date, so to catch an ongoing multi-day entry that began a while ago, widen `days_back`.
Create calendar event
Create a calendar event on the athlete's intervals.icu calendar. Supports WORKOUT (structured workout text), RACE (with A/B/C priority), NOTE (freeform), TARGET (season goal), and FITNESS (manual CTL).
Update calendar event
Update an existing intervals.icu calendar event by id. Use to promote a WORKOUT placeholder to a RACE (category=RACE, priority=A/B/C), change date/time, rename, or rewrite description. Only provided fields are changed; omitted fields stay as-is. Get event_id from get_calendar_events.
Delete calendar event
Delete a planned calendar event by id. Works for any category (WORKOUT, RACE, NOTE, TARGET, FITNESS). Deleting a RACE or TARGET event requires confirm=true โ these are high-stakes entries (A-race, season goal) and should only be removed after explicit user confirmation.
Create manual activity
Log a completed activity on intervals.icu by hand, for a session the athlete never recorded with a device (a pickup soccer game, a gym session, a ride whose computer died). Unlike a calendar NOTE, this is a real completed activity that counts toward training load and shows on the fitness chart. Required: name, type (sport, e.g. 'Ride', 'Run', 'Soccer', 'WeightTraining'), start_date_local (ISO 8601 without timezone, e.g. '2026-04-13T08:00:00'), duration_seconds. Optional: description, distance_meters, training_load (TSS โ set this for sports intervals.icu can't derive load for, like soccer or strength), average_heartrate, average_watts, trainer (indoor), feel (1-5). Confirm the payload in chat before calling. Use create_calendar_event instead for a *planned* future workout or a freeform NOTE.
Update activity
Update the metadata of a completed activity on intervals.icu: assign or clear its gear (bike/shoes), set tags, change the sport type or sub_type, flag it as a race or commute, recolour it, or rewrite its name/description. Only the fields you pass are changed. Get the activity_id from get_recent_activities. Use this to organise or classify existing rides (e.g. tag the last few rides 'group' or 'TT', or set the gear to match another platform). GEAR: gear_id is the intervals.icu gear id, which is the SAME id Strava uses (intervals.icu syncs gear straight from Strava), so a Strava bike/shoe id can be assigned directly. Pass 'none' to clear the gear. TAGS: to add a tag without losing existing ones, use `add_tags` (merged with the ride's current tags); `remove_tags` drops tags. Only use `tags` to overwrite the whole list outright. LIMITATION: intervals.icu cannot update activities imported from Strava through the API. For a Strava-sourced ride, the field has to be changed in Strava (where it syncs back) or edited on the intervals.icu site. This tool detects that case and tells you. It does NOT touch recorded sensor data โ use fix_activity_data for power/HR/cadence streams. This is for *completed* activities; for a *planned* calendar entry use update_calendar_event.
Delete activity
Permanently DELETE a completed activity (a recorded ride/run, or a manually logged session) by id. DESTRUCTIVE and unrecoverable: the activity and its recorded streams are gone, and the deletion removes it from the athlete's training load and fitness chart. This is for *completed activities*; to remove a *planned* calendar entry use delete_calendar_event instead. Only call when the athlete explicitly asks to delete the activity. The `confirm` argument must exactly match the activity's current name: get the id and name from get_recent_activities and read the name back to the athlete before they confirm. For a nameless activity the label is '{type} on {date}' (e.g. 'Ride on 2026-06-19').
Chat with Intervals.icu
Open chat