CourtlyGo

Court data for AI assistants and developers

CourtlyGo is an open, structured database of tennis, pickleball and padel courts, built so AI assistants and apps can look up real courts instead of guessing.

Status

InterfaceStatusWhat it is
MCP serverLiveLets an AI assistant search courts and open one record. Address: https://courtlygo.com/mcp
APIComing soonThe same data over HTTPS for sports, travel and local-search apps. Free.
City data filesAvailable nowOne JSON file per city, free to download under ODbL: Los Angeles area · San Francisco · New York · Chicago · Austin.

The website, the MCP server and the data files are free to use. Need higher volume, bulk export or a custom feed? Email hello@courtlygo.com.

MCP server

MCP (Model Context Protocol) is a standard way for an AI assistant to call outside tools and data, so it can look up real courts instead of guessing. The CourtlyGo MCP server is open (no key or sign-in) and read-only: it only looks courts up.

Address: https://courtlygo.com/mcp

How to connect it to an AI assistant

  1. Claude.ai (web or desktop app): Settings → Connectors → Add custom connector → enter the name “CourtlyGo” and the URL above, then save. Then ask a question about courts; the assistant will use the tools below.
  2. Claude Code: run in a terminal:
    claude mcp add --transport http courtlygo https://courtlygo.com/mcp
  3. Any other assistant or app with MCP support: add a remote (HTTP) MCP server and paste the address above.

Menu names differ between apps and change over time; look for “connectors”, “MCP servers” or “tools” in your assistant's settings.

Tools

ToolWhat it does
search_courtsFind courts in a covered US city (for example Austin, TX, Long Beach or Los Angeles area) or around a point (lat, lon, radius_km). Filters: sport (tennis, pickleball, padel), setting (outdoor or indoor), lit, open_to_public, free, min_courts; paging with limit and offset. Every answer states the source and the data date.
get_courtFull record of one court by id (from search_courts): courts per sport, surface, access, links to OpenStreetMap, source, data date and caveats.
list_coverageWhich cities are covered and how many courts each has.

Filters are strict: a court passes only if the property is explicitly mapped. Pass match_unknown: true to also include courts where it is unknown.

Example

Request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_courts",
    "arguments": {
      "city": "Chicago, IL",
      "sport": "pickleball",
      "open_to_public": true,
      "limit": 2
    }
  }
}

Response (abridged; a real call against our data of 2026-10-08):

{
  "total_matches": 15,
  "returned": 2,
  "results": [
    {
      "id": "way-1140694382",
      "name": "Tennis & Pickleball courts at McGuane Park · 15+ courts",
      "city": "Chicago, IL",
      "sports": [
        "tennis",
        "pickleball"
      ],
      "courts_by_sport": {
        "tennis": 5,
        "pickleball": 10
      },
      "open_to_public": "yes",
      "place": {
        "rel": "at",
        "name": "McGuane Park",
        "kind": "park"
      },
      "source": {
        "name": "OpenStreetMap contributors (ODbL 1.0)",
        "url": "https://www.openstreetmap.org/way/1140694382",
        "data_date": "2026-10-08"
      }
    },
    {
      "id": "way-1144168856",
      "name": "Tennis & Pickleball courts at Horner Park · 12+ courts",
      "city": "Chicago, IL",
      "sports": [
        "tennis",
        "pickleball"
      ],
      "courts_by_sport": {
        "tennis": 4,
        "pickleball": 8
      },
      "open_to_public": "yes",
      "place": {
        "rel": "at",
        "name": "Horner Park",
        "kind": "park"
      },
      "source": {
        "name": "OpenStreetMap contributors (ODbL 1.0)",
        "url": "https://www.openstreetmap.org/way/1144168856",
        "data_date": "2026-10-08"
      }
    }
  ],
  "attribution": "Data © OpenStreetMap contributors, available under the Open Database License (ODbL 1.0): https://www.openstreetmap.org/copyright",
  "data_note": "Many courts in OpenStreetMap have no name, address, lighting or fee information; 'unknown' means the data is missing, not that the answer is no."
}

Example questions

What every record contains

FieldMeaning
name, address or placeName if mapped; otherwise the park or street nearby (“at …” / “near …”)
sports, courts per sportTennis, pickleball, padel; number of courts (a lower estimate where the count is not mapped)
setting, lit, surfaceIndoor or outdoor, lighting, surface type
access, fee, open to publicPublic, private, members; free or paid; the “open to public” verdict
hours, website, operatorWhere mapped
lat, lonCoordinates
source and dateOpenStreetMap object ids, and the date of the data snapshot (data_date) on every file and answer

Unknown values are returned as “unknown”, not guessed: “unknown” means “not mapped”, not “no”. Records are built from volunteer-mapped data and are not individually verified, so they can be incomplete or out of date. Live now: Los Angeles area, San Francisco, New York, Chicago and Austin; more are coming.

What a record looks like

A real court from the directory. The same fields are in the city files you can download today (data/<city>.json), under the ODbL license.

Roosevelt Park Pickleball Court, Chicago
{
  "name": "Roosevelt Park Pickleball Court",
  "city": "Chicago",
  "sports": ["tennis", "pickleball"],
  "courts_total": 4,
  "courts_by_sport": {"tennis": 2, "pickleball": 2},
  "setting": "outdoor",
  "lit": "unknown",
  "surface": ["acrylic"],
  "access": "public",
  "fee": "no",
  "address": "62 West Roosevelt Road, Chicago, IL 60605",
  "lat": 41.867781,
  "lon": -87.630014,
  "osm_ids": ["way/1144169594"]
}

Attribution and license

The data is © OpenStreetMap contributors, available under the Open Database License 1.0. If you use it, credit it, for example: “Contains information from OpenStreetMap contributors (ODbL 1.0), via CourtlyGo.” Derived databases stay under the same license. Details: Data & license. Questions: hello@courtlygo.com.