MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Other

TrainRec

Your AI assistant logs your meals and workouts, then plans your week from what you did.

Checks passed
12 / 22

2 failed · 8 not measured

Median response
973 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
34

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked . Not enough checks yet
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
310
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 973 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name trainrec.

  • Pass
    Lists tools

    tools/list returned 34 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 973 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 973 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Fail
    Parameters documented

    83 of 168 parameters have a description (49%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-11-12T04:08:06.87561Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using TrainRec

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http trainrec https://api.trainrec.app/mcp

Capabilities

Tools 34

trainrec_add_exercise

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).

Discovered
trainrec_change_settings

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.

Discovered
trainrec_delete_food

Removes one food entry, given its id and version. The person can undo it in the app.

Discovered
trainrec_delete_measurement

Removes one reading, given its id and version. The person can undo it in the app.

Discovered
trainrec_delete_reminder

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.

Discovered
trainrec_delete_routine

Removes one routine, given its id and version. Workouts already done from it stay. The person can undo it in the app.

Discovered
trainrec_delete_workout

Removes one workout, given its id and version. The person can undo it in the app.

Discovered
trainrec_edit_food

Changes fields of one food entry, given its id and version. Fields left out stay as they are; perServing is replaced whole.

Discovered
trainrec_exercise_history

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.

Discovered
trainrec_find_issues

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.

Discovered
trainrec_food_day

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.

Discovered
trainrec_get_routine

One routine with every set, in the person's unit, and its version.

Discovered
trainrec_get_workout

One workout with every set, in the person's unit, and its version.

Discovered
trainrec_import_file

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.

Discovered
trainrec_import_food

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.

Discovered
trainrec_import_measurements

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.

Discovered
trainrec_import_workouts

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.

Discovered
trainrec_list_exercises

Exercise ids, names and kinds, built-in and custom, optionally filtered by words in the name. The kind decides which set fields apply.

Discovered
trainrec_list_workouts

Workouts between two dates, newest first, with each exercise and how many of its sets were done. Sets themselves are not included.

Discovered
trainrec_log_food

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.

Discovered
trainrec_log_measurement

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.

Discovered
trainrec_measurements

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.

Discovered
trainrec_overview

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.

Discovered
trainrec_plan_workout

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.

Discovered
trainrec_recent_changes

The latest changes to this log, newest first, with who made each one and its seq number.

Discovered
trainrec_reminders

The person's reminders (notifications on their phone): what each says, when, whether it is on, and who set it up. Read-only.

Discovered
trainrec_report_issue

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.

Discovered
trainrec_save_routine

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.

Discovered
trainrec_save_workout

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.

Discovered
trainrec_set_reminder

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.

Discovered
trainrec_set_targets

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.

Discovered
trainrec_settings

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.

Discovered
trainrec_undo_change

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.

Discovered
trainrec_undo_import

Removes everything one import added, given its batch id. All or nothing: refused if any of it has been edited since.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 90 days.
CheckedResultResponseTools
Connected973 ms34