Recovery, in plain words
Sleep, HRV, resting heart rate and Body Battery against your own normal, with the reason behind the verdict, not just a colour.
Am I recovered enough for a hard run today?
Garmin runners · Claude and ChatGPT
Runner Readiness connects your Garmin to Claude or ChatGPT: how recovered you are, how every run went against your plan, heat and haze for the next one, and your race build-up. Ask in plain words and get answers, and charts, from your own numbers. Plus an optional email every evening about tomorrow.
Invite-only and free. Unofficial: not made by Garmin, Anthropic or OpenAI.
Am I recovered enough for a hard run today?
readiness_snapshotYes. HRV is right in your normal range and you slept well, so today's 6 × 1 km at threshold is a go. Keep the recoveries easy.
What you can ask
Claude or ChatGPT calls Runner Readiness's tools when your question needs your data. It compares each day with your own normal, explains the signals behind a verdict, and says plainly when data is missing.
Sleep, HRV, resting heart rate and Body Battery against your own normal, with the reason behind the verdict, not just a colour.
Am I recovered enough for a hard run today?
Readiness, trends, taper and plan vs actual show up as cards right in the conversation, plus a one-look overview of your month.
Give me a monthly overview.
Knows what's on the plan and checks it against what you actually ran: hit, partly, missed.
Did I do what the plan said this week?
Heat stress and air quality for your usual run times, plus the last two weeks of air, so your AI assistant steers you to the better hour or the treadmill.
Should I run outside tomorrow evening?
Days to go, how far your load has come down, and whether recovery is trending the right way.
Is my marathon taper on track?
Paste a plan, a table or a screenshot, or pull races and workouts from your Garmin calendar. Saved only after you say yes, with undo.
Here's my 16-week plan, set it up.
Syncs three times a day, and on demand when you've just finished, so “how did I do?” sees today's run.
Just finished my tempo. How did I do?
Optional, in Claude: your own Claude emails you tomorrow's session, whether to run outside, and your last run km by km.
Set up my evening briefing.
How to join
It's invite-only: there's no public sign-up. Once you're in, history loads by itself.
From the person who runs it. Choose your city for time zone and local weather, and optionally your next race.
Once, on this site. Your last 60 days of Garmin data load in the background.
The last screen of your invite has both buttons. Claude opens filled in: Connect, then Allow. Then start a new chat and ask about today's run.
https://run.xuanze.dev/mcpChatGPT: on Plugins, + → Add custom MCP server. Server URL: this link. Authentication: OAuth. Then Create as a plugin, and type @ in a chat to use it.
Claude by hand: Settings → Connectors → Add custom connector, paste this link.
Daily briefing · optional · in Claude
Tomorrow's session, whether to run outside (heat, haze, storms), how your last run went km by km, your recovery and taper, in the same look as this page. Your own Claude sends it from your own Gmail; nothing extra is stored here.
Settings → Connectors → Gmail. Runner Readiness should already be there.
In the Claude desktop app, a daily task in the evening, e.g. 20:30. Or just ask Claude: “set up my evening briefing”.
Put your email address where it says {YOUR_EMAIL}, then run it once to check the email arrives.
Every evening, email me my running briefing for tomorrow. This runs unattended: don't ask questions, just do it.
1. Call the Runner Readiness tool sync_now. If it says too_soon or fails, carry on.
2. Call evening_briefing and read it. Write three short coaching lines tied to what it shows (the last run's HR and pacing, tomorrow's session, recovery, taper, air and heat). If tomorrow is a rest day, make them recovery lines; if a race is 3 days away or less, race-prep lines. Add one tip. Never invent numbers.
3. Call briefing_email with watch_for = your three lines and tip = your tip.
4. Send it with the Gmail send_message tool to {YOUR_EMAIL}: subject = the result's subject, htmlBody = html, body = text. Sending is pre-approved for this task. Don't change the HTML.
5. Reply with one line: "Briefing sent: {subject}". If sending failed, reply with the error and the plain-text version.The honest part
Training guidance only, not medical advice. If something feels off, listen to your body over any number.