MCP App Store
by KeenEthics
MoveMate: Gym Workout Tracker icon

MoveMate: Gym Workout Tracker

By STANISLAV HLIEBOV

Get New App Alerts

Overview

MoveMate is a strength-training tracker for iOS and Android. This connector gives Claude read and write access to your own training data, so you can coach yourself in conversation instead of scrolling through a log. Claude can see what you actually completed — every set, its reps and weight, and the planned target you were working against — not just what was scheduled. That makes real progressive overload possible: Claude progresses your next session from the reps you hit last time. It reads your personal records, per-exercise progression with estimated 1RM, and rolling volume, frequency and streak stats. It searches MoveMate's exercise library, adds custom exercises, and schedules, edits or cancels upcoming workouts — including supersets, circuits and conditioning work like runs or skipping alongside the lifts. Bodyweight movements are handled properly: they're judged on reps per set and total reps, where a volume-in-kg number would read as zero. Requires a free MoveMate account. Completed workouts are never modified from chat — Claude can only create, change or cancel upcoming planned sessions.

Tools

create_custom_exercise

ChatGPT
Adds a new exercise to the user's own library, for when search_exercises doesn't have what they're after — including conditioning work such as a run, skipping or sprints, via exercise_type. The returned exercise_id can then be used with search_exercises results in create_planned_workout — never invent an exercise_id. Not safe to retry: calling this again with the same name creates a separate duplicate exercise, not the same one — check search_exercises first if unsure whether it already exists.

create_custom_workout

ChatGPT
Saves a new workout to the user's own workouts ("My workouts" in the app) without putting it on the calendar — a reusable routine such as "Chest day". To also schedule it, pass the returned workout_id to create_planned_workout; to put a one-off session on a date, use create_planned_workout with an exercise list instead. Every exercise_id must come from search_exercises or create_custom_exercise — never invented. Propose the workout and get the user's agreement before calling. Not safe to blindly retry, though an identical call within two minutes returns the workout already saved instead of a second copy. Supersets and circuits are set with the superset_group label on each exercise — see that field for the rule it requires. Each exercise is measured by its own exercise_type (from search_exercises) — send the targets that type accepts. Free accounts can save a limited number of workouts from chat; a refusal for that reason says so and must not be retried.

create_planned_workout

ChatGPT
Schedules a workout in the app on a chosen date, in one of two ways. To schedule a workout that already exists — one of the user's saved workouts or a library workout, found with list_workouts — pass its workout_id and no title, notes or exercises: the session links to that workout exactly as scheduling it in the app does, so no copy appears in the user's saved workouts, and later edits to that saved workout show up in this session too. To build a new session, omit workout_id and pass title and exercises. Every exercise_id must come from search_exercises or create_custom_exercise — never invented. Not safe to blindly retry: client_request_id makes retries safe — a repeat call with the same ID returns the existing workout instead of creating a duplicate. Supersets and circuits are set with the superset_group label on each exercise — see that field for the rule it requires. A workout can mix strength and conditioning freely: each exercise is measured by its own exercise_type (from search_exercises), so a run, a skipping round or a set of sprints sits in the same list as the lifts — send the targets that type accepts. Free accounts can hold a limited number of upcoming planned workouts; a refusal for that reason says so and must not be retried.

delete_planned_workout

ChatGPT
Cancels a planned (not yet done) workout and takes it off the schedule. Only affects upcoming planned workouts — a workout already marked done or skipped cannot be removed from chat. Removes only the session: a saved workout it was scheduled from stays in the user's saved workouts. When the same workout is scheduled more than once, pass session_date to pick the session.

get_body_profile

ChatGPT
Body stats and training preferences the user entered in MoveMate (height, weight, age, gender, fitness level, activity level, goals, available equipment), whether MoveMate onboarding is complete, and the lifetime count of completed workouts. Use for program design or nutrition estimates that depend on these values.

get_exercise_progression

ChatGPT
Per-exercise trend over time — weight, reps, and estimated 1RM per workout. Returns a chart for one explicitly requested exercise. Call at most once and only when the user names a specific exercise. For broad PR or overall-progress requests, use get_personal_records and get_training_stats instead; never fan this tool out across PRs or exercises.

get_personal_records

ChatGPT
The user's best set per exercise (by estimated 1RM), most impressive first. Returns the complete requested PR list in one call. Never call get_exercise_progression for every returned record; only use progression when the user explicitly names one exercise.

get_profile

ChatGPT
Returns the connected user's display name, timezone, and training frequency.

get_recent_workouts

ChatGPT
What the user ACTUALLY did in past sessions, set by set — reps and weight of every completed set, total reps per exercise, and the planned targets they were working against. This is the tool for "how did I do?", for coaching progressive overload, and for anything about bodyweight work, where reps per set and total reps are the result and volume in kg is always 0. Narrow with exercise_name to get the same movement across its last few sessions.

get_training_stats

ChatGPT
Answers "how am I doing" — totals, volume, weekday frequency, and streak over a rolling period. Returns one complete training-stats summary for one rolling period. Call exactly once per distinct requested period (for a 7-day/30-day comparison, exactly two calls: last_7d and last_30d). Never call once per day, workout, exercise, set, or muscle group, and never repeat an identical period in the same answer.

get_workout

ChatGPT
Returns one specific MoveMate workout by its exact workout_id and renders the same workout card as list_workouts. Use this whenever the user asks to show, open, or display a particular workout already identified earlier in the conversation, especially one returned by create_planned_workout, update_planned_workout, list_planned_workouts, or list_workouts. Do not answer with only a text summary when a valid workout_id is available.

get_workout_details

ChatGPT
Returns a workout's full contents — every exercise with its exercise_id, exercise_type, sets and targets, rest, notes and superset grouping — in exactly the shape update_custom_workout, update_planned_workout and create_custom_workout accept. Call it before changing a workout's exercises: those tools replace the whole list, so start from this one, change what the user asked for, and send the rest back unchanged. Works for the user's saved workouts, library workouts and the workouts of scheduled sessions (workout_id from list_workouts, list_planned_workouts or an earlier write). To show the user a workout card instead, use get_workout.

list_planned_workouts

ChatGPT
What's coming up — so the model can answer that and avoid double-booking.

list_workouts

ChatGPT
Browses MoveMate's workout catalog — both the shared library and the user's own custom workouts, together by default. Use this to find an existing workout to schedule (pass its workout_id to create_planned_workout) rather than building one from scratch, to find one of the user's saved workouts to change (update_custom_workout, after reading it with get_workout_details), to browse by body focus ("give me a leg workout" — use category), or to look up one the user just opened in the app by its workout_id. Not the user's calendar (see list_planned_workouts) and not training history (see get_recent_workouts).

log_completed_workouts

ChatGPT
Records workouts the user has ALREADY FINISHED into their MoveMate history — "log yesterday's workout: bench 4x8 at 80 kg, squats 3x5 at 100", or a short history the user is moving over from notes or another app. Send whole sessions with the sets actually done, up to 20 workouts per call. Not a live tracker: if the user wants to log set by set while training, point them to the workout tracker in the MoveMate app (rest timer, weight suggestions) instead of calling this after every set. Dates: a workout from before the user joined MoveMate is history and may have any date; a workout from since they joined must be from today or the last 14 days. For a future date use create_planned_workout. At most 300 past workouts can be moved in through chat in total; for a longer history or an export file from another app (Hevy, Strong and others), tell the user about the workout import in the MoveMate app instead. Every exercise_id must come from search_exercises or create_custom_exercise — never invented. Each exercise is measured by its exercise_type (from search_exercises); send the fields that type uses: default = weight and reps (most strength work, and bodyweight work with reps such as pull-ups or hill sprints); time = duration only (planks, dead hangs, skipping); time_weight = duration and weight (weighted plank, farmer hold); distance_time = distance and duration (outdoor running, cycling or swimming, rowing machine, SkiErg — anything whose monitor shows distance rather than km/h); weight_distance = weight and distance (farmer walk, sled push); cardio_machine = speed in km/h, the machine level (incline or resistance) and duration — treadmill, stationary bike, stepmill; distance is derived from speed and time. Continuous cardio (cardio_machine, distance_time) is ONE set per session — a 20-minute treadmill walk is a single set of 1200 seconds, not three. If you had to guess any exercise, weight, rep count or date, read the workouts back and get the user's agreement before calling. Safe to retry: a workout already in the history (same date, start time and title) is not added twice. Free accounts can finish 3 workouts in total (in the app and here together); workouts from before they joined do not count. A refusal for that reason says so and must not be retried.

search_exercises

ChatGPT
Searches MoveMate's exercise library (including the user's own custom exercises). The model must only compose workouts from exercises returned here — never invented ones. Each result carries an exercise_type saying how that movement is measured (reps, time, distance, or speed and level on a cardio machine) — it decides which target fields create_planned_workout will accept for it, so read it before writing sets.

update_custom_workout

ChatGPT
Changes one of the user's own saved workouts ("My workouts" in the app) — rename it, change its note, or replace its exercise list — the same as editing it in the app. Every scheduled session that uses this workout shows the change too, including upcoming ones; the response says how many. Library workouts cannot be changed: to make a personal version, save one with create_custom_workout. Pass only the fields you want to change; anything omitted stays as-is. exercises, if given, replaces the whole list — to add an exercise, pass the existing ones plus the new one in the right position; to remove one, pass the list without it. ALWAYS read the current list with get_workout_details first and send it back with your change — never rebuild it from memory, or the exercises, sets and weights you leave out are lost. Confirm the change with the user before calling. Each exercise is measured by its own exercise_type — send the targets that type accepts.

update_planned_workout

ChatGPT
Changes a workout that has not been done yet — reschedule it, rename it, or replace its exercise list. Works on an upcoming session and on one the app marked skipped because its time passed; rescheduling a skipped session makes it upcoming again. A finished workout cannot be changed. Pass only the fields you want to change; anything omitted stays as-is. exercises, if given, replaces the whole list — to add an exercise, pass the existing ones plus the new one; to remove one, pass the list without it. Read the current list with get_workout_details first; never rebuild it from memory. Because the list is replaced wholesale, any superset_group labels left out are removed too. A session's title, notes and exercises belong to the workout it uses: if that workout is one of the user's saved workouts, the change applies to it and to every other session using it, as editing it in the app does; if it is a MoveMate library workout, which cannot be changed, the user's sessions of it switch to their own edited copy. Rescheduling and reminders only ever affect the one session. When the same workout is scheduled more than once, pass session_date to pick the session. A workout can mix strength and conditioning freely: each exercise is measured by its own exercise_type (from search_exercises), so a run, a skipping round or a set of sprints sits in the same list as the lifts — send the targets that type accepts.

create_custom_exercise

Claude

create_custom_workout

Claude

create_planned_workout

Claude

delete_planned_workout

Claude

get_body_profile

Claude

get_exercise_progression

Claude

get_personal_records

Claude

get_profile

Claude

get_recent_workouts

Claude

get_training_stats

Claude

get_workout

Claude

get_workout_details

Claude

list_planned_workouts

Claude

list_workouts

Claude

search_exercises

Claude

update_custom_workout

Claude

update_planned_workout

Claude

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

Similar Apps