Skip to main content
Glama
pedrokehl

Garmin Connect MCP

by pedrokehl

Search activities

garmin_search_activities
Read-onlyIdempotent

Search and filter your Garmin activities by type, date, distance, duration, location, or keyword to retrieve activity IDs and summaries for detailed analysis or FIT file download.

Instructions

Search and list the user's recorded activities (runs, rides, swims, strength sessions, hikes, dives…), newest first by default. Returns an array of activity summaries with: activityId, activityName, description, startTimeLocal/startTimeGMT, activityType, eventType, distance (meters), duration / movingDuration / elapsedDuration (seconds), elevationGain/Loss (meters), averageSpeed/maxSpeed (m/s), calories, averageHR/maxHR (bpm), cadence, power, training effect and more. Use this first to find activity IDs, then call garmin_get_activity for splits and full detail, or garmin_download_activity_file for the original FIT file. All filters are optional and combined with AND. Paginate with start and limit.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of activities to return. Default 20 here (Garmin itself defaults to 99). Keep it small to save context.
startNoZero-based offset of the first activity to return, for pagination. Default 0.
searchNoFree text matched against activity names and descriptions.
sortByNoField to sort by, e.g. startLocal (default), name, distance, duration, elevationGain, calories.
endDateNoOnly activities that started on or before this local date. Format YYYY-MM-DD, in the user's local calendar.
decoDiveNoDives only: true = decompression dives, false = non-decompression dives.
favoriteNo1 = only favorites, 0 = only non-favorites, -1 = no filter (default).
eventTypeNoEvent classification key: race, training, recreation, fitness, specialEvent or uncategorized.
sortOrderNoSort direction. Default desc (newest/largest first).
startDateNoOnly activities that started on or after this local date. Format YYYY-MM-DD, in the user's local calendar.
maxDistanceNoMaximum distance in meters (inclusive).
maxDurationNoMaximum timer (moving) duration in seconds (inclusive).
minAvgPowerNoMinimum average power in watts.
minDistanceNoMinimum distance in meters (inclusive).
minDurationNoMinimum timer (moving) duration in seconds (inclusive).
activityTypeNoParent activity type key, e.g. running, cycling, swimming, walking, hiking, fitness_equipment, diving. Must be a parent type, not a subtype.
maxElevationNoMaximum total elevation gain in meters.
minElevationNoMinimum total elevation gain in meters.
leftLongitudeNoBounding box west edge, decimal degrees. Provide all four bounds.
lowerLatitudeNoBounding box south edge, decimal degrees. Provide all four bounds.
lowerMaxDepthNoDives only: minimum of the max depth, in centimeters.
maxBottomTimeNoDives only: maximum bottom time in seconds.
minBottomTimeNoDives only: minimum bottom time in seconds.
requiredFieldNoOnly return activities where all of these fields are non-null, e.g. ["averageHR", "avgPower"].
upperLatitudeNoBounding box (start location) north edge, decimal degrees. Provide all four bounds.
upperMaxDepthNoDives only: maximum of the max depth, in centimeters.
rightLongitudeNoBounding box east edge, decimal degrees. Provide all four bounds.
activitySubTypeNoActivity subtype key, e.g. trail_running or treadmill_running (with activityType=running), road_cycling or indoor_cycling (with activityType=cycling).
excludeChildrenNoExclude child activities of a multisport activity (e.g. the swim/bike/run legs of a triathlon). Garmin default: true.
maxElapsedDurationNoMaximum elapsed duration including pauses, in seconds.
minElapsedDurationNoMinimum elapsed duration including pauses, in seconds.
excludedActivitySubTypeNoSubtype keys to exclude, e.g. ["treadmill_running"].

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile needs no restating. The description adds genuinely new behavioral context: newest-first default ordering, AND-combination of filters, and pagination mechanics. It stops short of noting result caps or whether sorting applies before or after filtering.

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 purpose and workflow routing, then the return-field inventory. The long field list is lengthy but earns its place because there is no output schema. Minor redundancy in restating the default sort that the schema also documents.

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 32-parameter tool with no output schema, the description supplies exactly what is missing: the shape of the returned summaries, default ordering, filter-combination logic, pagination, and the follow-up tools for detail. Nothing an agent needs in order to call it correctly is absent.

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 100%, so 3 is the floor, but the description contributes semantics the schema lacks: that filters are ANDed, that results are newest-first by default, and that pagination is start/limit-based. The listed return fields help the agent reason about which filters (e.g. averageHR, avgPower via requiredField) will actually match.

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?

Opens with a specific verb+resource ('Search and list the user's recorded activities') and enumerates the activity families covered. It explicitly positions itself against siblings by naming garmin_get_activity and garmin_download_activity_file as the next steps, so an agent can distinguish it without reading any 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?

States a clear workflow: 'Use this first to find activity IDs, then call garmin_get_activity for splits and full detail, or garmin_download_activity_file for the original FIT file.' It also explains filter composition (all optional, combined with AND) and directs pagination via `start`/`limit`.

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