@trainheroic-unofficial/athlete-mcp
Local single-user MCP server for a TrainHeroic athlete. No database, no Cloudflare deps.
Versions
No versions found.
Tools 86
foo boom bar gated programming_sync Populate the programming history warehouse: pull prescribed programs
programming_stored Query the prescribed-programming history warehouse (populate it with programming_sync first).
messaging_sync Populate the messaging history warehouse: pull chat streams + comments into D1,
message_delete Soft-delete a chat message on the live account. Requires confirmation.
messaging_stored Query the conversation history warehouse (populate it with messaging_sync first). Give
athlete_workouts_sync Populate the workouts warehouse: pull workouts in a YYYY-MM-DD window into D1 (each
athlete_workouts_stored Query the workouts warehouse (populate it with athlete_workouts_sync first). Give
athlete_training_sync Populate the training warehouse: the exercise catalog, working maxes, and per-exercise
athlete_training_stored Query the training warehouse (populate it with athlete_training_sync first).
workout_build Build an UNPUBLISHED session from a spec (program -> session -> blocks -> exercises).
workout_read Read-back a session by programId, date (YYYY-M-D), and programWorkout id.
workout_publish Publish a built session — ATHLETE-FACING and immediate. Requires confirmation
session_remove Delete a session from the live calendar (also the way to replace a date: remove then
session_unpublish Unpublish a previously published session (POST .../programWorkout/unPublish/{pwId}). It
session_copy Copy/repeat a session to a target date on a program (POST .../copyProgramWorkout).
session_save_as_template Save an existing session as a reusable template in the session library
session_template_create Create an empty reusable session template in the library (POST /v5/sessions/template).
session_template_delete Delete a library session template (DELETE /v5/sessions/template/{id}). Requires
analytics_query athlete_whoami The logged-in account's identity (id, name, roles) from /user/simple.
athlete_profile Lifetime training totals in one call — all-time session count (summary.sessions_count),
athlete_prefs Notification and display preference flags for the athlete account.
athlete_working_maxes The athlete's working max per exercise (drives % prescriptions). An entry can carry a
athlete_leaderboard Leaderboard for a benchmark/test workout by its workout id.
athlete_workouts The all-time PR board for an exercise (reps/weight per rep-max, strength-standard
athlete_exercises The all-time PR board for an exercise (reps/weight per rep-max, strength-standard
athlete_exercise_history The all-time PR board for an exercise (reps/weight per rep-max, strength-standard
athlete_personal_records The all-time PR board for an exercise (reps/weight per rep-max, strength-standard
athlete_exercise_stats A point-in-time snapshot for an exercise: last performance and PR as of a date
athlete_log_targets Create a new personal workout session for a given YYYY-MM-DD date on the athlete's
athlete_session_create Create a new personal workout session for a given YYYY-MM-DD date on the athlete's
athlete_session_add_exercises Add one or more exercises to a personal workout session. Get workoutId from
athlete_session_remove Delete a personal (self-created) workout session from your calendar — use it to clean up a
athlete_log_session Athlete-facing write for logging what you actually did, with NO coach-scheduled workout
athlete_log_set Athlete-facing write: record entered results (reps/weight per set) for a saved workout
athlete_prescribe_set Athlete-facing write: set the planned reps and/or weight for one of your scheduled
athlete_swap_exercise Athlete-facing write: substitute one prescribed exercise in your scheduled workout for a
athlete_circuits Named circuit history for the logged-in athlete (GET /v5/users/circuits/{recent|history}).
athlete_programming_programs Programs the athlete is subscribed to (GET /1.0/athlete/programming/programs).
athlete_recent_exercises Recently used exercises (GET /v5/users/exercises/recent). Distinct from
whoami The authenticated TrainHeroic coach profile (id, org_id, name, roles, trial days).
list_athletes Every athlete on this coach's org roster, across all teams (not scoped to one team; the
list_teams Coach teams. The headcount fields are easy to misread: member_count and athlete_count
get_team Full team object by team id.
list_team_codes Join/access codes for a team.
athlete_lift_history Program detail live from the API, by program id. Works for team calendars and athlete
roster_activity Program detail live from the API, by program id. Works for team calendars and athlete
athlete_training Program detail live from the API, by program id. Works for team calendars and athlete
get_program Program detail live from the API, by program id. Works for team calendars and athlete
team_volume Team-wide training volume (and reps/sessions) scoped to an inclusive YYYY-MM-DD window —
coach_athlete_team_calendar Companion calendar for a roster athlete (GET /v5/calendars/athletes/{id}/coachAthleteTeam).
athlete_main_lift_prs roster_main_lift_prs messaging_conversations List chat streams (id, kind, title) live from the API; no setup needed. Use the id to read/draft/send.
messaging_read Comments in a stream, live from the API. Pass `afterCommentId` to fetch only newer
message_draft Preview the exact payload and target WITHOUT sending. Always safe.
message_send Send a chat message — ATHLETE-FACING and immediate (no draft state on the server).
athlete_invite Add athletes by emailing them a TrainHeroic team invitation — this is how you
athlete_archive Remove one or more athletes from the active roster (PUT /v5/athletes/archive). Their
athlete_restore Restore previously archived athletes to the active roster (PUT /v5/athletes/restore).
athlete_saved_workouts A roster athlete's scheduled/logged workouts in an inclusive YYYY-MM-DD window. This is the
log_athlete_set Coach-facing write: record entered results (reps/weight per set) for one of a roster
coach_log_session Coach-facing write: log results for a roster athlete by exercise on a given day, without
swap_athlete_exercise Coach-facing write: replace one exercise in a roster athlete's scheduled workout with a
prescribe_athlete_set Coach-facing write: set the prescribed reps and/or weight for one of a roster athlete's
program_create Create either an ongoing calendar or a fixed-length standalone program
program_delete Delete a standalone calendar or fixed program (DELETE /v5/programs/{programId}).
exercise_update Update a custom exercise (POST /2.0/coach/exercise/update/{id}) and write it through
exercise_delete Delete a custom exercise on TrainHeroic (DELETE /v5/exercises/{id}) and drop it from
exercise_resolve Map a name to an exercise id via the local mirror. Prefer this over exercise_search when
exercise_search Ranked fuzzy search over exercise titles. Returns candidates with units. Each result's
exercise_get Full exercise object (with units) by id.
exercise_sync Refresh the cached exercise index from TrainHeroic.
exercise_create Create a custom exercise (POST /2.0/coach/exercise/create) and write it through to the
exercise_forget Remove an exercise from the local mirror only. Does not call TrainHeroic — use
store_stats Row counts and sync state for the cached exercise index.
team_create Create a team (POST /1.0/coach/team/createWithTitleAndCode). Also creates the team's
team_update Update a team's title and/or reassign its calendar (PUT /v5/teams/{teamId}).
team_delete Delete a team (DELETE /v5/teams/{teamId}). Removes the team and its calendar from the
team_code_create Create an access code athletes use to self-join a team
team_code_delete Delete a team access code by its id (DELETE /v5/teamCodes/{codeId}). Athletes can no
team_publish_settings Update a team's auto-publish settings (POST /1.0/coach/team/updatePublishSettings).
Permissions 3
env_vars low network medium shell high