CourtlyGo
Tennis, pickleball and padel courts from OpenStreetMap: surface, lighting, access, fee. Read-only.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"courts": {
"url": "https://courtlygo.com/mcp"
}
}
}Remote endpoints
https://courtlygo.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢search_courts(sport, city, country, lat, lon, ...)
Search tennis, padel and pickleball courts in a covered city, metro area or around a point. Use 'city' (e.g. 'Austin, TX', 'Long Beach', 'Tbilisi' or 'Los Angeles area'; 'country' if the name is ambiguous) or 'lat'+'lon'+'radius_km'. Results are venues (courts within 70 m are merged) with number of courts, surface, lighting, access, fee, address or the park/street nearby, and the source of each record. Filters are strict: a court passes only if the property is explicitly mapped; set match_unknown=true to also include courts where it is unknown. Data comes from OpenStreetMap (ODbL) and is often incomplete; every answer carries the data date and attribution.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"enum": [
"tennis",
"padel",
"pickleball"
],
"description": "Sport: tennis, padel or pickleball. Omit for any."
},
"city": {
"type": "string",
"description": "A covered city, e.g. 'Austin, TX', 'Long Beach' or 'Tbilisi', or a whole metro area, e.g. 'Los Angeles area' (all of Los Angeles and Orange counties) or 'New York area'. See list_coverage."
},
"country": {
"type": "string",
"description": "Country name or ISO code, e.g. 'Georgia', 'GE', 'US'. Use it when the same city name exists in several countries; with lat/lon it limits the search to that country. Distances are in miles for the US and metres/kilometres elsewhere (distance_km is always given)."
},
"lat": {
"type": "number",
"description": "Latitude of the search point (use with lon)."
},
"lon": {
"type": "number",
"description": "Longitude of the search point (use with lat)."
},
"radius_km": {
"type": "number",
"default": 5,
"minimum": 0.1,
"maximum": 50,
"description": "Search radius around lat/lon, km."
},
"setting": {
"type": "string",
"enum": [
"any",
"outdoor",
"indoor"
],
"default": "any",
"description": "'outdoor' = open-air courts; 'indoor' = indoor or covered."
},
"lit": {
"type": "boolean",
"default": false,
"description": "Only courts with lighting."
},
"open_to_public": {
"type": "boolean",
"default": false,
"description": "Only courts anyone can use: access is public, or free of charge, or inside a park. Clubs (access_status club), private and likely private courts are excluded."
},
"free": {
"type": "boolean",
"default": false,
"description": "Only courts mapped as free of charge (fee=no)."
},
"min_courts": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Minimum number of courts at the venue."
},
"match_unknown": {
"type": "boolean",
"default": false,
"description": "Also return courts where a filtered property is not mapped (unknown)."
},
"limit": {
"type": "integer",
"default": 10,
"minimum": 1,
"maximum": 50
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"maximum": 5000,
"description": "Skip this many results (paging)."
}
},
"additionalProperties": false
}🟢get_court(id)
Get full details of one court venue by id (from search_courts): courts per sport, surface, access, OpenStreetMap links, source, data date and caveats.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Venue id, e.g. 'way-123456'."
}
},
"required": [
"id"
],
"additionalProperties": false
}🟢list_coverage
List the covered cities with the number of venues per sport, the data date and the attribution.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Community
Evidence