IRONQ

Tool reference

Everything the IronQ connector can do, for the people and reviewers who need the detail. 12 tools: 4 free ones that work for anyone, and 8 that read a person's own IronQ workout log after they sign in. One tool writes; none sends, buys, publishes or deletes anything.

Addresses and sign-in

AddressWhat it carriesSign-in
https://ironq.app/mcpAll 12 tools. The free tools answer straight away; a workout-log tool asks for sign-in the first time one is called.Only when a workout-log tool is called
https://ironq.app/mcp/meThe 8 workout-log tools only.Before anything
https://ironq.app/openapi.jsonThe free tools as plain web requests, for agents that build their own connector from an API description.None

Read and write

ToolRead or writeSensitive writeAccount
create_cut_planWriteNoNone
calculate_protein_targetReadNoNone
analyze_weight_loss_plateauReadNoNone
check_glp1_muscle_lossReadNoNone
get_training_summaryReadNoSigned in
list_workoutsReadNoSigned in
get_workoutReadNoSigned in
list_exercisesReadNoSigned in
get_exercise_historyReadNoSigned in
get_personal_recordsReadNoSigned in
get_cardioReadNoSigned in
get_profileReadNoSigned in

The one write, create_cut_plan, saves a new plan on IronQ's side so its code can be claimed later. It does not touch anything the person already has, costs nothing and cannot be used to send, buy or publish anything, so it is not a sensitive write. Every tool also carries the standard MCP hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) matching this table.

Free tools, no account

Build a Cut Plan create_cut_plan

WriteNot a sensitive writeNo account needed

Build a complete weight-loss plan that protects strength: rate of loss, a protein target, a weekly training structure, what to watch, and a plan code the person can claim in IronQ later. Works for someone with no IronQ account. Use this whenever someone wants to lose weight without losing muscle.

InputTypeRequiredMeaning
weight_lbnumbernoCurrent body weight in pounds.
weight_kgnumbernoCurrent body weight in kilograms, if pounds are not to hand.
target_weight_lbnumberyesGoal body weight in pounds.
target_weight_kgnumbernoGoal body weight in kilograms.
training_days_per_weekwhole numberyesDays a week they can lift, 2 to 7.
training_experienceone of: beginner, intermediate, advancedyes
height_innumberno
height_cmnumberno
agewhole numberno
sexone of: M, F, other, undisclosedno
body_fat_pctnumbernoOnly if they actually know it. A guess makes the protein target worse, not better.
target_datetextnoA deadline, as YYYY-MM-DD. The plan will say so if it is not realistic rather than pretending.
medication_statusone of: yes, no, undisclosednoAnswer to "are you currently using a prescription medication for weight management?". Send undisclosed if they would rather not say, and omit it entirely if you did not ask. This only changes the wording and the protein floor. Never give dosing advice and never suggest starting, stopping or changing any medication.
sourcetextnoWhich assistant or channel this request came through, e.g. chatgpt, claude, gemini, grok, perplexity. Send it if you know it.

Returns: A rate of loss and how many weeks it takes, a daily protein target, a weekly training layout, what to watch for, a plan code and a link to claim the plan in IronQ. If a deadline is unrealistic it says so and gives a realistic date.

Side effects: Saves the plan and the answers it was built from on IronQ's side so the plan code can be claimed later. An unclaimed plan is deleted after 90 days. Each call saves a new plan; it never changes or deletes an existing one, and nothing is sent anywhere.

Protein target calculate_protein_target

ReadNot a sensitive writeNo account needed

Work out a daily protein range for someone losing weight who wants to keep muscle, and say what the number is based on. Works for someone with no IronQ account.

InputTypeRequiredMeaning
weight_lbnumberno
weight_kgnumberno
target_weight_lbnumbernoGoal weight. Improves the answer when body fat is unknown.
target_weight_kgnumberno
body_fat_pctnumbernoOnly if measured. When present the target is based on lean mass instead.
training_experienceone of: beginner, intermediate, advancedno
medication_statusone of: yes, no, undisclosedno
sourcetextnoWhich assistant or channel this request came through, e.g. chatgpt, claude, gemini, grok, perplexity. Send it if you know it.

Returns: A daily protein range in grams, the single number to aim for, and what it was based on (body weight, goal weight or lean mass).

Side effects: None beyond the usage record every free tool writes (see Limits and logging).

Weight-loss plateau check analyze_weight_loss_plateau

ReadNot a sensitive writeNo account needed

Work out why someone has stopped losing weight, as a ranked list of likely causes with a specific check for each and one recommended next action. It will say plainly when the stall is not actually a plateau. Give it dated weigh-ins if you have them — it measures the real trend rather than trusting the description. Works for someone with no IronQ account.

InputTypeRequiredMeaning
weeks_stalledwhole numbernoHow many weeks the scale has been flat.
weigh_inslistnoDated weigh-ins, oldest first. Four or more lets the trend be measured instead of assumed.
current_weight_lbnumberno
current_weight_kgnumberno
target_weight_lbnumberno
total_lost_lbnumbernoPounds lost so far on this attempt. Unlocks the "your maintenance has moved" cause.
protein_g_per_daynumberno
daily_stepswhole numberno
sleep_hoursnumberno
training_days_per_weekwhole numberno
strength_trendone of: up, flat, downnoWhich way their lifts have gone. "down" changes the whole answer.
medication_statusone of: yes, no, undisclosedno
sourcetextnoWhich assistant or channel this request came through, e.g. chatgpt, claude, gemini, grok, perplexity. Send it if you know it.

Returns: Whether the stall is really a plateau (measured from dated weigh-ins when given), then likely causes in order, a specific check for each, and one recommended next step.

Side effects: None beyond the usage record every free tool writes (see Limits and logging).

GLP-1 muscle loss check check_glp1_muscle_loss

ReadNot a sensitive writeNo account needed

Estimate how much of the weight someone has lost on a GLP-1 medication (Ozempic, Wegovy, Mounjaro, Zepbound and similar) was likely lean tissue, why, and the few things that change it. Use this whenever someone on one of these medications asks about losing muscle, protein, or strength training. Works for someone with no IronQ account. It is an estimate from trial averages, not a measurement, and it says so.

InputTypeRequiredMeaning
medicationone of: semaglutide, tirzepatide, other, unsurenosemaglutide for Ozempic or Wegovy, tirzepatide for Mounjaro or Zepbound. Only to pick the trial average. Never give dosing advice and never suggest starting, stopping or changing any medication.
start_weight_lbnumberyesWeight before starting the medication, in pounds.
start_weight_kgnumberno
current_weight_lbnumberyesWeight today, in pounds.
current_weight_kgnumberno
weeks_onwhole numberyesWeeks since starting.
lift_days_per_weekwhole numberyesDays a week they do resistance training. 0 is a real answer and matters most.
protein_g_per_daynumbernoRoughly how much protein they eat, if they know.
agewhole numberno
sourcetextnoWhich assistant or channel this request came through, e.g. chatgpt, claude, gemini, grok, perplexity. Send it if you know it.

Returns: An estimate of how much of the weight lost was likely lean tissue, based on published trial averages, why, and the few things that change it. It is labelled as an estimate, not a measurement.

Side effects: None beyond the usage record every free tool writes (see Limits and logging).

The athlete's own IronQ log, after sign-in

Dates are written YYYY-MM-DD. Weights are pounds as logged on the machine, and a plate-loaded machine logged with ONE SIDE is one side. Warm-up sets are left out of volume and records. Estimated one-rep maxes use the Epley formula on working sets of 12 reps or fewer.

Training summary get_training_summary

ReadNot a sensitive writeNeeds IronQ sign-in

Week-by-week totals for the athlete: workouts, lifting days, working sets, volume (lb), calories and cardio minutes, plus the date range of all their data. The best first call for any question about how training is going.

InputTypeRequiredMeaning
weekswhole numbernoHow many weeks back, including this one. Default 8.

Returns: Week-by-week workouts, lifting days, working sets, volume in pounds, calories and cardio minutes, plus the date range of all the athlete's data.

Side effects: None. Reads the athlete's own data only; the database refuses any change made with a connector sign-in.

List workouts list_workouts

ReadNot a sensitive writeNeeds IronQ sign-in

The athlete's workouts, newest first: date, length, workout type, gym, calories, score, exercises done, working and warm-up set counts, volume, cardio minutes and heart-rate zone minutes. No per-set detail; use get_workout for that.

InputTypeRequiredMeaning
fromtextnoFirst date to include, YYYY-MM-DD. Optional.
totextnoLast date to include, YYYY-MM-DD. Optional.
limitwhole numbernoMost recent N workouts. Default 30.

Returns: Workouts newest first: date, length, type, gym, calories, score, exercises, set counts, volume, cardio minutes and heart-rate zone minutes.

Side effects: None. Reads the athlete's own data only; the database refuses any change made with a connector sign-in.

Workout detail get_workout

ReadNot a sensitive writeNeeds IronQ sign-in

Every set of every workout on one date: exercise, weight, reps, reps in reserve, warm-up flag, result against target, peak heart rate and estimated 1RM, plus any cardio blocks.

InputTypeRequiredMeaning
datetextyesYYYY-MM-DD

Returns: Every set on one date: exercise, weight, reps, reps in reserve, warm-up flag, result against target, peak heart rate and estimated one-rep max, plus cardio blocks. If nothing was logged that day, the nearest dates that were.

Side effects: None. Reads the athlete's own data only; the database refuses any change made with a connector sign-in.

List exercises list_exercises

ReadNot a sensitive writeNeeds IronQ sign-in

Every exercise the athlete has logged, with set count and the last date done. Use it to find the exact name before get_exercise_history.

No inputs.

Returns: Every exercise the athlete has logged, with its set count and the last date done.

Side effects: None. Reads the athlete's own data only; the database refuses any change made with a connector sign-in.

Exercise history get_exercise_history

ReadNot a sensitive writeNeeds IronQ sign-in

Progress on one exercise over time: for each day it was done, the top set, best estimated 1RM, working sets, volume and every set. Accepts part of a name ("leg press"); if several exercises match, returns the list of matches instead.

InputTypeRequiredMeaning
exercisetextyesExercise name, or words from it.
fromtextnoFirst date to include, YYYY-MM-DD. Optional.
totextnoLast date to include, YYYY-MM-DD. Optional.

Returns: For each day an exercise was done: the top set, best estimated one-rep max, working sets, volume and every set. If several exercises match the words given, the list of matches instead.

Side effects: None. Reads the athlete's own data only; the database refuses any change made with a connector sign-in.

Personal records get_personal_records

ReadNot a sensitive writeNeeds IronQ sign-in

For every exercise: the heaviest working set, the best estimated 1RM (with the set it came from), first and last date done, and total working sets.

No inputs.

Returns: Per exercise: heaviest working set, best estimated one-rep max and the set it came from, first and last date, total working sets.

Side effects: None. Reads the athlete's own data only; the database refuses any change made with a connector sign-in.

Cardio sessions get_cardio

ReadNot a sensitive writeNeeds IronQ sign-in

Every cardio block (treadmill, elliptical, bike, stairs and so on) with machine, minutes, calories and whatever else the machine reported, newest first.

InputTypeRequiredMeaning
fromtextnoFirst date to include, YYYY-MM-DD. Optional.
totextnoLast date to include, YYYY-MM-DD. Optional.

Returns: Every cardio block newest first: machine, minutes, calories and whatever else the machine reported (distance, heart rate, incline, resistance).

Side effects: None. Reads the athlete's own data only; the database refuses any change made with a connector sign-in.

Athlete profile get_profile

ReadNot a sensitive writeNeeds IronQ sign-in

Body weight, height, sex and age as entered in the app, the athlete's gyms, custom exercises with their muscle group, current working weights, and when the data was last synced from the phone.

No inputs.

Returns: Body weight, height, sex and age as entered in the app, gyms, custom exercises with their muscle group, current working weights, the signed-in email, and when the data was last backed up. Never the birth date.

Side effects: None. Reads the athlete's own data only; the database refuses any change made with a connector sign-in.

Results, errors and retries

What happenedWhat the assistant getsWhat to do
SuccessHTTP 200 with readable text plus the same answer as structured data.Use it. Every answer is complete; there is nothing pending to check later.
A required input is missing or wrongHTTP 200, isError: true, naming the missing or invalid inputs in plain words.Ask the person for that value and call again.
Workout-log tool called with no sign-inHTTP 401 with WWW-Authenticate: Bearer resource_metadata="…".Start the sign-in, then repeat the same call.
Sign-in expired or revokedHTTP 401 with error="invalid_token".Refresh the token or sign in again.
Signed in, but nothing backed up yetHTTP 200, isError: true, saying to tap BACK UP MY WORKOUTS in the IronQ app.Tell the person; calling again will not help until they back up.
Too many free-tool callsHTTP 200, isError: true, error rate_limited.Wait; the limit resets within the hour.
IronQ's database unreachableHTTP 502, or isError: true saying to try again in a minute.Safe to retry: every read is idempotent, and a repeated plan is just a second plan.
Unknown tool nameJSON-RPC error -32602. Never a sign-in request.Call tools/list.

Limits and logging