Google Health Fitbit MCP
This MCP server enables AI agents to query your Google Health API data—from Fitbit trackers, Pixel Watch, and connected partner sources—through a local OAuth flow. All processing and token storage happen on your machine (with strict 0600 permissions), credentials never leave your device, and GPS/route data is redacted by default. All shipped data tools are read-only; write/destructive operations are explicitly gated.
Setup & Authentication
Check connection status, config, token, and scope readiness without calling Google APIs
Generate OAuth URLs, exchange authorization codes, and revoke access
Run a guided quickstart walkthrough
User & Device Data
Retrieve your identity, profile, settings (units, timezone), and paired devices
Check irregular rhythm / AFib notification status
Health Data Queries
Query intraday data points across 39 supported types (steps, sleep, heart rate, calories, weight, blood glucose, ECG, etc.)
Fetch a specific data point by ID
Reconcile deduplicated data streams across all sources
Get civil-day aggregates (daily rollup) or custom time-window aggregates (physical-time rollup)
Summaries & Wellness Context
Daily summary — steps, distance, calories, active-zone minutes, sleep, resting HR, HRV, weight with data-quality flags
Weekly summary — scorecard with optional prior-window comparison, load classification, and bottlenecks
Wellness context — normalized activity/sleep shape for recommendation engines
Discovery & Metadata
Browse the data inventory, list all 39 data types with units/scopes/verbs, and build coverage plans or run live coverage checks
Access an agent manifest, capabilities overview, and realistic synthetic demo payloads
Privacy & Diagnostics
Run a privacy audit reviewing local posture, cache settings, and token paths without exposing secrets
Check optional SQLite response cache stats
Local Wellness Profile
Read and update a local wellness profile (goals, devices, training/nutrition preferences, safety flags)
Access an 11-question onboarding flow to guide initial setup
Allows querying Google Health API v4 data from Fitbit devices, including steps, sleep, heart rate, and other health metrics, with OAuth authentication.
Provides access to Google Health API v4 for retrieving health data from various sources, including Fitbit and Pixel Watch, with OAuth authentication and local token storage.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Health Fitbit MCPShow me my step count from today."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
An MCP server that runs locally and hands your AI agent your own Google Health API data — from Fitbit trackers, Pixel Watch and supported partner sources — through OAuth.
Install in one command —
npx -y google-health-fitbit-mcp setupRun it in Claude Desktop · Claude Code · Cursor · Windsurf · Hermes · OpenClaw — see client examples.
On your machine — OAuth tokens are stored locally with
0600permissions and are never returned by any tool (privacy).Read-only by default — every shipped data tool is a read. Writes are a gated, opt-in, dry-run-first design that is not enabled.
Beta status: Google Health API is available to developers but the surface is still moving. Because Google's release notes keep listing scope and data-type changes after launch, this connector remains in beta and steers testers toward safe read-only validation before any production use.
Independent, community-built connector — no affiliation with, endorsement from or support by Google, Fitbit or Alphabet. Not a medical device or medical advice; treat the data as trend context only.
⚡ Quick Connect
Prerequisite: a Google Cloud OAuth client (type: Desktop) with the Google Health API enabled and the redirect
http://127.0.0.1:3000/callbackregistered — details in Install.
Step 1 — Install & authorize (once):
npx -y google-health-fitbit-mcp setup # guided: Google Cloud OAuth client + scopes
npx -y google-health-fitbit-mcp auth # browser OAuth — tokens stay on your machine
npx -y google-health-fitbit-mcp checkup # ✓ verifies everything is readysetup asks for a Client ID and Client Secret. You create these once, for free, in Google Cloud:
New project — open console.cloud.google.com/projectcreate, name it (e.g.
health-mcp), click Create, then select it.Enable the API — open the Google Health API page and click Enable.
Consent screen — go to OAuth consent screen, choose External, and fill in the required app name / email fields. Under Test users, add your own Google account — skip this and sign-in fails with
403: access_denied.Create the client — go to Credentials → + Create credentials → OAuth client ID → Application type: Desktop app → Create.
Copy the Client ID (ends in
…apps.googleusercontent.com) and the Client secret, then paste each one whensetupprompts you.
Redirect URI: Desktop-app clients allow the
http://127.0.0.1:3000/callbackloopback automatically — you don't register it anywhere. Just press Enter to accept the default whensetupasks. For every othersetupprompt (scope preset, privacy mode), pressing Enter picks a sensible default.
Heads-up — the 7-day rule: while the consent screen sits in Testing publishing status, Google revokes refresh tokens after 7 days. Around once a week the next request fails with
invalid_grant, which is normal and not a bug in this server. It reopens the consent flow for you (see Staying connected); approving takes a couple of seconds. Publishing the app removes the expiry entirely — check what your scopes require on the consent screen before switching.
Step 2 — Connect your app:
claude mcp add google-health -- npx -y google-health-fitbit-mcpSettings → Developer → Edit Config, then add to claude_desktop_config.json:
{
"mcpServers": {
"google_health": {
"command": "npx",
"args": ["-y", "google-health-fitbit-mcp"]
}
}
}Restart Claude Desktop — the tools appear under the 🔌 connectors menu.
Add the same mcpServers block to .cursor/mcp.json (per-project) or ~/.cursor/mcp.json (global), or use Settings → MCP → Add new server.
{
"mcpServers": {
"google_health": {
"command": "npx",
"args": ["-y", "google-health-fitbit-mcp"]
}
}
}Add the same mcpServers block to ~/.codeium/windsurf/mcp_config.json.
npx -y google-health-fitbit-mcp setup --client hermes # writes the Hermes config for youThen reload with /reload-mcp or hermes mcp test google_health.
Step 3 — Test it. Ask your agent:
Run google_health_connection_status and tell me if I'm connected.Related MCP server: Fitbit MCP
Why this exists
The Google Health API is the successor to the Fitbit Web API: new OAuth, new base URL (https://health.googleapis.com), a streamlined endpoint schema, standardized kebab-case data types, reconciled cross-source streams and daily/physical-time rollups.
It gives agents a clean path to explore the API, verify their setup, sign in locally and pull data — with no need to paste tokens into prompts or agent configs.
Try it with your agent
Three good opening prompts, built around tools this connector genuinely ships:
Check my setup with google_health_connection_status, then call
google_health_data_inventory and tell me which Google Health
domains and scopes I've granted.Pull today's google_health_daily_summary, then google_health_weekly_summary.
Keep observed data separate from any suggestions, and stay non-medical.List my paired devices with google_health_list_paired_devices and tell me
which device is producing my sleep and heart-rate data.Tools
29 tools, all read-only except the two explicitly gated local-profile/auth actions noted below.
Start here
Tool | What it does |
| Local config, token, scope and MCP-client readiness — no Google call |
| Personalized 3-step setup walkthrough that adapts to your current state |
| Supported domains, scopes, data-type naming and recommended agent flow |
| The 39 kebab-case data-type slugs with units, scopes and supported verbs |
| Realistic synthetic payloads so agents see the contract before real calls |
Data reads (Google Health API)
Tool | Endpoint |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Summaries & wellness context
Tool | What it does |
| Steps, distance, calories, active-zone minutes, sleep, resting HR, HRV and weight for one day, with data-quality flags |
| Weekly scorecard with optional prior-window comparison, load classification and bottlenecks |
| Normalized activity/sleep context for recommendation engines |
Auth, diagnostics & metadata
google_health_get_auth_url · google_health_exchange_code (gated: requires explicit user intent) · google_health_revoke_access (gated + destructive: disconnects Google Health) · google_health_privacy_audit · google_health_cache_status · google_health_data_type_coverage · google_health_capabilities · google_health_agent_manifest · google_health_onboarding · google_health_profile_get · google_health_profile_update (local file only, requires explicit_user_intent=true)
Resources & prompts
MCP resources: google-health://agent-manifest, google-health://capabilities, google-health://inventory, google-health://latest/steps, google-health://profile, google-health://summary/daily, google-health://summary/weekly.
MCP prompts: google_health_daily_checkin, google_health_weekly_review, google_health_data_type_investigation.
Data types
39 data types from the official Google Health table, including steps, sleep, heart-rate, heart-rate-variability, daily-resting-heart-rate, active-zone-minutes, distance, total-calories, weight, body-fat, blood-glucose, oxygen-saturation, vo2-max, electrocardiogram, irregular-rhythm-notification, exercise, floors, swim-lengths-data, nutrition-log and hydration-log.
Naming rules agents need:
Endpoints use kebab-case data types:
steps,daily-resting-heart-rate.Filters use snake_case field paths:
sleep.interval.civil_start_time,heart_rate.sample_time.physical_time.Source families:
all-sources,google-wearables,google-sources.
Call google_health_list_data_types for the full catalog with units, scopes and which verbs (list/reconcile/rollup) each type supports.
Privacy & what runs offline
OAuth tokens live on disk at
~/.google-health-mcp/tokens.json, locked down to0600permissions.Client secrets go in
~/.google-health-mcp/config.jsonor theGOOGLE_HEALTH_*environment variables.No tool ever hands back an access token, refresh token or client secret; error output is redacted too.
The default privacy mode is
GOOGLE_HEALTH_PRIVACY_MODE=structured;summarystrips identifiers further, andrawis an explicit opt-in for debugging.GPS/route data is treated as sensitive and redacted unless explicitly requested.
supportprints a copy-paste support bundle for GitHub issues — always redacted, never contains tokens, secrets, local paths or health measurements.support --feedback --jsonprints an anonymous setup-feedback bundle for beta testers (guide).coverage --live --jsonprints only redacted data-type status and point-count buckets — never raw Google Health payloads (guide).
Install
Set up a Google Cloud OAuth client (type: Desktop), turn on the Google Health API, and register the local redirect:
http://127.0.0.1:3000/callbackThen run:
npx -y google-health-fitbit-mcp setup --scope-preset full
npx -y google-health-fitbit-mcp auth
npx -y google-health-fitbit-mcp checkupScope presets
Presets keep OAuth consent easy to reason about — request only what your use case needs:
Preset | Grants |
| profile + settings |
| basic + activity/fitness + health metrics |
| basic + sleep |
| basic + health metrics + ECG + irregular-rhythm notifications |
| all recommended read-only scopes (default) |
| opt-in nutrition write scope — the only preset with any write capability; no write tool ships yet |
Advanced users can pass --scopes with an explicit space/comma-separated scope list.
If setup gets stuck
npx -y google-health-fitbit-mcp checkup --fix # repairs local config/token permissions (chmod 600 where supported)
npx -y google-health-fitbit-mcp checkup --live # hits read-only identity/profile/settings endpoints to confirm the API responds
npx -y google-health-fitbit-mcp coverage --live --json # redacted read-only data-type coverage report
npx -y google-health-fitbit-mcp support # shareable support bundle, stripped of tokens/secrets/measurements
npx -y google-health-fitbit-mcp support --feedback --json # anonymous setup feedback bundleStaying connected
Access tokens refresh silently in the background. The refresh token behind them is what expires — Google revokes it after 7 days while the consent screen is in Testing publishing status, and the next call comes back as invalid_grant. Retrying cannot fix that: the grant is gone, and only a fresh authorization brings it back.
So the server does the authorization for you. On the first call that hits a revoked grant it opens your browser at Google's consent screen; approve, and the original request finishes on its own — no command to run, nothing to diagnose. If you take longer than GOOGLE_HEALTH_REAUTH_WAIT_MS (45s by default), the call returns the URL instead and the listener stays up, so approving still works and the next request goes through.
This only runs on the local stdio transport, where the browser and the server are on the same machine. Under the HTTP transport — where the server may be remote, and its default port collides with the loopback redirect — the call fails with an explicit instruction to run auth instead. Set GOOGLE_HEALTH_AUTO_REAUTH=0 to always handle re-authorization yourself, or GOOGLE_HEALTH_AUTH_NO_BROWSER=1 on headless hosts to get the URL without a browser launch.
MCP client config
Claude Desktop / Cursor / Windsurf (see examples/):
{
"mcpServers": {
"google_health": {
"command": "npx",
"args": ["-y", "google-health-fitbit-mcp"]
}
}
}Hermes
npx -y google-health-fitbit-mcp setup --client hermes --no-auth
npx -y google-health-fitbit-mcp auth
npx -y google-health-fitbit-mcp checkup --client hermesOnce the config changes, run /reload-mcp or hermes mcp test google_health — there's no need to restart the gateway just to read data.
HTTP transport (optional)
The default transport is stdio. A local Streamable-HTTP transport is available for clients that need it:
npx -y google-health-fitbit-mcp --http # serves http://127.0.0.1:3000/mcp (+ /health)Configuration
Environment variable | Purpose | Default |
| Google Cloud OAuth client ID | — (or local config) |
| OAuth client secret (prefer local config over MCP client config) | — (or local config) |
| Registered redirect URI | — (or local config) |
| Token file location |
|
|
|
|
| Optional SQLite response cache ( | disabled |
| SQLite cache location |
|
| Bypass the in-memory HTTP cache (60s TTL, GET-only) | unset |
|
|
|
| HTTP transport bind address |
|
| Reopen the consent flow automatically when the grant is revoked ( | enabled |
| How long a tool call waits for you to approve before returning the URL instead |
|
| Never launch a browser; print/return the URL only (headless hosts) | unset |
Reliability built in: every Google call goes through retry middleware (exponential backoff + jitter, honors Retry-After, retries 408/429/5xx) and a 60-second GET-only response cache. Multi-day summaries limit request concurrency to stay under rate limits.
CLI commands
All commands run via npx -y google-health-fitbit-mcp <command> (installed binary: google-health-fitbit-mcp-server).
Command | What it does | Key flags |
(none) | Start the MCP server on stdio |
|
| Guided setup: writes local config + MCP client config |
|
| Browser OAuth with local callback; saves tokens with |
|
| Setup diagnosis with ✓/✗ checks and next steps (aliases: |
|
| Data-type coverage report across list/reconcile/rollup |
|
| Redacted support bundle for GitHub issues |
|
| Shared wellness onboarding flow as JSON |
|
| Print version / full usage |
Beta testers wanted
Right now the most valuable thing you can contribute is hands-on setup feedback from real Fitbit, Pixel Watch, Android and Google Health API accounts.
If you have a real account to test with:
Run
npx -y google-health-fitbit-mcp checkupand let us know whether the OAuth flow reads clearly.Run
npx -y google-health-fitbit-mcp support --feedback --jsonand drop the anonymous bundle into a GitHub issue.Once OAuth is done, run
npx -y google-health-fitbit-mcp coverage --live --jsonand post the redacted coverage report after you've reviewed it.Exercise
google_health_connection_status,google_health_data_inventoryandgoogle_health_daily_summaryfrom inside your MCP client.File an issue if you hit missing data types, unclear setup steps, client-specific friction or privacy concerns.
Please keep OAuth tokens, client secrets, local paths and personal health measurements out of public issues.
Development
git clone https://github.com/BerkKilicoglu/google-health-fitbit-mcp.git
cd google-health-fitbit-mcp
npm install
npm testnpm test runs typecheck, build, MCP smoke tests (stdio + HTTP), summary fixtures, privacy/cache/retry suites, CLI UX checks and metadata validation. See CONTRIBUTING.md for guidelines and SECURITY.md for the security policy.
Links
Google Health API: https://developers.google.com/health
Release notes: https://developers.google.com/health/release-notes
REST reference: https://developers.google.com/health/reference/rest
Data types: https://developers.google.com/health/data-types
Migration guide (Fitbit → Google Health): https://developers.google.com/health/migration
Contact & support
🐛 Bug reports / feature requests — GitHub Issues
📨 klcogluberk@gmail.com — general questions and integration help
License
MIT — see LICENSE.
Available Tools
29 toolsgoogle_health_agent_manifestGoogle Health Agent ManifestARead-onlyIdempotent
Machine-readable install, runtime and client guidance for AI agents. Does not call Google Health or expose secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | generic | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| links | Yes | |
| oauth | Yes | |
| client | Yes | |
| hermes | Yes | |
| status | Yes | |
| package | Yes | |
| project | Yes | |
| mcp_name | Yes | |
| resources | Yes | |
| unofficial | Yes | |
| agent_rules | Yes | |
| beta_notice | Yes | |
| mutating_tools | Yes | |
| standard_tools | Yes | |
| troubleshooting | Yes | |
| recommended_first_calls | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by clarifying the tool does not call Google Health APIs and does not expose secrets. Annotations already indicate read-only, idempotent, and non-destructive behavior. The description confirms these traits and adds specific safety guarantees, complementing the annotations well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with essential information. Every word contributes to understanding the tool's purpose and safety. There is no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two optional parameters with enums, output schema present), the description is complete enough. It covers purpose, safety, and non-interaction with Google Health. The rich annotations and output schema provide the remaining context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides enums and defaults for both parameters (client, response_format), but schema description coverage is 0%. The tool description does not explain the meaning of these parameters or how they affect the manifest output. The enums give some context, but the description adds no additional clarity beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides machine-readable install, runtime, and client guidance for AI agents. It distinguishes itself from sibling tools that interact with Google Health data by explicitly stating it does not call Google Health or expose secrets. The purpose is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for setup or configuration guidance but does not explicitly state when to use this tool versus alternatives like google_health_quickstart or google_health_onboarding. No when-not or exclusion criteria are provided. Usage context is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_cache_statusGoogle Health Cache StatusARead-onlyIdempotent
Show optional local SQLite cache status. Enable with GOOGLE_HEALTH_CACHE=sqlite or GOOGLE_HEALTH_CACHE=true.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| enabled | Yes | |
| entries | Yes | |
| http_cache | No | |
| newest_cached_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that the cache is a local SQLite cache, which is helpful context. However, it does not disclose any additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose ('Show optional local SQLite cache status') and includes necessary usage hints. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, read-only, output schema exists), the description is mostly complete. It could mention that the output format is controlled by the parameter, but that is implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description adds no meaning to the single parameter (response_format). The parameter has an enum, but the description does not explain its purpose or values, relying entirely on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows optional local SQLite cache status. It uses a specific verb ('Show') and resource ('cache status'), distinguishing it from sibling tools like google_health_connection_status. However, it could be more precise about what 'status' entails (e.g., enabled, size).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: it is relevant only if the cache is enabled via environment variables. It does not explicitly state when not to use it or list alternatives, but the condition is clearly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_capabilitiesGoogle Health MCP CapabilitiesARead-onlyIdempotent
Explain supported Google Health data, privacy boundaries, beta status and recommended agent workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| links | Yes | |
| status | Yes | |
| creator | Yes | |
| project | Yes | |
| mcp_name | Yes | |
| auth_model | Yes | |
| unofficial | Yes | |
| beta_notice | Yes | |
| api_boundary | Yes | |
| privacy_modes | Yes | |
| client_aliases | Yes | |
| mutating_tools | No | |
| supported_data | Yes | |
| contribution_paths | Yes | |
| recommended_agent_flow | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description aligns with annotations (readOnlyHint, idempotentHint, destructiveHint). Adds useful context about beta status and privacy boundaries beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, efficient and front-loaded. Slightly too brief for a capabilities overview but acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers the tool's role given the presence of an output schema. Explains what the tool does without needing to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one parameter (response_format) with 0% description coverage. The description does not mention this parameter or its effect, failing to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: explaining supported health data, privacy boundaries, beta status, and recommended workflow. It effectively distinguishes itself from sibling tools that perform data retrieval or setup tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage before interacting with other tools to understand scope. No explicit when-not-to-use or alternatives, but context is clear for an introductory tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_connection_statusGoogle Health Connection StatusARead-onlyIdempotent
Check local Google Health config, token file, Node version, privacy mode, cache readiness and optional MCP client readiness without calling Google APIs or exposing secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | generic | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| node | Yes | |
| cache | Yes | |
| oauth | Yes | |
| token | Yes | |
| client | No | |
| config | Yes | |
| next_steps | Yes | |
| missing_env | Yes | |
| privacy_mode | Yes | |
| redirect_uri | No | |
| required_env | Yes | |
| client_checks | No | |
| automatic_auth_supported | Yes | |
| ready_for_google_health_api | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds critical context: no Google API calls, no secrets exposure, and checks specific local items. This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action verb 'Check' and lists all relevant items without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only diagnostic tool with an output schema, the description covers the state space comprehensively: local config, token, Node version, privacy mode, cache, and MCP client readiness. The output schema likely handles return structure, so no further detail needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 2 parameters (client, response_format) with enums and defaults, but schema description coverage is 0%. The description does not explain any parameter meaning or behavior. While the parameters are simple, the description fails to add value for parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks local configuration, token file, Node version, privacy mode, cache readiness, and optional MCP client readiness. It emphasizes that no Google APIs are called and no secrets are exposed, distinguishing it from sibling tools like google_health_capabilities or google_health_cache_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for local health checks without external calls. It does not explicitly state when not to use or compare to alternatives, but the sibling context shows distinct purposes, making usage relatively clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_daily_rollupGoogle Health Daily RollupBRead-onlyIdempotent
Aggregate a data type over civil days using Google Health dailyRollUp. Useful for steps, distance, calories, active minutes, weight and heart summaries.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | Exclusive end date as YYYY-MM-DD. Defaults to the next day. | today |
| data_type | No | Google Health data type in kebab case. Supported slugs (call google_health_list_data_types for units and which verbs each supports): active-energy-burned, active-minutes, active-zone-minutes, activity-level, altitude, blood-glucose, body-fat, calories-in-heart-rate-zone, core-body-temperature, daily-heart-rate-variability, daily-heart-rate-zones, daily-oxygen-saturation, daily-respiratory-rate, daily-resting-heart-rate, daily-sleep-temperature-derivations, daily-vo2-max, distance, electrocardiogram, exercise, floors, food, food-measurement-unit, heart-rate, heart-rate-variability, height, hydration-log, irregular-rhythm-notification, nutrition-log, oxygen-saturation, respiratory-rate-sleep-summary, run-vo2-max, sedentary-period, sleep, steps, swim-lengths-data, time-in-heart-rate-zone, total-calories, vo2-max, weight. Other valid kebab-case slugs are also accepted. | steps |
| page_size | No | ||
| page_token | No | ||
| start_date | No | today | |
| privacy_mode | No | Optional per-call privacy override. Defaults to GOOGLE_HEALTH_PRIVACY_MODE or structured. raw returns upstream Google Health JSON. | |
| response_format | No | markdown | |
| window_size_days | No | ||
| data_source_family | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and non-destructive behavior. The description adds that it aggregates over civil days, which is consistent, but does not reveal additional behavioral traits beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences that front-load the purpose and examples with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, 3 enums, pagination), the description is too brief. It omits details on date range semantics, window_size_days effect, pagination, and privacy options, leaving the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema description coverage, the description should compensate but does not explain key parameters like start_date, end_date, window_size_days, or pagination. It only indirectly references the data_type parameter through examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it aggregates a data type over civil days, with examples like steps and distance. However, it does not distinguish itself from related sibling tools like google_health_rollup or google_health_daily_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description suggests it is useful for common health metrics, but it does not specify when to use this tool versus alternatives, nor does it mention prerequisites or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_daily_summaryGoogle Health Daily SummaryARead-onlyIdempotent
Build a practical daily summary from Google Health rollups and reconciled streams when available. Read-only, beta, non-medical.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | today | |
| timezone | No | IANA timezone used only for display, e.g. America/New_York. | UTC |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| generated_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds 'beta' and 'non-medical', informing agents of reliability and scope. This adds value beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise segments, each earning its place. It front-loads the action and constraints efficiently with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown but indicated as present), the description does not need to detail return values. It covers input purpose, data sources, and important constraints. The simplicity of the tool (3 optional params) makes this sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (33%), and the description adds no parameter details. While parameters are simple, the description should compensate for low coverage but does not. The schema provides some info for timezone and response_format, but the description adds nothing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a 'practical daily summary' from 'Google Health rollups and reconciled streams', with read-only, beta, and non-medical qualifiers. This is a specific verb+resource that distinguishes it from sibling tools like google_health_daily_rollup and google_health_weekly_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While no explicit alternative guide is given, the description implicitly tells when to use it: for a summarized daily view from available rollups and reconciled streams. The 'beta, non-medical' note provides context but no direct when-not-to guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_data_inventoryGoogle Health Data InventoryARead-onlyIdempotent
Inventory supported Google Health data types, auth scopes, privacy modes and recommended first calls without calling Google APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| auth | No | |
| kind | Yes | |
| links | Yes | |
| notes | Yes | |
| scopes | Yes | |
| source | Yes | |
| totals | Yes | |
| mcp_name | Yes | |
| categories | Yes | |
| unofficial | Yes | |
| first_tools | Yes | |
| api_boundary | No | |
| generated_at | Yes | |
| privacy_modes | Yes | |
| data_access_model | Yes | |
| recommended_agent_flow | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint false. The description adds valuable context that the tool operates without calling Google APIs, informing the agent of no network side effects or latency. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core action and key outputs. Every word adds value with no redundancy or wasted space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description does not need to explain return values. It lists the included information (data types, auth scopes, privacy modes, recommendations), which is sufficient for an inventory tool. Could mention the output format, but the output schema likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional param with 0% description coverage. The description does not mention the param, but the param (response_format) is self-explanatory from its enum. The low coverage would normally require compensation, but the trivial nature of the param makes this acceptable. Score 3 as minimal but adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it inventories supported Google Health data types, auth scopes, privacy modes, and recommended first calls. However, it does not explicitly differentiate from similar sibling tools like google_health_data_type_coverage, although the additional items (auth scopes, privacy modes, recommendations) provide implicit distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at usage by noting 'without calling Google APIs' and 'recommended first calls', suggesting it is a safe, informational starting point. However, it lacks explicit when-to-use, when-not-to-use, or alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_data_type_coverageGoogle Health Data Type CoverageARead-onlyIdempotent
Build a data-type coverage plan from the official Google Health API data-type table, or run explicit live read-only checks against a real OAuth account. Live mode returns only redacted status and point-count buckets, never raw health payloads.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | today | |
| live | No | Default false. When true, calls read-only Google Health endpoints after OAuth setup and returns only redacted coverage status. | |
| data_types | No | Optional subset of data_type slugs. Omit to validate the full local catalog. | |
| response_format | No | markdown | |
| data_source_family | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds value by stating that live mode returns only redacted status and point-count buckets, never raw health payloads, which is behavioral context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose and mode distinction without any redundant or irrelevant information. Every sentence serves a clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, low schema coverage, and an output schema), the description is adequate but lacks context such as prerequisites for live mode (OAuth setup) and how the output is structured despite the output schema. It does not fully guide the agent on when to use each mode.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 40%, but the schema itself provides descriptions for all parameters, including enum lists and patterns. The tool description does not add meaning beyond what the schema already offers, so it meets the baseline but does not compensate for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a data-type coverage plan or runs live read-only checks, specifying that live mode returns only redacted status. It differentiates from sibling tools like google_health_list_data_types by emphasizing coverage planning and the non-raw nature of live output, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies two usage modes but does not provide explicit guidance on when to use this tool versus siblings, such as google_health_list_data_types for listing types or google_health_get_data_point for raw data. No when-not or alternative suggestions are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_demoGoogle Health DemoARead-onlyIdempotent
Returns realistic Pixel-Watch-style example payloads of google_health_daily_summary, google_health_wellness_context, and google_health_daily_rollup so agents see the contract before calling real Google Health APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations by specifying it returns example payloads, consistent with readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a demo tool with few parameters and annotations; no output schema needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage and description does not mention the one parameter, though the parameter name and enum are self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns example payloads of specific real APIs, distinguishing it from sibling tools that return actual data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use before calling real APIs, but lacks explicit when-not-to-use or alternative selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_exchange_codeExchange Google Health OAuth CodeA
Exchange a Google OAuth authorization code for local tokens. Tokens are stored locally with 0600 permissions and are never returned. Gated: requires explicit user intent — agents must not call this autonomously.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | OAuth authorization code, or a full redirect URL containing ?code=... | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | Yes | |
| scope | No | |
| expires_at | No | |
| token_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that tokens are stored locally with 0600 permissions and never returned. This adds valuable context beyond annotations (readOnlyHint=false, destructiveHint=false) without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences clearly stating purpose, behavioral details, and usage constraint. No redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Describes the main action, side effects, and usage constraint. The output schema exists to cover return values. Could mention what happens after tokens are stored (e.g., other tools use them) but overall complete for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (code has description, response_format lacks one). Description adds no parameter details, so it does not compensate for the missing description in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Exchange' and the resource 'Google OAuth authorization code for local tokens'. It distinguishes from all siblings as no other tool performs this specific exchange. Includes behavioral and usage constraints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states that the tool requires explicit user intent and agents must not call autonomously. This provides strong usage guidance, though alternatives are not mentioned because no sibling does the same thing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_get_auth_urlGet Google Health OAuth URLARead-onlyIdempotent
Generate a Google OAuth authorization URL for Google Health API. Use this first when no local token exists.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional OAuth state value generated by the caller. | |
| scopes | No | Optional scope override. Defaults to read-only Google Health scopes used by this server. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| scopes | Yes | |
| auth_url | Yes | |
| next_step | Yes | |
| redirect_uri | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint, idempotentHint, and destructiveHint. The description adds minimal behavioral detail beyond the usage guidance and the obvious URL generation. It does not elaborate on the OAuth flow, redirect, or user interaction required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise, consisting of two short sentences that each serve a distinct purpose: stating the tool's function and providing usage guidance. No extraneous information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (generating an OAuth URL with three parameters) and the presence of an output schema, the description is largely complete. It could be slightly improved by indicating that this is the first step in a two-step OAuth flow, but it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 67% schema description coverage, the input schema already explains two of three parameters. The description does not add any extra semantics or constraints beyond the schema, so it meets the baseline for this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a Google OAuth authorization URL for the Google Health API. It directly describes the verb and resource, and while it doesn't explicitly distinguish from sibling tools, the distinction is clear given the presence of google_health_exchange_code for the next step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit guidance: 'Use this first when no local token exists.' This provides clear context for when to invoke the tool, though it lacks mention of when not to use it or alternatives (e.g., skipping if token already exists).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_get_data_pointGet Google Health Data PointARead-onlyIdempotent
Fetch one data point by id — e.g. a specific sleep session, exercise or weight entry found via list/reconcile. Accepts the bare id or the full resource name from a previous response. Only data types whose official_operations include 'get' support this (see google_health_list_data_types).
| Name | Required | Description | Default |
|---|---|---|---|
| data_type | Yes | Google Health data type in kebab case. Supported slugs (call google_health_list_data_types for units and which verbs each supports): active-energy-burned, active-minutes, active-zone-minutes, activity-level, altitude, blood-glucose, body-fat, calories-in-heart-rate-zone, core-body-temperature, daily-heart-rate-variability, daily-heart-rate-zones, daily-oxygen-saturation, daily-respiratory-rate, daily-resting-heart-rate, daily-sleep-temperature-derivations, daily-vo2-max, distance, electrocardiogram, exercise, floors, food, food-measurement-unit, heart-rate, heart-rate-variability, height, hydration-log, irregular-rhythm-notification, nutrition-log, oxygen-saturation, respiratory-rate-sleep-summary, run-vo2-max, sedentary-period, sleep, steps, swim-lengths-data, time-in-heart-rate-zone, total-calories, vo2-max, weight. Other valid kebab-case slugs are also accepted. | |
| privacy_mode | No | Optional per-call privacy override. Defaults to GOOGLE_HEALTH_PRIVACY_MODE or structured. raw returns upstream Google Health JSON. | |
| data_point_id | Yes | Data point id, or the full resource name from a list/reconcile response (users/me/dataTypes/<type>/dataPoints/<id>). | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. Description adds critical context: only works for data types with 'get' in official_operations, and explains privacy_mode override defaults. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and examples, then qualification about supported data types. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 params, output schema, and clear annotations, the description covers purpose, usage, data type constraints, id format, and optional privacy override. Complete without being verbose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, with good params docs. Description adds value by clarifying that data_point_id accepts full resource name from previous responses, which is not fully explicit in schema. For data_type, it references list_data_types for dynamic validation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Fetch one data point by id' with examples (sleep session, exercise, weight entry), distinguishing it from sibling list/reconcile tools. The verb 'get' and resource 'data point' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using this tool after list/reconcile to fetch a specific entry. Mentions prerequisite to check data type support via google_health_list_data_types, and accepts both bare id and full resource name, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_get_identityGet Google Health IdentityARead-onlyIdempotent
Get the Google Health identity mapping for the authenticated user. Useful for Fitbit-to-Google migrations.
| Name | Required | Description | Default |
|---|---|---|---|
| privacy_mode | No | Optional per-call privacy override. Defaults to GOOGLE_HEALTH_PRIVACY_MODE or structured. raw returns upstream Google Health JSON. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds no additional behavioral details beyond confirming it retrieves identity mapping, which is consistent but not additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no extraneous words. It is front-loaded with the core action. However, the structure could benefit from a brief note on the meaning of 'identity mapping' to reduce ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 optional parameters, comprehensive annotations, and an output schema (not shown but indicated). The description provides a minimal but functional overview. It does not explain the return format (covered by output schema) or when to use this versus identity-related siblings (e.g., google_health_get_profile), leaving some gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only privacy_mode has a description; response_format lacks one). The tool description does not mention or clarify the parameters, leaving the agent to infer meaning from the schema alone. With low coverage, the description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the Google Health identity mapping for the authenticated user and explicitly mentions a specific use case (Fitbit-to-Google migrations), distinguishing it from sibling tools that handle data points, profiles, or settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete usage scenario (Fitbit-to-Google migrations), which implies when to use the tool. However, it does not explicitly exclude other use cases or compare with alternative tools like google_health_get_profile, though the sibling list is large and diverse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_get_irn_profileGet Irregular Rhythm Notification ProfileARead-onlyIdempotent
Get the user's irregular rhythm notification (IRN) engagement status — whether the AFib detection feature is enabled on their Fitbit/Pixel Watch. Requires the googlehealth.irn.readonly scope (setup --scope-preset heart). Read-only, non-diagnostic.
| Name | Required | Description | Default |
|---|---|---|---|
| privacy_mode | No | Optional per-call privacy override. Defaults to GOOGLE_HEALTH_PRIVACY_MODE or structured. raw returns upstream Google Health JSON. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds value by specifying the exact scope needed and labeling the operation as 'non-diagnostic', which provides practical safety guidance beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences with no redundant words. The first sentence immediately states the core action, and the second provides essential context. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's primary function and a critical requirement (scope). With an output schema existing, return value documentation is not needed. Minor omission: no mention of when to use the privacy_mode or response_format parameters, but those are self-explanatory from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no additional information about the two parameters beyond what is already documented in the input schema. Since the schema descriptions cover both parameters adequately, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'irregular rhythm notification (IRN) engagement status', and specifies the concrete data point 'whether the AFib detection feature is enabled'. This distinguishes it from sibling tools like google_health_get_profile by targeting a specific health feature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions the required scope and setup command, which guides credential preparation. However, it does not contrast with alternative tools or state when not to use it, leaving some ambiguity in context of the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_get_profileGet Google Health ProfileARead-onlyIdempotent
Get authenticated user profile details from Google Health. Requires profile scope.
| Name | Required | Description | Default |
|---|---|---|---|
| privacy_mode | No | Optional per-call privacy override. Defaults to GOOGLE_HEALTH_PRIVACY_MODE or structured. raw returns upstream Google Health JSON. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is clear. The description adds the authentication scope requirement, which is useful but not extensive. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two short sentences with no unnecessary words. It front-loads the action and resource, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, rich annotations, and the presence of an output schema, the description covers the core behavioral context (auth scope) adequately. Minor gaps like error handling or return format are mitigated by other structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides detailed descriptions for both parameters ('privacy_mode' and 'response_format'), so schema coverage is high. The description does not add any additional meaning beyond what the schema already provides, warranting a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get authenticated user profile details from Google Health', clearly specifying the action (get) and the resource (user profile). The title reinforces this. Although sibling tools like 'google_health_get_identity' and 'google_health_profile_get' exist, the description's direct language distinguishes it effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes 'Requires profile scope', a key prerequisite, but offers no guidance on when to use this tool over alternatives like 'google_health_profile_get' or 'google_health_get_identity'. No exclusions or contextual use cases are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_get_settingsGet Google Health SettingsARead-onlyIdempotent
Get authenticated user settings such as units and timezone. Requires settings scope.
| Name | Required | Description | Default |
|---|---|---|---|
| privacy_mode | No | Optional per-call privacy override. Defaults to GOOGLE_HEALTH_PRIVACY_MODE or structured. raw returns upstream Google Health JSON. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds the context that a settings scope is required, which is useful beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear, front-loaded sentences with no wasted words. Efficiently conveys purpose and a key requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and annotations cover safety, the description briefly mentions scope and examples, which is adequate for a simple read tool. Could mention pagination or limits but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (50%) and the description does not add any parameter details beyond what the schema already provides. The description fails to compensate for missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves authenticated user settings (units and timezone), uses a specific verb ('get') and resource ('settings'), and distinguishes from sibling tools like get_profile or get_identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving user settings but does not explicitly state when to use this tool versus alternatives or when not to use it. No exclusions or comparisons provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_list_data_pointsList Google Health Data PointsARead-onlyIdempotent
Query detailed data points for a Google Health data type. Use kebab-case endpoint data types, e.g. steps, sleep, heart-rate.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Optional Google AIP-160 filter expression. Use snake_case field names in filters. | |
| data_type | No | Google Health data type in kebab case. Supported slugs (call google_health_list_data_types for units and which verbs each supports): active-energy-burned, active-minutes, active-zone-minutes, activity-level, altitude, blood-glucose, body-fat, calories-in-heart-rate-zone, core-body-temperature, daily-heart-rate-variability, daily-heart-rate-zones, daily-oxygen-saturation, daily-respiratory-rate, daily-resting-heart-rate, daily-sleep-temperature-derivations, daily-vo2-max, distance, electrocardiogram, exercise, floors, food, food-measurement-unit, heart-rate, heart-rate-variability, height, hydration-log, irregular-rhythm-notification, nutrition-log, oxygen-saturation, respiratory-rate-sleep-summary, run-vo2-max, sedentary-period, sleep, steps, swim-lengths-data, time-in-heart-rate-zone, total-calories, vo2-max, weight. Other valid kebab-case slugs are also accepted. | steps |
| page_size | No | ||
| page_token | No | ||
| privacy_mode | No | Optional per-call privacy override. Defaults to GOOGLE_HEALTH_PRIVACY_MODE or structured. raw returns upstream Google Health JSON. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive. The description adds context about kebab-case data types but does not elaborate on pagination, filtering behavior, or response details. Minimal added value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two sentences) and front-loaded with the key action and resource. Every word adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a full output schema and comprehensive annotations, the description sufficiently covers the tool's purpose and key usage detail (kebab-case). The minimal description is complete enough for an experienced user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description provides minimal additional meaning (e.g., emphasizing kebab-case). The schema itself describes most parameters adequately. The description does not significantly compensate for the uncovered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Query' and resource 'data points for a Google Health data type', clearly distinguishing it from siblings like 'get_data_point' (single) and 'list_data_types' (types only). Examples (e.g., 'steps') further clarify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies usage for querying data points of a given type, it lacks explicit guidance on when to use this vs. alternatives like 'get_data_point' or 'daily_summary'. No when-not-to-use or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_list_data_typesList Google Health Data TypesARead-onlyIdempotent
List the canonical kebab-case data_type slugs accepted by the data point, reconcile and rollup tools, with each slug's unit, OAuth scope family, and which endpoint verbs (list/reconcile/rollup) support it. Call this before list_data_points, reconcile_data_points, daily_rollup or rollup to choose a valid data_type instead of guessing a slug. Static metadata; does not call Google APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| note | Yes | |
| count | Yes | |
| source | Yes | |
| data_types | Yes | |
| generated_at | Yes | |
| official_source | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent, but description adds critical context: 'Static metadata; does not call Google APIs.' This informs agents about zero latency and no side effects beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each with distinct value: output content, usage guidance, and behavioral note. No filler words. Front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and output schema exists, so description is complete: explains output (slugs with metadata), usage context, and that it's static. No gaps for a lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description should explain the single parameter. While the parameter name and enum values are self-explanatory, the description does not explicitly mention that response_format controls output type. Baseline of 3 is appropriate as no misinformation, but lacks direct clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'List' and identifies resource 'canonical kebab-case data_type slugs' with clear attributes (unit, OAuth scope, supported verbs). Explicitly distinguishes from sibling tools like list_data_points by stating 'Call this before...'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('before list_data_points, reconcile_data_points, daily_rollup or rollup') and why ('to choose a valid data_type instead of guessing a slug'). Lacks explicit when-not-to-use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_list_paired_devicesList Paired DevicesARead-onlyIdempotent
List the Fitbit trackers, Pixel Watches and other devices paired to the authenticated Google Health account. Useful to answer 'is my watch syncing?' and to see which device produces which data. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_token | No | ||
| privacy_mode | No | Optional per-call privacy override. Defaults to GOOGLE_HEALTH_PRIVACY_MODE or structured. raw returns upstream Google Health JSON. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, fully describing the safety profile. The description adds the redundant 'Read-only' and the scope 'authenticated account', which adds minimal new behavioral context. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no superfluous text. It front-loads the core purpose and immediately follows with a practical use case. Every word earns its place, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (list with pagination and optional parameters) and the presence of an output schema, the description provides the core purpose and one use case but omits details on pagination, parameter behavior, and how privacy_mode or response_format affect output. The low schema coverage exacerbates this gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 4 parameters with only 25% description coverage (just privacy_mode). The description does not mention any parameter, their defaults, or usage. The agent must rely entirely on the schema, which lacks sufficient documentation for page_size, page_token, and response_format. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the verb 'List' and the resource 'devices paired to the authenticated Google Health account' with concrete examples (Fitbit trackers, Pixel Watches). This clearly distinguishes the tool from siblings like list_data_points and list_data_types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('is my watch syncing?' and identifying device-data associations). However, it does not explicitly warn against using this tool when other operations are needed, nor does it mention any exclusion criteria. The context is helpful but lacks contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_onboardingWellness Onboarding FlowARead-onlyIdempotent
Return the 11-question onboarding flow plus the current profile state and missing fields. Read-only — does NOT persist anything. Pair with google_health_profile_update once the user answers. Cross-connector: the same profile is shared by every Wellness MCP (whoop, garmin, oura, fitbit, strava, polar, withings, apple-health, samsung-health, google-health, nourish, cycle-coach, cgm, air).
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Onboarding locale. Defaults to en. | |
| response_format | No | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds that it is read-only and does not persist, reinforcing the safety profile. Also discloses cross-connector profile sharing, a key behavioral detail beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and read-only note, then pairing guidance and cross-connector context. Efficient, no extraneous text. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description explains return value (onboarding flow, profile state, missing fields). Also covers cross-connector sharing and required pairing. With 2 optional params and clear intent, the description is sufficiently complete for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (2 params both with schema descriptions). Description does not add additional parameter semantics beyond what the input schema already provides (locale defaults, response_format enum). Baseline score of 3 is appropriate as the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns the 11-question onboarding flow, current profile state, and missing fields. It explicitly notes read-only behavior. Distinguishes from siblings like google_health_profile_get (profile only) and google_health_profile_update (update) through pairing guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly pairs with google_health_profile_update once answers are provided, giving clear usage context. It also notes cross-connector profile sharing, helping agents understand integration. Lacks explicit when-not-to-use, but pairing guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_privacy_auditGoogle Health Privacy AuditBRead-onlyIdempotent
Return local privacy, cache, token-path and env-presence posture without revealing secret values.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| project | Yes | |
| cache_path | Yes | |
| token_path | Yes | |
| unofficial | Yes | |
| stdout_safe | Yes | |
| cache_enabled | Yes | |
| config_source | Yes | |
| secret_env_vars | Yes | |
| local_config_path | Yes | |
| local_config_exists | Yes | |
| raw_payloads_opt_in | Yes | |
| privacy_mode_default | Yes | |
| required_env_present | Yes | |
| gps_redaction_default | Yes | |
| redacted_key_patterns | Yes | |
| local_config_secure_permissions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent. Description adds value by clarifying that no secret values are revealed, which is critical for an audit tool. Provides specific items audited: privacy, cache, token-path, env-presence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key info. Some jargon ('env-presence posture') slightly reduces clarity, but overall concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single optional parameter and annotations present, the description is adequate but lacks elaboration on what 'posture' entails or how the output is structured. Could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (response_format) has 0% schema description coverage. The description does not mention or explain this parameter, missing an opportunity to clarify output options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns privacy, cache, token-path, and env-presence posture without revealing secrets. Verb 'Return' and resource 'posture' are specific. Distinguishes from sibling tools like cache_status or connection_status because it focuses on privacy audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like cache_status or data_inventory. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_profile_getGet Wellness ProfileARead-onlyIdempotent
Read the shared Wellness profile from ~/.delx-wellness/profile.json. Returns preferred name, goals, devices, training/nutrition/exercise/agent preferences and safety flags. NEVER contains OAuth tokens or API secrets. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable context: 'NEVER contains OAuth tokens or API secrets,' which is a behavioral guarantee beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: the first states the action and source, the second lists returned content, and the third provides a security assurance. No redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional param, no output schema, read-only). The description covers the core functionality and safety, but it lacks guidance on the response format parameter and usage context relative to siblings. This leaves some gaps for an agent to fully understand tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (response_format) with 0% description coverage. The description does not mention this parameter at all, leaving the agent unaware that it can request markdown or json output and the default behavior. For a tool with low schema coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a shared Wellness profile from a specific file path and enumerates the contents (preferred name, goals, devices, etc.). It distinguishes this from sibling tools like `google_health_get_profile` by specifying 'Wellness profile' and the file location.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. It mentions 'Read-only' but does not compare with sibling tools such as `google_health_get_profile` or explain scenarios for choosing this over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_profile_updateUpdate Wellness ProfileA
Persist a partial patch to ~/.delx-wellness/profile.json. Requires explicit_user_intent=true (otherwise returns USER_ACTION_REQUIRED). Rejects secret-like fields (oauth, token, secret, password, cookie, refresh, api_key, session) at write time. Use to record preferred name, goals, devices, training context, nutrition context, exercise preferences, agent preferences, and safety flags.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | Partial WellnessProfileDocument patch. Top-level keys: profile, goals, devices, training, nutrition, preferences, safety, notes. | |
| response_format | No | markdown | |
| explicit_user_intent | No | Must be true to persist. Prevents accidental writes from agent inference. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors beyond annotations: requires explicit user intent, rejects secret-like fields. Annotations are consistent. Does not detail side effects or return format, but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: first states action, second adds constraints and use-cases. No redundancy, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, constraints, and allowed fields. No output schema but description outlines expected usage. Could mention return value, but sufficient given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning by listing patch top-level keys (profile, goals, devices, etc.) beyond schema's minimal 'partial patch' description. Response_format and intent param are clear from schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it persists a partial patch to a specific file, with listed fields like preferred name, goals, etc. This distinguishes it from read-only siblings like google_health_get_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit conditions: requires explicit_user_intent=true and rejects secret fields. However, it does not directly contrast with sibling tools or specify when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_quickstartGoogle Health QuickstartARead-onlyIdempotent
Personalized 3-step setup walkthrough for the human user. Adapts to current state (env vars set? token present? what's next?). Call this first when the user asks 'how do I connect Google Health?'
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by stating that the walkthrough adapts to current state (env vars, token presence). This behavioral trait is not covered by annotations, which already correctly indicate read-only, idempotent, non-destructive behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose and then additional context. Every sentence is informative and efficient with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema (one optional parameter) and no output schema, the description provides sufficient context for an agent to decide when to call and what to expect. Minor gap: no mention of response_format parameter, but overall complete for a quickstart walkthrough tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate for the parameter. However, the description does not mention the optional response_format parameter at all, leaving the agent without guidance on how to use it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's a personalized setup walkthrough, specifies it adapts to current state, and explicitly tells when to call it ('how do I connect Google Health?'). It distinguishes itself as the entry point among many sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this first when the user asks...', providing clear when-to-use guidance. It doesn't explicitly mention when not to use or alternatives, but the context is sufficient for the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_reconcile_data_pointsReconcile Google Health Data PointsBRead-onlyIdempotent
Read a reconciled stream for one data type across sources. Supports all-sources, google-wearables and google-sources data source families.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Optional Google AIP-160 filter expression. Use snake_case field names in filters. | |
| data_type | No | Google Health data type in kebab case. Supported slugs (call google_health_list_data_types for units and which verbs each supports): active-energy-burned, active-minutes, active-zone-minutes, activity-level, altitude, blood-glucose, body-fat, calories-in-heart-rate-zone, core-body-temperature, daily-heart-rate-variability, daily-heart-rate-zones, daily-oxygen-saturation, daily-respiratory-rate, daily-resting-heart-rate, daily-sleep-temperature-derivations, daily-vo2-max, distance, electrocardiogram, exercise, floors, food, food-measurement-unit, heart-rate, heart-rate-variability, height, hydration-log, irregular-rhythm-notification, nutrition-log, oxygen-saturation, respiratory-rate-sleep-summary, run-vo2-max, sedentary-period, sleep, steps, swim-lengths-data, time-in-heart-rate-zone, total-calories, vo2-max, weight. Other valid kebab-case slugs are also accepted. | steps |
| page_size | No | ||
| page_token | No | ||
| privacy_mode | No | Optional per-call privacy override. Defaults to GOOGLE_HEALTH_PRIVACY_MODE or structured. raw returns upstream Google Health JSON. | |
| response_format | No | markdown | |
| data_source_family | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description need not repeat safety. It adds 'reconciled stream' context but does not disclose further behavioral traits like performance or limits. Baseline score given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very concise (two sentence fragments) with no wasted words. However, it could be slightly more informative without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and the existence of an output schema, the description is insufficient. It does not explain key concepts like reconciliation, pagination, or the meaning of privacy_mode and response_format. Multiple sibling tools exist, but context for selection is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43%, with several parameters having minimal descriptions. The tool description adds no parameter semantics; it does not mention any parameters or their usage. Thus fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Read a reconciled stream for one data type across sources' using specific verb and resource. It distinguishes from sibling tools like list_data_points (which lists individual points) and get_data_point (single point). Also mentions supported data source families.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for reconciled data across sources and lists supported data source families. However, does not explicitly provide when-to-use vs alternatives like list_data_points or get_data_point, nor when to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_revoke_accessRevoke Google Health OAuth AccessADestructive
Revoke the current Google OAuth grant and delete the local token file. Use only when the user explicitly wants to disconnect Google Health. Gated: requires explicit user intent — agents must not call this autonomously.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | Yes | |
| token_path | Yes | |
| local_tokens_cleared | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and readOnlyHint=false. The description adds that the local token file is deleted, which is useful behavioral context. It also reinforces the need for explicit user intent, addressing safety. However, it does not describe post-revocation effects like requiring re-authentication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states the action, second provides usage guard. No unnecessary words, front-loaded with the core behavior. Extremely efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, output schema exists, annotations cover destructiveness), the description covers purpose, usage restriction, and immediate effect. Could mention irreversibility or need for re-authentication, but overall sufficient for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but only one optional parameter (response_format) exists, which is self-explanatory from its name and enum. The description does not reference this parameter or add any meaning beyond the schema. While trivial, it fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Revoke the current Google OAuth grant and delete the local token file', indicating the exact action and resource. Among sibling tools focused on authentication setup or data retrieval, this is the only revoke tool, distinguishing it clearly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use only when the user explicitly wants to disconnect Google Health' and 'Gated: requires explicit user intent — agents must not call this autonomously', providing clear conditions for use and when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_rollupGoogle Health Physical-Time RollupCRead-onlyIdempotent
Aggregate a data type over physical time intervals using Google Health rollUp.
| Name | Required | Description | Default |
|---|---|---|---|
| end_time | Yes | ISO 8601 date-time with timezone, e.g. 2026-05-01T00:00:00Z | |
| data_type | No | Google Health data type in kebab case. Supported slugs (call google_health_list_data_types for units and which verbs each supports): active-energy-burned, active-minutes, active-zone-minutes, activity-level, altitude, blood-glucose, body-fat, calories-in-heart-rate-zone, core-body-temperature, daily-heart-rate-variability, daily-heart-rate-zones, daily-oxygen-saturation, daily-respiratory-rate, daily-resting-heart-rate, daily-sleep-temperature-derivations, daily-vo2-max, distance, electrocardiogram, exercise, floors, food, food-measurement-unit, heart-rate, heart-rate-variability, height, hydration-log, irregular-rhythm-notification, nutrition-log, oxygen-saturation, respiratory-rate-sleep-summary, run-vo2-max, sedentary-period, sleep, steps, swim-lengths-data, time-in-heart-rate-zone, total-calories, vo2-max, weight. Other valid kebab-case slugs are also accepted. | steps |
| page_size | No | ||
| page_token | No | ||
| start_time | Yes | ISO 8601 date-time with timezone, e.g. 2026-05-01T00:00:00Z | |
| window_size | No | Duration in protobuf seconds format, e.g. 3600s. | 3600s |
| privacy_mode | No | Optional per-call privacy override. Defaults to GOOGLE_HEALTH_PRIVACY_MODE or structured. raw returns upstream Google Health JSON. | |
| response_format | No | markdown | |
| data_source_family | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| endpoint | Yes | |
| privacy_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds little beyond the verb 'aggregate', not explaining what 'physical-time rollup' entails or how results are structured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but arguably too brief for a tool with 9 parameters. It is straightforward but lacks structural elements like examples or lists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, output schema, many siblings), the description is insufficient. It does not explain the rollup concept, differentiate from daily_rollup, or provide usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides descriptions for 56% of parameters. The description does not add any additional parameter-level meaning or clarify ambiguous fields like window_size or privacy_mode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specifies verb 'aggregate' and resource 'data type over physical time intervals', clearly indicating the action and scope. However, it does not explicitly differentiate from closely related siblings like google_health_daily_rollup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like daily_rollup or daily_summary. No prerequisites or situational context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_weekly_summaryGoogle Health Weekly ReviewARead-onlyIdempotent
Build a weekly Google Health scorecard with activity, sleep, heart context and missing-data awareness. Read-only, beta, non-medical.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Recent analysis window in days. | |
| timezone | No | IANA timezone used only for display, e.g. America/New_York. | UTC |
| compare_days | No | Prior comparison window in days. Use 0 to disable comparison. | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| generated_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds beta status, non-medical disclaimer, and missing-data awareness, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence includes all key aspects without redundancy. Very concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values are covered. Description covers purpose, data types, and behavioral traits. Could mention output format or comparison window usage, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so baseline is 3. Description does not explain any parameters beyond what schema provides, adding no extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly specifies the tool builds a weekly scorecard covering activity, sleep, heart context, and missing-data awareness. It differentiates from siblings like daily_summary by specifying weekly scope and heart context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for weekly reviews but does not explicitly state when to use vs alternatives like daily_summary or rollup. No exclusions or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_health_wellness_contextGoogle Health Wellness ContextARead-onlyIdempotent
Normalize Google Health activity/sleep context into the shared wellness_context shape for recommendation engines.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window for normalized Google Health wellness context. | |
| notes | No | ||
| soreness | No | ||
| timezone | No | IANA timezone used only for display, e.g. America/New_York. | UTC |
| injury_flags | No | ||
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| source | Yes | |
| soreness | Yes | |
| generated_at | Yes | |
| injury_flags | Yes | |
| recent_training_load | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint as false. The description adds the normalization step but no further behavioral traits (e.g., what happens with missing data, performance). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise 16-word sentence with clear verb and resource. It is front-loaded and contains no unnecessary information. However, it could be slightly more structured to separate purpose from usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters (no required), an output schema (explaining return values), and rich annotations, the description is adequate but minimal. It does not explain the 'normalize' operation or how this tool fits into the broader workflow with siblings. Additional context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (2 of 6 parameters have descriptions). The tool description does not mention any parameter meanings or usage, leaving 4 parameters undocumented in both schema and description. Defaults exist but without semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Normalize), the resource (Google Health activity/sleep context), and the target (shared wellness_context shape for recommendation engines). It differentiates from siblings by focusing on normalization and a specific output format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for recommendation engines but provides no explicit guidance on when to choose this tool over alternatives among the many siblings, nor any conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
29 tool updates
v1.0.2- First observed
google_health_agent_manifest - First observed
google_health_cache_status - First observed
google_health_capabilities - First observed
google_health_connection_status - First observed
google_health_daily_rollup - First observed
google_health_daily_summary - First observed
google_health_data_inventory - First observed
google_health_data_type_coverage - First observed
google_health_demo - First observed
google_health_exchange_code - First observed
google_health_get_auth_url - First observed
google_health_get_data_point - First observed
google_health_get_identity - First observed
google_health_get_irn_profile - First observed
google_health_get_profile - First observed
google_health_get_settings - First observed
google_health_list_data_points - First observed
google_health_list_data_types - First observed
google_health_list_paired_devices - First observed
google_health_onboarding - First observed
google_health_privacy_audit - First observed
google_health_profile_get - First observed
google_health_profile_update - First observed
google_health_quickstart - First observed
google_health_reconcile_data_points - First observed
google_health_revoke_access - First observed
google_health_rollup - First observed
google_health_weekly_summary - First observed
google_health_wellness_context
TDQS
Most tools have distinct purposes, but there is some overlap among summary/rollup tools (e.g., daily_rollup, rollup, daily_summary, weekly_summary, wellness_context) which may cause confusion for an agent deciding which to use. Overall, the set is well-segmented by function.
All tools follow a consistent pattern: prefix 'google_health_' followed by a verb_noun or adjective_noun (e.g., get_auth_url, list_data_types, daily_rollup). No mixing of conventions, making it predictable for agents.
With 29 tools, the count is above the typical 3-15 range, feeling slightly heavy. However, the scope covers many aspects of health data integration (auth, profiles, data points, summaries, devices, etc.), so it is borderline acceptable but could benefit from consolidation.
The tool set covers authentication, profile management, data retrieval (list, get, reconcile, rollups), summaries, device info, settings, and privacy. Missing are write operations for health data points (likely by design) and possibly more granular error handling, but the core workflows are well-covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Hosted MCP server for the Healthie EHR & telehealth API: patients, appointments, charting, tasks.
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
Hosted MCP server for Cliniko — patients, appointments, availability, and invoices for AI agents.
Related MCP Servers
- AlicenseBqualityAmaintenanceA local-first MCP server that enables AI agents to read user-authorized Google Health API v4 data from Fitbit, Pixel Watch, and partners via OAuth, with tokens never leaving the machine.261,09753MIT
- AlicenseAqualityAmaintenanceLocal-first MCP server that connects AI agents to your Fitbit activity, sleep, heart-rate, HRV, SpO2 and weight data.332604MIT
- AlicenseAqualityCmaintenanceMCP server to read daily activity, sleep, heart rate, and body metrics from Google Health API, allowing AI assistants like Claude to access your health data. Optionally syncs health metrics to an Obsidian vault.5MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that connects AI clients to the Google Health API, enabling natural language queries about health and fitness data such as steps, sleep, heart rate, and exercise sessions.461MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BerkKilicoglu/google-health-fitbit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server