fitness_activate_block
Make a phase of a plan the current one. Earlier phases are marked completed and later ones upcoming. Use this when the user has finished a block and is ready to progress.
block_id: string
fitness_add_exercise
Append a movement to a phase of a plan. Get the block id from fitness_get_plan. For strength work set target_reps and target_weight; for timed holds set target_duration.
block_id: string, exercise: object
fitness_check_badges
Re-run the badge checks and award anything newly earned. Logging a workout already does this, so you rarely need it on its own.
fitness_create_plan
Build a complete training plan with phases and exercises. `schedule` sets which weekdays to train. Each phase holds an ordered list of exercises; the first phase becomes the active one. For strength work fill…
name: string, description: string?, schedule: object?, start_date: string?, blocks: array?
fitness_create_plan_from_template
Adopt one of the built-in starter plans. The result is a normal, fully editable plan — adjust it afterwards with fitness_update_exercise. Call fitness_get_templates first to see the ids.
template_id: string, name: string?
fitness_delete_exercise
Take a movement out of a plan. The user must approve it in the app first. Prefer fitness_update_exercise when the goal is to make something easier rather than remove it.
exercise_id: string
fitness_delete_plan
Remove a training plan and its phases. The user must approve this in the app before it happens; you will get back whether they did. Workout history is kept — deleting a plan never erases what they actually did.
plan_id: string
fitness_delete_workout
Erase a logged workout — for a duplicate or something logged by mistake. The user must approve it in the app first. This changes their streak, so prefer fitness_update_workout when the log is merely wrong.
workout_id: string
fitness_get_badgesread-only
All nine badges and whether the user has earned each one, how many times, and the context of each award. Useful for encouragement and for telling them what is close.
fitness_get_body_metricsread-only
Body measurements over time, oldest first. Units: weight in pounds (lbs); height, bust, waist and hips in centimetres; body fat as a percentage.
days: integer?
fitness_get_calendarread-only
Day-by-day training status for one month: which days were scheduled, which were trained, how complete each session was, and which carry notes.
month: string?
fitness_get_edit_historyread-only
Every change made to exercise targets, by whom (the person or an agent) and why. Read this to understand what equipment the user actually has and how their load has been trending before suggesting a change.
days: integer?, plan_id: string?
fitness_get_planread-only
One plan with every phase and exercise, including each exercise id. You need the exercise ids from here to update or remove individual movements.
plan_id: string
fitness_get_plansread-only
All of the user's training plans with their phases and exercises. Optionally filter by status ("active", "paused", "completed", "archived"). Use this to find a plan id before editing anything.
status: string?
fitness_get_progressread-only
The full picture over the last N days: streak, completion rate, total workouts, recent pain notes, recent plan edits, and target-vs-actual for each exercise in the active phase. Read this before advising on whether to…
days: integer?, plan_id: string?
fitness_get_settingsread-only
The user's display name and what they call their coach. Read this to address them properly.
fitness_get_streakread-only
Current and longest streak. A streak counts only days the plan schedules — missing an unscheduled rest day never breaks it, and a scheduled day that has not happened yet does not either.
fitness_get_templatesread-only
The built-in starter plans a user can adopt in one step. Offer these when someone wants to begin but does not know what to do, then call fitness_create_plan_from_template.
fitness_get_todayread-only
What the user is scheduled to do today, based on their active plans and the local weekday. Returns the exercises with their targets, plus whether today is a training day at all. Start here when the user asks what they…
fitness_get_workoutsread-only
Past workout logs, newest first, each with the exercises performed and how they went. Filter by date range or limit the count.
start_date: string?, end_date: string?, limit: integer?
fitness_get_workouts_onread-only
Every workout logged on a specific date — a day can hold more than one. Use this to find a workout id before editing or deleting it.
date: string
fitness_highlight_exercise
Scroll to an exercise in the plan view and flash it, so the user can see which movement you mean while you talk about it.
exercise_id: string
fitness_log_body_metrics
Record body measurements. Send only what was actually measured — nothing needs to be complete. Units: weight in pounds (lbs); height, bust, waist and hips in centimetres; body_fat as a percentage like 28.5. Logging…
weight: number?, height: number?, bust: number?, waist: number?, hips: number?, body_fat: number?, notes: string?, date: string?, … (list cut; the site may define more)
fitness_log_workout
Record a completed workout. `date` defaults to today. For each movement record what was actually done, not what was planned — if they did fewer reps or dropped the weight, log that. Mark anything they skipped with…
exercises: array, date: string?, plan_id: string?, block_id: string?, mood_after: integer?, energy_before: integer?, pain_notes: string?, general_notes: string?, … (list cut; the site may define more)
fitness_navigate
Switch the app to a screen so the user is looking at what you are talking about. Do this before explaining something visual — send them to "calendar" when discussing consistency, "badges" when congratulating them.
tab: string
fitness_open_plan_editor
Open the plan editor for the user to fill in themselves, rather than building it for them. Use this when they want to make the choices — or when they ask for something you should not decide alone. Pass a plan_id to…
plan_id: string?
fitness_start_session
Open the guided session flow so the user can start training right now — it walks them through each set with a rest timer. Use it when they say they are ready to work out. Defaults to today's scheduled session.
plan_id: string?, block_id: string?
fitness_update_exercise
Change the targets on one planned movement. Every changed field is written to the edit history with your reason, and shown to the user next to that exercise — so always pass `reason`, phrased for them ("knee felt…
exercise_id: string, target_sets: integer?, target_reps: integer?, target_weight: number?, target_duration: integer?, rest_seconds: integer?, form_cues: string?, notes: string?, … (list cut; the site may define more)
fitness_update_plan
Change a plan's name, description, weekday schedule, status, or dates. Set status to "paused" when someone needs a break and "active" when they return — a paused plan stops counting toward streaks.
plan_id: string, name: string?, description: string?, schedule: object?, status: string?, start_date: string?, end_date: string?
fitness_update_settings
Set what the app calls the user and what they call their coach. If the user tells you their name, or asks you to go by a particular name, record it here so the app greets them consistently.
user_name: string?, coach_name: string?, coach_tagline: string?
fitness_update_workout
Fix an existing workout log — add a note they forgot, correct the weight, or replace the exercise list wholesale. Find the workout id with fitness_get_workouts_on. Passing `exercises` replaces the whole list, so…
workout_id: string, date: string?, pain_notes: string?, general_notes: string?, mood_after: integer?, exercises: array?