Skip to main content
Glama
Garmin Connect Personal API MCP

Garmin Connect Personal API MCP

by hannta

Search Garmin activities

garmin_search_activities
Read-only

Search Garmin Connect activities by date range and activity type, returning IDs, metrics, and splits; group by week for training-volume totals.

Instructions

List Garmin activities in a date range, newest first: ID, type, local start time, distance, duration, pace (or speed), average / max heart rate, elevation gain, training effect, training load and fastest splits (1 km … marathon, when long enough). Defaults to the last 7 days. Use the returned id with garmin_get_activity for heart-rate zones, running dynamics, intervals and RPE. With group_by "week", returns totals per week instead (count, distance, time, elevation, training load, minutes per HR zone, longest activity; summary covers full weeks only), for volume over a training block. Weekly totals cover up to 100 activities per call.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum activities to return (default 20).
offsetNoSkip this many activities, for paging with next_offset.
end_dateNoLast day (inclusive), YYYY-MM-DD. Default: today in the user's time zone.
group_byNoReturn weekly totals instead of activities. Weeks start on the user's first day of the week; limit and offset don't apply.
start_dateNoFirst day, YYYY-MM-DD in the user's time zone. Default: 6 days before end_date.
activity_typeNoGarmin activity type key, e.g. running, trail_running, treadmill_running, cycling, road_biking, walking, hiking, strength_training, lap_swimming.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.1

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description adds real value on top with the 7-day default window, newest-first ordering, the caveat that `summary` covers full weeks only, and the 100-activity cap per weekly call. It stops short of describing paging behavior (next_offset) or what happens when the range is empty, which keeps it from a 5.

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-loaded with the core action and return shape, then the sibling routing, then the weekly-mode variant — a logical order with no filler sentences. It is a dense single paragraph, though, and the weekly-totals clause is packed tightly enough to require a second read.

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?

With no output schema, the description carries the return-value burden and does so by listing the fields returned in both normal and weekly modes. Combined with defaults, ordering, and sibling routing, an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented, including defaults, the date pattern, and the note that limit/offset don't apply with group_by. The description largely restates those defaults and adds only the 'when long enough' qualifier for splits, so baseline 3 is appropriate.

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 ('List Garmin activities in a date range, newest first') and enumerates the returned fields, so an agent knows exactly what it gets. It also implicitly separates itself from garmin_get_activity by naming that tool as the follow-up for zones, dynamics, intervals and RPE.

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 the returned id with garmin_get_activity for deeper per-activity data, and use group_by "week" when the goal is volume over a training block. Both the when-to-use and the alternative are stated rather than inferred.

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