MCP server for Fitbod - read training history, program routines, configure the generator
Server has 13 tools with mostly complete schemas and descriptions. Naming follows verb_noun convention (gym_profile, find_exercises, list_equipment). Descriptions are present and reasonably detailed (avg ~120 chars), exceeding the 10-char minimum. However, several tools lack parameter descriptions (gym_profile, muscle_groups, coach_sessions, coach_new_session, api_surface have empty input objects with no descriptions). Output schemas are not documented, LLMs cannot predict response structure. Error handling is absent from descriptions. Some parameter names are ambiguous (e.g., 'name_or_id' in exercise_detail conflates two types). No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications in metadata.
The known Fitbod endpoint surface, for exploration via raw_get.
Ask Fitbod's AI coach a question and return its reply. Creates a session if none is given. The coach has its own tools over your Fitbod data (e.g. get_workout_history), so it can answer about your actual training - this returns both its reply and what it looked up.
Persistent memories the coach holds about you.
Start a new AI-coach session. Sessions cannot be deleted (405).
Token usage for one coach session.
List your AI-coach chat sessions.
Five tools (gym_profile, muscle_groups, api_surface, coach_sessions, coach_new_session, coach_memories) have empty input schemas with no parameter descriptions.
No output schemas documented for any tool. LLMs cannot predict response structure, field names, or types. This prevents downstream tool chaining and forces agents to guess at response format.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Full detail: instructions, equipment, muscles, mechanics, ratings.
Search the 1,410-exercise corpus, by default restricted to your gym.
Your recorded gym inventory, mapped to Fitbod equipment types.
Fitbod's 78 equipment types, with available weights where modelled.
Muscle groups used for volume attribution.
Escape hatch: GET any /api/... path, read-only.
Fitbod's own starting-load prediction for someone of your dimensions. Useful for seeding `theoretical_max` when there is no training history - which is exactly the situation returning after a layoff.
Parameter 'name_or_id' in exercise_detail conflates two types (name string vs numeric ID).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite metadata clearly marking tools as READ_ONLY or WRITE. Annotations enable LLMs to reason about safety and retry semantics.
Error handling absent from tool descriptions. No guidance on retryability, user-fixable errors, or recovery steps. E.g., 'raw_get' could fail with 404 or auth errors but provides no recovery hint.