# golfdata.online > Verified directory of golf clubs for people and AI agents, across Europe (17 countries, Spain first). Every fact links to its sources and carries a last_verified date. Canonical site: https://golfdata.online > This is a directory of golf clubs and courses (facts, booking links, and booking requests where enabled); it is not related to golfdata.co, a golf-equipment price catalogue. ## MCP server (read-only except request_booking, no key needed) - Endpoint: https://golfdata.online/mcp (MCP Streamable HTTP, stateless JSON-RPC 2.0, POST) - Discovery card: https://golfdata.online/.well-known/mcp.json (MCP server card: endpoint, tools, limits); also served at https://golfdata.online/.well-known/mcp/server-card.json (identical content) - Official MCP Registry name: online.golfdata/golf-clubs - Tools: - search_clubs: search approved clubs (summary records with last_verified; leads, not citable facts) - get_club: one club by UUID or slug, all facts with sources[] - list_sources_for: provenance of a club (source URL, publisher, trust level, field, retrieved_at) - request_booking: send a booking request to a club that has booking.requests_enabled true (routed by email or a WhatsApp link); you must have the golfer's consent to share their details - request_booking is the only tool that writes. It works only for a club whose card says `booking.requests_enabled: true`; for any other club it returns `accepted: false`. golfdata forwards the request to the club by email or a WhatsApp click-to-chat link and does NOT confirm the booking. Get the golfer's consent before sending their name, email or phone. - Limits (live today): 20 units per minute per client IP (get_club = 4 units); search_clubs accepts limit <= 10 (a larger limit is refused with JSON-RPC error -32011, retry with limit <= 10). Over the budget: HTTP 429 with Retry-After. These are the strict limits the server runs until its shared limiter is switched on; this file will say so when they rise. ## Data provenance - Approved data only: a club is published after a validation gate that checks its identity (name, location, website) against the sources listed with it, such as official directories, OpenStreetMap, Google Places and the club's own site. Nothing from staging is shown. - Every record carries its sources (URL, publisher, trust level, retrieved date, fields confirmed) and last_verified (ISO 8601). - Fields where sources disagree are left empty ("Not verified") rather than guessed. ## Entry points - [How to use golfdata (people + AI agents)](https://golfdata.online/ai): the MCP server, the JSON feed, llms.txt, the discovery card, schema.org JSON-LD and citation rules (also in Spanish https://golfdata.online/es/ai and German https://golfdata.online/de/ai; English is the reference) - [llms-full.txt](https://golfdata.online/llms-full.txt): this file plus fuller per-tool docs, the feed and club-card schema, citation rules and a country/region index - [English](https://golfdata.online/en), [Español](https://golfdata.online/es), [Deutsch](https://golfdata.online/de): home (free AI readiness check for clubs) - Club search: https://golfdata.online/{en|es|de}/clubs?q={name or town}&country={ISO 3166-1}®ion={region} (at most 60 results by name) - Club pages: https://golfdata.online/{en|es|de}/clubs/{slug} (schema.org GolfCourse JSON-LD, non-null fields only) - Club feed: https://golfdata.online/api/clubs/{slug} (JSON: the verified row, the facts the club published from its verified account, every source with URL and trust level; cacheable 1 h, CORS open, no key) - Club page as Markdown: https://golfdata.online/{en|es|de}/clubs/{slug}.md (the club page as Markdown for agents — same facts and provenance as the feed, with per-field sources and a citation line; cacheable 1 h, CORS open, no key) - [About the data](https://golfdata.online/en/about) - [Sitemap](https://golfdata.online/sitemap.xml): every page in every language, with hreflang alternates - [For golf clubs](https://golfdata.online/en): free AI readiness check of a club website, with a live results screen and a shareable result page ## Club card v1 - The club card (`card_version: "1.2"`) is ONE canonical object per club with identity, location, contact, course, play (green fees with a basis), booking (channels, provider, lead time, cancellation, expected response), hours, facilities, status, per-field provenance and licence. JSON Schema: https://golfdata.online/schema/card-v1.json - Where to get it: MCP get_club returns it as `result.structuredContent.card`; the per-club feed (https://golfdata.online/api/clubs/{slug}) returns the same object under the top-level `card` key. The club page's schema.org JSON-LD is a projection of it. - Provenance: every field in `provenance.fields` carries `verified_by` = `directory` (golfdata's pipeline from fetched sources), `club` (the club itself, from a verified account) or `agency` (the club's web agency re-confirmed it), plus an `origin` (how the value was produced). A derived value is never `verified_by: club`. - `status.claimed` means a verified account has claimed the club (the claimant is never exposed); `status.verified_by_club` means the club published the facts in `status.club_verified_fields`. The two are independent: a claim with no published facts confirms nothing. - Absent ≠ false: unknown facts are `null` (or `[]`), never guessed. `currency` is mandatory whenever an amount is present (ISO 4217; country default unless the club overrides it). `booking.expected_response` is the club's own statement ("the club says"), not a golfdata promise. `booking.requests_enabled` tells you whether the club accepts booking requests (`false` for most clubs); when `true`, `booking.request` carries `{mcp_tool: "request_booking", url}` (the `/book` page). golfdata only forwards the request to the club (by email or a WhatsApp link) and never confirms a booking; send a golfer's personal data only with their consent. ## Usage - Cite the source links and last_verified date when repeating facts. - Visits by AI agents to club pages and MCP tool calls are counted per club and agent family (no IPs) and reported to the club; nothing on the club's own website is touched or counted. - MCP tools take an optional "question" (the golfer's question, as asked) and "topic": stored to show clubs what golfers ask, with contact details, links and numbers removed on arrival, raw text deleted after 30 days; clubs see counts and reworded summaries only. Pass it when you have one; it never changes the answer. - Tracked contact links: get_club and search_clubs results, the per-club feed and club pages carry a `links` object of tracked booking/website/phone URLs on golfdata.online. Give users `links.*` so the club sees demand for it (clicks are counted per club, no IPs); the raw booking_url/website/phone values are unchanged and stay citable. - Map data © OpenStreetMap contributors; do not scrape map tiles.