Tool tree
gradeNot graded
sf_tennis_get_courtsAnswer
Court metadata for SF Tennis: locations, courts, pricing, booking links. availableSlots is always empty and totals are zero server-side (slotsPending:true) because rec.us blocks server runtimes. Use sf_tennis_find_slots for live openings.
View tool JSON
{
"name": "sf_tennis_get_courts",
"kind": "answer",
"impl": "imperative",
"description": "Court metadata for SF Tennis: locations, courts, pricing, booking links. availableSlots is always empty and totals are zero server-side (slotsPending:true) because rec.us blocks server runtimes. Use sf_tennis_find_slots for live openings.",
"inputSchema": {
"type": "object",
"properties": {
"sport": {
"type": "string",
"enum": [
"tennis",
"pickleball"
]
},
"city": {
"type": "string",
"enum": [
"sf",
"mountain-view"
]
}
}
},
"page": "/"
}sf_tennis_find_slotsAction
Live bookable court openings from SF Tennis, computed in the page where rec.us is reachable. Same pipeline as the site UI: metadata plus per-court rec.us availability, filtered to your query. Prefer passing a specific date; week-wide queries return large payloads. Times are America/Los_Angeles.
View tool JSON
{
"name": "sf_tennis_find_slots",
"kind": "act",
"impl": "imperative",
"description": "Live bookable court openings from SF Tennis, computed in the page where rec.us is reachable. Same pipeline as the site UI: metadata plus per-court rec.us availability, filtered to your query. Prefer passing a specific date; week-wide queries return large payloads. Times are America/Los_Angeles.",
"inputSchema": {
"type": "object",
"properties": {
"sport": {
"type": "string",
"enum": [
"tennis",
"pickleball"
],
"description": "Defaults to tennis."
},
"city": {
"type": "string",
"enum": [
"sf",
"mountain-view"
],
"description": "Defaults to sf."
},
"date": {
"type": "string",
"description": "Single day as \"YYYY-MM-DD\". Omit for the whole week (large)."
},
"weekendOnly": {
"type": "boolean"
},
"timeFrom": {
"type": "string",
"description": "Earliest start as \"HH:MM\"."
},
"timeTo": {
"type": "string",
"description": "Latest start as \"HH:MM\"."
}
}
},
"page": "/"
}sf_tennis_get_directionsAction
Walking and driving estimates from an origin to court locations via the SF Tennis Mapbox proxy, plus a Google Maps transit link per location. Pass origin explicitly as 'lat,lng'; omit it for the San Francisco default. Never use the visitor's geolocation without asking. Max 50 destinations.
View tool JSON
{
"name": "sf_tennis_get_directions",
"kind": "act",
"impl": "imperative",
"description": "Walking and driving estimates from an origin to court locations via the SF Tennis Mapbox proxy, plus a Google Maps transit link per location. Pass origin explicitly as 'lat,lng'; omit it for the San Francisco default. Never use the visitor's geolocation without asking. Max 50 destinations.",
"inputSchema": {
"type": "object",
"properties": {
"origin": {
"type": "string",
"description": "Origin as 'lat,lng'."
},
"destinations": {
"type": "array",
"maxItems": 50,
"items": {
"type": "object",
"required": [
"id",
"lat",
"lng"
],
"properties": {
"id": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
}
}
}
},
"required": [
"destinations"
]
},
"page": "/"
}sf_tennis_get_docsAnswer
Fetch the SF Tennis llms.txt guide for API usage instructions.
View tool JSON
{
"name": "sf_tennis_get_docs",
"kind": "answer",
"impl": "imperative",
"description": "Fetch the SF Tennis llms.txt guide for API usage instructions.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}