Skip to content

Tools reference

163 tools, generated from the running server: 114 read-only, 24 writes, 25 destructive-capable (edits, deletions and overwriting filesystem exports; confirmation only where documented). Tool names, parameters and descriptions follow Taxuspt/garmin_mcp, so clients written for it keep working.

Every result ends with a provenance line: served from the mirror (and when it was fetched), fetched from Garmin just now, or stale and why. Bounded JSON results also carry structured data. See how sync works.

Read garmin://usage for resource URI examples, prompt names and API costs, including in clients without template discovery. See MCP context and API budget. Local-only tools cost no Garmin requests; cache-first tools may fetch missing/stale data, and ranges, pagination, batches and write refetches multiply that cost. General upstream quota is unknown; check timestamped local status and respect cooldowns. Never blindly replay an ambiguous write. Hints describe behavior, not authorization or spending caps.

Profiles

GARMIN_TOOL_PROFILE narrows the set a client sees; GARMIN_ENABLED_TOOLS and GARMIN_DISABLED_TOOLS add and remove names. The three mirror tools are in every profile.

Profile Tools
minimal 23: garmin_query, garmin_schema, garmin_sync_status, get_activities, get_activities_by_date, get_activity, get_activity_splits, get_body_battery, get_daily_steps, get_full_name, get_heart_rate_zones, get_heart_rates_summary, get_hrv_data, get_sleep_data, get_sleep_summary, get_stats, get_stress_summary, get_training_readiness, get_training_status, get_unit_system, get_user_profile, get_user_summary, get_userprofile_settings
health 56: add_body_composition, add_hydration_data, add_weigh_in, add_weigh_in_with_timestamps, delete_weigh_ins, garmin_query, garmin_schema, garmin_sync_status, get_all_day_events, get_all_day_stress, get_blood_pressure, get_body_battery, get_body_battery_events, get_body_composition, get_daily_steps, get_daily_weigh_ins, get_energy_balance, get_fitnessage_data, get_floors, get_full_name, get_heart_rate_zones, get_heart_rates, get_heart_rates_summary, get_hrv_data, get_hrv_trend, get_hydration_data, get_lifestyle_logging_data, get_menstrual_calendar_data, get_menstrual_data_for_date, get_morning_training_readiness, get_pregnancy_summary, get_recovery_time_remaining, get_respiration_data, get_respiration_summary, get_respiration_trend, get_rhr_day, get_sleep_data, get_sleep_summary, get_sleep_summary_range, get_spo2_data, get_stats, get_stats_and_body, get_stats_range, get_steps_data, get_stress_data, get_stress_summary, get_training_readiness, get_unit_system, get_user_profile, get_user_summary, get_userprofile_settings, get_weekly_intensity_minutes, get_weekly_steps, get_weekly_stress, get_weigh_ins, set_blood_pressure
activities 44: add_gear_to_activity, count_activities, create_manual_activity, delete_activity, delete_course, download_activity_file, download_course_gpx, garmin_query, garmin_schema, garmin_sync_status, get_activities, get_activities_by_date, get_activities_fordate, get_activity, get_activity_exercise_sets, get_activity_fit_data, get_activity_fit_messages, get_activity_gear, get_activity_hr_in_timezones, get_activity_power_in_timezones, get_activity_split_summaries, get_activity_splits, get_activity_typed_splits, get_activity_types, get_activity_weather, get_course_details, get_courses, get_full_name, get_gear, get_heart_rate_zones, get_power_duration_curve, get_unit_system, get_user_profile, get_userprofile_settings, remove_gear_from_activity, set_activity_description, set_activity_event_type, set_activity_exercise_sets, set_activity_feel, set_activity_name, set_activity_type, set_fit_download_dir, set_perceived_effort, upload_course
workouts 29: create_run_interval_workout, create_run_workout, create_strength_workout, create_walk_run_workout, create_z2_walk_workout, delete_workout, delete_workouts, download_workout, garmin_query, garmin_schema, garmin_sync_status, get_calendar_events, get_full_name, get_garmin_coach_workouts, get_heart_rate_zones, get_scheduled_workouts, get_training_plan_workouts, get_unit_system, get_user_profile, get_userprofile_settings, get_workout_by_id, get_workouts, schedule_week, schedule_workout, schedule_workouts, unschedule_workout, unschedule_workouts, upload_workout, upload_workouts
training 41: garmin_query, garmin_schema, garmin_sync_status, get_acclimation, get_adhoc_challenges, get_available_badge_challenges, get_badge_challenges, get_cycling_ftp, get_earned_badges, get_endurance_score, get_fitnessage_data, get_full_name, get_goals, get_heart_rate_zones, get_hill_score, get_hrv_data, get_hrv_trend, get_inprogress_virtual_challenges, get_lactate_threshold, get_morning_training_readiness, get_non_completed_badge_challenges, get_personal_record, get_power_duration_curve, get_primary_training_device, get_progress_summary_between_dates, get_race_predictions, get_recovery_time_remaining, get_respiration_trend, get_running_tolerance, get_running_tolerance_trend, get_training_effect, get_training_load_balance, get_training_load_trend, get_training_readiness, get_training_status, get_unit_system, get_user_profile, get_userprofile_settings, get_vo2max_trend, get_weekly_intensity_minutes, request_reload
nutrition 26: add_hydration_data, create_custom_food, delete_custom_food, delete_food_log, garmin_query, garmin_schema, garmin_sync_status, get_custom_food_serving_units, get_custom_foods, get_energy_balance, get_full_name, get_heart_rate_zones, get_hydration_data, get_nutrition_daily_food_log, get_nutrition_daily_meals, get_nutrition_daily_settings, get_nutrition_summary_between_dates, get_unit_system, get_user_profile, get_userprofile_settings, log_custom_food, log_food, search_foods, set_nutrition_daily_settings, update_custom_food, upsert_and_log
all (default) every tool below

The mirror

SQL, catalog and sync status of the local mirror. No Garmin request, ever.

garmin_query

read. Run a read-only DuckDB SQL query against the local mirror of the user's Garmin Connect data. Costs no Garmin requests. Use garmin_schema first to see the tables.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=false.

Parameter Type Required
sql string yes
max_rows integer, default 200 no

garmin_schema

read. List the mirror's tables and views with their descriptions and estimated row counts, or, given a table name, its columns with types, units and descriptions. Use before garmin_query.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=false.

Parameter Type Required
table string or null no

garmin_sync_status

read. How complete and fresh the local mirror of Garmin Connect is: coverage per dataset, the sync queue by kind, last run of each periodic task, recent errors, pacing and backoff state, the archive reload quota, the login state, and any fields Garmin returns that the schema does not yet map.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=false.

Activities

Listings, one activity's detail, laps, splits, weather, zones, gear and sets, and the edits Garmin Connect allows.

get_activities_by_date

read. Get activities between specified dates with pagination support.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes
activity_type string, default `` no
page integer, default 0 no
page_size integer, default 100 no

get_activities_fordate

read. Get activities for a specific date

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_activity

read. Get detailed information for a single activity.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes

set_activity_name

destructive. Set or update the name of an activity.

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes
activity_name string yes

set_activity_type

destructive. Change the activity type (sport) of an activity.

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes
type_key string yes

set_activity_description

destructive. Set or update the free-text description (notes) of an activity. Pass an empty string to clear it.

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes
description string yes

set_activity_event_type

destructive. Set the event type of an activity.

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes
event_type string yes

set_perceived_effort

destructive. Set the perceived effort (RPE) for an activity, on Garmin Connect's 0-10 scale (0 clears the rating; Garmin stores it times 10).

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes
rpe number yes

set_activity_feel

destructive. Set how an activity felt ('How did you feel?'): one of 0 (very tired), 25, 50 (normal), 75, 100 (strong).

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes
feel integer yes

get_activity_splits

read. Get splits for an activity. Lap and nested length start_time_gmt timestamps are GMT (UTC).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes

get_activity_typed_splits

read. Get typed splits for an activity

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes

get_activity_split_summaries

read. Get split summaries for an activity

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes

get_activity_weather

read. Get weather data for an activity.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes

get_activity_hr_in_timezones

read. Get heart rate data in different time zones for an activity

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes

get_activity_power_in_timezones

read. Get power distribution across training zones for an activity (time in each power zone with watt thresholds). Requires a power meter.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes

get_activity_gear

read. Get gear data used for an activity

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes

get_activity_exercise_sets

read. Get exercise sets for strength training activities

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes

set_activity_exercise_sets

destructive. Replace the exercise sets on a strength (or other rep-counting) activity.

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes
sets array of object yes
keep_timing boolean, default False no

count_activities

read. Get total count of activities in the user's Garmin account

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_activities

read. Get activities with pagination support, ordered newest-first.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start integer, default 0 no
limit integer, default 20 no

create_manual_activity

write. Log a manual activity in Garmin Connect, for activities done without a watch.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
type_key string yes
date string yes
duration_minutes integer yes
start_time string, default 09:00 no
activity_name string, default `` no
distance_km number, default 0.0 no
time_zone string, default UTC no

delete_activity

destructive. Permanently delete an activity from Garmin Connect. This cannot be undone.

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
activity_id integer or string yes
confirm boolean, default False no

get_activity_types

read. Get all available activity types supported by Garmin Connect, useful for filtering activities by type.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Activity analysis

Analyses computed from the decoded FIT files in the mirror, and file exports.

get_activity_fit_messages

read. Retrieve and generically parse an activity's original FIT file (the source of truth for device data): every message and field the FIT decoder emits, in file order, without sport-specific curation. Service-side Garmin Connect edits are not merged.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes
message_types array or null no
include_records boolean, default False no
message_offset integer, default 0 no
message_limit integer, default 1000 no

get_activity_fit_data

read. Analyse an activity's original FIT file (from the mirror's decoded tables) for data the REST API lacks: Di2/eTap shift events with cadence, grade and gear at each shift and shift quality (proactive 70-100 rpm, reactive <70, coasting 0, spun_out >100); cycling dynamics per session and lap (PCO, left/right balance, torque effectiveness, pedal smoothness); variability index; climb detection with VAM and W/kg (latest weigh-in up to 90 days before the ride); grade-correlated power/cadence/HR (grade from the device when present, else derived from altitude and distance; grade_source says which); HR drift for rides of 60 min or more; temperature correlation; the power duration curve (5s to 60min); HRV from RR intervals; optional full per-second records. Multisport files report every leg in sessions and analyse the cycling or longest leg.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes
include_records boolean, default False no

get_power_duration_curve

read. Get the season-best Power Duration Curve across recent activities of a type: best mean maximal power at 5s, 30s, 1min, 5min, 10min, 20min and 60min with the activity and date each best came from, computed from the mirror's FIT records (activities whose file is not mirrored yet are fetched first). Use the 20-minute best x 0.95 as an FTP estimate.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
num_activities integer, default 20 no
activity_type string, default cycling no

download_activity_file

destructive. Download an activity and save it to disk: the original .fit (cache-first; a missing FIT may be fetched), or gpx, tcx, csv exports fetched from Garmin. Directory: output_dir, else GARMIN_FIT_DOWNLOAD_DIR, else the persisted set_fit_download_dir; with none configured returns status "needs_setup". Files are named {activity_id}.{ext} and overwrite existing ones. Protected mirror/token/config destinations and symlink traversal are rejected.

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer or string yes
format string, default fit no
output_dir string or null no

set_fit_download_dir

destructive. Set and persist the default directory for downloaded activity files (in ~/.garminconnect_fit_config.json, overridable via GARMIN_FIT_CONFIG).

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=false.

Parameter Type Required
path string yes

get_courses

read. List all courses saved on Garmin Connect (id, name, distance, activity type, creation date).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_course_details

read. Get full details of a Garmin Connect course: metadata, elevation gain/loss, distance and all custom course waypoints.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
course_id integer yes

download_course_gpx

destructive. Download a Garmin Connect course as a GPX file rebuilt from its track points and course points (not the original upload). Overwrites an existing export. Protected mirror/token/config destinations and symlink traversal are rejected.

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
course_id integer yes
output_path string or null no

upload_course

write. Upload a GPX file as a Garmin Connect Course (loadable onto the watch for navigation or a PacePro strategy).

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
gpx_path string yes
course_name string or null no
activity_type string, default running no
description string or null no

delete_course

destructive. Delete a course from Garmin Connect. This cannot be undone. Call once with confirm=false (the default) to preview, then with confirm=true.

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
course_id integer yes
confirm boolean, default False no

Health and wellness

Daily summaries, heart rate, sleep, stress, Body Battery, respiration, pulse ox, hydration, weight, blood pressure, and the ranges and trends computed from them.

get_stats

read. Get daily activity stats with curated essential metrics: steps, calories, heart rate, stress, body battery, SpO2 and respiration.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_stats_range

read. Get lightweight per-day calorie and step totals for a date range (total/active/resting calories and steps per day).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_energy_balance

read. Estimate a composition-derived TDEE from logged intake, Garmin's claimed expenditure, and body-composition change over a date range.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_user_summary

read. Get user summary data (compatible with garminconnect-ha)

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_body_composition

read. Get body composition data for a single date or date range

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string or null no

get_stats_and_body

read. Get stats and body composition data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_steps_data

read. Get detailed steps data with 15-minute intervals (full interval data; for a compact summary use get_stats).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_daily_steps

read. Get steps data for a date range

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_training_readiness

read. Get training readiness data with curated metrics (score and contributing factors; one entry per snapshot of the day).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_body_battery

read. Get body battery data with events

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_body_battery_events

read. Get body battery events data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_blood_pressure

read. Get blood pressure data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_floors

read. Get floors climbed data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_rhr_day

read. Get resting heart rate data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_heart_rates

read. Get full heart rate time-series data (2-minute intervals, ~25KB; for a compact summary use get_heart_rates_summary).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_heart_rates_summary

read. Get heart rate summary with essential metrics (lightweight version, ~500 bytes).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_hydration_data

read. Get hydration data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_sleep_data

read. Get full sleep data with all details (~50KB; for a compact summary use get_sleep_summary).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_sleep_summary

read. Get sleep summary with only essential metrics (lightweight version, ~350 bytes).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_sleep_summary_range

read. Get lightweight sleep summaries for every night in a date range (same curated metrics as get_sleep_summary). Maximum: 90 nights per call.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_stress_data

read. Get full stress time-series data (~35KB, includes body battery; for a compact summary use get_stress_summary).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_stress_summary

read. Get stress summary with essential metrics (lightweight version, ~400 bytes).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_respiration_data

read. Get full respiration time-series data (~20KB; for a compact summary use get_respiration_summary).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_respiration_summary

read. Get respiration summary with essential metrics (lightweight version, ~300 bytes).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_spo2_data

read. Get SpO2 (blood oxygen) data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_all_day_stress

read. Get all-day stress data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_all_day_events

read. Get daily wellness events data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_lifestyle_logging_data

read. Get lifestyle logging data for a specific date (behaviours tracked and their impact on health metrics).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_weekly_steps

read. Get weekly step data aggregates: weekly step totals for the specified number of weeks ending at end_date (computed from the mirror's daily steps).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
end_date string yes
weeks integer, default 4 no

get_weekly_stress

read. Get weekly stress data aggregates: weekly average stress for the specified number of weeks ending at end_date (computed from the mirror's daily summaries).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
end_date string yes
weeks integer, default 4 no

get_weekly_intensity_minutes

read. Get weekly intensity minutes aggregates (moderate and vigorous) for the specified number of weeks ending at end_date.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
end_date string yes
weeks integer, default 4 no

get_morning_training_readiness

read. Get morning training readiness score (the AFTER_WAKEUP_RESET snapshot; fields match one get_training_readiness entry).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_recovery_time_remaining

read. Get remaining recovery time in hours for a day (the Firstbeat recovery clock shown on-device).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string, default `` no

Training

Training status and load, readiness, HRV, VO2 max, acclimation, endurance and hill scores, race predictions, and Garmin-side reports.

get_progress_summary_between_dates

read. Get progress summary for a metric between dates, by activity type.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes
metric string yes

get_hill_score

read. Get hill score data between dates

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_endurance_score

read. Get endurance score data between dates

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_training_effect

read. Get training effect data for a specific activity.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
activity_id integer yes

get_hrv_data

read. Get Heart Rate Variability (HRV) data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes
return_timeseries boolean, default False no

get_fitnessage_data

read. Get fitness age data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes
details boolean, default False no

get_training_status

read. Get training status with curated metrics: status, VO2 max, acute/chronic load (ACWR) and Load Focus balance.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_cycling_ftp

read. Get the latest cycling Functional Threshold Power (FTP) data.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_lactate_threshold

read. Get lactate threshold data (the exercise intensity at which lactate starts to accumulate): latest values, or history with a date range.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string or null no
end_date string or null no

request_reload

write. Request restoration of one archived intraday day. Uses one archive-reload allowance (local conservative limit 25/24h, not an authoritative general Garmin quota); follow-up reads run in about three hours. Check garmin_sync_status first. Ambiguous outcomes are recorded and never automatically replayed; inspect coverage before any manual recovery.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
date string yes

get_training_load_trend

read. Get Garmin's daily acute and chronic training load over a date range.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_training_load_balance

read. Get Garmin's Load Focus: the distribution of the trailing-month training load across Aerobic Low, Aerobic High and Anaerobic bands with Garmin's target ranges, a status of below/within/above per band, and the feedback phrase (e.g. AEROBIC_HIGH_SHORTAGE, BALANCED). load_device_id/load_device_name say which device the numbers came from.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_hrv_trend

read. Get HRV (Heart Rate Variability) trend over a date range: daily values and the period average. A drop of >10ms from the 7-day baseline warrants reducing training load. Recommended range: 7-21 days. Maximum: 30 days.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_vo2max_trend

read. Get VO2 max trend over a date range (Garmin's FirstBeat estimates). Days between recomputes carry the last known value forward and are marked carried_forward: true, matching Garmin Connect's chart. Daily changes of <0.5 are noise; focus on the 4-6 week direction. Recommended range: 4-12 weeks. Maximum: 90 days.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_respiration_trend

read. Get overnight respiration rate trend over a date range. Elevated resting respiration vs the personal baseline is an early sign of overreaching, illness or poor recovery. Recommended range: 7-21 days. Maximum: 30 days.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_running_tolerance

read. Get Running Tolerance for a single day: tolerance_km (load capacity), acute_load_km (intensity-adjusted load), distance_km, and load_ratio (acute_load_km / distance_km).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_running_tolerance_trend

read. Get Running Tolerance trend over a date range, per period: tolerance_km, acute_load_km, distance_km and load_ratio. Weekly aggregation (default) gives a compact multi-month view. Maximum: 90 days for daily, 366 for weekly.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes
aggregation string, default weekly no

get_acclimation

read. Get heat and altitude acclimation status for a given date (heat_acclimation_percent 0-100, altitude acclimation in meters, Garmin's trend labels and the previous readings).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

Workouts and calendar

Workouts, the training calendar, scheduling, and the workout builders adapted from upstream.

get_workouts

read. Get all workouts with curated summary list (count and essential metadata; use get_workout_by_id for segments).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_workout_by_id

read. Get detailed information for a specific workout, including segments and step structure.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
workout_id integer or string yes
raw boolean, default False no

download_workout

read. Download a workout as a FIT file. The binary cannot be returned through MCP; this confirms the workout is available and reports its size.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
workout_id integer yes

upload_workout

write. Upload a workout from JSON data (creates a new workout in Garmin Connect).

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
workout_data object yes

upload_workouts

write. Upload multiple workouts from JSON data in a single call. Each item uses the same structure and rules as upload_workout. Each workout is handled on its own: a failing one is reported and the rest still upload.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
workouts array of object yes

delete_workout

destructive. Permanently delete a workout from Garmin Connect. Call once with confirm=false (the default) to preview, then with confirm=true.

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
workout_id integer yes
confirm boolean, default False no

delete_workouts

destructive. Permanently delete several workouts. Call once with confirm=false to preview them, then with confirm=true.

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
workout_ids array of integer yes
confirm boolean, default False no

get_scheduled_workouts

read. Get scheduled workouts between two dates: workouts on the Garmin Connect calendar with their dates and completion status.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_garmin_coach_workouts

read. Get the active Garmin Coach plan's workouts for the week containing calendar_date (plan summary plus each scheduled workout; the count includes rest days).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
calendar_date string yes

get_training_plan_workouts

read. Get the active training plan's workouts for the week containing calendar_date (same data as get_garmin_coach_workouts; pass a workout_uuid to get_workout_by_id for details).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
calendar_date string yes

schedule_workout

write. Schedule a workout on the Garmin Connect calendar. Idempotent: a workout already scheduled on that date is reported and not duplicated.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
workout_id integer yes
calendar_date string yes

schedule_workouts

write. Schedule multiple workouts in a single call. Each item references an existing workout by workout_id, or provides inline workout_data (upload_workout structure) to upload-and-schedule in one step. Each item is handled on its own.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
schedules array of object yes

reschedule_workout

destructive. Move a scheduled workout to another date in place (same calendar-entry id, no duplicate). scheduled_workout_id is the calendar-entry id from get_scheduled_workouts, not the workout's id.

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
scheduled_workout_id integer yes
calendar_date string yes

unschedule_workout

destructive. Remove a scheduled workout from the calendar without deleting the workout template. scheduled_workout_id is the calendar-entry id from get_scheduled_workouts, not the workout's id.

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
scheduled_workout_id integer yes

unschedule_workouts

destructive. Remove several scheduled workouts from the calendar in one call (workout templates stay in the library). Each id is a calendar-entry id.

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
scheduled_workout_ids array of integer yes

create_walk_run_workout

write. Create a run/walk interval workout (warmup, repeats of run then walk, cooldown) and upload it to Garmin Connect.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
name string yes
run_seconds integer yes
walk_seconds integer yes
repeats integer yes
warmup_min integer yes
cooldown_min integer yes
hr_zone string, default Z3 no

create_run_workout

write. Create a continuous run workout (warmup, run, cooldown) targeting a heart-rate zone, or a custom bpm range when hr_min and hr_max are given, and upload it.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
name string yes
run_seconds integer yes
warmup_min integer yes
cooldown_min integer yes
hr_zone string, default Z3 no
hr_min integer or null no
hr_max integer or null no

create_run_interval_workout

write. Create a running interval workout (warmup, repeats of work then recovery, cooldown) and upload it. Work and recovery target a zone or, with the _hr_min/_hr_max pairs, custom bpm ranges.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
name string yes
repeats integer yes
rep_seconds integer yes
recovery_seconds integer yes
warmup_min integer yes
cooldown_min integer yes
hr_zone string, default Z4 no
hr_min integer or null no
hr_max integer or null no
recovery_hr_min integer or null no
recovery_hr_max integer or null no

create_z2_walk_workout

write. Create a walking workout held in a custom heart-rate range (Zone 2 walk) and upload it.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
name string yes
duration_min integer yes
hr_min integer yes
hr_max integer yes

create_strength_workout

write. Create a strength workout and upload it to Garmin Connect. Each exercise becomes a reps-based step; when sets > 1 it is a repeat group of that many iterations (work + rest per set). The name is kept in the step description and sent as exerciseName, which Garmin retains only when it matches one of its own exercise keys (e.g. "FARMERS_CARRY").

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
name string yes
exercises array of object yes

schedule_week

write. Schedule several workouts on their dates in one call. Idempotent: a workout already scheduled on that date is reported and the POST skipped. Each entry is handled on its own.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
week array of object yes

get_calendar_events

read. Get races and events on the Garmin Connect calendar between two dates (entries the user added or subscribed to, such as upcoming races; not returned by get_scheduled_workouts or get_goals). Each event reports distance in meters when stored, the custom goal time in seconds when set, the local start time, is_race and primary_event (the goal race of an active plan).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

Profile, devices, gear, goals, courses

The user profile and settings, devices and sensors, gear, heart-rate zones, goals, badges, challenges and courses.

get_full_name

read. Get user's full name from profile

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_unit_system

read. Get user's preferred unit system from profile

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_user_profile

read. Get user profile information

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_userprofile_settings

read. Get user profile settings

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_heart_rate_zones

read. Get the user's saved heart-rate training-zone configuration: the generic DEFAULT profile plus sport-specific overrides (RUNNING, CYCLING, ...). With no sport every saved profile is returned.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
sport string or null no

set_heart_rate_zones

destructive. Set an account-level heart-rate training-zone configuration for one sport (DEFAULT, RUNNING, CYCLING, ... are independent).

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
sport string yes
max_hr integer or null no
resting_hr integer or null no
lactate_threshold_hr integer or null no
calculation_method string or null no
zone_boundaries array or null no

get_devices

read. Get all Garmin devices associated with the user account

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_device_last_used

read. Get information about the last used Garmin device

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_device_settings

read. Get settings for a specific Garmin device: time/date format, units, activity tracking settings, alarms.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
device_id integer or string or null no

get_primary_training_device

read. Get information about the primary training device and the other wearable devices on the account.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_device_solar_data

read. Get solar data for a specific device: activity time gained from solar, average/peak solar utilization and minutes with solar input across the day's per-minute readings. Only solar-capable devices.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
device_id integer or string yes
date string yes

get_device_alarms

read. Get alarms from all Garmin devices with their schedules, sounds and enabled status.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

push_workout_to_device

write. Send a workout from the library to a Garmin device (queues it like "Send to Device"; the watch picks it up at its next sync). Scheduled workouts reach the watch on their own. Each call queues another copy.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
workout_id integer yes
device_id integer or null no

get_gear

read. Get all gear registered with the user account: inventory with notes, usage statistics and default activity associations (defaults maps each activity type key to the names of its default gear).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
include_stats boolean, default True no

add_gear_to_activity

write. Associate gear (shoes, bike, ...) with an activity.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
activity_id integer yes
gear_uuid string yes

remove_gear_from_activity

destructive. Remove a gear association from an activity.

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
activity_id integer yes
gear_uuid string yes

get_weigh_ins

read. Get weight measurements between specified dates

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_daily_weigh_ins

read. Get weight measurements for a specific date

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

delete_weigh_ins

destructive. Delete weight measurements for a specific date. This cannot be undone. Call once with confirm=false (the default) to preview, then with confirm=true to delete.

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
date string yes
delete_all boolean, default True no
confirm boolean, default False no

add_weigh_in

write. Add a new weight measurement (now).

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
weight number yes
unit_key string, default kg no

add_weigh_in_with_timestamps

write. Add a new weight measurement with specific timestamps. If both are omitted the current time is used; if only date_timestamp is given the GMT timestamp is derived from it.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
weight number yes
unit_key string, default kg no
date_timestamp string or null no
gmt_timestamp string or null no

add_body_composition

write. Add a body composition entry (weight in kg plus optional smart-scale metrics) for a date.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
date string yes
weight number yes
percent_fat number or null no
percent_hydration number or null no
visceral_fat_mass number or null no
bone_mass number or null no
muscle_mass number or null no
basal_met number or null no
active_met number or null no
physique_rating number or null no
metabolic_age number or null no
visceral_fat_rating number or null no
bmi number or null no

set_blood_pressure

write. Record a blood pressure measurement (now).

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
systolic integer yes
diastolic integer yes
pulse integer yes
notes string or null no

add_hydration_data

write. Log a hydration entry.

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
value_in_ml integer yes
cdate string yes
timestamp string yes

get_goals

read. Get Garmin Connect goals (active, future, or past), the way the Goals page reads them, so named distance/time targets are included with their progress and remaining amounts.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
goal_type string, default active no

get_personal_record

read. Get personal records for user

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_earned_badges

read. Get earned badges for user

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_adhoc_challenges

read. Get user-created social/group challenges (e.g. step competitions with friends), distinct from official Garmin badge challenges.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start integer, default 0 no
limit integer, default 20 no

get_available_badge_challenges

read. Get official Garmin badge challenges available to join (monthly/seasonal challenges that award badges and points).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start integer, default 1 no
limit integer, default 20 no

get_badge_challenges

read. Get badge challenges the user has completed, with earned dates (for in-progress ones use get_non_completed_badge_challenges).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start integer, default 1 no
limit integer, default 20 no

get_non_completed_badge_challenges

read. Get badge challenges currently in progress (joined but not yet completed).

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start integer, default 1 no
limit integer, default 20 no

get_race_predictions

read. Get predicted race times (5K, 10K, half marathon, marathon) based on current fitness level and VO2 max.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_inprogress_virtual_challenges

read. Get in-progress virtual challenges/expeditions the user is participating in.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start integer, default 1 no
limit integer, default 20 no

get_pregnancy_summary

read. Get pregnancy summary data

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

get_menstrual_data_for_date

read. Get menstrual cycle data for a specific date

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_menstrual_calendar_data

read. Get menstrual calendar data between dates

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

Strava sync (optional)

Registered only when STRAVA_SYNC is set: Strava activity names onto Garmin, and removal of courses Strava's sync left behind. See Strava sync.

strava_sync_status

read. Status of the Strava sync: its settings, the last run's result (renames, conflicts, course deletions or why they were held), what the ledger links, and its recent actions. No Garmin request.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=false.

strava_sync_plan

read. What the Strava sync would do now, without doing it: the Garmin activities it would rename to their Strava names, the renames it leaves alone because the Garmin name was edited by hand, and which Strava-made courses it keeps (with the starred Strava route each matches and how) or would delete (orphaned: no starred route; or an older duplicate). Re-fetches the course list from Garmin first.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

strava_sync_apply

destructive. Run one part of the Strava sync now, past the per-run cap; for courses also when STRAVA_SYNC_COURSES is dry-run. Deleted courses cannot be restored. Call once with confirm=false (the default) for the preview, then with confirm=true.

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
part string yes
confirm boolean, default False no

Nutrition and women's health

Pass-through tools vendored from upstream: fetched from Garmin and cached for ten minutes (the mirror does not keep nutrition logs).

get_nutrition_daily_food_log

read. Get daily food consumption records for a date

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_nutrition_summary_between_dates

read. Get per-day nutrition totals for every day in a date range.

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
start_date string yes
end_date string yes

get_nutrition_daily_meals

read. Get daily meal summaries for a date

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

get_nutrition_daily_settings

read. Get nutrition plan/settings for a date

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
date string yes

set_nutrition_daily_settings

destructive. Update daily nutrition goals (calorie target and macronutrient targets).

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
date string yes
calorie_goal integer or null no
carbs_grams integer or null no
fat_grams integer or null no
protein_grams integer or null no
target_date string or null no

search_foods

read. Search Garmin's general food catalog (FatSecret + Garmin custom foods)

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
query string yes
start integer, default 0 no
limit integer, default 20 no

get_custom_foods

read. Search or list user's custom foods

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

Parameter Type Required
search string, default `` no
start integer, default 0 no
limit integer, default 20 no

get_custom_food_serving_units

read. Get available serving units for custom foods

Hints: readOnly=true, destructive=false, idempotent=true, openWorld=true.

create_custom_food

write. Create a custom food in the user's Garmin nutrition library

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
food_name string yes
calories number yes
serving_unit string, default G no
number_of_units number, default 100 no
brand_name string or null no
carbs number or null no
protein number or null no
fat number or null no
fiber number or null no
sugar number or null no
saturated_fat number or null no
sodium number or null no
cholesterol number or null no
potassium number or null no
trans_fat number or null no
calcium number or null no
iron number or null no
vitamin_d number or null no

update_custom_food

destructive. Update an existing custom food in the user's Garmin nutrition library

Hints: readOnly=false, destructive=true, idempotent=true, openWorld=true.

Parameter Type Required
food_id string yes
serving_id string yes
food_name string yes
calories number yes
serving_unit string or null no
number_of_units number or null no
brand_name string or null no
carbs number or null no
protein number or null no
fat number or null no
fiber number or null no
sugar number or null no
saturated_fat number or null no
sodium number or null no
cholesterol number or null no
potassium number or null no
trans_fat number or null no
calcium number or null no
iron number or null no
vitamin_d number or null no

delete_custom_food

destructive. Delete a custom food from the user's Garmin nutrition library

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
food_id string yes
confirm boolean, default False no

log_custom_food

write. Log a food item to a meal on a date

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
meal_date string yes
meal_time string yes
food_id string yes
serving_id string yes
serving_qty number, default 1 no
source string, default GARMIN no

log_food

write. Quick-add a food entry with macro values to the nutrition log

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
meal_date string yes
meal_time string yes
name string yes
calories number yes
carbs number yes
protein number yes
fat number yes

delete_food_log

destructive. Delete a food log entry

Hints: readOnly=false, destructive=true, idempotent=false, openWorld=true.

Parameter Type Required
log_id string yes
meal_date string yes
confirm boolean, default False no

upsert_and_log

write. Find-or-create a custom food then log it in one step

Hints: readOnly=false, destructive=false, idempotent=false, openWorld=true.

Parameter Type Required
meal_date string yes
meal_time string yes
food_name string yes
calories number yes
carbs number or null no
protein number or null no
fat number or null no
brand_name string or null no
serving_unit string, default G no
number_of_units number, default 100 no
serving_qty number, default 1 no