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
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| title | Yes | ||
| confirm | No | Must be true to actually execute. If false/omitted, returns a preview only. | |
| endDate | No | ||
| clientId | Yes | ||
| exercises | Yes | ||
| startDate | Yes | YYYY-MM-DD | |
| description | No |