Plan My Workout
Server Details
A workout plan for your goal, level, days and equipment, and how to do any exercise.
- Status
- Healthy
- Uptime
- 100.0% over 37 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- GoodTurnStudio/goodturn-mcp
- GitHub Stars
- 0
- Server Listing
- goodturn-mcp
TDQS
Scored across 3 tools
get_exercise retrieves a single named movement's details while list_exercises filters many by muscle/equipment, and the descriptions make this boundary fairly clear. There is mild overlap for queries like 'how do I do X' vs 'chest exercises', but the intent separation is workable.
All three tools follow a clean verb_noun pattern: get_exercise, get_workout_plan, list_exercises. The consistent use of get_ for retrieval and list_ for enumeration is predictable.
Three tools is on the lean side for a fitness service but each maps to a distinct user intent (single move, filtered list, full plan). Not overly broad, though a bit thin.
Core lifecycle is covered: look up an exercise, find exercises for a muscle/equipment, and generate weekly plans including running programs. Missing nice-to-haves like exercise substitutions, plan modification, or session logging, but the main workflows are reachable.
Available Tools
3 toolsget_exerciseHow to do one exercise, the muscles it works and a pictureARead-onlyIdempotentInspect
How to do one exercise, the muscles it works and a picture. For requests like "how do I do a Romanian deadlift?", "what is a goblet squat?", "what muscles do face pulls work?". Understands everyday names like RDL, press-up and lat pulldown. muscles.main lists the muscles the move mainly works (hand-checked for the main lifts) and muscles.also the ones that help.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The exercise, for example Romanian deadlift or push-up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds genuine context beyond them: query-name normalization (RDL, press-up, lat pulldown) and the meaning of the returned muscles.main/muscles.also fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and appropriately short. Minor waste: the opening sentence duplicates the title verbatim rather than adding information, but the remaining sentences are dense and earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param, read-only, no-output-schema tool, the description is nearly complete: it explains the return fields (muscles.main/also) and input tolerance. Only the absence of sibling routing keeps it from being fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single name parameter, so the baseline is 3. The description adds value beyond the schema by clarifying that colloquial/everyday names are accepted, which tells the agent it need not canonicalize input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (retrieves how-to for ONE exercise) and enumerates the payload (muscles worked, picture), which distinguishes it from sibling list_exercises via the explicit singular scope. It stops short of naming the siblings to route the agent, so it's clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example queries ('how do I do a Romanian deadlift?', 'what muscles do face pulls work?') give concrete trigger conditions for when to call it. There are no explicit exclusions or named alternatives (e.g. when to prefer list_exercises), so it's clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workout_planA weekly workout plan with sets, reps and restARead-onlyIdempotentInspect
A weekly workout plan with sets, reps and rest. For requests like "make me a 3 day beginner gym plan", "home workout with just dumbbells, 30 minutes", "a 5 day muscle building split", "I have a pull-up bar and dumbbells", "a 20 minute workout" (days=1 gives a single session), "a workout plan to lose weight", "couch to 5K" or "a 10K running plan" (a 10K or longer goal gets the build-up plan unless the user says they are a beginner), or "give me another one" (the same inputs with seed plus one). Takes either the fields, or the user's words in q, from which the service reads days, minutes, level, goal and equipment from them. Fields win over q. Running plans also return weeks: every week's sessions (a 9-week walk-run build to 30 minutes of running for beginners; easy, interval, tempo and long runs for intermediates), with week 1 laid out in days.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | The user's request in their own words, for example "3 day beginner gym plan, 45 minutes". | |
| days | No | Days per week, 1 to 6 (1 gives a single session). More than 6 (or "every day") is planned as 6 with a rest day, and the answer says so in say and in plan.days_asked and plan.days_note. Default 3. | |
| goal | No | Goal: strength, muscle, general (default), conditioning (covers fat loss or weight loss requests), running or mobility. | |
| seed | No | 0 to 9999. Change it for a different mix of exercises with the same setup. Default 0. | |
| level | No | Level: beginner (default) or intermediate. Advanced is treated as intermediate. | |
| country | No | Two-letter country code for kit links (US, GB, IE, CA, AU). Defaults to the visitor's country. | |
| minutes | No | Minutes per session including warm-up, 15 to 120. Default 45. | |
| equipment | No | Comma separated: none (default), dumbbells, barbell, gym, bands, kettlebell, pullupbar (a pull-up bar), jumprope. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered, and the description goes beyond it by disclosing precedence rules (fields over q), the seed-increment convention for repeat requests, the days>6 clamping with days_note, and the fact that running plans return week-by-week structures. It does not describe response shape for non-running plans, keeping it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence and every clause in the long second sentence carries routing information, so nothing is wasted. However, the second sentence is an extremely dense run-on that packs a dozen examples and edge rules into one block, which hurts scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 optional parameters, no output schema, and a genuinely complex generator, the description does heavy lifting: it covers input precedence, defaults, clamping behavior, and the structure of the returned plan for running goals. It leaves the non-running return shape (plan.days_asked/days_note mentions aside) only lightly implied, but is otherwise sufficient to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantic meaning: it explains how q is parsed into days/minutes/level/goal/equipment, that fields override q, and the seed-plus-one convention that the schema only calls 'a different mix'. This goes beyond the schema's own parameter text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states the resource and its content ('A weekly workout plan with sets, reps and rest'), and the example list makes clear it generates plans rather than looking up exercises, so an agent can distinguish it from get_exercise/list_exercises. It never names the siblings explicitly, and the opener is a noun phrase rather than an explicit verb+resource, which keeps it just short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description routes the agent exhaustively: natural-language examples map to intended inputs, 'days=1 gives a single session', 'fields win over q', 'a 10K or longer goal gets the build-up plan unless the user says they are a beginner', and '"give me another one"' maps to seed plus one. When-to-use conditions and conflicting-input precedence are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_exercisesExercises for a muscle and the equipment the user hasARead-onlyIdempotentInspect
Exercises for a muscle and the equipment the user has. For requests like "what can I do for chest with no equipment?", "glute exercises with bands", "back exercises with dumbbells", "some mobility moves". Give a muscle, equipment or both.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Level: beginner leaves out harder moves. | |
| limit | No | 1 to 10. Default 8. | |
| muscle | No | Muscle: chest, back, shoulders, arms, biceps, triceps, legs, quads, hamstrings, glutes, calves, core (or abs), cardio or mobility. Also forearms (grip) and traps. | |
| equipment | No | Equipment: none, dumbbells, barbell, gym, bands, kettlebell, pullupbar or jumprope. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds the useful reminder that muscle/equipment are optional filters, but says nothing about result counts, ordering, or how results are capped beyond the limit parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, followed by a compact set of disambiguating example queries. The examples earn their place by illustrating parameter combinations, though the four examples are slightly redundant with one another.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only filtered-list tool with full annotation coverage and a fully described input schema, the description supplies what remains: the request patterns that select it and the fact that filters are optional. Without an output schema it would be marginally better to note the shape of the returned exercise list, but nothing essential to a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all four parameters, so the cheatsheets for muscle and equipment values, the level enum, and the limit range are all already documented. The example queries reinforce that muscle and equipment can be combined, but add no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (exercises) and the two filters that define scope (muscle, available equipment), so an agent can identify it as a filtered list tool. It does not explicitly contrast itself with the singular get_exercise or with get_workout_plan, so differentiation is only implied by the plural name and title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Concrete example phrasings ('what can I do for chest with no equipment?', 'glute exercises with bands') make it clear which user requests route here, and 'Give a muscle, equipment or both' states the valid invocation shapes. It never states when NOT to use it or points to the sibling tools as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_workout_plan2 fields changed- changed
Input schema / properties / goal / descriptionPrevious value: -"strength, muscle, general (default), conditioning (use this for fat loss or weight loss requests), running or mobility."New value: +"Goal: strength, muscle, general (default), conditioning (covers fat loss or weight loss requests), running or mobility." - changed
Input schema / properties / level / descriptionPrevious value: -"beginner (default) or intermediate. Advanced is treated as intermediate."New value: +"Level: beginner (default) or intermediate. Advanced is treated as intermediate."
- Changed
list_exercises3 fields changed- changed
Input schema / properties / equipment / descriptionPrevious value: -"none, dumbbells, barbell, gym, bands, kettlebell, pullupbar or jumprope."New value: +"Equipment: none, dumbbells, barbell, gym, bands, kettlebell, pullupbar or jumprope." - changed
Input schema / properties / level / descriptionPrevious value: -"beginner leaves out harder moves."New value: +"Level: beginner leaves out harder moves." - changed
Input schema / properties / muscle / descriptionPrevious value: -"chest, back, shoulders, arms, biceps, triceps, legs, quads, hamstrings, glutes, calves, core (or abs), cardio or mobility. Also forearms (grip) and traps."New value: +"Muscle: chest, back, shoulders, arms, biceps, triceps, legs, quads, hamstrings, glutes, calves, core (or abs), cardio or mobility. Also forearms (grip) and traps."
3 tool updates
- First observed
get_exercise - First observed
get_workout_plan - First observed
list_exercises
Related MCP Connectors
Build a workout that fits your time, gear and body — free, no sign-in.
1,413+ HD exercise videos with muscles and instructions, plus workout and program generation.
Gym workout tracker: review your training, PRs and progression, and schedule workouts in the app.
Find home exercises, equipment variations and reviewed 15-second video demonstrations.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables finding home fitness exercises by name, alias, equipment, or muscle and opening reviewed video demonstrations and full-workout links.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to plan, build, and log calisthenics workouts in a user's own account, including searching exercises, managing custom workouts and plans, reading progress and coaching data, and logging completed sessions. Account mutations require explicit confirmation, and workouts can be displayed as interactive cards in the chat.MIT
- AlicenseBqualityDmaintenanceEnables users to search and retrieve fitness exercise information from the Api Ninjas database. It supports filtering by exercise name, target muscle, type, and difficulty level.1MIT
- FlicenseAqualityDmaintenanceEnables workout logging, volume calculation, exercise database search with 1500+ exercises, and AI-powered workout plan generation with DynamoDB persistence.14-
Glama MCP Gateway
Add one secure layer between your agents and this server.