Skip to main content
Glama
coros-training-mcp

coros-training-mcp

by dholliday3

Update Workout

update_workout

Clone an existing workout, apply step or metadata edits, and create a replacement library workout without altering the original; optionally delete the old workout afterward.

Instructions

Clone an existing workout, apply edits, and create a replacement workout.

Sport-agnostic: works for running, cycling, and strength library workouts. For strength-specific field vocabulary and examples, call get_strength_workout_schema. For run-specific schema, use get_run_workout_schema.

This does not mutate the original workout in place. The replacement workout is created in the library, and the caller can optionally delete the old workout afterward.

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": {
      "workout_id": "<workout_id>"
    },
    "name": "update_workout"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoOptional replacement workout name.
workout_idYesExisting workout ID from list_workouts.
step_updatesNoPer-step patches identified by one of: - step_index - step_id - step_name Supported update keys: - name - overview - target_type (accepts 'time', 'distance', 'reps', or raw ints) - target_value - target_distance_meters (run) - target_duration_seconds (run) - target_display_unit - intensity_type - intensity_value - intensity_value_extend - intensity_display_unit - rest_type - rest_value - rest_seconds (strength-friendly alias for rest_value) - sets - origin_id (strength exercise swap — usually paired with name + overview)
delete_originalNoWhether to delete the original workout after the replacement is created.
estimated_time_secondsNoOptional top-level estimated time in seconds.
estimated_distance_metersNoOptional top-level estimated distance in meters.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.1

TDQS

A3.7/5.0
Behavior4/5

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

No annotations, so the description carries the full burden, and it does real work: it explicitly states the original workout is not mutated in place, that a replacement is created in the library, and that deletion of the original is optional and happens afterward. That ordering information matters for a destructive-adjacent operation. It stops short of covering permissions, whether scheduling/planned-activity links survive the clone, or failure modes.

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?

The clone-and-replace behavior is front-loaded in the first sentence, which is exactly what an agent needs before reading further. Three short paragraphs, each with a distinct job (behavior, sport vocabulary, mutation semantics). Minor redundancy between paragraph one ('create a replacement') and paragraph three ('replacement workout is created').

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

Completeness4/5

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

An output schema exists and schema coverage is 100%, so return shape and per-field detail need no restatement. The description covers the non-obvious parts: clone semantics, non-mutation of the original, and which helper tools to consult. Missing only edge cases — what happens to a scheduled instance of the original, and whether the new workout ID is returned for chaining.

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

Parameters3/5

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

Schema description coverage is 100% — including a detailed enumeration of step_updates patch keys — so the schema does most of the work and baseline 3 applies. The description adds only the sport-agnostic framing and the pointer to the schema tools for field vocabulary; it contributes no additional semantics about delete_original sequencing or estimated_* fields beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a precise verb sequence (clone, edit, replace) that corrects the misleading 'update' in the name — an agent learns immediately this is copy-on-write, not in-place mutation. The scope line ('works for running, cycling, and strength library workouts') is useful. The one gap: siblings update_run_workout and update_bike_workout exist, and the description never says why an agent would pick this generic tool over those sport-specific ones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives useful routing for supporting tools — call get_strength_workout_schema for strength field vocabulary, get_run_workout_schema for run schema — which is genuine when-to guidance. It also implies the delete_original follow-up workflow. But it never states when to use this versus the sibling update_run_workout/update_bike_workout, nor any prerequisite (e.g. the workout must already exist in the library), leaving the main selection decision to inference.

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