Tool tree
gradeNot graded
load_gpxAction
Opens a race's GPX in the editor from its text, in place of the open route, and lists its checkpoints. The page cannot fetch links: fetch the file and pass its text. The person can also open one with the Open GPX button. The file's existing waypoints become the checkpoints.
View tool JSON
{
"name": "load_gpx",
"kind": "act",
"impl": "imperative",
"description": "Opens a race's GPX in the editor from its text, in place of the open route, and lists its checkpoints. The page cannot fetch links: fetch the file and pass its text. The person can also open one with the Open GPX button. The file's existing waypoints become the checkpoints.",
"inputSchema": {
"type": "object",
"properties": {
"gpx": {
"type": "string",
"description": "The whole GPX file, as text."
},
"file_name": {
"type": "string",
"description": "The name to show and to base the export's name on."
},
"discard_unsaved": {
"type": "boolean",
"description": "Drop the open route's unsaved edits. Only with the person's agreement."
}
},
"required": [
"gpx"
]
}
}list_checkpointsAnswer
The checkpoints of the open route, in route order, with the route's length and the race's time zone. Read this first: ids, distances and the clock come from here.
View tool JSON
{
"name": "list_checkpoints",
"kind": "answer",
"impl": "imperative",
"description": "The checkpoints of the open route, in route order, with the route's length and the race's time zone. Read this first: ids, distances and the clock come from here.",
"inputSchema": {
"type": "object",
"properties": {}
}
}review_planAction
Checks the checkpoints as a race plan before export: what is wrong or likely forgotten (no Arrival, a cutoff before the previous one, a time barrier without a cutoff), and per checkpoint the estimated passage at the set pace, the cutoff and the margin. Call it when done editing; `ready` says whether to hand over to the person.
View tool JSON
{
"name": "review_plan",
"kind": "act",
"impl": "imperative",
"description": "Checks the checkpoints as a race plan before export: what is wrong or likely forgotten (no Arrival, a cutoff before the previous one, a time barrier without a cutoff), and per checkpoint the estimated passage at the set pace, the cutoff and the margin. Call it when done editing; `ready` says whether to hand over to the person.",
"inputSchema": {
"type": "object",
"properties": {}
}
}add_checkpointAction
Adds a checkpoint on the route, snapped to the track, by distance or by coordinates. Coordinates are refused where the route passes more than once: give the distance.
View tool JSON
{
"name": "add_checkpoint",
"kind": "act",
"impl": "imperative",
"description": "Adds a checkpoint on the route, snapped to the track, by distance or by coordinates. Coordinates are refused where the route passes more than once: give the distance.",
"inputSchema": {
"type": "object",
"properties": {
"distance_m": {
"type": "number",
"minimum": 0,
"description": "Where along the route, in metres from the start. Prefer this to coordinates."
},
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"name": {
"type": "string",
"description": "The checkpoint's name, as runners will read it."
},
"type_name": {
"type": [
"string",
"null"
],
"enum": [
"Start",
"TimeBarrier",
"LifeBase",
"Arrival",
null
],
"description": "Start, TimeBarrier (a cutoff), LifeBase (an aid station with a long stop), Arrival, or null for a landmark that is not a checkpoint."
},
"cutoff": {
"type": [
"string",
"null"
],
"description": "The cutoff on the race's clock, \"YYYY-MM-DDTHH:mm\" (see timeZone in list_checkpoints), or with a zone (Z, +02:00). null clears it."
},
"stop_s": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "The planned stop at this checkpoint, in seconds."
},
"description": {
"type": [
"string",
"null"
],
"description": "A note for the runners."
}
},
"oneOf": [
{
"required": [
"distance_m"
]
},
{
"required": [
"latitude",
"longitude"
]
}
]
}
}update_checkpointAction
Changes a checkpoint's fields; a distance or coordinates also move it along the route.
View tool JSON
{
"name": "update_checkpoint",
"kind": "act",
"impl": "imperative",
"description": "Changes a checkpoint's fields; a distance or coordinates also move it along the route.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The checkpoint's id, from list_checkpoints."
},
"distance_m": {
"type": "number",
"minimum": 0,
"description": "Where along the route, in metres from the start. Prefer this to coordinates."
},
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"name": {
"type": "string",
"description": "The checkpoint's name, as runners will read it."
},
"type_name": {
"type": [
"string",
"null"
],
"enum": [
"Start",
"TimeBarrier",
"LifeBase",
"Arrival",
null
],
"description": "Start, TimeBarrier (a cutoff), LifeBase (an aid station with a long stop), Arrival, or null for a landmark that is not a checkpoint."
},
"cutoff": {
"type": [
"string",
"null"
],
"description": "The cutoff on the race's clock, \"YYYY-MM-DDTHH:mm\" (see timeZone in list_checkpoints), or with a zone (Z, +02:00). null clears it."
},
"stop_s": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "The planned stop at this checkpoint, in seconds."
},
"description": {
"type": [
"string",
"null"
],
"description": "A note for the runners."
}
},
"required": [
"id"
]
}
}remove_checkpointAction
Removes a checkpoint from the route.
View tool JSON
{
"name": "remove_checkpoint",
"kind": "act",
"impl": "imperative",
"description": "Removes a checkpoint from the route.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The checkpoint's id, from list_checkpoints."
}
},
"required": [
"id"
]
}
}download_gpxAction
Asks the browser to save the edited GPX (the director's file with the checkpoints as its waypoints) to the person's downloads, named after the original with -edited. The file goes to their disk, not back to you; the browser may ask them first or block it, so ask the person whether it arrived. Call review_plan first: a plan it does not call ready is refused unless force is true, which only the person can ask for.
View tool JSON
{
"name": "download_gpx",
"kind": "act",
"impl": "imperative",
"description": "Asks the browser to save the edited GPX (the director's file with the checkpoints as its waypoints) to the person's downloads, named after the original with -edited. The file goes to their disk, not back to you; the browser may ask them first or block it, so ask the person whether it arrived. Call review_plan first: a plan it does not call ready is refused unless force is true, which only the person can ask for.",
"inputSchema": {
"type": "object",
"properties": {
"force": {
"type": "boolean",
"description": "Download although review_plan reports problems. Only if the person asks."
}
}
}
}