Skip to main content
Glama

create_workout_plan

Create a workout plan for a client (confirm-gated). To check whether one was already created — for example if asked "is it done?" — call list_workout_plans instead of calling this again; re-running this with confirm: true a second time for the same client and title returns the plan already on file rather than writing a duplicate. exercises: array of { name, sets, reps, restSeconds?, section?, exerciseId?, notes?, modality?, ... }. modality selects which parameters actually describe the work: STRENGTH (sets/reps/restSeconds) | INTERVAL (rounds + distanceMeters or durationSeconds + recoverySeconds + targetPace) | STEADY (durationSeconds or distanceMeters + targetPace) | AMRAP or EMOM (durationSeconds as the cap + rounds) | FOR_TIME | HOLD (durationSeconds). Never describe a run as sets and reps: '6 x 400 m at 5k pace, 90 s jog' is modality INTERVAL with rounds 6, distanceMeters 400, recoverySeconds 90, targetPace '5k pace'. Call get_training_split first so the week has a real structure. section must be one of WARMUP | RESISTANCE | STRETCHING | CARDIO | COOL_DOWN (defaults to RESISTANCE so the app renders them under 'Main Workout'). exerciseId: pass the id from search_exercises when there's a confident catalog match — this is what makes the exercise show an image/video to the client. notes: one short sentence explaining why this exercise is in the plan — shown to the client under the exercise. days: optional [MONDAY..SUNDAY].

Input Schema

NameRequiredDescriptionDefault
daysNo
titleYes
confirmNoMust be true to actually execute. If false/omitted, returns a preview only.
endDateNo
clientIdYes
exercisesYes
startDateYesYYYY-MM-DD
descriptionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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 confirm-gating (preview when confirm is false) and, more valuably, idempotency behavior for duplicate client+title calls — real behavioral context beyond the schema. It does not cover permissions/authorization or error behavior, which keeps it from a 5.

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

Conciseness4/5

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

Front-loads purpose, then routing, then parameter semantics, with every sentence doing work. The modality paragraph and the run-description example are long, but they are load-bearing given the undocumented nested schema; density is justified rather than padded.

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

Completeness4/5

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

For a complex nested-write tool with 25% schema coverage and no output schema, the description covers the hardest parts (modality, section, idempotency, confirm). Minor gaps remain: endDate/description/title semantics and date-range interaction are unaddressed, and return format is not described (acceptable since no output schema exists).

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

Parameters5/5

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

Schema description coverage is only 25% and the exercises items are just 'additionalProperties: {}', so the description must compensate — and it does heavily. It defines the exercises object shape, enumerates modality semantics (STRENGTH/INTERVAL/STEADY/AMRAP/EMOM/FOR_TIME/HOLD) with which parameters apply, lists the section enum and its default, and explains exerciseId and notes purpose.

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+resource with scope: 'Create a workout plan for a client (confirm-gated)'. It also implicitly separates itself from list_workout_plans by naming that sibling as the tool for verification, so an agent can route correctly without opening schemas.

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

Usage Guidelines5/5

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

Gives explicit when-to-use-elsewhere rules: check with list_workout_plans when asked 'is it done?', call get_training_split first so the week has structure, and pass exerciseId from search_exercises. It also documents idempotency (re-running with confirm:true returns the existing plan), removing ambiguity about repeat calls.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.