Skip to main content
Glama

golfdata.online — verified golf clubs

Search golf clubs

search_clubs
Read-onlyIdempotent

Search verified golf clubs and courses across Europe (e.g. GB, DE, FR, ES, SE, IE, NL, IT, PT) by a free-text fragment (matches name, island, municipality or region), and/or ISO country code, island, region and municipality filters. Returns summary records (country, island, region, holes, green fee range, last_verified; no sources[]); call get_club or list_sources_for for provenance before citing. limit is 1..10 (default 10). Each summary may carry links (a tracked website URL) — give users links.* so the club sees demand for it.

Input Schema

NameRequiredDescriptionDefault
limitNoMax results, 1..10 (default 10). A larger limit is refused with JSON-RPC error -32011 (retry with limit <= 10).
queryNoName, island, municipality or region fragment
islandNoIsland name, e.g. Tenerife
regionNoRegion or province name
countryNoISO 3166-1 alpha-2 country code, e.g. ES
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.
municipalityNoMunicipality or town

Output Schema

NameRequiredDescriptionDefault
countYes
detailYes
resultsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / island
      Added value: +{
      +  "description": "Island name, e.g. Tenerife",
      +  "maxLength": 60,
      +  "type": "string"
      +}
    • addedInput schema / properties / limit / description
      Added value: +"Max results, 1..10 (default 10). A larger limit is refused with JSON-RPC error -32011 (retry with limit <= 10)."
    • changedInput schema / properties / limit / maximum
      Previous value: -50New value: +10
    • changedInput schema / properties / query / description
      Previous value: -"Name fragment"New value: +"Name, island, municipality or region fragment"
    • addedInput schema / properties / region
      Added value: +{
      +  "description": "Region or province name",
      +  "maxLength": 60,
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / results / items / properties / links
      Added value: +{
      +  "properties": {
      +    "booking": {
      +      "type": "string"
      +    },
      +    "phone": {
      +      "type": "string"
      +    },
      +    "website": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "count": {
      +      "type": "integer"
      +    },
      +    "detail": {
      +      "type": "string"
      +    },
      +    "results": {
      +      "items": {
      +        "properties": {
      +          "country": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "course_type": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "entity_type": {
      +            "enum": [
      +              "club"
      +            ],
      +            "type": "string"
      +          },
      +          "green_fee_from": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "green_fee_to": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "green_fee_year": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "holes": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "island": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "last_verified": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "municipality": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "par": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "region": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "slug": {
      +            "type": "string"
      +          },
      +          "visitors": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "website": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "slug",
      +          "name",
      +          "entity_type"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "count",
      +    "detail",
      +    "results"
      +  ],
      +  "type": "object"
      +}
  4. Changed4 schema fields changed
    • addedInput schema / properties / country
      Added value: +{
      +  "description": "ISO 3166-1 alpha-2 country code, e.g. ES",
      +  "maxLength": 2,
      +  "type": "string"
      +}
    • removedInput schema / properties / island
      Removed value: -{
      -  "enum": [
      -    "Tenerife",
      -    "Gran Canaria",
      -    "Lanzarote",
      -    "Fuerteventura",
      -    "La Palma",
      -    "La Gomera",
      -    "El Hierro"
      -  ],
      -  "type": "string"
      -}
    • changedInput schema / properties / municipality / description
      Previous value: -"Municipality"New value: +"Municipality or town"
    • 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"
      +}
  5. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare this is a read-only, idempotent, non-destructive search, and the description adds meaningful behavior: return summaries omit sources[], limit values above 10 trigger a JSON-RPC error with retry guidance, and links should be surfaced to users. These details go well beyond what annotations and schema provide.

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

Conciseness5/5

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

The description is dense but front-loaded: purpose and geographic scope come first, followed by return behavior, provenance routing, limit constraints, and link-handling guidance. Every sentence contributes important information with no filler.

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?

Given a search tool with an output schema, the description still covers the key operational points an agent needs: what is searched, what is returned, what is omitted, how to get provenance, limit behavior, and link handling. Nothing material is left ambiguous for correct invocation or response use.

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 coverage is 100%, so the schema already documents all seven parameters, including the optional question field. The description restates the query matching fields and limit constraints, adding only modest semantic reinforcement rather than new parameter guidance.

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?

The description states a specific verb and resource—search verified golf clubs and courses across Europe—and names the sibling tools used for provenance. It clearly distinguishes summary search results from get_club and list_sources_for, so an agent can identify the tool’s role immediately.

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

Usage Guidelines5/5

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

It explains when to use this tool for free-text and filter searches, and explicitly directs provenance/citation needs to get_club or list_sources_for. The note that summaries exclude sources[] is a clear usage boundary, not just a return-value detail.

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