Garmin Connect

Garmin Connect

integration

Direct access to your Garmin Connect activities, wellness data, and devices

Tier-1 integration with Garmin Connect. Lists activities, fetches activity detail and time-series streams, and pulls wearable-only health and training intelligence Garmin captures natively: body battery, sleep stages, HRV status, training status, training readiness, VO2 max, and device inventory. Designed to be composed by fitness and training agents, but also chattable directly for ad-hoc questions like "how did I sleep last night" or "am I ready to train hard today".

Source: Garmin Connect

Tools (32)

Get user profile

Fetch the authenticated user's Garmin profile: display name, gender, birth date, weight, height, current VO2 max (run + bike), lactate threshold, FTP auto-detected flag, measurement system, and time format. Call this once per conversation if you need the user's measurement preference or VO2 max baseline.

List devices

List devices linked to the user's Garmin account: model, battery level and status, current firmware, last sync time. Use to answer 'is my watch synced' or 'what's my battery at' questions, or before recommending a sync before a workout.

List activities

List the user's recent Garmin activities with summary fields (activity name + type, start time, distance, duration, average and max HR / power, TSS, intensity factor, calories, elevation). Bound the window with ``start_date`` and ``end_date`` as ISO 8601 dates ('2026-04-11'); when omitted the API returns a paged recent-activity list. Always anchor on Today's date from get_instructions when interpreting 'this week', 'last weekend', etc.

Get activity

Fetch the full detail for a single Garmin activity by id. Returns summary fields plus description, device, location, lap-by-lap breakdown, and any structured exercise sets. Use list_activities first to find the id.

Get activity splits

Fetch lap / split breakdown for a Garmin activity: per-lap distance, duration, average speed, average HR, average power, and elevation. Smaller and more useful than streams for structured workouts and pacing analysis.

Get activity streams

Fetch downsampled time-series streams for a Garmin activity: heart rate, power, cadence, speed, altitude, GPS. Garmin returns this as a `metricDescriptors` + `activityDetailMetrics` pair; passing a smaller ``max_chart_size`` makes the response cheaper. Use sparingly โ€” even downsampled, multi-hour activities are thousands of points.

Get daily summary

Fetch the user's daily wellness rollup: steps, step goal, calories (total / active / BMR), intensity minutes (moderate + vigorous) against goal, floors climbed, resting / min / max HR, average and max stress, and body battery range. Call this once per day-question (e.g. 'how was yesterday').

Get sleep

Fetch the user's sleep summary for a single night: total sleep time, deep / light / REM / awake breakdown, sleep score, respiration range, SpO2 range, restless moments. The date you pass is the *wake-up* date โ€” i.e. asking for last night's sleep uses today's date.

Get body battery

Fetch the user's Body Battery readings (Garmin's energy / recovery score, 0-100) over a date range. Returns one entry per day with charged / drained / highest / lowest values. Body Battery is wearable-only and one of Garmin's strongest signals for whether the user is recovered.

Get stress

Fetch the user's stress-level samples for a single day (0-100, intraday). Returns Garmin's full stress payload including the per-minute series and rest / low / medium / high duration buckets.

Get hrv status

Fetch the user's HRV status for a single night: weekly average HRV, baseline range, status (BALANCED, UNBALANCED, LOW, POOR), and the overnight readings. HRV status is wearable-only and Garmin's best single recovery indicator alongside Body Battery.

Get heart rates

Fetch the user's heart-rate envelope for a single day: resting, minimum, maximum, last seven days resting average, plus the intraday `heartRateValues` time-series.

Get steps

Fetch the user's intraday steps for a single day, bucketed by Garmin's native 15-minute windows: each bucket includes start time, total steps, primary activity level, and a flag for active vs sedentary classification.

Get intensity minutes

Fetch the user's intensity minutes for a single day: moderate and vigorous totals, weekly running total, and the goal. Garmin counts vigorous minutes double toward the goal.

Get weight

Fetch the user's weigh-ins and Index-scale body composition (body fat %, muscle mass, water %, bone mass, BMI) over a date range. Returns one entry per logged weigh-in.

Get training status

Fetch the user's Garmin training-status snapshot: status label (PRODUCTIVE, MAINTAINING, RECOVERY, OVERREACHING, etc.), feedback phrase, weekly load against the optimal load tunnel, current VO2 max, and fitness age. Wearable-only signal that Strava and intervals.icu don't reproduce natively.

Get training readiness

Fetch the user's Garmin training-readiness for a day: 0-100 score, level (LOW / MODERATE / HIGH), the long and short feedback strings, and the contributing factors (sleep score, recovery time remaining, HRV factor, stress history, acute load). Use to answer 'should I train hard today'.

Get vo2 max

Fetch the user's max-metrics for a date: VO2 max for running and cycling (when available), fitness age, and the latest max-HR estimate. Garmin updates these on a rolling basis from outdoor / power-meter activities.

Get race predictions

Fetch Garmin's running race-time predictions for the user: 5K, 10K, half marathon, marathon. Predictions are derived from VO2 max and recent training load.

Get personal records

Fetch the user's Garmin personal records: best 1K / 5K / 10K / half-marathon / marathon, longest run, longest ride, biggest climb, and any sport-specific PRs Garmin tracks. One entry per record type.

Rename activity

Rename a Garmin activity (set its title). Garmin is the source of truth, so the new title propagates to Strava / intervals.icu on their next sync. Use list_activities to find the id. Common use: strip auto-generated prefixes like 'Zwift - ...' from imported rides.

Set activity description

Set or replace a Garmin activity's description text. Overwrites any existing description. Use list_activities to find the id.

Set activity type

Change a Garmin activity's sport type (e.g. mark a mislabeled ride as 'gravel_cycling', or a walk as 'hiking'). Pass the Garmin ``type_key``; the tool resolves the internal type ids. Changing type can recompute training load, so confirm the activity with the user first. Use list_activities to find the id.

Delete activity

Permanently DELETE a Garmin activity. DESTRUCTIVE and unrecoverable: the activity and its recorded data are gone, and the deletion syncs to Strava / intervals.icu. Only call when the user explicitly asks to delete it. The ``confirm`` argument must exactly match the activity's current name: fetch it with get_activity and read it back to the user before they confirm.

Create manual activity

Log a manual Garmin activity (no GPS/sensor file) โ€” e.g. a strength session, a walk, or an indoor ride from a non-connected machine. Distance and duration are summary values you supply.

Create workout

Push a structured/planned workout to Garmin Connect โ€” the equivalent of authoring a workout in Garmin's workout builder so it lands on the user's watch. Supply the session a coach has already designed as an ordered list of steps (warmup, work intervals, recovery, cooldown, and repeat groups for run/walk or interval sets), each ending on time, distance, or the lap button, with optional pace or heart-rate targets. Pass schedule_date (YYYY-MM-DD) to also pin it to the Garmin calendar for that day so it syncs to the watch; omit it to just save the workout to the library. You translate a session into steps; you do not invent the training โ€” that is the caller's job.

List workouts

List saved workouts in the user's Garmin workout library (most recent first): id, name, sport, and step count. Use to find a workout id for delete_workout, or to avoid creating a duplicate.

Get workout

Fetch the full step breakdown of one saved Garmin workout by id: every step's kind (warmup / work / recovery / cooldown / rest), how it ends (time, distance, or lap button), and any pace or heart-rate target, with repeat groups preserved. Use after list_workouts when the user wants to see what's inside a workout. Pace targets are returned in seconds-per-km plus a readable 'M:SS/km' display.

Delete workout

Permanently delete a workout from the user's Garmin workout library (this also removes any scheduled instances of it). DESTRUCTIVE: the ``confirm`` argument must exactly match the workout's current name. Fetch it with list_workouts, read the name back to the user, and only pass ``confirm`` once they've confirmed that exact workout.

Add weigh in

Log a manual weigh-in to Garmin Connect. Use get_weight to read back logged weigh-ins. Defaults to kilograms and now; pass an ISO 8601 timestamp to backdate.

Add hydration

Add a hydration (water intake) entry to a Garmin day, in milliliters. Defaults to today; pass ``cdate`` (ISO date) to log against another day.

Set blood pressure

Log a blood-pressure reading (systolic / diastolic / pulse) to Garmin Connect. Defaults to now; pass an ISO 8601 timestamp to backdate.

Chat with Garmin Connect

Open chat