garmin-owl
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GARMINTOKENS | No | Path to the directory where Garmin session tokens are stored. Defaults to ~/.garminconnect. | ~/.garminconnect |
| GARMIN_OWL_DB | No | Path to the SQLite cache database. Defaults to ~/Library/Application Support/garmin-owl/garmin.sqlite. | ~/Library/Application Support/garmin-owl/garmin.sqlite |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_daily_summaryC | Get activity time/goals, HR, stress, respiration, SpO2, Body Battery, steps/calories. |
| get_sleepC | Get sleep score/need, stages, HR/stress, respiration, SpO2, and skin-temp deviation. |
| get_hrvA | Get Garmin HRV status and nightly values; optional readings are capped at 48 points. |
| get_recoveryA | Combine Garmin sleep, HRV, Body Battery, stress, RHR, readiness; states why any is absent. |
| get_training_readinessC | Get Garmin training readiness, component percentages, and factor feedback. |
| get_body_batteryA | Get Garmin Body Battery charged/drained and start/end/high/low levels for one day. |
| get_stressA | Get Garmin daily average/max stress and per-band durations; series capped at 48 points. |
| get_activitiesA | List concise activities in an inclusive date range; defaults to the last 14 days. |
| get_activityB | Get one activity summary, laps, training effect, and available HR/power zones. |
| get_body_compositionA | Get weight and Garmin-provided body composition for at most 366 days. |
| get_training_contextA | Get recovery and preceding training anchored to date, with transparent comparisons. |
| get_recovery_trendA | Trend sleep HR/temp, HRV, RHR, readiness, and Body Battery over 7/14/28 days. |
| get_training_weekA | Summarize a Mon-Sun week; every total discloses how many activities reported the metric. |
| get_training_loadC | Get acute/chronic load, ratio/status, focus/targets, VO2 max, scores, acclimation. |
| get_training_zonesA | Get configured Garmin HR-zone and cycling power-zone floor thresholds. |
| get_running_toleranceB | Get 1-90 days of Garmin running distance, impact load, tolerance, and feedback. |
| get_recent_activitiesA | List recent cached activities with bounded days/limit and optional exact type filter. |
| compare_activitiesA | Compare 2-10 activities; each metric range states how many reported a value. |
| get_cycleB | Get normalized cycle phase/timing without notes, symptoms, or raw day logs. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 19 tools
Several tools share overlapping data: get_daily_summary, get_sleep, get_recovery, get_stress, and get_body_battery all surface similar health metrics, while get_recovery, get_training_readiness, get_training_context, and get_recovery_trend form a confusing recovery/readiness cluster. An agent would struggle to know which endpoint is authoritative for a given metric.
The vast majority of tools follow a consistent get_<resource> snake_case pattern, making the set predictable. The only clear deviation is compare_activities, which uses a verb-noun structure instead of a get_ prefix, but this is a minor inconsistency.
With 19 tools, the server sits in the slightly-heavy range for a data-retrieval API. Many are individually meaningful, but the recovery/readiness/trend cluster could likely be consolidated without losing capability.
The toolset provides broad coverage of Garmin health and training data: daily summaries, sleep, HRV, stress, body battery, activities, body composition, training load/zones/context, trends, and cycle data. No major dead-ends or obvious missing read operations are apparent for the stated domain.