Skip to main content
Glama

List Apple Health Workouts

apple_health_list_workouts
Read-onlyIdempotent

Fetch workouts from an Apple Health export, filter by date range, limit the list size, and receive aggregate statistics computed over all matching entries.

Instructions

List bounded workouts from a local Apple Health export.xml. limit caps the returned LIST only: in summary privacy mode (the default) the aggregate block (count_by_activity, date_range, total_duration_minutes, total_distance, distance_units, total_energy_kcal, workout_count) is computed over every workout matching the filter, and truncated/limit_applied/matched_count say whether the list itself was cut. COST: this call reads the whole export file on each new query — roughly 33 ms per MB of export.xml (~3 s for 84 MB, ~11 s for 336 MB) — and start/end do not shorten it. Workouts are sparse in an export, so even non-summary modes usually reach the end of the file. Repeating an identical query is served from an in-memory cache and returns instantly.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
endNoOptional ISO date/time upper bound.
limitNo
startNoOptional ISO date/time lower bound.
privacy_modeNo
response_formatNomarkdown

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.5.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate readOnly, idempotent, non-destructive. The description goes far beyond by disclosing the cost of reading the whole file per query (with timing estimates), caching of identical queries, that start/end do not shorten the read, and that limit only caps the list not the aggregate. This is exceptional transparency about performance and semantics, fully complementing 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.

Conciseness5/5

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

The description is long but every sentence earns its place. It is front-loaded with the primary purpose, then systematically covers limit semantics, cost, and caching. The structure is logical and efficient, with no filler or repetition.

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 tool with 5 optional parameters, no output schema, and rich behavioral nuances, the description covers all critical aspects: purpose, parameter effects, performance cost, caching, and what the aggregate block returns. An agent can safely call this tool and interpret the response without additional clarification.

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

Parameters4/5

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

Schema description coverage is only 40% (end and start). The description significantly compensates by detailing the `limit` parameter's exact effect (caps the list, not the aggregate) and explaining the aggregate block fields and truncation indicators. It does not explain privacy_mode or response_format beyond their enums, but the default mention of summary mode adds context. Overall, it adds substantial meaning beyond the schema.

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?

The description clearly states it lists workouts from a local Apple Health export.xml, specifying the resource and source. It distinguishes the tool from siblings like apple_health_list_records by focusing on workouts, and the detail about privacy modes and aggregate behavior makes its purpose unmistakable.

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

Usage Guidelines4/5

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

The description provides clear context on when to use it (to list workouts from an export) and important usage constraints (bounded list, cost implications, caching behavior). It does not explicitly name alternative sibling tools or say 'use X instead', but the purpose and cost notes effectively guide usage without confusion.

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