gradeNot graded
get_map_stateAnswer
Read what the user is looking at right now: map centre, zoom, the spots inside the current viewport with their live wind and rideability score, active filters, the open spot, and the rider profile driving every kite call. Call this first whenever the user says 'here', 'this area', 'these', 'the one I'm looking at', or asks anything region-dependent without naming a place.
View tool JSON
{
"name": "get_map_state",
"kind": "answer",
"impl": "imperative",
"description": "Read what the user is looking at right now: map centre, zoom, the spots inside the current viewport with their live wind and rideability score, active filters, the open spot, and the rider profile driving every kite call. Call this first whenever the user says 'here', 'this area', 'these', 'the one I'm looking at', or asks anything region-dependent without naming a place.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/kitespot-atlas/"
}search_spotsAction
Search the spot catalogue and filter the live map to the matches — the user watches the board and markers update. Free text understands spot names, countries, regions and riding style ('flat water', 'beginner lagoon', 'waves'). Results come back ranked by current rideability for this rider.
View tool JSON
{
"name": "search_spots",
"kind": "act",
"impl": "imperative",
"description": "Search the spot catalogue and filter the live map to the matches — the user watches the board and markers update. Free text understands spot names, countries, regions and riding style ('flat water', 'beginner lagoon', 'waves'). Results come back ranked by current rideability for this rider.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Spot name, country, region, or riding style."
},
"water": {
"type": "string",
"enum": [
"flat",
"lagoon",
"chop",
"wave"
],
"description": "Water state filter."
},
"month": {
"type": "number",
"minimum": 1,
"maximum": 12,
"description": "Keep only spots whose season covers this month (1–12)."
},
"minScore": {
"type": "number",
"description": "Only return spots at or above this live rideability score (0–100)."
},
"limit": {
"type": "number",
"description": "Max results, default 8."
}
}
},
"page": "/kitespot-atlas/"
}focus_spotAction
Fly the map to a spot and open its detail view with forecast, water temperature and local intel. Use whenever the user wants to look at one spot.
View tool JSON
{
"name": "focus_spot",
"kind": "act",
"impl": "imperative",
"description": "Fly the map to a spot and open its detail view with forecast, water temperature and local intel. Use whenever the user wants to look at one spot.",
"inputSchema": {
"type": "object",
"properties": {
"spotId": {
"type": "string",
"description": "Spot id or exact name from a previous tool result."
}
},
"required": [
"spotId"
]
},
"page": "/kitespot-atlas/"
}get_conditionsAnswer
Live wind, gusts, direction and temperature for one spot, plus the rideability score, the kite size this rider should rig, and any standing hazards. Scores are personal — they already account for the rider's weight and quiver.
View tool JSON
{
"name": "get_conditions",
"kind": "answer",
"impl": "imperative",
"description": "Live wind, gusts, direction and temperature for one spot, plus the rideability score, the kite size this rider should rig, and any standing hazards. Scores are personal — they already account for the rider's weight and quiver.",
"inputSchema": {
"type": "object",
"properties": {
"spotId": {
"type": "string"
}
},
"required": [
"spotId"
]
},
"page": "/kitespot-atlas/"
}find_windowAnswer
Find the best rideable windows in the next 7 days for a spot, or across every spot currently on screen. Returns contiguous blocks of hours where wind strength, direction and gustiness all work for this rider, with the kite size for each block. Use for 'when should I go', 'is it worth driving out', 'any wind this weekend'.
View tool JSON
{
"name": "find_window",
"kind": "answer",
"impl": "imperative",
"description": "Find the best rideable windows in the next 7 days for a spot, or across every spot currently on screen. Returns contiguous blocks of hours where wind strength, direction and gustiness all work for this rider, with the kite size for each block. Use for 'when should I go', 'is it worth driving out', 'any wind this weekend'.",
"inputSchema": {
"type": "object",
"properties": {
"spotId": {
"type": "string",
"description": "One spot. Omit to scan every spot in the current viewport."
},
"minScore": {
"type": "number",
"description": "Quality bar for an hour to count, 0–100. Default 55."
},
"minHours": {
"type": "number",
"description": "Shortest window worth reporting. Default 2."
}
}
},
"page": "/kitespot-atlas/"
}compare_spotsAction
Put two or more spots side by side in the compare tray at the bottom of the map, and return the same comparison as data. The tray stays on screen for the user after the agent moves on.
View tool JSON
{
"name": "compare_spots",
"kind": "act",
"impl": "imperative",
"description": "Put two or more spots side by side in the compare tray at the bottom of the map, and return the same comparison as data. The tray stays on screen for the user after the agent moves on.",
"inputSchema": {
"type": "object",
"properties": {
"spotIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Two to five spot ids."
}
},
"required": [
"spotIds"
]
},
"page": "/kitespot-atlas/"
}set_riderAction
Update the rider profile — body weight and the kite sizes they own. Every score, kite call and forecast window on the map is recalculated against it, so set this as soon as the user mentions their weight or quiver. Changing it visibly re-ranks the board.
View tool JSON
{
"name": "set_rider",
"kind": "act",
"impl": "imperative",
"description": "Update the rider profile — body weight and the kite sizes they own. Every score, kite call and forecast window on the map is recalculated against it, so set this as soon as the user mentions their weight or quiver. Changing it visibly re-ranks the board.",
"inputSchema": {
"type": "object",
"properties": {
"weightKg": {
"type": "number",
"minimum": 30,
"maximum": 140
},
"quiver": {
"type": "array",
"items": {
"type": "number"
},
"description": "Kite sizes in m², e.g. [7, 9, 12]."
},
"level": {
"type": "string",
"enum": [
"beginner",
"intermediate",
"advanced"
]
}
}
},
"page": "/kitespot-atlas/"
}watch_spotAction
Star a spot and set the score at which the Atlas should alert the user. The watch survives the conversation — the page keeps checking every 10 minutes and fires a browser notification when the spot comes on.
View tool JSON
{
"name": "watch_spot",
"kind": "act",
"impl": "imperative",
"description": "Star a spot and set the score at which the Atlas should alert the user. The watch survives the conversation — the page keeps checking every 10 minutes and fires a browser notification when the spot comes on.",
"inputSchema": {
"type": "object",
"properties": {
"spotId": {
"type": "string"
},
"alertAt": {
"type": "number",
"description": "Score 0–100 that triggers the alert. Default 70."
},
"remove": {
"type": "boolean",
"description": "Set true to unwatch instead."
}
},
"required": [
"spotId"
]
},
"page": "/kitespot-atlas/"
}log_sessionAction
Log a session the user just rode. Each entry retrains the app's kite-sizing constant toward how this rider actually rides, so future kite calls across every spot get more accurate. Use when the user describes a session in passing — 'I was on the 9 in about 22 knots and felt overpowered'.
View tool JSON
{
"name": "log_session",
"kind": "act",
"impl": "imperative",
"description": "Log a session the user just rode. Each entry retrains the app's kite-sizing constant toward how this rider actually rides, so future kite calls across every spot get more accurate. Use when the user describes a session in passing — 'I was on the 9 in about 22 knots and felt overpowered'.",
"inputSchema": {
"type": "object",
"properties": {
"spotId": {
"type": "string"
},
"windKts": {
"type": "number"
},
"kiteSize": {
"type": "number",
"description": "Kite ridden, in m²."
},
"power": {
"type": "string",
"enum": [
"under",
"good",
"over"
],
"description": "How it felt."
},
"rating": {
"type": "number",
"minimum": 1,
"maximum": 5
},
"note": {
"type": "string"
},
"date": {
"type": "string",
"format": "date"
}
},
"required": [
"spotId",
"windKts",
"kiteSize",
"power"
]
},
"page": "/kitespot-atlas/"
}annotate_spotAction
Attach a note to a spot's detail view — local knowledge, a hazard the user should remember, launch or logistics advice, or why this spot suits their trip. Notes are labelled as agent-written, persist across reloads, and the user can delete any of them.
View tool JSON
{
"name": "annotate_spot",
"kind": "act",
"impl": "imperative",
"description": "Attach a note to a spot's detail view — local knowledge, a hazard the user should remember, launch or logistics advice, or why this spot suits their trip. Notes are labelled as agent-written, persist across reloads, and the user can delete any of them.",
"inputSchema": {
"type": "object",
"properties": {
"spotId": {
"type": "string"
},
"note": {
"type": "string",
"description": "One or two sentences."
},
"kind": {
"type": "string",
"enum": [
"tip",
"hazard",
"logistics",
"plan"
],
"description": "Default tip."
}
},
"required": [
"spotId",
"note"
]
},
"page": "/kitespot-atlas/"
}