Every Garmin Connect read and write this map tracks, and the garmin-mcp tool, resource or parameter that serves it.

Coverage:

  • full: garmin-mcp answers the question. The answer is a dense summary from the local cache, not raw Garmin JSON.
  • partial: garmin-mcp covers the main use, but some fields or options are missing. The note says what is missing.
  • missing: not served yet; the note says what would be needed.

All reads come from the local SQLite cache. Data that garmin-mcp does not sync is not available, even if the client has a method for it.

Totals for the 111 reads: 55 full, 16 partial, 40 missing.

Reads

Activities

Garmin Connect data garmin-mcp Coverage Note
Activity list, newest first get_activities limit, cursor full  
Activities in a date range, by type get_activities from, to, type, limit, cursor full type matches the Garmin type key partially
Activities on one day get_activities from = to = date full  
Activity count garmin://sync-status → tables partial counts activities in the local cache, not on the account
Activity summary get_activity id, detail: "summary" full  
Activity laps get_activity detail: "splits" full laps (lapDTOs)
Typed splits (run/walk/stand intervals) get_activity detail: "splits" partial laps only; typed splits are not fetched.
Split summaries get_activity detail: "splits" partial laps only; split summaries are not fetched.
Time in heart rate zones get_activity detail: "hr_zones" full  
Time in power zones get_activity detail: "power_zones" full  
Activity weather get_activity detail: "weather" full always metric (°C, km/h)
Strength exercise sets get_activity detail: "exercise_sets" full rest sets become rest_after of the preceding set
Gear used in an activity get_activity → gear_uuid, name from get_gear partial one gear item (the one in the activity list), not the full gear list of the activity
Activity types garmin://activity-types full type keys with parent type, from the reference sync; the same keys get_activities type and update_activity type take
Training effect of an activity get_activity → training_effect, training_load full  
Activity file (FIT, GPX, TCX, KML, CSV) download_activity_file id, format, output_dir full FIT is unzipped
FIT file messages — missing FIT parsing.
FIT data (Di2, power) — missing FIT parsing.
Power-duration curve — missing  

Daily health

Garmin Connect data garmin-mcp Coverage Note
Daily stats query_health metrics: [steps, calories, resting_hr, stress, body_battery, intensity_minutes, floors], from = to = date full daily distance as distance_km next to steps
Daily user summary as daily stats full as daily stats
Daily stats over a date range query_health metrics: [steps, calories], from, to full  
Daily stats with body composition query_health + get_body_composition full two calls
Energy balance get_period_summary → energy partial burned vs resting only, week, month or range; food intake is nutrition.
Daily steps query_health metrics: [steps] full  
Weekly steps query_health metrics: [steps], granularity: "week" full  
Steps in 15-minute intervals — missing 15-minute series.
Resting heart rate query_health metrics: [resting_hr] full  
Daily heart rate summary (min, max, resting) query_health metrics: [resting_hr] → hr_min_bpm, hr_max_bpm full  
Intraday heart rate — missing intraday series.
Daily stress query_health metrics: [stress] full daily average
Weekly stress query_health metrics: [stress], granularity: "week" full  
Intraday stress — missing intraday series.
All-day stress with Body Battery values — missing intraday series.
Body Battery query_health metrics: [body_battery] partial daily high/low; no events.
Body Battery events — missing  
Daily respiration query_health metrics: [respiration] full  
Intraday respiration — missing intraday series.
Pulse Ox (SpO2) query_health metrics: [spo2], get_sleep → avg_spo2_pct partial averages only; intraday readings
Weekly intensity minutes query_health metrics: [intensity_minutes], granularity: "week" full  
Floors query_health metrics: [floors] full floors climbed per day; no descended floors or 15-minute series
Training readiness get_training_status to = date → readiness full  
Morning training readiness get_training_status → readiness full morning (AFTER_WAKEUP_RESET) value is preferred
Recovery time remaining get_training_status to = date → recovery.remaining_h full newest readiness snapshot of the day; no fallback to recovery time of recent activities
Body composition get_body_composition from, to full  
Blood pressure — missing not planned yet.
Hydration — missing client has getHydration, not synced.
All-day events — missing  
Lifestyle logging — missing  

Sleep

Garmin Connect data garmin-mcp Coverage Note
Sleep of one night, full detail get_sleep date partial stages, score, SpO2, respiration, HRV; no per-minute series ()
Sleep summary of one night get_sleep date full  
Sleep over a date range get_sleep from, to full adds averages and trend

Training

Garmin Connect data garmin-mcp Coverage Note
Training status get_training_status to = date full  
Training load trend get_training_status from, to, include_series: true full garmin_load_model: CTL/ATL/TSB from Garmin’s training load per activity; the own TSS model (power, pace, heart rate, RPE) is get_load
Training load balance get_training_status to = date → load_focus full bands with targets and below/within/above
VO2max trend get_training_status from, to → vo2max.running_trend partial trend, not the daily series
HRV of one night query_health metrics: [hrv] → hrv_status, hrv_baseline_low_ms, hrv_baseline_high_ms; get_sleep date partial last-night average, status and baseline; no readings ()
HRV trend query_health metrics: [hrv], from, to full  
Respiration trend query_health metrics: [respiration], from, to full  
Progress summary between dates get_period_summary period: "range", from, to; get_activities full any range up to 366 days; period week or month with anchor_date for calendar periods
Cycling FTP garmin://profile → power_zones[].ftp_w full  
Lactate threshold garmin://profile → lactate_threshold_hr_bpm partial current HR only; no pace or history.
Endurance score get_training_status → metrics.endurance_score partial latest score, class and weekly averages of the 4 weeks before the sync; no arbitrary range, no contributors.
Hill score get_training_status → metrics.hill_score partial latest overall/strength/endurance and the 4-week max before the sync; no arbitrary range.
Fitness age get_training_status to = date → metrics.fitness_age partial current value saved by each training sync that reaches today (one row per sync day); dates that were never synced have no value.; no component breakdown
Race predictions get_training_status → metrics.race_predictions full 5k, 10k, half marathon, marathon; older predictions stay per sync day
Personal records get_training_status → metrics.personal_records full  
Heat and altitude acclimation get_training_status to = date → metrics.acclimation partial current value saved by each training sync that reaches today (one row per sync day); dates that were never synced have no value.
Running tolerance — missing no client method.
Running tolerance trend — missing no client method.

Workouts and calendar

Garmin Connect data garmin-mcp Coverage Note
Workout library list_workouts limit, sport full  
One workout get_workout id full readable steps instead of raw JSON; from the cache for 1 h (reference TTL)
Scheduled workouts list_workouts from, to → upcoming_schedule full any date range, past or future; default today + 60 days
Garmin Coach / adaptive plan workouts — missing  
Training plan workouts — missing  
Workout as a FIT file — missing  
Calendar events and races list_workouts from, to → upcoming_events partial any date range; the custom goal time is not fetched (one extra request per event;)

Profile, gear, devices, weight

Garmin Connect data garmin-mcp Coverage Note
User profile garmin://profile full  
User settings garmin://profile full units, weight, height, birth date, VO2max, zones
Full name garmin://profile → name full  
Unit system garmin://profile → units full  
Heart rate zones garmin://profile → hr_zones, get_thresholds → zones full all sports at once; get_thresholds also has the power zones, for clients without resources
Gear and gear stats get_gear include_activities full stats always included
Devices get_devices full  
Device last used get_devices → last_sync_utc full  
Primary training device get_devices → primary full  
Device settings get_devices → settings full every device, not one by id; time/date format, units, tones, activity tracking alerts, alarm counts
Device alarms — missing part of device settings.
Device solar data — missing  
Weigh-ins over a date range get_body_composition from, to full  
Weigh-ins of one day get_body_composition from = to = date full  

Courses

Garmin Connect data garmin-mcp Coverage Note
Courses — missing not planned yet.
Course details — missing  
Course as GPX — missing  

Stage 4: nutrition, women’s health, challenges, badges

Garmin Connect data garmin-mcp Coverage Note
Daily food log — missing  
Nutrition summary over a date range — missing  
Daily meals — missing  
Daily nutrition settings — missing  
Food search — missing  
Custom foods — missing  
Custom food serving units — missing  
Pregnancy summary — missing  
Menstrual data for a day — missing  
Menstrual calendar — missing  
Earned badges — missing  
Ad-hoc challenges — missing  
Available badge challenges — missing  
Badge challenges — missing  
Non-completed badge challenges — missing  
Virtual challenges in progress — missing  
Goals — missing goals.

Writes

garmin-mcp deliberately has few writes; listed so nothing disappears silently.

Garmin Connect write garmin-mcp
Activity name, type, description, perceived effort, feel update_activity name, type, description, rpe, feel
Activity event type — ()
Manual activity — ()
Workout from a preset (run intervals, walk/run, easy Z2, strength circuit) create_workout preset (with dry_run: true first: steps and estimated duration, nothing saved)
Workout from typed steps (nestable repeats, HR/pace/power/cadence targets, strength exercises with load) create_workout definition (dry_run: true shows it first)
Workout from raw Garmin JSON create_workout garmin_json (one per call; dry_run: true shows it first)
Edit a saved workout create_workout workout_id (opt-in GARMIN_ENABLE_DESTRUCTIVE; overwrites in place, the id and calendar entries stay)
Schedule workouts on dates schedule_workouts items
Unschedule workouts schedule_workouts unschedule (schedule ids; the workout stays in the library)
Delete workouts delete_workout (opt-in GARMIN_ENABLE_DESTRUCTIVE)
Delete weigh-ins delete_weigh_in (opt-in, one sample)
Add weigh-in or body composition — (client has addWeighIn;)
Blood pressure — ()
Add or remove gear on an activity — ()
Heart rate zones — ()
Reprocess data on Garmin’s side — (closest: garmin_sync force: true, which re-downloads instead of asking Garmin to reprocess)
FIT download directory (local setting) GARMIN_FIT_DOWNLOAD_DIR or download_activity_file output_dir
Upload or delete a course — ()
Hydration, nutrition settings, custom foods, food log — ()

Workout templates are served by the presets of create_workout and the plan_next_week prompt.

Computed analytics

Not Garmin Connect reads: these are computed by garmin-mcp from data already in the local cache, so they are not part of the totals above. Formulas and defaults: Training analytics.

Computed data garmin-mcp Built from
Own load model: TSS per activity (power, pace, heart rate or RPE), CTL/ATL/TSB, ACWR, monotony, strain, flags get_load activities (normalized power, grade adjusted speed, heart rate, duration), daily resting heart rate, threshold history
Weekly volume per sport, 3-zone intensity split, efficiency trend get_load include_activities, include_efficiency activities (HR zones, speed, grade adjusted speed, normalized power)
Morning GO / MODIFY / REST decision get_readiness HRV, resting heart rate, sleep, Body Battery, stress, training readiness, the load model
Threshold history (LTHR per sport, LT1, HRmax, FTP, VO2max…) get_thresholds, set_threshold Garmin profile values recorded on each change, plus your own test results
Activities from Garmin Connect CSV exports garmin import-activities (CLI) for dates the synced activities do not cover