Weather along your route
plan_routeWeather and a flyover for a GPX file or route the user shares. If the user attached a GPX or route file, call plan_route and pass the file as gpx_file; if you can read the file's contents yourself, you may instead pass its text as gpx or its points as points. Never treat a file name as an event name. Also a Ride with GPS or GPX link, or another app's route points: the weather along it at the time they'd ride or run it, and a flyover of the route (a flyby, fly over my route) that plays in the chat, coloured by the weather: the forecast within 10 days, 10 years of weather on that date beyond it, rated by Windline's forecast engine, with the headwind and tailwind stretches, heat and rain. No account needed. For "What will the wind be like on this route on Saturday at 6?" or "Show me the weather for this GPX and a flyover". The route stays theirs: nothing is published. For a 3D flight and a route video, offer to save it as a private ride or run with create_event (visibility private). Several GPX files are one multi-day tour: pass them all as files (ordered by the numbers in their names, else by the map; one day after another from start), never one call per file. A route can also come from another app's tool as its points or an encoded polyline (for example a route or activity map from a fitness app): pass it as polyline or points. Never ask the user to export a GPX if you already have the route's points.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"start": "<start>"
},
"name": "plan_route"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | The route's IANA time zone, if known (else worked out from where it starts). | |
| gpx | No | The GPX file's text (up to 5 MB): if the user pasted it, or attached a file you can read yourself (for example with code). | |
| url | No | A link to the route: a Ride with GPS route, ride or collection (a collection gives one day per route), or any public link to a GPX file. Not Strava. | |
| name | No | What to call the plan, if the user named it. | |
| pace | No | Riding speed in km/h (default 25), or running pace in minutes per km (default 6). | |
| files | No | Several GPX files (a multi-day tour): ordered by the numbers in their names, else by the map; one day after another from start. | |
| sport | No | ride (default) or run. | |
| start | Yes | When they start, "YYYY-MM-DD HH:MM" local to the route. Ask if they didn't say. | |
| units | No | Pass the asker's units: imperial for users in the US, UK road distances, Liberia or Myanmar, or when they ask in miles/°F; otherwise metric. | |
| points | No | The route as its points: [[lat, lon], …], with elevation in metres as a third number if known. Up to 50,000. Use it for points another app's tool gave, or that you read from an attached file (GPX, FIT, TCX) with code. | |
| starts | No | Each day's own local start, "YYYY-MM-DD HH:MM", when they differ. | |
| gpx_file | No | The GPX or route file the user attached (ChatGPT passes it here). | |
| polyline | No | The route as an encoded polyline (Google's format, precision 5 or 6), as another app's tool gives it (a route's or an activity's map). | |
| gpx_files | No | Several GPX or route files the user attached (ChatGPT passes them here): one per day of a tour, ordered by the numbers in their names, else by the map. | |
| rest_days | No | With files: dates with no riding, "YYYY-MM-DD", only if the user named rest days. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| km | No | The route's length in km. | |
| tz | No | The route's IANA time zone. | |
| url | No | The event's page. | |
| days | No | Each day: name, date (ISO), basis, rating (good, fair, tough), why, start_temp_c, finish_temp_c, effort_pct (cycling), heat_stress and wbgt_c (running), rain_mm or rain_days_in_10 and usual_high_c. | |
| view | Yes | What this answer is; "none" when there is nothing to show (see message). | |
| basis | No | forecast (Apple Weather, within 10 days), historic (10 years of Copernicus ERA5 on that date) or mixed. | |
| error | No | When the call failed: what went wrong, in words for the user. | |
| event | No | The event's name. | |
| files | No | Several files: the file of each day, in order. | |
| order | No | Several files: how the days were ordered (numbers, map or upload). | |
| sport | No | cycling or running. | |
| units | No | ||
| events | No | Several events matched: their names. Ask the user which one. | |
| fly_3d | No | A link to the full 3D flight, only for a route with a public page; else null. | |
| signup | No | Without a sign-in: { label, url } to make a free Windline or RunFast account (?ref=mcp). | |
| flyover | No | The map flies over the route in the chat. | |
| message | No | When view is "none": what to tell the user (no match, not live yet, a question back). | |
| timed_for | No | What the times assume (the start, the pace). | |
| order_note | No | When the file numbers and the map disagree: what was chosen. | |
| sponsor_line | No | The line every answer ends with: who brings livedot's live tracking free. |