Skip to main content
Glama
durely
by durely

Compare activities

garmin_compare_activities
Read-onlyIdempotent

Compare 2–6 Garmin activities side by side to track performance and aerobic progress across pace, heart rate, power, training load, and efficiency; enable FIT analysis for decoupling and HR zones.

Instructions

Compare 2–6 activities side by side: date, type, duration, distance, pace/speed, heart rate, power (avg/NP), elevation, training effect and load, cadence, and efficiency factor (speed or NP per heartbeat; higher means more output for the same heart rate, a classic way to track aerobic progress on similar sessions).

With deep=true, also analyzes each one's FIT data (downloads files if needed): aerobic decoupling, time in low/moderate/high HR zones and best efforts.

Example: "Am I getting fitter on my Tuesday interval run?" → list those runs, then compare them.

Input Schema

NameRequiredDescriptionDefault
deepNoAlso run FIT-based analysis for each activity
activity_idsYes
response_formatNo'markdown' for readable text (default), 'json' for complete structured datamarkdown

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.5.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), but the description adds material behavior those annotations cannot express: deep=true downloads FIT files if needed, which is a network/IO side effect worth flagging and is disclosed. It also implicitly bounds input to 2–6. What's missing is any note on latency or cost of deep mode.

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

Conciseness4/5

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

Front-loads the capability and metric list, then the deep-mode modifier, then a worked example — a logical order with no filler. The parenthetical defining efficiency factor is long but genuinely informative for interpreting results, so it earns its space.

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?

There is no output schema, so the description carries the burden of explaining return content — and it does, enumerating the compared metrics plus what deep mode adds (aerobic decoupling, HR zone time, best efforts). An agent has everything needed to choose and call the tool.

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 coverage is 67% and the one undocumented parameter (activity_ids) is compensated for by the description stating 'compare 2–6 activities', matching minItems=2/maxItems=6. deep is explained in both schema and prose. It adds value over the schema but does not, for example, clarify what activity_ids refer to or how to obtain them.

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 ('compare') and resource (2–6 activities) and immediately enumerates exactly which fields come back (date, type, duration, distance, pace/speed, HR, power avg/NP, elevation, training effect/load, cadence, efficiency factor). This is clearly distinguishable from single-activity siblings like garmin_get_activity or garmin_analyze_activity.

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?

Gives a concrete usage scenario ('Am I getting fitter on my Tuesday interval run?' → list those runs, then compare them) and explains when to escalate to deep=true for FIT-based analysis. It does not explicitly contrast with garmin_analyze_activity or say when comparison is the wrong choice, so it falls short of the top band.

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