Skip to main content
Glama
yashhooda1

apple-workouts-mcp

by yashhooda1

create_marathon_plan

Build a marathon training plan for any race and goal, scaled to your current fitness from Strava history. It ramps weekly mileage safely, adds strength sessions and a 3-week taper, and flags goals that don't fit your runway.

Instructions

Build a marathon block for ANY race and ANY goal, scaled to current fitness.

Reads recent Strava history (unless use_strava_history=False or current_weekly_miles is supplied), compares it to what the goal asks for, and ramps from where the runner actually is — 8%/week ceiling, 3-up-1-down, 3-week taper, ending on race day. If the goal doesn't fit the runway, the plan targets the goal that does and says so; force_goal=True overrides. Two strength sessions a week; weekly fuelling/recovery guidance in the report. dry_run=True validates without publishing.

Input Schema

NameRequiredDescriptionDefault
timeNo
dry_runNo
replaceNo
goal_timeYes
race_dateYes
race_nameYes
force_goalNo
start_dateNo
days_per_weekNo
use_strava_historyNo
current_weekly_milesNo
heat_penalty_s_per_mileNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden well by disclosing the ramp ceiling, 3-up-1-down structure, taper, fallback goal behavior, Strava dependency, and dry_run validation. It still omits important side-effect details, especially what replace=True does and whether publishing is destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and then packs the most important behavioral details into a short, dense block. Despite covering a complex tool, it avoids filler and keeps each sentence functional.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, unannotated mutation tool, the description is behaviorally informative but incomplete. It does not fully explain all parameters or the return/report structure, and it omits important publishing/replacement semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains use_strava_history, current_weekly_miles, force_goal, and dry_run, but leaves replace, start_date, days_per_week, heat_penalty_s_per_mile, and the distinction between time and goal_time undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Build a marathon block." The scope is clear ("ANY race and ANY goal, scaled to current fitness"), and it is distinct from sibling tools like create_strength_workout or create_hs_track_plan, though it does not explicitly contrast with create_training_plan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives useful context for when the tool applies (marathon planning) and explains key conditional behavior such as reading Strava history unless overridden, force_goal, and dry_run. However, it does not explicitly state when to use this versus create_training_plan or other plan-creation siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.