Skip to main content
Glama

get_activity_details

Fetch full details for a single Garmin Connect activity using its ID, including summary metrics and elapsed, timer, moving, and stopped time breakdowns.

Instructions

Get full detail for a single activity by its id.

activity_id is the numeric id string returned by list_recent_activities or list_activities_by_date (the "id" field). Returns a JSON object combining the activity summary (name, type, distance, duration, HR, training effect) with a nested "details" object (measurement counts). A "timing" object gives the explicit elapsed / timer / moving / stopped breakdown so the caller never has to guess which duration is the finish time. For a per-lap breakdown (interval or km splits), call get_activity_laps. Bulky per-sample metric arrays and GPS polylines are stripped to keep the response small — use Garmin Connect directly for raw sample data.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "activity_id": "<activity_id>"
    },
    "name": "get_activity_details"
  }
}

Input Schema

NameRequiredDescriptionDefault
activity_idYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does well: it discloses the response shape (summary plus nested 'details' measurement counts, a 'timing' object with elapsed/timer/moving/stopped), and importantly that bulky per-sample metrics and GPS polylines are stripped so the caller is not surprised by missing data. It stops short of covering error behavior for an invalid id or any permission/rate constraints.

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

Conciseness5/5

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

Front-loaded with the one-line purpose, then progressively more detailed context (identifier provenance, return composition, sibling routing, data stripping). Parenthetical field lists are compact and every sentence adds information an agent would otherwise have to infer.

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 single-parameter read tool this is complete: the identifier's origin, the return structure, deliberate omissions, and the sibling to use for a different granularity of data are all covered. An output schema exists, so describing return values further is unnecessary, yet the description still gives enough structural orientation to be useful.

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 0% and the single parameter has no description, but the prose compensates fully: it specifies that activity_id is a numeric id string and that it corresponds to the 'id' field produced by two named sibling tools. That is the key fact an agent needs to construct the argument, so it exceeds the baseline expectation for a poorly documented 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 ('Get full detail for a single activity by its id') and immediately scopes it as single-record retrieval, distinguishing it from the list_* siblings and from get_activity_laps, which it names explicitly.

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 tells the caller where activity_id comes from ('returned by list_recent_activities or list_activities_by_date') and routes to the alternative when a per-lap breakdown is needed ('call get_activity_laps'). Both the entry condition and the exclusion are stated.

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