GymUp Docs
MCP Server

Tools

All available MCP tools for the GymUp coaching platform.

Exercise Discovery (Free)

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.

Program Preview (Free)

ToolDescription
generate_basic_programValidate and preview a training program without saving. Verifies exercise IDs, enriches with names, returns formatted program. Does not use athlete profile or coaching intelligence. Free users: 5 per day.

Athlete Profile

ToolDescriptionTier
get_athlete_profileRetrieve athlete profile: goals, training days, experience level, onboarding status.Free
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.Free

Smart Coaching (Pro)

ToolDescription
generate_smart_programGenerate a fully personalized training program using the athlete's profile, history, periodization state, memories, and evidence-based coaching rules. Returns one program or a coordinated A/B pair (ab_rotation: true) plus a draft_id. Server-side generation — coaching guidelines never leave the server. To persist the program, call commit_program_draft (pass-by-reference).
commit_program_draftPersist a program draft (returned by generate_smart_program) to the athlete's calendar. Pass the draft_id verbatim — never reconstruct the payload. For A/B drafts, both programs are saved atomically with rotation_pair_id linkage. Drafts expire after 30 minutes.
ask_coachAsk the athlete's coach a fitness or training question (volume, RPE, deload, periodization, form, recovery, nutrition, programming). Server-side answer using evidence-based rules + the athlete's context.

Training Data & Analytics

ToolDescriptionTier
get_program_historyUp to 5 recent program summaries (name, phase, dates, days_per_week, per-day exercise count). Metadata only — no per-exercise breakdown, no aggregates.Free
get_periodization_contextCurrent training phase state: last program end date, phase type, weeks since last deload, recent phase sequence.Free
analyze_training_dataDeterministic SQL aggregations over training history (no LLM). Metrics: weekly_sets_per_muscle, total_weekly_sets, rpe_avg, session_frequency, rest_days_avg, total_volume_load, e1rm_progression, pr_count, muscle_balance, training_days_count. group_by: `weekmonth
get_fitness_index_trendCTL-based Fitness Index (0-100, normalized vs all-time peak) — same metric as the Account-screen graph. summary returns peak / current / 12-month peak; detailed adds a downsampled time series (≤52 points).Free
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 custom analytical question outside analyze_training_data's enum.Free
get_program_exercises_rawRaw planned program-exercise rows; each row inlines phase_type, sets, e1rm_per_set, volume_load_planned. Filter by program_id, phase_type, date overlap, or muscle substring.Free
compute_e1rmBrzycki estimated 1RM for hypothetical inputs. Accept { reps, weight } or { reps_array, weights_array }. Real-history e1rm is already inline on raw rows — do not call this for real history.Free

Program Management

ToolDescriptionTier
save_user_programPersist a USER-supplied program (PDF import, manually described workout). Full payload required. Not for AI-generated programs — those go through generate_smart_programcommit_program_draft.Free
update_programReplace all exercises in an existing program.Free
modify_program_dayReplace exercises for a single day in an existing program.Free
delete_programHard-delete a program (activity logs persist since they link to exercise_id+date, not program_id).Free

Workout Logging

ToolDescriptionTier
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.Free
log_strength_activitySave a strength workout log: sets of {reps, weight, rest?} for a given exercise and date. Auto-marks done = true (override with done: false).Free
log_cardio_activitySave a cardio session log: duration_minutes for a given exercise and date. Auto-marks done = true.Free
set_exercise_doneToggle the done flag on an existing log without touching weights. Use to uncheck a session.Free
delete_activity_logHard-delete an activity log for one exercise + date (different from setting done: false).Free

For reading workout history, use get_activity_logs_raw (custom queries) or analyze_training_data (aggregates) in the analytics section above.

Athlete Memories

ToolDescriptionTier
search_memoriesList recent memories (no query) or semantic-search them (with query).Free
save_memorySave a long-term athlete fact (preference, injury, constraint).Free
update_memoryEdit an existing memory by ID.Free
delete_memoryHard-delete a memory by ID.Free

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_*, analyze_training_data, compute_e1rm, ask_coach, generate_smart_program, generate_basic_program.
  • destructiveHinttrue for update_program, modify_program_day, update_memory, delete_program, delete_activity_log, delete_memory. Hosts that gate destructive calls (e.g. Claude Desktop's "Allow once / Always allow" prompt) will surface a confirmation for these.
  • openWorldHinttrue only for ask_coach and generate_smart_program (LLM calls). Everything else operates on the athlete's own data.
  • idempotentHinttrue for reads, replaces, deletes, upserts (save_athlete_profile), log writes (log_strength_activity, log_cardio_activity), and set_exercise_done. false for commit_program_draft, save_user_program, save_memory (each call creates a distinct row).