Google Health Data Reference
Full inventory from sweeping all 39 Google Health data types via the Health MCP. Swept: 2026-08-26. Re-run anytime:
python3 ~/.hermes/scripts/health-data-sweep.pyRaw archive of each sweep:~/.hermes/state/health-sweep-latest.json
Access paths
- In-session MCP tools (preferred, interactive):
mcp_google_health_google_health_list_data_points,_daily_rollup,_reconcile_data_points - Direct JSON-RPC (scripts): POST to
http://127.0.0.1:3005/mcp— no auth locally. Handle SSE replies (parsedata:lines); sendMcp-Session-Idheader from theinitializeresponse on subsequent calls. See~/.hermes/scripts/health-data-sweep.pyfor a working client. - Direct REST (legacy): tokens at
~/.google-health-mcp/tokens.json— used bydaily-health-sync.py. Works, but the MCP path avoids token-refresh handling.
LIVE — updating through today, safe to build automation on
Minute-level streams (Fitbit Air): heart-rate · heart-rate-variability · activity-level · active-energy-burned · time-in-heart-rate-zone · sedentary-period
Sessions: exercise (type + calories/distance summaries) · swim-lengths-data (⚠️ misfires during non-swim workouts — verify before trusting)
Nightly processed (ready ~30–60 min after wake): sleep (stages + summary) · respiratory-rate-sleep-summary · daily-resting-heart-rate · daily-oxygen-saturation · daily-heart-rate-variability · daily-respiratory-rate · daily-heart-rate-zones · daily-sleep-temperature-derivations · active-zone-minutes
Aggregate-only (raw listing returns EMPTY — must use daily_rollUp): steps · distance · total-calories
STALE — historical relics, DO NOT use for automation
weight (last Dec 2020) · body-fat (Nov 2020) · vo2-max (Aug 2025, pre-Air era) · run-vo2-max (Aug 2025) · daily-vo2-max (2019) · altitude (Dec 2025, foreign-tz trace) · food (catalog, Pret items — not logs) · hydration-log (one entry, 2017) · nutrition-log (Sep 2017) · height (static 1751mm, fine as reference only)
EMPTY / DEAD — no data, some reject API calls outright
No data: blood-glucose · core-body-temperature · electrocardiogram · irregular-rhythm-notification · oxygen-saturation (instant variant — the daily one is live)
Dead verbs: floors + calories-in-heart-rate-zone (reject BOTH list and rollup) · active-minutes (list EMPTY, rollup invalid-arg)
Quirks learned the hard way
sleeprejects server-side time filters (INVALID_DATA_POINT_FILTER_RESTRICTION_COMPARABLE) — fetch recent points, slice locally.- List results are newest-first; page_size small is cheap.
- The
data_type_coveragetool misreports — trustlist_data_pointsdirectly. - Nightly types finalize late: sleep/RHR/temp read short if pulled immediately after wake. Wait ~60+ min or re-pull previous-day values later.
- Rollup max window 90 days; window_size_days × page_size ≤ type cap.
Where health data lands
- PWA dashboard:
https://health.00000041.xyz(LANhttp://192.168.0.182:8654; containerhealth-app, stack/data/compose/30) — today card, trend charts, correlations, two-tap mood logger (CouchDBwellnessDB →wellness-tracker.mdmirror) workspace/health/health-tracker.md+health-daily.csv←daily-health-sync.py(cron 08:10) — the only script that talks to Google; everything downstream reads its CSVworkspace/health/recovery-status.md+recovery-daily.csv←health-recovery.py(cron 08:30, reads CSV, GREEN/AMBER/RED flag)illness-watchdog.py(cron 09:15, reads CSV) — silent unless skin temp ≥+0.5° / RHR ≥+5 over 7d-mean / SpO₂ <94% on 2 consecutive dayshealth-export.py(cron 08:35) → atomichealth-app/data/health-data.json(accumulated history + moods from CouchDB); rebuilds the wellness tracker mirror- Sunday housekeeping “Health Week” section reads the same CSV
- This file +
~/.hermes/state/health-sweep-latest.json←health-data-sweep.py(manual/on-demand)
The HA google_health integration was removed 2026-08-26 when the pipeline consolidated onto the Health MCP — no HA sensor.joe_* dependency remains.
Baseline snapshot — 2026-08-26 morning
Resting HR 50 bpm · SpO₂ avg 97.3% (93.8–100) · resp rate 14.6 br/min · HRV avg 64.5 ms (non-REM HR 43) · skin temp nightly 35.03° vs 34.92° baseline (+0.11°) · sleep 7h58 (deep 76m / REM 88m / awake 13m) · steps trailing week: 20,004 / 19,536 / 10,164 / 7,879 highs