Strava
integrationDirect access to your Strava activities, athlete profile, and rollup stats
Tier-1 integration with Strava. Lists recent activities, fetches activity details, returns athlete profile, and pulls year-to-date and all-time rollup stats. Designed to be composed by fitness and training agents, but also chattable directly for quick "how was my week" or "what did I ride last Saturday" questions.
Source: Strava
Peers (3)
Tools (16)
Get athlete
Fetch the authenticated athlete's profile: name, home city, sex, weight, FTP, measurement preference, and athlete id. Call this once per conversation when you need the athlete id for get_athlete_stats.
Get athlete stats
Fetch rollup totals for the authenticated athlete: recent (last 4 weeks), year-to-date, and all-time โ split by ride, run, and swim. Requires the athlete's numeric id from get_athlete. Strava only allows this endpoint for the authenticated user.
Get athlete koms
List the athlete's KOM / QOM and top-10 segment efforts. Each entry is a segment effort with its segment summary, elapsed time, and kom_rank / pr_rank. Requires the athlete's numeric id.
List activities
List the authenticated athlete's recent activities with summary fields (name, sport_type, start time, distance, moving time, elevation, average speed/HR/power). Bound the window with ``after`` and ``before`` as ISO 8601 strings: a date like '2026-04-11' or a datetime like '2026-04-11T14:00:00'. Always anchor on Today's date from get_instructions when interpreting 'this week', 'last weekend', etc., rather than computing Unix timestamps yourself. To find a particular kind of ride across a long window (e.g. 'my Hydrocut rides', 'all my gravel races'), pass ``name_contains`` and/or ``sport_type`` rather than paging through everything. With a filter the tool scans the window and returns only the matching activities, keeping the response small. Unfiltered results are paginated with ``per_page`` (max 200); a filtered scan ignores ``page`` / ``per_page`` and walks the whole window itself.
Get activity
Fetch the full detail for a single activity by numeric id. Returns summary fields plus description, calories, device, gear, map polyline, segment efforts, splits, and laps. Use list_activities first to find the id.
Get activity streams
Fetch time-series streams for an activity: heart rate, power, cadence, altitude, velocity, temperature, latlng, distance, grade, time. Returns parallel arrays, one value per sample, downsampled to keep the response compact (raw data is ~1s per sample; a multi-hour ride is thousands of points). Default resolution is 5s; pass resolution_secs=1 for full detail on short activities. Prefer a single call with multiple keys over many single-key calls.
Get activity zones
Fetch HR and power zone distribution for an activity: how much time was spent in each zone. Returns one entry per zone type (heartrate, power), each with a ``distribution_buckets`` list.
Update activity
Update editable fields on an existing activity: name, description, sport_type, gear_id, commute, trainer, hide_from_home. Only pass fields you intend to change. Confirm the exact payload with the user in chat before calling โ this is a write that is visible to followers. Requires the activity:write scope. The activity's start time cannot be changed via the Strava API; tell the user to edit start time in the Strava app or website.
Create manual activity
Create a manual activity on Strava. Required: name, sport_type, start_date_local (ISO 8601 without timezone, e.g. '2026-04-13T08:00:00'), duration_seconds. Optional: description, distance_meters, trainer (indoor), commute, average_heartrate, average_watts. When average_heartrate or average_watts is provided, the activity is built as a TCX file and pushed through Strava's file upload pipeline so the metrics actually show up (the plain manual-entry endpoint silently drops summary HR / power). The activity is visible to followers immediately. Confirm the exact payload in chat before calling. Requires the activity:write scope.
List routes
List routes the athlete has built on Strava. Returns name, distance, elevation_gain, estimated_moving_time, and whether starred. Use get_route for full detail and map polyline.
Get route
Fetch full detail for a single route: summary fields plus the map polyline and the list of segments the route crosses.
Explore segments
Find popular segments inside a geographic bounding box. Pass sw_lat, sw_lng, ne_lat, ne_lng. Activity type is 'riding' or 'running'. Optional climb category filters (0-5) are ride-only.
List starred segments
List segments the athlete has starred. Use to find 'favorites' the user cares about for repeat efforts and KOM hunting.
Get segment
Fetch full detail for a segment by id: distance, grade, climb category, effort and athlete counts, star count, map polyline, and the fastest recorded times (xoms).
Get gear
Fetch gear detail (bike or shoe) by id. Gear ids come from the ``bikes`` and ``shoes`` arrays on the athlete profile, or from an activity's ``gear_id`` field.
Reassign gear on activities
Bulk-swap gear_id on recent activities โ helper for the 'retire my old gear and move everything onto the new one' flow. Strava's API has no endpoint to retire gear itself, but this walks activities in an [after, before] window and reassigns any that currently use ``old_gear_id`` to ``new_gear_id`` (or clears them when new_gear_id is 'none'). Defaults to ``preview=True``: returns the list that would change without writing. Call again with ``preview=False`` only after the user has explicitly confirmed the list in chat. Writes are visible to followers and require the activity:write scope.
Chat with Strava
Open chat