RunReady
RunReady.ai helps runners prepare for supported races with course-specific guidance inside ChatGPT. You can explore an interactive course map, get a clear breakdown of course sections, elevation, and aid stations, build a personalized pacing plan based on your goal time and pacing strategy, and review historic race-day weather along the course. It’s a practical way to understand a race, plan smarter, and make more confident training and race-day decisions.
- Homepage
- https://www.runready.ai
- Remote URL
https://runready.dev/mcp- Auth
- NONE
Tools (5)
Extracted live via the executor SDK.
-
get_interactive_course_mapDisplays an interactive course map widget for a running event. Use this tool when the user wants to SEE or VISUALIZE the course — requests like 'show me the course', 'display the map', 'let me see the route', or 'visualize the elevation'. Returns minimal event identity (name, unit system, GPX URL) plus an interactive map widget with GPX track, elevation profile, and distance markers. For detailed course analysis data (stats, sections, challenges) to answer questions, use
get_course_route_insights_for_qainstead.When
okis false: Do NOT describe course details, map features, or elevation data as if the tool succeeded. Always quote theerrormessage to explain the failure. Iferror_codeisEVENT_NOT_SUPPORTED, the requested event is not yet supported by RunReady — tell the user RunReady doesn't have this race yet (not that it doesn't exist), listsuggested_eventsas alternatives if present, and mention get_supported_events for the full list. Iferror_codeis absent, it is an operational or configuration error — relay the error message without claiming the race is unsupported. You may share general knowledge only if explicitly labeled as such and not presented as an official RunReady guide. -
get_course_route_insights_for_qaRetrieves detailed course analysis data for answering questions about a running event. Use this tool when the user asks QUESTIONS about the course — requests like 'what are the hardest parts?', 'where are the aid stations?', 'how much elevation gain?', 'tell me about the course', or 'what should I know about this race?'. Returns structured data including event identity, key stats, elevation/grade summaries, segment-by-segment breakdown (challenges, climbs/descents), and aid stations. Does NOT return a map widget — for visual map display, use
get_interactive_course_mapinstead.When
okis false: Do NOT describe course stats, sections, or elevation data as if the tool succeeded. Always quote theerrormessage to explain the failure. Iferror_codeisEVENT_NOT_SUPPORTED, the requested event is not yet supported by RunReady — tell the user RunReady doesn't have this race yet (not that it doesn't exist), listsuggested_eventsas alternatives if present, and mention get_supported_events for the full list. Iferror_codeis absent, it is an operational or configuration error — relay the error message without claiming the race is unsupported. You may share general knowledge only if explicitly labeled as such and not presented as official RunReady analysis. -
get_personalized_pacing_planCalculates a pacing plan for a specific running event using detailed course data (distance, elevation profile, and on-course stations). Returns segment splits, cumulative times, and optional checkpoint tables based on a selected pacing strategy (Even Pace, Even Effort, Negative Split, etc.) and an estimated time lost per aid station. When all optional parameters are provided (goal_time, estimated_start_time, pacing_strategy_id, aid_station_seconds), the tool automatically calculates and returns the pacing plan. If any parameters are missing, an interactive widget prompts the user for the remaining inputs. Note: All 'pace' values in the output are elapsed pace (including aid station time), not moving pace.
Integration with weather tool: The output of this tool can be passed directly as the
pacing_planparameter toanalyze_historic_course_weatherto enable personalized weather timing. If a pacing plan has been generated for the same event in this conversation, always include it when calling the weather tool — personalized weather is preferred over default mode. Do not reuse a pacing plan from a different event. For best results, pass the completedataobject without modification — include the full splits array, all assumptions, and the unit_system. Do not trim or sample the splits.When
okis false: Do NOT present pacing data or split tables as if the tool succeeded. Always quote theerrormessage to explain the failure. Iferror_codeisEVENT_NOT_SUPPORTED, the requested event is not yet supported by RunReady — tell the user RunReady doesn't have this race yet (not that it doesn't exist), listsuggested_eventsas alternatives if present, and mention get_supported_events for the full list. Iferror_codeis absent, it is an operational error — relay the error message without claiming the race is unsupported. -
analyze_historic_course_weatherRetrieves historic weather data for a running event's course and returns a compact plot payload for visualization. Returns temperature ranges (5-year min/max band, average, and previous year actuals), plus sanitized data for precipitation, humidity, and wind. Use this when the user asks about expected weather conditions, temperature forecasts, or what to expect on race day based on historical patterns.
Personalized mode: If a pacing plan has already been generated for the same event in this conversation, ALWAYS include it as the
pacing_planparameter — personalized weather is strictly better than default mode and users expect it. To generate one, FIRST callget_personalized_pacing_planto get splits, THEN pass its completedataobject as thepacing_planparameter to this tool WITHOUT trimming or sampling the splits array. The most robust approach is to pass the pacing plan output as-is (unit_system + assumptions + full splits). Personalized mode shows weather at projected arrival times rather than linear distance-to-time mapping.Key requirements for personalization to succeed:
- Pass the COMPLETE splits array from the pacing plan (every segment, not a subset).
- Include
assumptions.start_time(critical field). - Use the same
unit_systemin the pacing_plan as was used when callingget_personalized_pacing_plan. The pacing_plan unit_system must match the resolved weather data unit system for personalization to activate (the API may rarely fall back to the opposite system if data is unavailable). - Use consistent HH:MM:SS 24-hour zero-padded format for all clock times.
Fallback behavior: If
pacing_planis missing, invalid, or cannot be parsed, the tool automatically falls back to default mode (linear mapping from start to cutoff). The tool never fails due to a malformed pacing plan.Input: event name + optional unit system + optional pacing_plan. Output: event identity, schedule context, mode flags, compact plot payload, sanitized weather data, and summary.
When
okis false: Do NOT present weather data or forecasts as if the tool succeeded. Always quote theerrormessage to explain the failure. Iferror_codeisEVENT_NOT_SUPPORTED, the requested event is not yet supported by RunReady — tell the user RunReady doesn't have this race yet (not that it doesn't exist), listsuggested_eventsas alternatives if present, and mention get_supported_events for the full list. Iferror_codeis absent, it is an operational error (e.g., weather data not yet generated) — relay the error message without claiming the race is unsupported. -
get_supported_eventsReturns a list of all running events currently supported by RunReady. Use this tool when you need to (a) confirm whether a specific race or event is supported, (b) disambiguate similar race names, or (c) provide users with canonical links to RunReady course guides. An event is considered "supported" if it is active and has at least one published course guide. Returns event name, date, type, available unit systems, and canonical URLs for each guide.