← Back to all apps

RunReady

Lifestyleby Dakota Reese Brown
Launched Mar 11, 2026 on ChatGPT

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.

5ChatGPT Tools
Dakota Reese BrownDeveloper
LifestyleCategory

Available Tools

Analyze historic course weather

analyze_historic_course_weather
Full Description

Retrieves 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_plan parameter — personalized weather is strictly better than default mode and users expect it. To generate one, FIRST call get_personalized_pacing_plan to get splits, THEN pass its complete data object as the pacing_plan parameter 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: 1. Pass the COMPLETE splits array from the pacing plan (every segment, not a subset). 2. Include assumptions.start_time (critical field). 3. Use the same unit_system in the pacing_plan as was used when calling get_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). 4. Use consistent HH:MM:SS 24-hour zero-padded format for all clock times.

Fallback behavior: If pacing_plan is 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 ok is false: Do NOT present weather data or forecasts as if the tool succeeded. Always quote the error message to explain the failure. If error_code is EVENT_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), list suggested_events as alternatives if present, and mention get_supported_events for the full list. If error_code is absent, it is an operational error (e.g., weather data not yet generated) — relay the error message without claiming the race is unsupported.

Parameters (1 required, 2 optional)
Required
race_namestring

The event to look up weather data for. Partial names and common abbreviations accepted, full names work best. (e.g., 'CIM', 'California International Marathon')

Optional
pacing_planobject

Output from get_personalized_pacing_plan — call get_personalized_pacing_plan first, then pass its complete data object here as-is WITHOUT modification. Include unit_system, all assumptions fields, and the full splits array (every segment, not a sampled subset). Omitting splits or passing only a few (e.g., start/half/finish) will cause fallback to default mode. When valid, enables personalized weather at projected arrival times; chart shows ±1 hour from start/finish and labels the end marker "Finish (goal)" instead of "Cutoff". Falls back to default mode automatically if missing or invalid.

unit_systemstring

Controls whether weather data distances are in miles or kilometers.

Options:imperialmetric

Get course route insights for Q&A

get_course_route_insights_for_qa
Full Description

Retrieves 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_map instead.

When ok is false: Do NOT describe course stats, sections, or elevation data as if the tool succeeded. Always quote the error message to explain the failure. If error_code is EVENT_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), list suggested_events as alternatives if present, and mention get_supported_events for the full list. If error_code is 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.

Parameters (1 required, 1 optional)
Required
race_namestring

The event to get insights for. Partial names and common abbreviations accepted, full names work best. (e.g., 'CIM', 'California International Marathon')

Optional
unit_systemstring

Controls whether distances are returned in miles or kilometers.

Options:imperialmetric

Get interactive course map

get_interactive_course_map
Full Description

Displays 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_qa instead.

When ok is false: Do NOT describe course details, map features, or elevation data as if the tool succeeded. Always quote the error message to explain the failure. If error_code is EVENT_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), list suggested_events as alternatives if present, and mention get_supported_events for the full list. If error_code is 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.

Parameters (1 required, 2 optional)
Required
race_namestring

The event to display. Partial names and common abbreviations accepted, full names work best. (e.g., 'CIM', 'California International Marathon')

Optional
map_modestring

Controls the widget's initial map presentation. Omit for default satellite view. Set to `vert_view` when the user asks about elevation, hills, or 3D terrain.

Options:default_mapvert_view
unit_systemstring

Controls whether distances are shown in miles or kilometers.

Options:imperialmetric

Get personalized pacing plan

get_personalized_pacing_plan
Full Description

Calculates 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_plan parameter to analyze_historic_course_weather to 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 complete data object without modification — include the full splits array, all assumptions, and the unit_system. Do not trim or sample the splits.

When ok is false: Do NOT present pacing data or split tables as if the tool succeeded. Always quote the error message to explain the failure. If error_code is EVENT_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), list suggested_events as alternatives if present, and mention get_supported_events for the full list. If error_code is absent, it is an operational error — relay the error message without claiming the race is unsupported.

Parameters (1 required, 5 optional)
Required
race_namestring

The event to plan for. For best results, search for full race names (e.g. 'California International Marathon' instead of 'CIM').

Optional
aid_station_secondsinteger

Average time lost per aid station stop in seconds (e.g., 30). Used to adjust moving pace vs elapsed time. Range: 0-600.

estimated_start_timestring

When the runner expects to cross the start line, in HH:MM:SS format using local event time (e.g., "07:30:00"). Defaults to the event's official start time if omitted.

goal_timestring

Target finish time in HH:MM:SS format (e.g., "3:45:00"). If omitted, the widget will prompt the user.

pacing_strategy_idstring

UUID of the pacing strategy to apply. If omitted, defaults to Even Effort. Available strategies: Even Effort (7f63ae91-6c66-45c5-aa6d-f0672743e9db), Even Pace (de52a4e7-d9ad-47ba-9d4c-35bcba787dd5), Negative Split (47ec83d9-edee-4c5e-a71a-4b2290f1c69a), Aggressive Negative Split (8a6f41f5-3f44-44bf-b471-1b3352fd532e), Positive Split (cc416cbc-41ae-4e59-9757-0136c5f6619b), Aggressive Positive Split (9d891e97-6b37-4c71-bba5-409dcc8d657a).

unit_systemstring

Controls whether splits are returned in miles or kilometers (pace and segment distances match).

Options:imperialmetric

Get supported events

get_supported_events
Full Description

Returns 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.