Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TRAINHEROIC_EMAILNoTrainHeroic account email. Used together with TRAINHEROIC_PASSWORD to log in and cache the session token; the server re-logs in when it expires.
TRAINHEROIC_PASSWORDNoTrainHeroic account password. Used together with TRAINHEROIC_EMAIL to log in and cache the session token.
TRAINHEROIC_LOG_LEVELNoLog level, e.g. DEBUG logs every API call to stderr.
TRAINHEROIC_CONFIG_DIRNoDirectory that holds the cached token, the exercise library cache and the ids it learned about your calendar. Defaults to ~/.config/trainheroic-mcp.
TRAINHEROIC_SESSION_TOKENNoThe `session-token` header from a logged-in TrainHeroic web session. Alternative to TRAINHEROIC_EMAIL + TRAINHEROIC_PASSWORD.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_profileC

The athlete's id, name and the coach teams they belong to.

get_workout_historyA

Sessions scheduled between two dates (YYYY-MM-DD, inclusive), oldest first.

Defaults to the last days_back days. Future dates work too, which is how to review a planned block. Each row has the ids needed by the other tools.

get_workoutC

One session: title, notes, blocks, exercises with prescription, results and video.

team_id is optional; the right team is found automatically.

get_set_exerciseC

Per-set prescribed and logged values for one exercise of a session.

search_exercisesA

Find exercises in the TrainHeroic library by name (all words must match).

Returns id, title, what the exercise tracks (e.g. "Reps @ Weight (lb)") and the video link. The library is cached for 24h; pass refresh=True to reload.

get_exerciseB

Full library entry for one exercise: technique notes, video, tracked params.

search_circuitsB

Find circuits (predefined exercise groups) in the library by name.

get_recent_exercisesC

Exercises the athlete used recently.

get_recent_circuitsC

Circuits the athlete used recently.

get_exercise_statsC

Last performance, personal record and working max for an exercise.

get_personal_recordsC

Personal records for an exercise by rep count.

get_working_maxD

Current working max for an exercise.

get_workout_surveysB

Readiness answers (sleep, mood, energy, stress, soreness) for saved workouts.

Scores run from 1 (worst) to 5 (best).

submit_surveyB

Answer one readiness question for a saved workout; score 1 (worst) to 5 (best).

get_workout_commentsC

Comment thread of a session (coach and athlete messages).

get_workout_leaderboardC

Team leaderboard for a session.

save_workout_feedbackB

Save the athlete's session notes, RPE (1-10) and rating.

This does not log per-set results or mark the session completed; that is done in the TrainHeroic app.

create_sessionC

Create an empty personal session on a date (YYYY-MM-DD).

add_exercisesB

Append library exercises to a personal session, each in its own block.

Returns the ids needed by set_prescription and update_block.

set_prescriptionA

Set sets and per-set targets for one exercise of a session you own.

Each target is one value for all sets or a list with one value per set, e.g. sets=4, reps=8, weight_kg=[30, 35, 40, 40]. Targets and the set count you leave out keep their planned values, so weight_kg=42.5 alone only changes weights. Reps are whole numbers; write "per side" or tempo cues in instruction. Only targets the exercise tracks are accepted (see tracks in get_workout).

update_sessionC

Rename a session and/or set its notes. Omitted fields stay unchanged.

update_blockC

Rename a block and/or set its instruction (e.g. warm-up circuit, rest times).

delete_sessionC

Delete a session from the calendar.

add_to_blockB

Append library exercises to an existing block, turning it into a superset.

Set their targets afterwards with set_prescription.

create_workoutA

Create a complete personal session in one call.

Exercises go into blocks in the given order, each with its prescription and cue. Exercises sharing a superset label are placed together in one block. If any step fails the half-built session is deleted.

remove_exerciseB

Remove one exercise from a session; a block left empty is removed too.

remove_blockC

Remove a whole block (all its exercises) from a session.

copy_workoutB

Copy a session's plan to another date on your personal calendar.

Blocks, supersets, sets/reps/weights, cues and notes are copied; logged results are not. Works for coach sessions too, as long as they are visible. For personal sessions the app writes values typed while logging back into the plan, so a logged personal session copies those values (the result says so).

move_workoutA

Reschedule a personal session that has no logged results yet.

TrainHeroic offers no reschedule call for personal calendars, so the session is copied to to_date and the original deleted: its ids change.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.8/5.0

Scored across 29 tools

Disambiguation4/5

Most tools target distinct resource/action pairs, and descriptions clarify granular session editing such as create_session vs create_workout, add_exercises vs add_to_block, and copy_workout vs move_workout. Some exercise-stat tools (get_exercise_stats, get_personal_records, get_working_max) and session variants still require careful selection, so the set is not perfectly unambiguous.

Naming Consistency5/5

Almost all tools use predictable snake_case verb_noun names, e.g. create_session, update_block, get_workout_comments. add_to_block is a minor prepositional variant but remains readable and consistent with the overall convention.

Tool Count2/5

At 29 tools, the set is heavy and exceeds the typical well-scoped range; several granular session-editing and exercise-stat retrieval tools feel like they could be consolidated. The domain is broad enough to justify many operations, but the count is still above what the surface needs.

Completeness4/5

The core lifecycle is covered: sessions, blocks, exercises, prescriptions, copying/moving, library search, history, stats, surveys, comments, and feedback. Minor gaps remain, such as no posting comments and no per-set result logging, though the latter is explicitly app-only.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues