Skip to main content
Glama

Search surf towns

search_towns
Read-onlyIdempotent

Find surf towns by name/country text, region, month with good surf, surfer level and wave type. All filters are optional; results are ranked most popular first (popularity.rank 1 = best known: Wikipedia readership, places to stay and surf spots) and include best months, water temperature, number of curated surf spots and a page URL. With a month, the towns are ranked by how good that month's surf measured over the last three years (good + great days) and each has inMonth: goodDays and greatDays (% of days rated Good or better, Great or better, at the town's best spot), seaTempC and waveHeightM (null where not measured yet).

Input Schema

NameRequiredDescriptionDefault
levelNo
limitNo
monthNoOnly towns whose best season includes this month (1 = January).
queryNoFree text: town, country, area or region, e.g. "portugal" or "bali".
regionNo
countryNoCountry name or ISO code, e.g. "Portugal" or "PT". Each town also has a zone (e.g. "Lisbon coast", "Canary Islands").
break_typeNo
include_towns_without_spotsNoBy default only towns with curated surf spots (the ones listed on swellcabin.com) are returned.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior5/5

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

Annotations already declare a safe read-only, idempotent, closed-world operation, and the description goes well beyond them: it discloses the default ranking basis (popularity.rank 1 = best known, derived from Wikipedia readership, places to stay, surf spots), the alternate ranking when a month is supplied (good + great days over three years at the town's best spot), and that the default excludes towns without curated spots. It also notes null semantics for seaTempC and waveHeightM, which is the kind of caveat an agent needs to interpret results.

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?

Two sentences, purpose front-loaded, then a dense but purposeful second sentence covering ranking and return fields. Every clause carries information, though the month-ranking clause is long and could be split for scanability.

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

Completeness4/5

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

With 8 parameters and no output schema, the description usefully documents the returned fields (best months, water temperature, spot count, page URL, inMonth goodDays/greatDays, seaTempC, waveHeightM). Gaps are minor: it does not describe limit/pagination behavior or the meaning of the level and break_type enum values, which are the least self-explanatory remaining parameters.

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

Parameters4/5

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

Schema coverage is 50%, with level, limit, region and break_type undocumented in the schema, but the description compensates by naming surfer level, wave type and region as filter dimensions. It also adds meaning beyond the schema for month, clarifying that it both filters ('month with good surf') and switches the ranking metric, which the schema text alone does not convey.

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

Purpose4/5

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

States a specific verb and resource ('Find surf towns') and enumerates the filterable dimensions: name/country text, region, month, surfer level, wave type. It reads clearly as a discovery/list tool, but never names a sibling such as find_surf_spots or get_town to draw the boundary explicitly.

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?

'All filters are optional' implies the no-filter browse case, and the month filter's effect is explained. However, there is no explicit statement of when to reach for this instead of the overlapping siblings (find_surf_spots for spots, get_town for detail, nearby_places for proximity), so the routing is left to inference.

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