analyzeActivityStream
ChatGPTComputes deterministic, quantitative analytics for ONE completed activity server-side and returns a compact summary. PREFER this over the Detail tools whenever the user wants NUMBERS: normalized power, intensity factor, variability, time-in-zone, pacing/fade (first vs second half), or channel extremes (avg/max/min power, HR, cadence, pace) - it is more accurate and far cheaper than reading raw streams and doing the maths yourself. For runs the pace channel is GAP (gradient adjusted pace), returned as gap_m_per_s / avg_gap_m_per_s / pacing basis gap_m_per_s - NOT the watch's raw pace, and never a basis for re-deriving distance. First get the activity id from getCyclingActivity / getRunningActivity / getSwimmingActivity, then call this with that id. NOT for: durability, aerobic decoupling / HR drift, DFA alpha1 thresholds, or the mean-max curve - for those use the matching Detail tool with with_dfa_alpha1 / with_power_curve. The optional range restricts the analysis to a time window: ONLY use numeric bounds the user gives, or a device lap's start_s/end_s from the Detail tools' laps array - do NOT guess bounds for vague targets like "the climb". segments="auto" adds equal time-window splits; these are COMPUTED windows, not the device laps the athlete recorded. fade_pct > 0 means the second half was LOWER power / slower; it is terrain-naive, so read the per-half ascent/descent before calling a fade physiological.
changeWorkoutAdvice
ChatGPTAdds or updates advice for a specific workout. Allows adding additional instructions or tips without modifying the workout structure.
changeWorkoutDate
ChatGPTChanges the date of a specific workout in the training plan. Updates the workout schedule and syncs with all connected platforms (Garmin, TrainingPeaks, etc.).
changeWorkoutIntensity
ChatGPTChanges the intensity (load) of an existing planned ride or run workout in place. REQUIRED: specify ess (new training stress score, more than about 100 is a hard workout) or intensityTime (new time at intensity in seconds), or both. LIMITATION: this only works on workouts with a scalable .steps structure (algorithm-generated plan workouts and workouts from createRideRunWorkoutByIntensity both qualify) - check has_steps_general from getPlannedWorkouts first. On a structured (steps_general) workout it fails cleanly with WORKOUT_HAS_NO_STEPS; in that case call skipWorkout and recreate the workout with createRideRunWorkout or createRideRunWorkoutByIntensity instead. The zone is preserved automatically - the step durations are recomputed at the workout's existing intensity zone.
createRideRunWorkout
ChatGPTCreates a new custom ride or run workout with structured steps using zone-based targets (Endurance/Tempo/Threshold/VO2Max/Anaerobic). For Ride: zones map to power. For Run: zones map to pace or running power based on the user's preference. Supports single steps (WorkoutStep) and repeated interval blocks (WorkoutRepeatStep). Steps execute in stepOrder.
createRideRunWorkoutByIntensity
ChatGPTCreates a simple ride or run workout from one intensity zone plus a target load - no step structure needed. REQUIRED: specify ess (training stress score, more than about 100 is a hard workout) or intensityTime (seconds at intensity), or both. The act type must match the user's sport: Runner users only Run, Cyclist users only Ride, Triathlete users both (zones for the other sport do not exist otherwise). For structured workouts with custom warmup/interval/cooldown steps use createRideRunWorkout instead. If a workout with the same date, sport and load already exists, that existing workout is returned instead of a duplicate.
createStrengthOtherWorkout
ChatGPTCreates a new strength or other workout (strength training, cross-country skiing, hiking, yoga, etc.) for the user on a specified date.
createSwimWorkout
ChatGPTCreates a new custom swim workout with structured sections. Supports warmup, preparation, main sets, and cooldown with detailed interval specifications including swim strokes, equipment, zones, and rest periods.
getAvailability
ChatGPTRetrieves user training availability including weekly hours breakdown and daily schedule for each activity type.
getCyclingActivity
ChatGPTRetrieves a list of completed cycling activities. Returns at most the 40 most recent activities if no date range is specified.
getCyclingActivityDetail
ChatGPTRetrieves detailed information about a specific cycling activity by its ID. This includes all the basic activity data plus time series metrics data. Use this when you need in-depth analysis of a single activity, not when fetching a list of activities.
getNutritionModel
ChatGPTRetrieves the user nutrition model with daily calorie and macronutrient requirements (protein, fat, carbohydrates) including lower and upper bounds. Returns data for the past day plus 5 future days based on planned workouts and user physiology.
getOtherActivity
ChatGPTRetrieves a list of the user's "other" activities with summary data - any sport outside running, cycling, and swimming (e.g. strength training, cross-country skiing, yoga, hiking, walking). Use this when the activity is not a run, ride, or swim. Returns at most the 40 most recent activities when a date range is given, otherwise the 20 most recent. Other activities are duration-only: there is NO time-series/stream data and NO detail tool for them, so do not expect power, pace, HRV, or per-second metrics.
getPlanProgress
ChatGPTRetrieves user training plan progress showing how well they are adhering to their prescribed training zones. Returns progress data comparing actual training completed versus what was prescribed in the plan, broken down by training zones (Endurance, Tempo, Threshold, VO2Max, Anaerobic). For triathletes, includes activity-specific progress for Ride, Run, and Swim. Always includes weekly compliance summary. Pass fullDetails=true to also get per-workout compliance breakdown.
getPlannedWorkouts
ChatGPTRetrieves a list of planned workouts for a user between two dates. Default range is next 14 days from today. Use summaryMode=true for lightweight overview of entire plan.
getPrediction
ChatGPTRetrieves performance predictions from AI Endurance machine learning models including future forecasts, historical data, and model validation metrics.
getRaceGoalEvent
ChatGPTRetrieves primary and secondary race goal events with performance predictions and priorities.
getRecoveryModel
ChatGPTRetrieves user recovery model data including cardio recovery, DFA alpha 1, HRV (rMSSD), resting heart rate, external stress score, and orthopedic (joint/muscle) recovery for cycling, running, and swimming. Returns time-series data showing recovery trends.
getRunningActivity
ChatGPTRetrieves a list of completed running activities. Returns at most the 40 most recent activities if no date range is specified.
getRunningActivityDetail
ChatGPTRetrieves detailed information about a specific running activity by its ID. This includes all the basic activity data plus time series metrics data. Use this when you need in-depth analysis of a single activity, not when fetching a list of activities.
getSwimmingActivity
ChatGPTRetrieves a list of completed swimming activities. Returns at most the 40 most recent activities if no date range is specified.
getSwimmingActivityDetail
ChatGPTRetrieves detailed information about a specific swimming activity by its ID. This includes all the basic activity data plus time series metrics data. Use this when you need in-depth analysis of a single activity, not when fetching a list of activities.
getUser
ChatGPTRetrieves comprehensive user data from AI Endurance including training zones, preferences, and physiological metrics.
setActivityFlags
ChatGPTSets per-activity flags on a cycling or running activity: indoor, virtual (Zwift etc.), erg mode, and read-time analysis exclusions (power/pace curves, digital twin model training, durability, unreliable heart rate data). Only pass the flags to change; others stay untouched. Use when the user says an activity was misdetected (e.g. an indoor ride treated as outdoor) or wants an activity with bad sensor data excluded from analysis. Setting isIndoor also updates the stored activity weather (indoor marker, or a re-fetch when flipped back to outdoor). Get the activity id from getCyclingActivity/getRunningActivity results.
setZones
ChatGPTSets training zones for a specific activity type (Run or Ride). For runners and triathletes using running power, automatically manages both pace and power zones. IMPORTANT: Check existing zones with getUser before setting new zones.
skipWorkout
ChatGPTSkips (removes) a specific workout from the training plan. The workout will be marked as skipped.