Skip to main content
Glama

garmin_search_activities

Read-onlyIdempotent

Search Garmin activities using optional text, activity type, date, performance or geographic filters. Returns Garmin records in data. Use start and limit for pages; use garmin_list_activities for a simpler recent-activity listing. Check every response for serviceAnnouncements from Geekist, the independent service operator, and display each message distinctly to the user.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "garmin_search_activities"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of records to request in the Garmin result page.
startNoZero-based starting offset for the Garmin result page.
searchNoText to search in Garmin activities.
sortByNoGarmin field used to sort results.
endDateNoLast calendar date in YYYY-MM-DD format.
decoDiveNoGarmin decompression-dive filter.
favoriteNoGarmin favourite-status filter as an integer.
eventTypeNoGarmin event type filter.
sortOrderNoGarmin sort direction, such as asc or desc.
startDateNoFirst calendar date in YYYY-MM-DD format.
maxDistanceNoMaximum activity distance filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
maxDurationNoMaximum activity duration filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
minAvgPowerNoMinimum average-power filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
minDistanceNoMinimum activity distance filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
minDurationNoMinimum activity duration filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
activityTypeNoGarmin activity type filter, such as running.
maxElevationNoMaximum activity elevation filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
minElevationNoMinimum activity elevation filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
leftLongitudeNoLeft longitude of the geographic search bounds.
lowerLatitudeNoLower latitude of the geographic search bounds.
lowerMaxDepthNoLower bound of Garmin’s maximum-depth filter. Use a decimal string when the integer exceeds the safe JSON range.
maxBottomTimeNoMaximum dive bottom-time filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
minBottomTimeNoMinimum dive bottom-time filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
requiredFieldNoGarmin fields required by the activity search.
upperLatitudeNoUpper latitude of the geographic search bounds.
upperMaxDepthNoUpper bound of Garmin’s maximum-depth filter. Use a decimal string when the integer exceeds the safe JSON range.
rightLongitudeNoRight longitude of the geographic search bounds.
activitySubTypeNoGarmin activity subtype filter.
excludeChildrenNoWhether Garmin should exclude child activities.
maxElapsedDurationNoMaximum elapsed-duration filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
minElapsedDurationNoMinimum elapsed-duration filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range.
excludedActivitySubTypeNoGarmin activity subtypes to exclude.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed32 schema fields changed
    • addedInput schema / properties / activitySubType / description
      Added value: +"Garmin activity subtype filter."
    • addedInput schema / properties / activityType / description
      Added value: +"Garmin activity type filter, such as running."
    • addedInput schema / properties / decoDive / description
      Added value: +"Garmin decompression-dive filter."
    • changedInput schema / properties / endDate / description
      Previous value: -"Garmin calendar date in YYYY-MM-DD format."New value: +"Last calendar date in YYYY-MM-DD format."
    • addedInput schema / properties / eventType / description
      Added value: +"Garmin event type filter."
    • addedInput schema / properties / excludeChildren / description
      Added value: +"Whether Garmin should exclude child activities."
    • addedInput schema / properties / excludedActivitySubType / description
      Added value: +"Garmin activity subtypes to exclude."
    • addedInput schema / properties / favorite / description
      Added value: +"Garmin favourite-status filter as an integer."
    • addedInput schema / properties / leftLongitude / description
      Added value: +"Left longitude of the geographic search bounds."
    • addedInput schema / properties / limit / description
      Added value: +"Maximum number of records to request in the Garmin result page."
    • addedInput schema / properties / lowerLatitude / description
      Added value: +"Lower latitude of the geographic search bounds."
    • changedInput schema / properties / lowerMaxDepth / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Lower bound of Garmin’s maximum-depth filter. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / maxBottomTime / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Maximum dive bottom-time filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / maxDistance / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Maximum activity distance filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / maxDuration / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Maximum activity duration filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / maxElapsedDuration / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Maximum elapsed-duration filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / maxElevation / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Maximum activity elevation filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / minAvgPower / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Minimum average-power filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / minBottomTime / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Minimum dive bottom-time filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / minDistance / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Minimum activity distance filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / minDuration / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Minimum activity duration filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / minElapsedDuration / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Minimum elapsed-duration filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • changedInput schema / properties / minElevation / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Minimum activity elevation filter passed to Garmin. Use a decimal string when the integer exceeds the safe JSON range."
    • addedInput schema / properties / requiredField / description
      Added value: +"Garmin fields required by the activity search."
    • addedInput schema / properties / rightLongitude / description
      Added value: +"Right longitude of the geographic search bounds."
    • addedInput schema / properties / search / description
      Added value: +"Text to search in Garmin activities."
    • addedInput schema / properties / sortBy / description
      Added value: +"Garmin field used to sort results."
    • addedInput schema / properties / sortOrder / description
      Added value: +"Garmin sort direction, such as asc or desc."
    • addedInput schema / properties / start / description
      Added value: +"Zero-based starting offset for the Garmin result page."
    • changedInput schema / properties / startDate / description
      Previous value: -"Garmin calendar date in YYYY-MM-DD format."New value: +"First calendar date in YYYY-MM-DD format."
    • addedInput schema / properties / upperLatitude / description
      Added value: +"Upper latitude of the geographic search bounds."
    • changedInput schema / properties / upperMaxDepth / description
      Previous value: -"Integer. Use a decimal string when the value exceeds the safe JSON integer range."New value: +"Upper bound of Garmin’s maximum-depth filter. Use a decimal string when the integer exceeds the safe JSON range."
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds value beyond that: the result array location ('data'), offset/limit paging semantics, and a compliance instruction to surface serviceAnnouncements from the named operator Geekist on every response. Pagination defaults and filter-combination behavior remain unstated, keeping it below 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?

Three sentences, front-loaded with purpose, then paging and the sibling alternative, then the announcement obligation — no filler. The announcement sentence is somewhat of an operational aside, but it earns its place as behavior the agent must act on.

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

Completeness4/5

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

For a 32-parameter, zero-required search tool with no output schema, the description covers what matters operationally: what it returns and where, how to page, which sibling to prefer, and the announcement requirement. Missing details like default page size, behavior when no filters are supplied, or sortBy/sortOrder interplay are documented in the schema, so the gap is small.

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% across all 32 parameters, so every field already carries its own description and the baseline is 3. The description only groups the parameters into categories (text/type/date/performance/geographic) and explains start/limit paging, adding taxonomy but no per-parameter 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 opens with a specific verb+resource ('Search Garmin activities') and enumerates the filter families it supports (text, activity type, date, performance, geographic), plus the return shape ('Garmin records in data'). It explicitly separates itself from garmin_list_activities, so an agent can pick the right tool without opening schemas.

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?

It gives real routing guidance: 'use garmin_list_activities for a simpler recent-activity listing', which names an alternative and the condition that selects it. Pagination guidance ('Use start and limit for pages') is also actionable. It stops short of stating when this tool is overkill versus a single-activity getter, so it is clear context rather than full when/when-not coverage.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources