ai-endurance-mcp MCP Server

Connect your AI Endurance training platform to ChatGPT, Claude, and other AI assistants for conversational access to your training data, workouts, and performance analytics and to manage your…

Local server

What is the ai-endurance-mcp Server?

ai-endurance-mcp is an MCP project maintained in the ai-endurance/mcp repository. The maintainer describes its purpose as “Connect your AI Endurance training platform to ChatGPT, Claude, and other AI assistants for conversational access to your training data, workouts, and performance analytics and…”. Read the project documentation for the complete scope.

Source

Project documentation · Repository · Discovery listing. This profile records the public documentation checked on 2026-10-08.

Recorded tools

Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.

ToolWhat it does
actType"Ride" or "Run" (must match the user's sport: Runner users only Run, Cyclist users only Ride, Triathlete users both)
zonesObject with zone upper bounds
Enduranceactual hours vs prescribed hours
Tempoactual vs prescribed
Thresholdactual vs prescribed
VO2Maxactual vs prescribed
startDateoptional): YYYY-MM-DD format
endDateoptional): YYYY-MM-DD format
summaryModeoptional): Boolean - if true, returns lightweight overview with minimal fields, no 35-day cap
fullDetailsoptional): Boolean - if true, includes the machine-readable step structure (steps_general, swim_sections, zone distribution, compliance data) and untruncated…
workoutIdDatabase ID of workout (the workout_id field of a getPlannedWorkouts result)
newDateNew date in YYYY-MM-DD format
titleWorkout name
adviceoptional): Coaching notes
essTarget training stress score (required if intensityTime not provided; more than about 100 is a hard workout)
intensityTimeTarget time at intensity in seconds (required if ess not provided)
repeatsoptional): Number of repeats at the intensity, for Tempo and above
dateStrDate in YYYY-MM-DD format
stepsGeneralArray of step objects (zone-based targets)
isTaperoptional): Boolean, marks as taper workout (default false)
intensityType"Endurance", "Tempo", "Threshold", "VO2Max" or "Anaerobic"
swimSectionsArray of swim section objects
strengthOtherTextThe workout description/instructions in free-form text
with_dfa_alpha1optional): Boolean - adds the DFA alpha 1 threshold values and durability_drift
idthe activity id - pass it as activityId to getSwimmingActivityDetail
activityIdthe activity id (the id field of a getCyclingActivity / getRunningActivity result)
with_power_curveoptional): Boolean - adds the peak GAP-pace and running-power curves, % of recent best, effort structure and within_session_durability
with_time_series_metricsoptional): Boolean - adds the raw per-sample arrays. Default false
resolutionoptional): sampling for the raw arrays (same as cycling), so it has no effect unless with_time_series_metrics is true
lapsthe device laps the watch recorded, with per-lap avg_pace_device (the watch's raw pace, not GAP), power, HR, cadence and respiration
durability_driftthis run's internal drift (heart rate, DFA a1, respiration frequency) against your own fitted ~6-week trend at matched work, with the same per-metric verdict…
effort_structuretime spent by intensity band and bout length
within_session_durabilityhow far sustained power fell off as work accumulated within the ride, along the ride's own kJ axis. Needs no HRV, so it is available on essentially any ride…
Timeseries data showing recovery trends (past 14 days by default)
Lap-bylap breakdown
activityType"Ride", "Run" or "Swim"
segmentsoptional): "auto" (default) adds a small table of equal time-window splits (avg power/speed + HR per window); "none" skips it. These are computed windows…
rangeoptional): {"type": "time_seconds", "from": seconds, "to": seconds} restricts the whole analysis to a time window - e.g. the first 30 minutes, or one device…
Overviewmoving/elapsed time, distance, elevation gain
poweravg/max/min, normalized power, variability index, intensity factor
pacingfirst vs second half averages and fade_pct (positive = second half lower power / slower; terrain-naive, so check the per-half ascent/descent before calling a…
sport"cycling" or "running"
isIndooroptional): Activity was performed indoors (trainer/treadmill/virtual). Also swaps the stored weather to the indoor marker, or re-fetches outdoor weather when…
isVirtualoptional): Virtual ride/run (Zwift, Rouvy, etc.). Implies indoor.
isErgModeoptional): Recorded in erg mode (the trainer controls power)
excludeFromCurvesoptional): Exclude from aggregate power/pace-duration curves and recent-best comparisons (e.g. power meter malfunction)
excludeFromModeloptional): Exclude from digital twin (GRU) model training data
excludeFromDurabilityoptional): Exclude from durability curve aggregation
excludeHrDataoptional): Heart rate data is unreliable (e.g. strap failure) - excludes the activity from HRV/alpha 1 aggregation and from model training while keeping the…
flagscurrent values of all seven flags after the update
retrain_queuedwhether the change queued a digital twin retrain (excludeFromModel and excludeHrData do; excludeHrData additionally rebuilds the stored HRV aggregates)
rMSSDheart rate variability - parasympathetic activity)
days_backoptional): How many days of daily recovery data to return, 1-90 (defaults to 14)
Activityspecific orthopedic recovery
Zone-byzone breakdown:
Anaerobicactual vs prescribed