Skip to main content
Glama

get_daily_summary

Read-only

Retrieve one calendar day's Garmin health overview—steps, calories, heart rate, stress, respiration, SpO2, and Body Battery totals—to summarize daily activity and recovery at a glance.

Instructions

Get one calendar day's steps, distance, calories, intensity minutes and goals, active/sedentary time, heart rate, stress, respiration, SpO2, and Body Battery totals.

Use for a general overview of a day; use get_recovery for sleep, HRV, and readiness together, get_stress or get_body_battery for their detail and optional readings, or get_activities for workouts.

Field notes: body_battery_charged/drained are whole-day totals, while body_battery_during_sleep and body_battery_at_wake describe the night. Floors are Garmin floor estimates, not metres. Today's values are partial until the day ends and the watch syncs. Metrics the device did not record are omitted, never reported as zero.

Requires saved local Garmin authentication (garmin-owl-auth). Reads Garmin and may update the local cache; never changes your Garmin account. Garmin failures are not retried automatically.

Input Schema

NameRequiredDescriptionDefault
dateNoCalendar date in YYYY-MM-DD format, e.g. 2026-10-09; any past date Garmin still stores. Omit or pass null for today in the server's local timezone.

Output Schema

NameRequiredDescriptionDefault
dateYes
stepsNo
distance_mNo
max_hr_bpmNo
max_stressNo
min_hr_bpmNo
floors_unitNo
active_secondsNo
average_stressNo
resting_hr_bpmNo
daily_step_goalNo
floors_ascendedNo
floors_descendedNo
sedentary_secondsNo
lowest_respirationNo
highest_respirationNo
lowest_spo2_percentNo
total_calories_kcalNo
active_calories_kcalNo
average_spo2_percentNo
body_battery_at_wakeNo
body_battery_chargedNo
body_battery_drainedNo
highly_active_secondsNo
intensity_minutes_goalNo
body_battery_during_sleepNo
average_waking_respirationNo
moderate_intensity_minutesNo
vigorous_intensity_minutesNo
last_seven_days_avg_resting_hr_bpmNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.3.1
    • changedInput schema / properties / date / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / date / description
      Added value: +"Calendar date in YYYY-MM-DD format, e.g. 2026-10-09; any past date Garmin still stores. Omit or pass null for today in the server's local timezone."
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / properties
      Added value: +{
      +  "active_calories_kcal": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Active Calories Kcal"
      +  },
      +  "active_seconds": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Active Seconds"
      +  },
      +  "average_spo2_percent": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Average Spo2 Percent"
      +  },
      +  "average_stress": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Average Stress"
      +  },
      +  "average_waking_respiration": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Average Waking Respiration"
      +  },
      +  "body_battery_at_wake": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Body Battery At Wake"
      +  },
      +  "body_battery_charged": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Body Battery Charged"
      +  },
      +  "body_battery_drained": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Body Battery Drained"
      +  },
      +  "body_battery_during_sleep": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Body Battery During Sleep"
      +  },
      +  "daily_step_goal": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Daily Step Goal"
      +  },
      +  "date": {
      +    "title": "Date",
      +    "type": "string"
      +  },
      +  "distance_m": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Distance M"
      +  },
      +  "floors_ascended": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Floors Ascended"
      +  },
      +  "floors_descended": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Floors Descended"
      +  },
      +  "floors_unit": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Floors Unit"
      +  },
      +  "highest_respiration": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Highest Respiration"
      +  },
      +  "highly_active_seconds": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Highly Active Seconds"
      +  },
      +  "intensity_minutes_goal": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Intensity Minutes Goal"
      +  },
      +  "last_seven_days_avg_resting_hr_bpm": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Last Seven Days Avg Resting Hr Bpm"
      +  },
      +  "lowest_respiration": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Lowest Respiration"
      +  },
      +  "lowest_spo2_percent": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Lowest Spo2 Percent"
      +  },
      +  "max_hr_bpm": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Max Hr Bpm"
      +  },
      +  "max_stress": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Max Stress"
      +  },
      +  "min_hr_bpm": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Min Hr Bpm"
      +  },
      +  "moderate_intensity_minutes": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Moderate Intensity Minutes"
      +  },
      +  "resting_hr_bpm": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Resting Hr Bpm"
      +  },
      +  "sedentary_seconds": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Sedentary Seconds"
      +  },
      +  "steps": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Steps"
      +  },
      +  "total_calories_kcal": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Total Calories Kcal"
      +  },
      +  "vigorous_intensity_minutes": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Vigorous Intensity Minutes"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "date"
      +]
    • changedOutput schema / title
      Previous value: -"get_daily_summaryDictOutput"New value: +"DailySummary"
  2. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/openWorld/destructive annotations: discloses the auth prerequisite (garmin-owl-auth), that it may update the local cache but never the Garmin account, that failures are not retried, that today's values are partial, and that missing metrics are omitted rather than zeroed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and metric list, then routing guidance, then field notes and operational caveats, each sentence adding distinct value with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation; the description still covers auth, caching, retry behavior, partial-day caveats, and routing, which is complete for a single-optional-param read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single date parameter is fully documented in the schema (format, example, null-means-today semantics) at 100% coverage, so the description carries no additional parameter burden. The extra field notes are about output fields rather than the parameter, leaving the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (get one calendar day's summary) and enumerates the metric families it returns, so the agent knows exactly what data class this covers without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative tools and the condition that selects each (get_recovery for sleep/HRV/readiness, get_stress, get_body_battery, get_activities for workouts), and states the case for this one ('general overview of a day').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.