Skip to main content
Glama
partymola

google-health-mcp

health_get_sleep_sessions

Retrieve each Google Health sleep session as recorded, including naps, wake-and-resume intervals, stages, summary, and device, instead of only the summed nightly total.

Instructions

Get each sleep session as Google recorded it, rather than the nightly total.

A night can be several sessions (a wake-and-resume, a nap); health_get_sleep sums them per night, while this returns each one whole: its interval, type (CLASSIC or STAGES), Google's metadata (mainSleep, nap, processed, manuallyEdited, stagesStatus), its summary (minutesAsleep, minutesAwake, minutesInSleepPeriod, minutesToFallAsleep, minutesAfterWakeUp, and the per-stage minutes and counts), and the device that recorded it.

Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. include_stages: If true, include every stage segment, short awakening and out-of-bed segment. Without it each session carries only how many there are, since a night runs to dozens.

Returns one entry per session with session_id, date (the local day it ended), start_time, end_time, provider, record (the session as Google sent it, less the segment arrays unless include_stages) and segment_counts (how many of each; absent where the stored record cannot be read).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
liveNo
end_dateNo
start_dateNo
include_stagesNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.7.0

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and largely succeeds: it discloses the caching layer ('re-fetch this window from the API before reading the cache'), that include_stages materially changes payload size ('a night runs to dozens'), and that segment_counts can be absent when a stored record is unreadable. It could be slightly more explicit about failure/empty-window behavior, but the safety-relevant behavior is well surfaced.

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

Conciseness4/5

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

Front-loaded with the key distinction before any detail, and the Args/Returns blocks are efficient. It is somewhat long, and the Returns section partially duplicates what the output schema already conveys, but every sentence remains substantive rather than 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?

For a 4-parameter read tool with zero schema description coverage and a complex nested return, the description supplies exactly what's missing: parameter formats, defaulting, cache behavior, and the shape/optionality of the result. An agent has everything needed to call it correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must do all the work — and it does. It documents all four parameters: start_date accepted formats ('YYYY-MM-DD', 'YYYY-MM', '30d') with its default, end_date with default, live's cache-bypass semantics, and include_stages' effect on the returned segment arrays. This adds meaning far beyond the bare schema property names.

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 (get) and resource (each sleep session) and explicitly contrasts the scope with sibling health_get_sleep ('sums them per night, while this returns each one whole'). An agent can distinguish the two tools immediately without opening schemas.

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?

Names the alternative tool (health_get_sleep) and the exact condition that selects this one over it — wanting per-session granularity rather than a nightly total. It also clarifies when a night yields multiple sessions (wake-and-resume, nap), giving concrete selection context.

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