Skip to main content
Glama

golfdata.online — verified golf clubs

Get golf club details

get_club
Read-onlyIdempotent

Get one approved club by UUID or slug, with all facts, sources[] (max 200; sources_truncated: true if cut) and club_facts: what the club itself published from its verified account (green fee, visitor rules, booking link, hours, buggies, dress code, languages), or null. phone is in E.164 (e.g. +441375891352). links carries tracked booking/website/phone URLs — give users links.* so the club sees demand for it (the raw booking_url/website/phone fields are unchanged).

Input Schema

NameRequiredDescriptionDefault
topicNoWhat the golfer wants to know (optional).
questionNoThe golfer's question, as asked (optional). It is stored, cleaned of personal data, and shown to the club as what golfers ask; it does not change the answer.
id_or_slugYesUUID or slug

Output Schema

NameRequiredDescriptionDefault
idNo
latNo
lngNo
parNo
cardNo
nameNo
slugNo
emailNo
foundYes
holesNo
linksNo
phoneNo
islandNo
regionNo
addressNo
countryNo
sourcesNo
versionNo
websiteNo
currencyNo
designerNo
length_mNo
postcodeNo
visitorsNo
club_factsNo
facilitiesNo
length_teeNo
updated_atNo
booking_urlNo
course_typeNo
entity_typeNo
year_openedNo
green_fee_toNo
handicap_maxNo
municipalityNo
slope_ratingNo
course_ratingNo
federation_idNo
last_verifiedNo
green_fee_fromNo
green_fee_yearNo
club_facts_noteNo
sources_truncatedNo
booking_requests_enabledNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedOutput schema / properties / card / properties / card_version / const
      Previous value: -"1.1"New value: +"1.2"
    • addedOutput schema / properties / course_rating
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / length_m
      Added value: +{
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / length_tee
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / slope_rating
      Added value: +{
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / links
      Added value: +{
      +  "properties": {
      +    "booking": {
      +      "type": "string"
      +    },
      +    "phone": {
      +      "type": "string"
      +    },
      +    "website": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [],
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • addedOutput schema / properties / booking_requests_enabled
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / card / properties / card_version / const
      Previous value: -"1.0"New value: +"1.1"
  4. Changed1 schema field changed
    • addedOutput schema / properties / card
      Added value: +{
      +  "properties": {
      +    "card_version": {
      +      "const": "1.0",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "card_version"
      +  ],
      +  "type": "object"
      +}
  5. Changed8 schema fields changed
    • addedOutput schema / properties / club_facts / properties / facts / properties / booking_email
      Added value: +{}
    • addedOutput schema / properties / club_facts / properties / facts / properties / buggy_price
      Added value: +{}
    • addedOutput schema / properties / club_facts / properties / facts / properties / cancellation
      Added value: +{}
    • addedOutput schema / properties / club_facts / properties / facts / properties / expected_response
      Added value: +{}
    • addedOutput schema / properties / club_facts / properties / facts / properties / green_fees
      Added value: +{}
    • addedOutput schema / properties / club_facts / properties / facts / properties / hours_structured
      Added value: +{}
    • addedOutput schema / properties / club_facts / properties / facts / properties / lead_time
      Added value: +{}
    • addedOutput schema / properties / club_facts / properties / facts / properties / whatsapp_e164
      Added value: +{}
  6. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "address": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "booking_url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "club_facts": {
      +      "properties": {
      +        "facts": {
      +          "properties": {
      +            "booking_url": {},
      +            "buggy": {},
      +            "dress_code": {},
      +            "green_fee_from": {},
      +            "green_fee_to": {},
      +            "green_fee_year": {},
      +            "handicap_max": {},
      +            "hours": {},
      +            "languages": {},
      +            "notes": {},
      +            "visitors": {}
      +          },
      +          "required": [],
      +          "type": "object"
      +        },
      +        "published_at": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "published_at",
      +        "facts"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "club_facts_note": {
      +      "type": "string"
      +    },
      +    "country": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "course_type": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "currency": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "designer": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "email": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "entity_type": {
      +      "enum": [
      +        "club"
      +      ],
      +      "type": "string"
      +    },
      +    "facilities": {},
      +    "federation_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "found": {
      +      "type": "boolean"
      +    },
      +    "green_fee_from": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "green_fee_to": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "green_fee_year": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "handicap_max": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "holes": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "island": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "last_verified": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "lat": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "lng": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "municipality": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "par": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "phone": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "postcode": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "region": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "slug": {
      +      "type": "string"
      +    },
      +    "sources": {
      +      "items": {
      +        "properties": {
      +          "extracted_value": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "field": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "publisher": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "retrieved_at": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "trust_level": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "sources_truncated": {
      +      "type": "boolean"
      +    },
      +    "updated_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "version": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "visitors": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "website": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "year_opened": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "found"
      +  ],
      +  "type": "object"
      +}
  7. Changed2 schema fields changed
    • addedInput schema / properties / question
      Added value: +{
      +  "description": "The golfer's question, as asked (optional). It is stored, cleaned of personal data, and shown to the club as what golfers ask; it does not change the answer.",
      +  "maxLength": 500,
      +  "type": "string"
      +}
    • addedInput schema / properties / topic
      Added value: +{
      +  "description": "What the golfer wants to know (optional).",
      +  "enum": [
      +    "green_fee",
      +    "booking",
      +    "hours",
      +    "visitors",
      +    "handicap",
      +    "buggy",
      +    "dress_code",
      +    "languages",
      +    "contact",
      +    "course",
      +    "other"
      +  ],
      +  "type": "string"
      +}
  8. First observed

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations (which only declare read-only/idempotent/non-destructive) by disclosing the 200-source cap and the sources_truncated flag, that club_facts can be null, the E.164 phone format, and that links.* are tracked URLs while raw fields stay unchanged. These are exactly the non-obvious traits an agent needs to interpret results correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads verb, resource, and lookup key, then layers return-shape and usage notes; nearly every clause carries information. It is dense with parentheticals (max 200; sources_truncated; the raw fields are unchanged) that make it slightly harder to scan than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still supplies the interpretive context that matters (truncation semantics, nullability of club_facts, link tracking). For a single-record read with full annotation coverage, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented; the description adds little on parameters beyond restating that the lookup key is a UUID or slug. It never mentions the topic enum or how topic interacts with the returned club_facts, which would have been the value-add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one approved club by UUID or slug') and enumerates the payload it returns (facts, sources[], club_facts). This clearly separates it from the sibling search_clubs (many results, query-based) and list_sources_for (sources only), so an agent can pick it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The identifier requirement ('by UUID or slug') implies you must resolve a club via search_clubs first, but that prerequisite is never stated and no sibling is named as an alternative. The only explicit guidance is output-side ('give users links.* so the club sees demand'), not when-to-call guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources