Skip to main content
Glama

Download activity file

garmin_download_activity
Idempotent

Download an activity's original file as activity-<activity_id>.zip to your machine and get the saved path, size and contents. Use it to keep the raw .fit data locally.

Instructions

Download an activity's original file (a ZIP, usually holding a .fit) and save it on the machine running this server as activity-<activity_id>.zip, replacing any earlier download. Returns the saved path, size, and the files inside.

activity_id: activityId from garmin_search_activities. directory: a subfolder of the download folder to save in, e.g. "races" (default: the download folder itself). The download folder is GARMIN_MCP_DOWNLOAD_DIR, else a garmin folder in the Downloads directory; paths that lead outside it are rejected.

Input Schema

NameRequiredDescriptionDefault
directoryNo
activity_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.5/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing the overwrite behavior ('replacing any earlier download'), the exact filename pattern, the download-folder resolution chain (GARMIN_MCP_DOWNLOAD_DIR, else Downloads/garmin), and that traversal paths are rejected. This meaningfully complements idempotentHint=true and readOnlyHint=false rather than repeating them.

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 action and side effect, then clean per-parameter lines. Slightly verbose in the folder-resolution sentence, but every clause carries operational information an agent needs.

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?

No output schema exists, yet the description enumerates the return payload (saved path, size, contained files), and it covers the on-disk side effect, defaults, and failure mode for bad paths. Nothing essential for correct invocation is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description carries the full burden and does so: activity_id is defined as the id from garmin_search_activities, and directory is defined as a subfolder relative to the download root with a default and an example. Both parameters become actionable without opening 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?

States a specific verb and resource — download an activity's original file — and adds the concrete artifact details (a ZIP holding a .fit) and the side effect (saved to disk as activity-<id>.zip). This clearly distinguishes it from metadata-reading siblings like garmin_get_activity, and it chains to garmin_search_activities as the source of the id.

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?

Explicitly tells the agent where activity_id comes from (garmin_search_activities) and what directory does, plus the default and the rejection rule for escaping paths. It lacks an explicit when-not/alternative clause, but the context for use is unambiguous.

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