TrainRec
Server Details
Your AI assistant logs your meals and workouts, then plans your week from what you did.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- TrainREC
TDQS
Scored across 34 tools
Most tools have clearly distinct resource+action targets, and the detailed descriptions carefully separate near-neighbors like plan_workout (future) vs save_workout (past), save_routine vs save_workout, and log_food vs edit_food. The main overlap is between import_file (Strong/Hevy CSV) and the generic import_workouts/import_food/import_measurements tools, which could be confused since both ingest external data, but the format distinction is stated.
All names share the trainrec_ prefix and snake_case, and most follow a verb_noun pattern (log_food, delete_workout, set_reminder, undo_import). The deviation is that several read-only tools use bare nouns (measurements, reminders, settings, overview, food_day, recent_changes) instead of list_/get_, creating a minor inconsistency with list_exercises/get_workout.
At 34 tools this is on the heavy side, but the server spans a genuinely broad multi-domain scope (food, workouts, routines, measurements, reminders, imports, settings, support, undo), so each tool roughly earns its place. It is borderline-heavy rather than bloated, but the sheer count makes discovery harder.
Coverage is strong: full lifecycle for food, workouts, routines, measurements, and reminders plus imports, undo, targets, settings, and issue reporting. Minor gaps remain, such as no way to delete a custom exercise (only add) and no edit_measurement operation (only log/delete), but these are workable around.
Available Tools
34 toolstrainrec_add_exerciseAdd a custom exerciseBInspect
Makes a custom exercise with a name, kind and muscles. equipment: "plate" for a plate-loaded machine or "smith" for a Smith machine gives it a sled or bar its base weight is counted from (change_settings baseWeight).
Inputs: kind (required), name (required), muscles, equipment.
trainrec_change_settingsChange settingsBInspect
Changes settings. unit: lb or kg. foodShows: the full list of extra nutrients shown, in order, replacing the old one ([] shows only the macros). exerciseCalories: none, half or all of each day's bonus calories (active calories beyond a usual day, or workout calories when there is no daily count) added to the calorie target. weightGoal: a body weight in goalUnit (or theirs), or 0 to clear it; progress counts from their current trend. baseWeight: what a plate-loaded or Smith machine's sled or bar weighs empty, for one exercise (0 when not counted), or a barbell exercise's bar when it is not the standard 45 lb / 20 kg (an EZ or trap bar); it does not change sets already logged. birthYear: the year they were born, used only to estimate their maximum heart rate for heart rate zones. The change shows in the app with Undo.
Inputs: unit, goalUnit, birthYear, foodShows, +3 more.
trainrec_delete_foodDelete a food entryADestructiveInspect
Removes one food entry, given its id and version. The person can undo it in the app.
Inputs: id (required), version (required).
trainrec_delete_measurementDelete a measurementBDestructiveInspect
Removes one reading, given its id and version. The person can undo it in the app.
Inputs: id (required), version (required).
trainrec_delete_reminderDelete a reminderADestructiveInspect
Removes one reminder, given its id and version. To stop it for a while instead, set_reminder with on false. The person can undo it in the app.
Inputs: id (required), version (required).
trainrec_delete_routineDelete a routineADestructiveInspect
Removes one routine, given its id and version. Workouts already done from it stay. The person can undo it in the app.
Inputs: id (required), version (required).
trainrec_delete_workoutDelete a workoutCDestructiveInspect
Removes one workout, given its id and version. The person can undo it in the app.
Inputs: id (required), version (required), summary.
trainrec_edit_foodEdit a food entryAInspect
Changes fields of one food entry, given its id and version. Fields left out stay as they are; perServing is replaced whole. planned: false marks a planned food eaten, with servings or perServing in the same call as what was actually had.
Inputs: id (required), version (required), day, meal, +6 more.
trainrec_exercise_historyExercise historyARead-onlyInspect
One exercise over time: personal records (heaviest, best estimated one-rep max, most reps, best session volume) and every session that included it, oldest first. Warm-ups and sets not done are excluded. pace is a straight line through the last 12 weeks of session estimated one-rep maxes (from weights and reps only), with where that line is in 4, 8 and 12 weeks; with target, also the day the line reaches it. pace is a projection at the current rate.
Inputs: exerciseId (required), unit, limit, target.
trainrec_find_issuesFind known issuesARead-onlyInspect
Bugs and ideas already sent to the TrainRec team that look like what the person describes, best match first, with whether each is fixed. Call this before report_issue: if one matches, add to it rather than sending a new one. Read-only.
Inputs: query (required).
trainrec_food_dayFood for a dayARead-onlyInspect
Everything eaten on one day, each entry with its id and version, totals by meal and for the day, and what is left of the targets.
Inputs: day.
trainrec_get_routineGet a routineBRead-onlyInspect
One routine with every set, in the person's unit, and its version.
Inputs: id (required), unit.
trainrec_get_workoutGet a workoutCRead-onlyInspect
One workout with every set, in the person's unit, and its version.
Inputs: id (required), unit.
trainrec_import_fileImport a Strong or Hevy exportAInspect
Imports a CSV exported from Strong (workouts or measurements) or Hevy, as text exactly as the file has it; the server parses it. A large file can be sent in pieces split on whole workouts, each with the header line and the same batch id. Strong exports omit their unit. Workouts already imported are skipped. Only Strong and Hevy formats.
Inputs: text (required), unit, batch, format.
trainrec_import_foodImport food history from another appAInspect
Imports past meals from another nutrition app or file: each entry's day, meal, name, numbers PER SERVING and servings. Up to 200 entries per call; the same batch id on later calls makes one import, undone together. Entries already imported from the same app are skipped.
Inputs: app (required), entries (required), batch.
trainrec_import_measurementsImport measurement historyAInspect
Imports past measurements (weight, body fat, tape, blood pressure, resting heart rate, HRV, sleep, daily calories), each with its time as the source wrote it, kind, value and unit, and origin when the source names one. Up to 1000 per call; the same batch id on later calls makes one import. Readings already recorded are skipped.
Inputs: app (required), items (required), batch.
trainrec_import_workoutsImport workouts from another appAInspect
Imports past workouts from another app or file. Exercises are matched to existing ones by name; unmatched names become custom exercises, listed in the result. Up to 100 workouts per call; the same batch id on later calls makes one import, undone together. Workouts already imported from the same app are skipped.
Inputs: app (required), workouts (required), unit, batch.
trainrec_list_exercisesList exercisesARead-onlyInspect
Exercise ids, names and kinds, built-in and custom, optionally filtered by words in the name. The kind decides which set fields apply.
Inputs: query.
trainrec_list_workoutsList workoutsARead-onlyInspect
Workouts between two dates, newest first, with each exercise and how many of its sets were done. Sets themselves are not included.
Inputs: to, from, limit.
trainrec_log_foodLog foodAInspect
Adds one or more food entries, each with its numbers PER SERVING and the number of servings. perServing takes the macros and any label nutrient (sodiumMg, potassiumMg and the rest); a nutrient left out counts as unknown, not zero. A glass of plain water is an entry named "Water" with kcal and macros 0 and waterMl. Each entry is its own change, with Undo. When the person asks to note a food without numbers ("just note it"), leave perServing out: it shows as numbers not added yet, until edit_food gives it perServing. planned: true puts a meal on a day ahead (or later today) without counting it in any total until it is eaten (edit_food planned: false).
Inputs: entries (required), summary.
trainrec_log_measurementLog a measurementAInspect
Records one measurement: weight, body fat, a tape measurement, blood pressure, resting heart rate, HRV or sleep, in the unit given (lb, kg, %, in, cm, bpm, ms, mmHg, min). Blood pressure takes systolic as value and diastolic as value2.
Inputs: kind (required), value (required), at, unit, +1 more.
trainrec_measurementsBody measurements over timeARead-onlyInspect
Body measurements over time, one kind at a time, one value per day (the last reading of the day), in the person's units, newest last: weight, body fat, tape measurements, calories eaten per day, resting heart rate, HRV, blood pressure and sleep, and from Oura readiness, sleep score, temperature change and minutes stressed and restored. Without kind, the latest reading of every kind recorded. Each value has its id and version.
Inputs: to, from, kind, limit.
trainrec_overviewOverviewARead-onlyInspect
Today's date and weight unit for this person, today's food against their targets, their last few workouts, their routines, notes they left, and what they changed in the app since the assistant's last change (sets done differently from a plan show the planned values beside them). Each planned workout says whether it is reviewed: the app shows "Reviewed by" if the assistant wrote the plan after the person's latest workout. suggestedNext is the app's own pick from their rotation when nothing is planned today. Read-only.
Inputs: no named parameters.
trainrec_plan_workoutPlan a workout to followAInspect
Plans a workout for the person to do: saves it in TrainRec, where their phone and watch walk them through it one set at a time, with each set's target (weight and reps, time or distance) and the rest after it. Every set starts as not yet done. Given an id and version, it changes an existing plan, even during the workout: sets already done are kept, and the phone and watch show the change within seconds. A workout that already happened is recorded with save_workout.
Inputs: name (required), exercises (required), id, day, +5 more.
trainrec_recent_changesRecent changesBRead-onlyInspect
The latest changes to this log, newest first, with who made each one and its seq number.
Inputs: limit.
trainrec_remindersList remindersARead-onlyInspect
The person's reminders (notifications on their phone): what each says, when, whether it is on, and who set it up. Read-only.
Inputs: no named parameters.
trainrec_report_issueReport a bug or ideaAInspect
Send a bug or an idea to the TrainRec team, only after the person agrees to. Call find_issues first: if an issue matches, pass its issueId with what this person adds; otherwise pass kind, title and details for a new one. Say what happened and where in the app, never anything about their health beyond what the bug needs.
Inputs: details (required), kind, title, issueId.
trainrec_save_routineSave a routineAInspect
Creates a routine (a reusable workout plan the person starts from the app), or replaces one given its id and version. Same shape as a workout, without a day.
Inputs: name (required), exercises (required), id, unit, +3 more.
trainrec_save_workoutSave a workoutAInspect
Logs a new workout, or replaces an existing one given its id and version: the whole workout as it should now be, so anything left out is removed. Sets default to done; planned sets for a later day have done: false. The change shows in the person's app with Undo.
Inputs: name (required), exercises (required), id, day, +7 more.
trainrec_set_reminderSet a reminderAInspect
Reminders are TrainRec's notifications on the person's phone. They start at zero: none exist until the person asks their assistant (you) to set one up, so when they ask to be reminded of something, this is how. Adds a reminder, or changes one (give its id and version). Kinds: weigh_in, log_food (optionally one meal), workout (names today's planned workout if there is one) and streak (training weeks in a row, sent only if this week has no workout yet) go at a local time, and each is skipped that day once it is done. goal goes when a daily number is approaching or has reached its target (calories, a macro, or a nutrient with a target), not between 22:00 and 07:00. custom says the person's own words at a time. recap sends the day's calories and protein against their targets and its workout, at a time, every day it is on. Every reminder needs its trigger from the person: a time (their local time, 24-hour HH:MM) for timed kinds, or the amount left for an approaching goal alert. If they didn't say one, or said only "before 9 am", ask them what time; never choose it yourself. At most 20 reminders and 6 notifications a day. It shows in the app under the assistant's name, with Undo.
Inputs: kind (required), at, id, on, +6 more.
trainrec_set_targetsSet daily targetsAInspect
Sets the daily calorie and macro targets, and optionally a target for any other nutrient (the keys in overview.foodNutrients): a ceiling for the ones to limit, such as sodiumMg, cholesterolMg, sugarG, saturatedFatG or caffeineMg, and an amount to reach for the rest, such as potassiumMg, fiberG or calciumMg. nutrients left out keeps the ones already set; {} clears them.
Inputs: fatG (required), kcal (required), carbsG (required), proteinG (required), +1 more.
trainrec_settingsSettingsARead-onlyInspect
The person's settings: weight unit, which nutrients beyond the macros show on their Food and Today screens, how much of a day's workout calories is added to their calorie target, their weight goal, and what the sled or bar of a plate-loaded or Smith machine weighs empty (baseWeights; a set's weight is the total, so plates loaded = weight - base). Also lists what only the person can change on the phone. Read-only.
Inputs: no named parameters.
trainrec_undo_changeUndo a changeADestructiveInspect
Puts a record back the way it was before one change, given the change's seq. Refused if the record has been changed again since.
Inputs: seq (required).
trainrec_undo_importUndo an importADestructiveInspect
Removes everything one import added, given its batch id. All or nothing: refused if any of it has been edited since.
Inputs: batch (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Bring-your-own-AI fitness coach: your AI logs and reads your food, lifting, runs, sleep and weight.
Your training, sleep, recovery and fuel for the AI you use: it reads your week and plans the next.
Log workouts and meals by telling your AI. 873 exercises, muscle diagrams, food lookup.
Calorie and macro diary your AI fills in: log meals from text or photos, refine later, track goals.
Related MCP Servers
- AlicenseAqualityFmaintenanceLets users log workouts and meals conversationally, with nutrition data, streak tracking, and generated shareable cards.151MIT
- AlicenseNot gradedqualityCmaintenanceEnables an AI assistant to log what you ate, drank, or did, storing it privately in your own Cloudflare account and doing the nutrition math via the USDA food database. Supports GitHub sign-in with an allowlist so only chosen users can connect.11 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables conversational logging and retrieval of workouts, sets, weigh-ins, meals, goals, plans, and progress photos through MCP-capable AI clients, with authenticated per-user storage and export/query capabilities.ISC
- AlicenseNot gradedqualityDmaintenanceA comprehensive AI-powered fitness tracking application that enables AI tools to interact intelligently with user fitness data, providing personalized workout plans, nutrition tracking, and progress analysis through natural language.15MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.