GymUp Docs
MCP Server

Tools

All available MCP tools for the GymUp coaching platform.

All tools require an active GymUp subscription. Without one, every tool returns a requiresSubscription message and the upgrade link; the transport stays open, so your client can still connect and list the tools.

Exercise Discovery

ToolDescription
search_exercisesSearch the exercise library by name, muscle group, type, or difficulty. Typo-tolerant name search. Pass detailed: true (ideally with limit: 1) for parsed muscles on a single exercise.
resolve_exercise_namesBatch-resolve user-supplied exercise names to catalog IDs — deterministic trigram matching, up to 3 candidates per name with a similarity score, or no_match. Step 1 of the program-import recipe (translate names to English → resolve all in ONE call, ≤30 names → confirm substitutions → prepare_user_program); the full recipe ships in the tool description.

Athlete Profile

ToolDescription
get_athlete_profileRetrieve athlete profile: goals, training days, experience level, onboarding status.
save_athlete_profileSave or update athlete profile: goals, weight, macros, measurements, training experience. Pass metrics_date to log historical weight without regressing the latest-state cache.

Smart Coaching

ToolDescription
generate_smart_programGenerate a fully personalized training program (the next "Chapter") using the athlete's profile, history, periodization state, memories, hard constraints, and evidence-based coaching rules — and save it as a draft. Returns the draft program_id (two IDs for a coordinated A/B pair) plus an arc_update payload for activation. Server-side generation — coaching guidelines never leave the server. Activation happens via the in-app preview button, or commit_program_draft on an explicit ask.

Training Data & Analytics

ToolDescription
get_programsThe athlete's programs. detail: "summary" (default): up to 5 recent summaries (name, phase, dates, days_per_week, per-day exercise counts — metadata only). detail: "rows": flat per-exercise rows (inferred phase_type, prescribed reps/RPE/rest). Filters: program_id, phase_type, date overlap, muscle (rows only). Soft-deleted hidden; drafts hidden from listings unless program_id targets one. Merges the former get_program_history + get_program_exercises_raw.
get_periodization_contextCurrent training phase state: last program end date, phase type, weeks since last deload, recent phase sequence.
get_activity_logs_rawRaw completed-activity rows newest-first; each row inlines e1rm and volume_load. Filters: exercise_id, half-open [from, to), exercise_type, muscle, done. Pagination via cursor (ISO date). Default limit 200, max 1000. Use for any analytical question over logged history — aggregate the rows yourself.

Program Management

ToolDescription
prepare_user_programStage a USER-supplied program (pasted text / photo / PDF import, manually described workout) as draft(s). Source values are kept verbatim; omitted reps/rest get coach defaults, reported in filled_prescriptions (RPE/tempo are never invented). Two alternating weeks = two programs in ONE call (server links the A/B pair). Not for AI-generated programs — those come from generate_smart_program.
commit_program_draftActivate draft program(s) by program_ids (from generate_smart_program or prepare_user_program). A/B pairs are saved atomically with rotation_pair_id linkage. Normally the athlete activates from the in-app preview — call this only on an explicit "activate it now".
update_programReplace all exercises in an existing program (manual surface — prescriptions required, saved verbatim).
edit_program_daySurgical ops on a single day (add/remove an exercise, group into biset/superset) without resending the whole day.
patch_program_exerciseAtomically update ONE existing exercise (sets/reps/RPE/tempo, or a same-muscle swap via replace_with_exercise_id). On a swap the new exercise inherits the replaced slot's prescriptions unless you provide new ones. Rejected swaps return ranked suggestions; a replacement already on the day is refused (user-named) or substituted and reported (substituted_replacement). Propagates to the A/B twin week by default. For a single-date change, use patch_session_exercise.
patch_session_exerciseOverride ONE exercise for ONE session date: a same-muscle swap and/or a per-date prescription tweak. The weekly program is never touched; the override is applied at read time (get_day_session and the app's day screen). Swaps inherit the slot's prescriptions unless you provide new ones; omitted fields keep inheriting the program, so later program edits flow through. Past dates are refused, and the date must be a training day the program is active on (for A/B rotations, pass the week's own program_id; overrides never propagate to the twin week). Undo with revert_session_patch.
revert_session_patchRemove a session override for one exercise and date; the session falls back to the weekly program. Accepts the original or the replacement exercise id.
reschedule_programChange a program's start/end dates without touching its exercises.
delete_programSoft-delete a program — reversible via restore_program; activity logs persist since they link to exercise_id+date, not program_id.
restore_programRestore a soft-deleted program.

Workout Logging

ToolDescription
get_day_sessionProgram day exercises with prescribed reps/weights, estimated weights from history, rest times, and done flags. response_format: "concise" (default) omits media/tutorial/tips.
log_activitySave a workout log for a given exercise and date. activity_type: "strength" → sets of {reps, weight, rpe?, rest?} (plus tempo/biset/rest_after); activity_type: "cardio"duration_minutes. Auto-marks done = true (override with done: false). Merges the former log_strength_activity + log_cardio_activity.
set_exercise_doneToggle the done flag on an existing log without touching weights. Use to uncheck a session.
delete_activity_logHard-delete an activity log for one exercise + date (different from setting done: false).

For reading workout history, use get_activity_logs_raw in the analytics section above (aggregate the rows for any custom query).

Athlete Memories & Constraints

ToolDescription
search_memoriesList recent memories (no query) or semantic-search them (with query).
save_constraintPersist a HARD training constraint — equipment whitelist, permanent exercise avoids, or pinned favorites — enforced mechanically on every future generation and edit.
save_memorySave a long-term athlete fact (soft preference, injury context).
delete_memoryHard-delete a memory by ID (to edit, delete then re-save).

Tool Annotations

Every tool declares MCP standard annotations (spec 2025-06-18) so your client can prompt for confirmation, throttle, or filter:

  • readOnlyHinttrue for all search_*, get_*, resolve_exercise_names.
  • destructiveHinttrue for update_program, delete_program, delete_activity_log, delete_memory, revert_session_patch. Hosts that gate destructive calls (e.g. Claude Desktop's "Allow once / Always allow" prompt) will surface a confirmation for these.
  • openWorldHinttrue only for generate_smart_program (LLM call). Everything else operates on the athlete's own data.
  • idempotentHinttrue for reads, replaces, deletes, upserts (save_athlete_profile, save_constraint, patch_session_exercise), log_activity, in-place edits (patch_program_exercise, reschedule_program), and set_exercise_done. false for commit_program_draft, prepare_user_program, save_memory (each call creates a distinct row).