Skip to main content
Glama

query_raw

Retrieve archived Garmin health fields that processed daily queries cannot represent, such as event logs and lists, when you need to interpret raw values yourself.

Instructions

Query archived Garmin data as stored in raw/, without value extraction, for fields the processed tools cannot reduce to a daily value (lists, event logs). Interpreting the content is up to the caller, and no units are provided. Use query_health instead whenever the data you need exists there: three of these fields have a processed counterpart there for everyday questions (floors: floors_climbed, daily_weigh_ins: body_weight, intensity_minutes_data: intensity_min_moderate and intensity_min_vigorous).

field: one of the raw field names (health domain only; these are NOT listed by list_available_fields): daily_weigh_ins, menstrual_calendar_data, pregnancy_summary, lifestyle_logging_data, nutrition_daily_food_log, nutrition_daily_meals, nutrition_daily_settings, floors, intensity_minutes_data, body_battery_events, lactate_threshold, running_tolerance. date_from/date_to: ISO "YYYY-MM-DD", inclusive. domain: only "health" holds raw data.

Only the requested field is returned. A field name that is almost right is corrected automatically (_meta.field_resolved_from / field_used show the substitution); an unknown name returns an error, with did_you_mean when similar names exist. A domain other than "health" returns an error.

Result: {"health": {field: {"values": [{"date": ..., "raw": ...}], "source_resolution": "raw"}}}. A day that is not in the archive has no entry; an archived day with nothing stored for the field has "raw": null. Read-only; does not change the archive.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fieldYes
domainNo
date_toYes
date_fromYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and discharges it: read-only and non-mutating ('does not change the archive'), no units provided and interpretation left to the caller, auto-correction of near-miss field names surfaced via _meta.field_resolved_from/field_used, error semantics with did_you_mean, and domain rejection. It also discloses result-shape edge cases (missing day = no entry, stored-but-empty = raw null), which is more than the schema or any annotation would reveal.

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

Conciseness4/5

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

Purpose and the query_health routing are front-loaded in the first two sentences, and the remaining blocks (field list, date semantics, resolution behavior, result shape) are each load-bearing rather than filler. It runs long and the parenthetical field-to-counterpart mapping is dense, but nothing is redundant with structured data, so the size is justified.

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

Completeness5/5

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

For a 4-param, no-output-schema tool, the description covers everything an agent needs: valid fields, date format and inclusivity, the single valid domain, resolution and error behavior, and the exact response envelope with null-vs-absent semantics. Nothing material is left to inference.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does for all four parameters: field is fully enumerated with an explicit caveat that these names are absent from list_available_fields, date_from/date_to are specified as ISO YYYY-MM-DD and inclusive, and domain is constrained to 'health' with the error behavior spelled out. This adds substantial meaning the bare schema lacks.

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

Purpose5/5

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

States a specific verb and resource ('Query archived Garmin data as stored in raw/') plus the scope constraint (no value extraction, only fields the processed tools cannot reduce to a daily value). It names the sibling it is not (query_health) and explains why the raw path exists, so an agent can distinguish it from query_health and list_available_fields without opening either schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent: 'Use query_health instead whenever the data you need exists there', then names the three fields with processed counterparts and the exact target fields. It also states when the tool is inappropriate (fields that reduce to a daily value) and warns that its field names are NOT listed by list_available_fields, which prevents a common misuse.

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