Garmin Workout Pipeline
Allows building, previewing, uploading, and managing workouts on Garmin Connect, including running, cycling, and strength/cardio workouts with zones, exercises, and scheduling.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Garmin Workout PipelineCreate a 5x1km threshold workout with 2min recoveries"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Garmin Workout Pipeline
Stop clicking through Garmin Connect's UI to build every workout. Define workouts in YAML, or just tell Claude what you want in plain English — then push them straight to your watch.
Garmin Workout Pipeline is an open-source CLI and MCP server that compiles structured workout definitions into Garmin Connect API payloads. It supports running, cycling, and strength/cardio workouts with pace/HR/power zones, 84+ exercises, circuits, and weekly scheduling.
"Build me a Hyrox sim with 8 stations, 1km runs between each, and a 10-minute warmup."
That's a real prompt. The MCP server turns it into a fully structured Garmin workout and uploads it to your watch.
Why This Exists
If you've ever built a complex interval workout in Garmin Connect, you know the pain: endless dropdowns, no copy-paste, no version control, and good luck reusing that Hyrox sim you spent 15 minutes clicking together.
This tool lets you:
Write workouts as code — YAML files you can version, share, and iterate on
Build workouts conversationally — tell Claude what you want via MCP, and it handles the structure
Push to Garmin Connect in one command — from terminal to watch in seconds
Manage your training library — list, schedule, and delete workouts programmatically
Related MCP server: Garmin Workouts MCP Server
Quickstart
# Install
pip install garmin-workout-pipeline
# Set credentials
export GARMIN_EMAIL=you@example.com
export GARMIN_PASSWORD=your-password
# Push a workout to your watch
gwp push workouts/templates/hyrox-sim.yaml --zones workouts/zones.yamlThat's it. Workout is on Garmin Connect, ready to sync to your device.
Two Ways to Build Workouts
1. YAML (version-controlled, repeatable)
name: "Threshold Intervals"
type: running
steps:
- warmup: { duration: "10:00", zone: easy }
- run: { distance: "1km", pace: { min: "6:25/mi", max: "6:40/mi" } }
- recovery: { duration: "2:00" }
- run: { duration: "5:00", zone: threshold }
- cooldown: { duration: lap, zone: easy }2. Natural Language via MCP (conversational, fast)
Connect the MCP server to Claude Desktop or Claude Code, then just describe what you want:
"Create a 5x1km workout at threshold pace with 2-minute recoveries, 10-minute warmup and cooldown"
Claude builds the structured workout, previews it, and uploads it — all through conversation.
MCP Server Setup
24 tools for full workout lifecycle management through any MCP-compatible client.
Claude Code
claude mcp add garmin-workouts \
-e GARMIN_EMAIL=your-email@example.com \
-e GARMIN_PASSWORD=your-password \
-- garmin-mcpClaude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"garmin-workouts": {
"command": "garmin-mcp",
"env": {
"GARMIN_EMAIL": "your-email@example.com",
"GARMIN_PASSWORD": "your-password"
}
}
}
}Category | Tools |
Workout |
|
Steps |
|
Circuits |
|
Garmin Connect |
|
Reference |
|
Templates |
|
CLI Reference
gwp push <file> --zones <zones.yaml> # Upload workout to Garmin Connect
gwp push <file> --zones <zones.yaml> --schedule 2026-04-29 # Upload + schedule
gwp push <file> --zones <zones.yaml> --dry-run # Preview JSON without uploading
gwp validate <file> --zones <zones.yaml> # Compile and validate only
gwp list # List workouts on Garmin Connect
gwp delete <workout-id> # Delete a workout
gwp zones --zones <zones.yaml> # Show resolved zone valuesWorkout Types
Running
Pace targets, HR zones, distance and time-based intervals.
name: "Speed 400s"
type: running
steps:
- warmup: { duration: "10:00", zone: easy }
- run: { distance: "400m", pace: { min: "5:30/mi", max: "5:45/mi" } }
- recovery: { duration: "1:30" }
- cooldown: { duration: "10:00", zone: easy }Strength / Cardio
84 exercises with rep counts, weights, and circuit support.
name: "Hyrox Strength"
type: strength
steps:
- warmup: { duration: lap, exercise: rowing_machine }
- circuit:
iterations: 4
steps:
- exercise: { exercise: wall_ball, reps: 20, weight: 13 }
- exercise: { exercise: weighted_lunge, reps: 20, weight: 45 }
- rest: { duration: "2:00" }
- cooldown: { duration: lap, exercise: rowing_machine }Cycling
Power zones, FTP percentages, and duration-based blocks.
name: "Sweet Spot"
type: cycling
steps:
- warmup: { duration: "10:00", zone: z2 }
- bike: { duration: "20:00", zone: threshold }
- cooldown: { duration: "5:00" }Step Types Reference
Type | End Conditions | Targets |
| duration, lap | zone, exercise |
| duration, lap | zone, exercise |
| duration, distance, lap | zone, pace, hr |
| duration, distance, lap | zone, power, power_pct |
| duration, distance, lap | zone |
| duration, reps, lap | — |
| duration | — |
| iterations | nested steps |
Zones
Define your training zones once in workouts/zones.yaml with HR, pace, and power targets per sport. The compiler resolves zone names like threshold, z2, and easy to Garmin API target values.
Installation Options
From PyPI (recommended)
pip install garmin-workout-pipelineFrom GitHub
uv tool install git+https://github.com/k-schmidt/Garmin-Workout-Pipeline.gitFrom Source
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/k-schmidt/Garmin-Workout-Pipeline.git
cd Garmin-Workout-Pipeline
uv syncProject Structure
garmin_pipeline/
mcp_server.py # MCP server for Claude Desktop/Code
cli.py # Click CLI (gwp command)
compiler.py # Workout model → Garmin API JSON
exercises.py # Exercise name → Garmin category/name registry
loader.py # YAML parser with !include support
models.py # Pydantic workout models
sync.py # Garmin Connect auth and upload
zones.py # Zone resolution (HR, pace, power)
workouts/
zones.yaml # Training zone definitions
templates/ # Workout YAML files
tests/
fixtures/ # Golden reference JSON
test_compiler.py # Compiler golden tests
test_loader.py # YAML loading and !include
test_models.py # Step parsing
test_zones.py # Zone resolutionDevelopment
uv run pytest -v # run tests
uv run ruff check . --fix # lint
uv run ruff format . # formatContributing
Contributions welcome. Open an issue or submit a PR — whether it's a new exercise, a workout template, a bug fix, or documentation improvement.
License
Available Tools
24 toolsadd_bikeA
Add a cycling interval step.
End condition: set exactly one of duration, distance, or neither (lap button). Target: set zone OR power range OR power_pct range OR none.
Args: duration: Duration as "M:SS" or "lap" for lap button. distance: Distance like "10km", "20mi". zone: Training zone name (e.g. "threshold", "z3"). power_min: Lower power in watts. Must pair with power_max. power_max: Upper power in watts. Must pair with power_min. power_pct_min: Lower power as %FTP. Must pair with power_pct_max. power_pct_max: Upper power as %FTP. Must pair with power_pct_min.
| Name | Required | Description | Default |
|---|---|---|---|
| duration | No | ||
| distance | No | ||
| zone | No | ||
| power_min | No | ||
| power_max | No | ||
| power_pct_min | No | ||
| power_pct_max | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It discloses parameter constraints but does not mention side effects, error behavior, or where the step is added (e.g., appending to current workout).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a bulleted parameter list. Each sentence provides essential information. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers parameter constraints well, but does not explain the return value or how the step integrates into a workout. Output schema exists but is not referenced in description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates fully: it provides format notes ('M:SS', '10km'), pairing rules (power_min with power_max), and constraints (set exactly one end condition).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Add a cycling interval step,' providing a clear verb and resource. It distinguishes from siblings by specifying 'cycling' and outlines end condition and target constraints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit rules for end condition and target, telling users what combinations are allowed. However, it does not compare to other add tools in the sibling list, leaving the context of choosing this tool over others implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_circuitA
Open a new circuit/repeat group. Steps added after this go inside the circuit.
Call end_circuit when done adding steps to close it.
Args: iterations: Number of times to repeat the circuit. skip_last_rest: If true, skip the last rest step in the circuit.
| Name | Required | Description | Default |
|---|---|---|---|
| iterations | Yes | ||
| skip_last_rest | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains the basic effect (steps added after go inside) and the parameters, but does not disclose potential side effects, permissions, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded, with a clear purpose sentence followed by lifecycle instruction and parameter details. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, usage lifecycle, and parameters. Although output schema exists, the description does not mention return value, but that is acceptable. Overall sufficient for opening a circuit in a workout builder context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds clear explanations for both parameters: iterations and skip_last_rest. It goes beyond the schema which only provides types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it opens a new circuit/repeat group and describes the behavior of subsequent steps being inside it. Differentiates from siblings like add_exercise and end_circuit by explaining the grouping role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call end_circuit when done, providing clear lifecycle guidance. However, it does not specify when not to use this tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_cooldownA
Add a cooldown step.
Args: duration: Duration as "M:SS" or "lap" for lap button. Default: lap. zone: Training zone name (e.g. "easy", "z1"). exercise: Exercise name for strength cooldowns (e.g. "rowing_machine"). notes: Notes to display on the watch.
| Name | Required | Description | Default |
|---|---|---|---|
| duration | No | lap | |
| zone | No | ||
| exercise | No | ||
| notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It does not describe what happens when a cooldown is added (e.g., append to workout, any side effects). Only parameter details are given, leaving behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a clear Args section. Every sentence adds value with no redundancy. The key action is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no annotations, the description covers parameter semantics but lacks behavioral context (e.g., how cooldown integrates into a workout, prerequisites). The existence of an output schema reduces the need to describe return values, but overall completeness is average.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description explains each parameter's meaning: duration format 'M:SS' or 'lap', zone as training zone name, exercise for strength cooldowns, notes for watch display. This adds significant value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a cooldown step,' which is a specific verb+resource combination. Among siblings like add_warmup and add_recovery, this uniquely identifies the tool's purpose without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like add_warmup or add_recovery. The context of a cooldown step is implied but not differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_exerciseA
Add a strength/cardio exercise step.
End condition: set reps OR duration OR neither (lap button).
Args: exercise: Exercise name (e.g. "wall_ball", "kettlebell_swing", "burpee"). Use list_exercises to see all available exercises. duration: Duration as "M:SS" or "lap" for lap button. reps: Number of repetitions. weight: Weight in lbs. notes: Notes to display on the watch (e.g. distance for carries).
| Name | Required | Description | Default |
|---|---|---|---|
| exercise | Yes | ||
| duration | No | ||
| reps | No | ||
| weight | No | ||
| notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the end condition constraint (set reps OR duration OR neither) and recommends list_exercises. However, it omits behavioral traits like whether it validates exercise names, modifies a workout in progress, or requires a prior create_workout. The disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and well-structured: a one-line purpose, a clarifying sentence on end condition, then bullet-pointed args. Every sentence adds value; no redundancy. Perfectly sized for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Parameter details are complete, and an output schema exists (so return values need not be explained). However, the description misses workflow context: it does not mention that a workout must be created first (via create_workout) or that this step is added to a current workout. This gap could mislead an agent into calling add_exercise without a workout context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates fully. It explains each parameter: exercise (name, examples, list_exercises), duration (format 'M:SS' or 'lap'), reps (integer), weight (lbs), notes (display text). This adds significant meaning beyond field types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a strength/cardio exercise step, specifying the verb 'add' and resource 'exercise step'. It distinguishes from sibling tools like add_bike or add_run through the 'strength/cardio' qualifier, though not explicitly naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for adding exercise steps with an end condition, but does not explicitly state when to use this tool over siblings like add_bike or add_run. The mention of list_exercises provides a hint for pre-usage, but no when-not-to scenarios or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_recoveryA
Add a recovery step between intervals.
Args: duration: Duration as "M:SS" or "lap" for lap button. Default: lap. distance: Distance like "200m" for recovery jogs. zone: Training zone name (e.g. "z1", "easy").
| Name | Required | Description | Default |
|---|---|---|---|
| duration | No | lap | |
| distance | No | ||
| zone | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains that the tool adds a recovery step and describes the parameters. It does not contradict any annotations (none exist). However, it could be more transparent about behaviors like insertion location if not after the last interval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus a parameter list. Every sentence provides essential information without redundancy. It is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity is low (adding a step) and an output schema exists (so return values are covered elsewhere), the description is largely complete. It could mention the insertion point more explicitly, but it suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining duration format ('M:SS' or 'lap'), distance example ('200m'), and zone meaning. This adds meaningful context beyond the schema's type-only definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a recovery step between intervals', which is a specific verb and resource. It distinguishes from sibling tools like 'add_rest' and 'add_cooldown' by specifying the context 'between intervals'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when building a workout between intervals, but does not explicitly state when to use this versus alternatives like 'add_rest'. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_restB
Add a rest step.
Args: duration: Rest duration as "M:SS" (e.g. "2:00" for 2 minutes).
| Name | Required | Description | Default |
|---|---|---|---|
| duration | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits like side effects (modifying the current workout) or required state. It only says 'Add' without clarifying that it appends to an existing workout or if it requires a created workout. The agent is left guessing about context and mutability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for purpose followed by a clear parameter definition with format and example. No redundant words. It is front-loaded and structured with a labeled Args section, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter) and existence of an output schema, the description minimally covers the functionality. However, it does not explain the overall context (e.g., that this step is added to a workout under construction) or mention related concepts like ordering. It is adequate but lacks completeness for a full behavioral understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, so the description must compensate. It explains the 'duration' parameter with format 'M:SS' and an example. This adds sufficient meaning beyond the schema, though a note that minutes and seconds are digits would improve clarity. The explanation is adequate for a single simple parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a rest step,' identifying the verb (add) and resource (rest step). It distinguishes from sibling tools like add_exercise or add_bike, which are different step types. However, it could be more explicit about the context (e.g., adding to a workout definition), but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as add_recovery or add_cooldown. The description does not mention prerequisite conditions (e.g., an active workout), making it hard for an agent to decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_runA
Add a running interval step.
End condition: set exactly one of duration, distance, or neither (lap button). Target: set zone OR pace range OR HR range OR none.
Args: duration: Duration as "M:SS" or "lap" for lap button. distance: Distance like "1km", "400m", "1mi". zone: Training zone name (e.g. "threshold", "tempo", "z4"). pace_min: Faster pace bound (e.g. "6:25/mi"). Must pair with pace_max. pace_max: Slower pace bound (e.g. "6:40/mi"). Must pair with pace_min. hr_min: Lower HR bound in bpm. Must pair with hr_max. hr_max: Upper HR bound in bpm. Must pair with hr_min. notes: Notes to display on the watch.
| Name | Required | Description | Default |
|---|---|---|---|
| duration | No | ||
| distance | No | ||
| zone | No | ||
| pace_min | No | ||
| pace_max | No | ||
| hr_min | No | ||
| hr_max | No | ||
| notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the structure of the run step (end condition, target) and parameter constraints. However, it does not mention side effects, permissions, or prerequisites (e.g., whether a workout must exist). It adds value but is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a few sentences followed by bullet-pointed parameter details. It is well-structured, starting with the main purpose, then constraints, then parameter explanations. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, many optional with constraints) and the presence of an output schema, the description covers essential aspects like parameter relationships. It lacks explicit context about where the step is added (e.g., to a workout), but sibling tool names imply it is part of a workout-building workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It does so thoroughly, explaining each parameter's format (e.g., duration as 'M:SS' or 'lap', distance like '1km') and constraints (e.g., pace_min must pair with pace_max). This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a running interval step' with a specific verb and resource. It distinguishes from siblings like add_bike, add_circuit, etc., and provides details on end condition and target options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit constraints: set exactly one of duration, distance, or neither; and set one of zone, pace range, HR range, or none. It also specifies required pairing for pace and HR parameters. However, it lacks explicit comparison to alternative tools or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_warmupB
Add a warmup step.
Args: duration: Duration as "M:SS" or "lap" for lap button. Default: lap. zone: Training zone name (e.g. "easy", "z2"). exercise: Exercise name for strength warmups (e.g. "rowing_machine"). notes: Notes to display on the watch.
| Name | Required | Description | Default |
|---|---|---|---|
| duration | No | lap | |
| zone | No | ||
| exercise | No | ||
| notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only says 'Add a warmup step' without detailing behavioral traits like whether it can be called multiple times, side effects, or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear first line. The parameter list is structured in docstring format. Could be slightly more streamlined, but no unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate given the parameter count and lack of output schema details. However, it omits information about ordering (warmup is typically first), return values, or constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning: duration format ('M:SS' or 'lap'), zone as training zone, exercise for strength warmups, and notes for display. This compensates well for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a warmup step.' This distinguishes it from sibling tools like add_bike or add_exercise, but does not explicitly differentiate beyond the name and context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., add_cooldown or add_recovery). The description does not mention typical placement or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_workoutA
Clear the current workout and start fresh.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It indicates destructive action (clearing workout) but does not specify if it affects saved state, requires confirmation, or is undoable. Adequate but could add detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 0 parameters and a simple action, the description is sufficient. Output schema exists (not shown) but is not needed for clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters; schema coverage is 100% trivially. Description adds nothing beyond schema, but baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb and resource: 'Clear the current workout and start fresh.' It distinguishes from siblings like 'delete_workout' (which likely deletes file) and 'remove_step' (step-level removal).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use versus alternatives like 'create_workout' or 'delete_workout'. The description simply states what it does without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workoutA
Create a new workout.
Args: name: Workout name (e.g. "Hyrox Race Sim") type: Sport type — one of: running, cycling, strength, swimming, walking, hiking
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only says 'Create a new workout' without disclosing side effects, requirements, or what happens upon creation. Does not mention state changes or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: two sentences plus arg descriptions. No fluff. Front-loaded with the purpose. Every word is relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema (present), return values need not be explained. However, the description lacks context such as prerequisites or follow-up steps (e.g., adding exercises). For a simple create tool, it is adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It provides examples for name ('Workout name (e.g. Hyrox Race Sim)') and lists valid types for 'type', adding meaning beyond schema titles. This helps the agent choose values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new workout', which is a specific verb+resource. It distinguishes from sibling tools like add_exercise, add_run, etc., which add steps to existing workouts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. Does not mention that a workout should be created before adding steps, or any prerequisites. The description is silent on usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_workoutA
Delete a workout from Garmin Connect.
Args: workout_id: Garmin workout ID (from list_workouts).
| Name | Required | Description | Default |
|---|---|---|---|
| workout_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description states 'Delete' implying a destructive action but does not mention irreversibility, authorization needs, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with two sentences. The main action is front-loaded, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description is adequate. It covers purpose and parameter source, though could mention irreversibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds context to the sole parameter 'workout_id' by specifying 'Garmin workout ID (from list_workouts)', which is not present in the input schema. Schema coverage is 0%, so the description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a workout from Garmin Connect' uses a specific verb and resource, clearly distinguishing it from sibling tools like list_workouts and create_workout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. The only hint is 'from list_workouts', but no explicit when-to-use or when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
end_circuitA
Close the current circuit. Subsequent steps will be added at the parent level.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and clearly discloses the behavioral effect (subsequent steps go to parent level). However, it does not mention potential error conditions like no open circuit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with no wasted words. The action is front-loaded and immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless tool with an output schema, the description is complete. It explains the purpose and the effect on the workflow hierarchy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%, so baseline is 3. The description adds no parameter information, which is acceptable given zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Close the current circuit') and explains the effect on subsequent steps, distinguishing it from sibling tools like add_circuit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells when to use (after a circuit is started) and the consequence, but does not explicitly state when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workoutB
Get the current workout summary.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits such as side effects, rate limits, or data scope. As a read operation, it should at least state it is non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that gets straight to the purpose. No wasted words, but could benefit from slightly more structure or context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the minimal description is adequate but leaves ambiguity about what 'current workout summary' contains (e.g., steps, duration). More context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (0 params), so schema coverage is 100%. Baseline score of 4 applies; description does not need to add parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a 'current workout summary', providing a specific verb and resource. It distinguishes from sibling tools like list_workouts (which lists all workouts) and create_workout, but does not define 'current' precisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., list_workouts or get_zones). No context about prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_zonesA
Show available training zones from zones.yaml.
Args: sport_type: Filter by sport — "running" or "cycling". Shows all if omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| sport_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description transparently indicates a read-only operation (reading from a file) with optional filtering. No side effects mentioned, but it's clearly a retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with two sentences plus a parameter description. Front-loaded with purpose, no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with an output schema, the description covers the input parameter sufficiently. No need to explain return values due to output schema presence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully explains the only parameter: its purpose, valid values ('running' or 'cycling'), and default behavior. This completely compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool shows available training zones from a specific file. The verb 'Show' and resource 'training zones' are specific, and the tool is distinct from sibling tools focused on workout creation and management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes the optional sport_type filter with explicit values and default behavior ('Shows all if omitted'). However, no guidance on when not to use or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_exercisesB
List available exercises for strength/cardio workouts.
Args: filter: Optional filter string to search by name or category.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It correctly indicates a read-only list operation and mentions the optional filter. However, it does not disclose details like pagination, rate limits, or data source freshness. Since the tool is simple and the operation is obvious, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for purpose and one line for the parameter. It is front-loaded with the main action and avoids any unnecessary information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter) and the presence of an output schema (so return values are documented elsewhere), the description is largely complete. It provides the essential purpose and parameter semantics. However, it could benefit from mentioning that the list is of exercises available for use in workouts, but this is already implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It describes the filter parameter as an optional string to search by name or category, which adds value beyond the schema's bare type definition. However, it does not specify the expected format or behavior (e.g., partial match, exact match), leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists available exercises for strength and cardio workouts. It uses a specific verb ('list') and resource ('available exercises') with a clear scope. While it does not explicitly differentiate from sibling tools, the purpose is unambiguous and distinct from the majority of siblings that deal with adding or managing workouts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as other list tools like list_templates or list_workouts. There is no mention of prerequisites, context, or exclusions. The user must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesA
List available YAML workout templates in workouts/templates/.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly implies a read-only listing operation with no side effects, but does not disclose details like sorting, ordering, or whether only filenames or full paths are returned. The presence of an output schema mitigates this slightly, but behavioral transparency is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose without any extraneous words or repetitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless listing tool with an output schema, the description is complete: it specifies what is listed and where. No additional information is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100% trivially. The description adds context by specifying the type ('YAML workout templates') and location, which provides meaning beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'available YAML workout templates', and explicitly distinguishes the location 'in workouts/templates/', differentiating it from sibling tools like list_workouts or list_exercises that list different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives such as load_template or list_workouts. Usage is implied as a preliminary step before loading a template, but no exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workoutsB
List all workouts on Garmin Connect.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states it lists workouts, without disclosing authentication needs, response size, or performance implications. The read nature is implied but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise and front-loaded. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimally adequate for a simple list operation, but lacks details on scope (all workouts for which user?), pagination, ordering, or output format. With an output schema existing but not described, some gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description need not add parameter info. The baseline for 0 params is 4, and the description is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and resource (workouts) and platform (Garmin Connect). It is specific but does not distinguish from siblings like get_workout or list_templates, though the verb 'list' implies a collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_workout for a single workout, list_templates for templates). No context on prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_templateA
Load a workout from a YAML template file.
Args: path: Path to the YAML file (e.g. "workouts/templates/hyrox-sim.yaml").
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose side effects, such as whether loading overwrites the current workout, requires authentication, or has rate limits. Without annotations, the description carries the full burden, but it only states the action without behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for the purpose and a single line for the parameter. Every sentence is necessary, and no words are wasted. The structure is front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the basic action and parameter, it omits important context such as whether loading a template replaces the current workout, error handling, or file format constraints. The presence of an output schema reduces the need to explain return values, but the missing operational context lowers completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single required string parameter 'path' with 0% description coverage. The description adds clear semantics: 'Path to the YAML file (e.g. "workouts/templates/hyrox-sim.yaml")', providing an example and file type, which significantly aids the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Load') and resource ('a workout from a YAML template file'). It distinguishes itself from sibling tools like list_templates (listing) and preview_upload (previewing) by specifying that it loads a file into a workout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives (e.g., preview_upload, save_yaml). The description does not mention prerequisites (e.g., whether the file must exist) or any conditions under which loading is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_uploadA
Preview the workout that would be uploaded to Garmin Connect.
Always call this before upload_workout so the user can review and confirm.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It indicates non-destructive preview behavior but does not detail what exactly happens (e.g., return format or side effects). Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no annotations, and presence of an output schema, the description is largely complete. It could mention the nature of the preview output but is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters (0 params, schema coverage 100%). Description does not need to add parameter info. Baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Preview the workout that would be uploaded to Garmin Connect', specifying the verb 'preview' and the resource 'workout to upload'. It distinguishes itself from siblings like 'upload_workout' and 'validate_workout'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Always call this before upload_workout so the user can review and confirm', providing clear when-to-use and ordering guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_stepA
Remove a step by its 1-based index from the top-level step list.
Args: index: 1-based step index (as shown in get_workout output).
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses that the tool removes a step (destructive) and the index format, but lacks information on side effects, reversibility, or permission requirements, which is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action and key details. Every word is necessary; no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (not shown but indicated), the description is sufficient for a simple one-parameter operation. It could mention error handling (e.g., if index is out of bounds) but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only specifies 'integer' for index, while the description adds that it is 1-based and references get_workout output for the correct value. This adds meaningful semantic context beyond the raw type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove a step') and the resource ('from the top-level step list'), with a specific reference to 1-based indexing, which distinguishes it from sibling tools like add_exercise or clear_workout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (after retrieving the workout via get_workout to know the index) but does not explicitly mention when not to use or list alternatives. It provides adequate context for a simple removal tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_yamlA
Save the current workout as a YAML template file.
Args: path: File path to save to. Defaults to workouts/templates/.yaml.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only states 'Save the current workout' without disclosing overwrite behavior, error handling, or whether the operation is destructive. For a mutation tool, more transparency is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences: the first states the purpose, the second describes the parameter. No redundant information; well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no annotations, output schema exists), the description covers the core action but lacks detail about return values or side effects. It is minimally adequate but could mention success behavior or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema: it explains the path parameter's purpose and default value ('Defaults to workouts/templates/<workout-name>.yaml'). Although schema coverage is 0%, the description compensates well for this single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Save the current workout as a YAML template file,' providing a specific verb (save), resource (current workout), and format (YAML template). This distinguishes it from sibling tools like load_template or upload_workout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. It does not mention prerequisites, exclusions, or compare with sibling tools like 'upload_workout' or 'validate_workout.' The usage context is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_workout_nameC
Rename the current workout.
Args: name: New workout name
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only says 'rename', implying mutation, but does not mention side effects, permissions, or whether the change is reversible. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (two lines), which is efficient but at the expense of completeness. It lacks necessary context, making it borderline under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, a single parameter with minimal description, and the presence of an output schema (not mentioned in description), the description fails to provide adequate context for correct tool usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must add meaning. It provides 'name: New workout name' in args, which adds little beyond the schema's 'Name' title. No format, constraints, or examples are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The tool name 'set_workout_name' and description 'Rename the current workout' clearly indicate a rename operation on a workout. It distinguishes from sibling tools that add, list, or delete workouts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any context about prerequisites or typical use cases. The description only states what it does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_workoutA
Upload the current workout to Garmin Connect.
IMPORTANT: Always call preview_upload first and get explicit user confirmation before calling this tool. Replaces any existing workout with the same name.
Args: confirm: Must be true. Confirms the user has approved the upload. schedule_date: Optional date to schedule the workout (YYYY-MM-DD).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | ||
| schedule_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that the tool may replace existing workouts (destructive behavior) and requires confirm=true. It does not mention return values or error handling, but covers key side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, with important warnings front-loaded. Uses bold for emphasis and a clear list for parameters. No unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, preconditions, parameters, and side effects. Does not explicitly mention return values, but an output schema exists. Could add more about error states, but overall sufficiently complete for a tool with an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description clearly explains the purpose of each parameter: confirm must be true, schedule_date is optional with format YYYY-MM-DD. This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Upload' and resource 'current workout to Garmin Connect', distinguishing it from sibling tools like preview_upload. It is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call preview_upload first and get user confirmation before using this tool, and warns about replacing existing workouts. Provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_workoutB
Compile the current workout and return the Garmin API JSON for inspection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. It states 'compile' and 'return JSON', but does not clarify whether the tool modifies state, has side effects, requires permissions, or how it handles errors. The read-only nature is implied but not confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence of 14 words. Every word contributes to the purpose. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, the description covers the core function. However, it lacks details on validation behavior, error handling, and the effect on the current workout state. The presence of an output schema partially compensates for return value documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, the description need not add parameter details. It adds value by specifying that the operation applies to the 'current workout', indicating state dependency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'compile' and the resource 'workout', specifying the output as 'Garmin API JSON for inspection'. It distinguishes from siblings like 'upload_workout' and 'preview_upload' by focusing on inspection, though it doesn't explicitly contrast these tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like 'preview_upload' or 'save_yaml'. The description implies it is for inspection before upload, but does not state prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
24 tool updates
v0.1.0- First observed
add_bike - First observed
add_circuit - First observed
add_cooldown - First observed
add_exercise - First observed
add_recovery - First observed
add_rest - First observed
add_run - First observed
add_warmup - First observed
clear_workout - First observed
create_workout - First observed
delete_workout - First observed
end_circuit - First observed
get_workout - First observed
get_zones - First observed
list_exercises - First observed
list_templates - First observed
list_workouts - First observed
load_template - First observed
preview_upload - First observed
remove_step - First observed
save_yaml - First observed
set_workout_name - First observed
upload_workout - First observed
validate_workout
TDQS
Each tool targets a distinct action (add_*, clear_workout, etc.) with no overlap. Step types are clearly differentiated by parameters and purpose.
All tools follow a consistent verb_noun snake_case pattern (e.g., add_bike, list_workouts, upload_workout) with no naming conflicts.
24 tools are slightly above the optimal range but justified by the complexity of workout creation (multiple step types, templates, upload). Not excessive.
Core CRUD for workouts and steps is present, but lacks editing existing Garmin workouts (insert step, update step) and explicit step types for sports like swimming or hiking.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
List, fetch, create, edit (replace), delete and schedule structured workouts on Garmin Connect (runn
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
Connect Claude to your Intervals.icu watch data for fitness, workout review, and plan writing.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables creation of Garmin Connect workouts using natural language descriptions. Supports multi-sport workouts with heart rate zones and automatic sync to Garmin devices.3312ISC
- AlicenseNot gradedqualityDmaintenanceEnables creation, management, and scheduling of Garmin Connect workouts from natural language descriptions, plus viewing activities, calendar data, and weather information from completed workouts.27MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to read Garmin activities and create/schedule structured workouts and multi-week training plans directly on Garmin Connect, syncing to your watch with guided prompts.1MIT
- AlicenseNot gradedqualityBmaintenanceBrings Garmin training data into Claude via Intervals.icu, enabling querying of activities, wellness, and planned workouts, as well as creating structured workouts that sync back to the Garmin watch.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/k-schmidt/Garmin-Workout-Pipeline'
If you have feedback or need assistance with the MCP directory API, please join our Discord server