RunCoach
Exposes a runner's own training data — computed training load, race-time predictions, generated plans — as tools an LLM can call. Ask any assistant whether you should back off this week and it will produce plausible coaching advice from nothing. This makes the same question resolve against actual recorded activities, and the answer carries the specific runs it came from.
Tools
| Tool | Answers |
|---|---|
| analyze_training_status | “How is my training going?” — readiness read from load trend, consistency and volume, with explicit caveats |
| get_training_load | Fitness (CTL), fatigue (ATL), form (TSB) and acute:chronic ratio over a window |
| predict_race_time | “What could I run for X?” — with the reference efforts used and the implausible ones excluded |
| get_recent_activities | Recent runs with pace, heart rate and per-activity computed load |
| generate_training_plan | A periodised plan from measured volume, or a refusal explaining why one would be unsafe |
Connecting
Authentication is a bearer token — an API key issued from the Runman profile page.
{
"mcpServers": {
"runcoach": {
"type": "http",
"url": "https://runcoach-ruby.vercel.app/mcp",
"headers": { "Authorization": "Bearer rc_live_..." }
}
}
}
Where the numbers come from
RunCoach reimplements nothing. Every calculation comes from
@runman/core, the fixture-tested package that also backs the
Runman web app, so a question asked
here and the same question asked in the browser run identical code against identical data.