GymLog for AI assistants

New here? How to use GymLog with your AI assistant, with setup steps for each assistant.

GymLog's MCP server lets an AI assistant you choose (for example Claude, ChatGPT or Grok) read your GymLog training log after you sign in and approve it, and, if you allow it, write plans back (templates, Up next sessions with target weights, exercise settings), log, edit and remove workouts, and import past workouts it already holds. Add it as a custom connector with the address https://getgymlog.web.app/mcp. No GymLog account yet? You can create one on the sign-in page; the app is optional.

It never sees your notes, gyms or locations, photos, friends, or anyone you log for. Weights come in the unit you logged them in. Changes an assistant makes show its name in the app, and you can undo them for 30 days in GymLog: Settings › Connected apps. Free accounts can log or import workouts dated today and the 30 days before; older history needs GymLog Pro, which is sold in the GymLog app. Limits: 60 calls an hour (20 of them changes) and 600 a day per assistant; imports have their own limit (2 new imports a day, 3,000 workouts each). This is a training log, not medical advice.

Setting up a new account from an assistant

An assistant can also create a GymLog account for you. Connect it to https://getgymlog.web.app/mcp?signup=1 with no sign-in: it sees every GymLog tool from the start, but only the three below work until your account is verified (the others answer "sign up and verify your email first" and do nothing). It asks you for the same things the GymLog app asks at sign-up (your email, the name others see, a unique @handle, kg or lb, and whether you agree to "By continuing, you confirm you're 18 or older and agree to our Terms of Service and Privacy Policy."), and creates the account only after your yes. GymLog then emails you a verification link: tapping it is the only thing you do. From then on every tool works in that same chat, with no reconnecting, and the assistant appears in GymLog: Settings › Connected apps, where you can remove it any time. If nobody taps the link within 3 days, GymLog deletes the account. Limits: 10 new accounts a day per network, 3 attempts a day per email address. Once connected, an assistant can also ask GymLog to email you a link to delete your account (request_account_deletion); nothing is deleted until you open that link and tap Delete account.

get_started no sign-in

How to set up GymLog

Explains how to create a GymLog account for the user from here: what to ask them, the two tools to call, the one thing the user does (tap a link in an email), the limits, and what to do if they already have an account. Read only.

No arguments.

create_account no sign-in

Create a GymLog account

Creates a GymLog account for the user and emails them a verification link. BEFORE calling, ask the user, and never assume or fill these in yourself: (1) the email address to use, (2) the name other people will see, (3) the unique @handle they want (3 to 20 letters, numbers or _), (4) kg or lb, and (5) whether they agree to GymLog's sign-up line "By continuing, you confirm you're 18 or older and agree to our Terms of Service and Privacy Policy." (give them the links from get_started). Pass acceptedTerms: true ONLY if the user explicitly said yes. If the handle is taken you get handle_taken with free suggestions: let the user choose, then call again. If the email already has an account you get account_exists: help them connect with sign-in instead. Returns a signupId and a one-time claimSecret: keep the secret to yourself, then tell the user to tap the link in the email and call check_account_status.

check_account_status no sign-in

Check a new account

After create_account: pending until the user taps the link in the verification email, then active and, exactly once, an access key; this connection is then signed in and every GymLog tool listed here works in it, with no reconnecting or re-listing. Call at most every 30 seconds. expired after 24 hours. Keep the access key out of the chat unless the user needs it for a bot's settings.

Permissions

Tools

get_profile read only

Get the training profile · needs training:read

The user's GymLog basics: preferred units (kg or lb), whether they use the phone app, how many workouts are synced and their date range, when the phone last synced (lastSyncedAt), and how many templates and planned sessions they have. Call this first. Read only.

No arguments.

list_workouts read only

List workouts · needs training:read

Lists the user's workouts, newest first: date, title, duration, and per exercise the number of working sets and the top set (weight, unit, reps), plus how many personal records were set. Filter by date range; paged with nextCursor. Use get_workout for every set. Read only.

get_workout read only

Get one workout · needs training:read

One workout in full: date, start time, duration, and every exercise with its rep range, rest and superset group, and every set (type, weight, unit, reps, RPE, whether it was ticked done, whether it was a PR), plus cardio. Unticked sets are planned, not performed. Read only.

get_exercise_history read only

Get one exercise's history · needs training:read

One exercise over time, newest session first: each session's performed sets, top set, best estimated 1RM (Epley: weight x (1 + reps/30)) and volume; the exercise's progression settings; the e1RM trend; and the app's own verdict on whether the lift has stalled (best not beaten in 3+ sessions and 3+ weeks this cycle) or plateaued (the year's best not beaten in 4+ months). Read only.

get_personal_records read only

Get personal records · needs training:read

Personal records per exercise: heaviest set, best estimated 1RM, most reps in a set and the biggest session volume, each with its date and unit. All exercises (most recently trained first, up to 100) or one. On assisted machines the logged number is help, not load, so the best is the least assistance. Read only.

get_training_summary read only

Get a training summary · needs training:read

Totals for the week (Monday to Sunday), month, quarter or year containing a date: workouts, working sets, volume per unit (never converted), sets per exercise and per muscle group, and the current streak of weeks with at least one workout. Read only.

list_templates read only

List workout templates · needs training:read

The user's workout templates (their workout days): name, when last run, and each exercise with its rest, rep range, weight increment, auto-progress and sets (type and reps; templates hold no weights). Template names are user content. Paged. Read only.

list_programs read only

List built-in programs · needs training:read

GymLog's built-in program library (for example StrongLifts 5x5, 5/3/1 Boring But Big, GZCLP, Push/Pull/Legs and GymLog's starter plans) with credit links. Without programId: an overview. With programId: every day's exercises, sets, reps, rest and progression (weightIncrement is in kg). userTemplates lists the user's templates named after a program day (a name match, not a hard link). Read only.

search_exercises read only

Search exercises · needs training:read

Finds exercises in GymLog's built-in library and the user's own custom exercises by name or alias: exerciseKey, name, aliases, main muscle groups, equipment type, whether it is custom, and when the user last did it. Use the exerciseKey in other tools instead of guessing names. Read only.

get_exercise_guide read only

Get an exercise guide · needs training:read

How to perform an exercise, from the guide the GymLog app shows: step-by-step instructions, the muscles worked, the equipment type and demonstration photo URLs. Pass an exerciseKey from search_exercises or the exercise's exact name or alias. You may show the images to the user; whenever you show them, keep the credit line (credit.text, with its license link credit.url) next to them. Library data only, nothing of the user's. Read only.

list_equipment read only

List equipment · needs training:read

The user's own custom equipment (name, loading type, start weight, the weights or increments it offers) and the plate set of their home gym (plate weights, units and counts). Never gym names or locations. Read only.

No arguments.

list_planned_sessions read only

List planned sessions · needs training:read

The user's Up next queue: planned sessions with their date, title, target weights and reps per set, who planned them, the planner's note and their status (planned; done and skipped only with includeDone). Read only.

get_todays_plan read only

Get today's plan · needs training:read

The brief the GymLog app shows at the top of a workout started from a template (its Today's plan card), word for word: a header (which workout, when it was last done) and one line per exercise with what the user did last time, what to do today (the app's own weight and rep advice, with the plates to load), warm-ups, and a Stalled / Plateau / New cycle flag. Pass templateId or plannedSessionId; with neither it describes the next Up next session. With neither and nothing in Up next it does not guess a workout: it answers reason "invalid" with `templates` (templateId, name, lastRun; most recently done first) so you can ask the user which one. `text` is the whole brief, ready to show. Weights are the numbers the app's weight field shows (in pounds; a lift logged in kg gets the recall only). The app's default weight rule and warm-up settings are used (settingsNote). Read only.

create_template changes data

Create a workout template · needs plans:write

Creates a workout template (a workout day) in the user's GymLog app: a name and its exercises, each with sets (type and reps), and optionally rest, rep range, weight step, auto-progress and a superset number (exercises sharing a number alternate). Templates hold no weights: put target weights in plan_session. Use exerciseKey values from search_exercises. The template shows in the app as changed by you. Idempotent on clientRequestId. Writes data.

update_template changes data

Change a workout template · needs plans:write

Changes one of the user's templates: a new name, or a new exercise list (it REPLACES the whole list, so send every exercise the template should keep). Returns the template before and after. Tell the user what will change and get their OK first. The whole template is replaced: if the user edits it on their phone later, their version wins. Idempotent on clientRequestId. Writes data.

remove_template changes data

Remove a workout template · needs plans:write

Removes one of the user's templates from every device. Past workouts are not touched. Tell the user which template will go and get their OK first. The user can undo it for 30 days in GymLog (Settings > Connected apps). Already removed returns duplicate. Idempotent on clientRequestId. Deletes data.

update_exercise_settings changes data

Change an exercise's settings · needs plans:write

Changes how GymLog progresses one exercise: increment (the weight step, in the unit the user logs this exercise in), autoProgress (suggest the next weight from the rep range), warmup (style plate or percent, 1 to 5 sets, top set 65 to 95 percent of the working weight; null clears it back to the user's default) and weightDriver (last_session = progress from the last session, estimated_max = a share of the estimated max; null = the user's default). Send only what changes. Returns before and after. Idempotent on clientRequestId. Writes data.

plan_session changes data

Plan a session (Up next) · needs plans:write

Puts a planned session in the user's Up next list in the GymLog app: a title, an optional date, and each exercise with its sets (type, target weight with its unit, target reps, optional RPE). When the user starts it, the app lays out those sets with your targets shown, labelled as your plan; finishing marks it done. Optionally based on a template (templateId; its exercises are used when you send none) and with a short note from you (coachNote, up to 280 characters, shown with your name). To change a planned session, send its plannedSessionId (this replaces it whole). At most 14 planned sessions wait at once. Weights without a unit use the user's units. Idempotent on clientRequestId. Writes data.

remove_planned_session changes data

Remove a planned session · needs plans:write

Takes one planned session out of the user's Up next list on every device. Workouts already logged are not touched. Already removed returns duplicate. Idempotent on clientRequestId. Deletes data.

log_workout changes data

Log a workout · needs workouts:write

Adds a finished workout to the user's GymLog log: the date, optionally the start time, duration and a title, and each exercise with its sets (type, weight with its unit, reps, optional RPE). The workout is private, never posted to friends, and shows in the app as logged by you. Pass plannedSessionId when the user did a session from their Up next list (it is then marked done), or templateId when they followed a template. Use exerciseKey values from search_exercises. Free accounts can log workouts dated today and the 30 days before; older dates need GymLog Pro (pro_required). Weights without a unit use the user's units. Returns the workout and any personal records it set. Idempotent on clientRequestId. Writes data.

update_workout changes data

Change a workout · needs workouts:write

Changes one of the user's own workouts: the date, start time, duration or title, and/or the exercise list. exercises REPLACES the user's exercises in that workout: send every exercise to keep, each with entryId (from get_workout) to keep it, and each set with setId to keep it; an exercise or set without an id is added, and one you leave out is removed. Sets someone else logged in the same workout are never touched. Tell the user what will change and get their OK first. The whole workout is replaced: if the user edits it on their phone later, their version wins. Returns the workout before and after. Idempotent on clientRequestId. Writes data.

remove_workout changes data

Remove a workout · needs workouts:write

Removes one of the user's workouts from every device. This deletes training history: tell the user exactly which workout (date and exercises) will go and get their clear OK first, every time. The user can undo it for 30 days in GymLog (Settings > Connected apps). A workout that also holds sets the user logged for someone else can only be removed in the app (not_editable). Already removed returns duplicate. Idempotent on clientRequestId. Deletes data.

import_workouts changes data

Import past workouts · needs workouts:write

Moves a training history you already hold (for example workouts the user logged with you in chat) into GymLog, up to 50 workouts a call. DRY RUN BY DEFAULT: with dryRun true (the default) nothing is written and you get an importId and a summary to show the user first: how many would be added, duplicates skipped, the date range, which workouts need GymLog Pro, and exercise names GymLog doesn't know (with the closest matches). Fix names with exerciseMap ({"their name": exerciseKey, or "custom" to create the user's own exercise}). Then send the same batches with dryRun false and the same importId to add them. A workout already in GymLog (same date, exercises and sets) is skipped. Free accounts can import workouts dated today and the 30 days before; older ones come back skipped with pro_required. Imported workouts are private, marked as imported by you, never posted to friends, and the user can remove a whole import in one step (remove_import, or Settings > Connected apps in the app). Limits: 3,000 workouts an import, 2 new imports a day. Writes data when dryRun is false.

remove_import changes data

Remove an import · needs workouts:write

Removes every workout of one import you made (import_workouts) from every device, in one step. Workouts the user changed since are kept. Tell the user how many workouts will go and get their clear OK first. Already removed returns duplicate. Idempotent on clientRequestId. Deletes data.

request_account_deletion changes data

Request account deletion · needs training:read

Starts deleting the user's whole GymLog account: GymLog emails the account's own address a link to a GymLog page that shows what will be deleted, with one Delete account button. THIS TOOL DELETES NOTHING; only the user can, from that email. Deleting is permanent: their account and profile, workouts, templates and plans, custom exercises, equipment and settings, every connected assistant (this connection too) and their sign-in in the app and on the website. Before calling, tell the user that and get their explicit OK. At most one link a minute, 3 a day.

No arguments.

Privacy policy