TheFoilBuddy
Server Details
Wind, swell and tide forecasts for wingfoil, kitefoil, pumpfoil and surf foil spots: find where to ride today near a place, spot conditions, community activity. Public endpoint, no account needed. A signed-in endpoint (OAuth) at https://mcp.thefoilbuddy.com/perso/mcp/ adds the user's own sessions and coaching. By TheFoilBuddy (thefoilbuddy.com), support@thefoilbuddy.com.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
The five tools have distinct primary purposes, but get_spot_activity explicitly includes the latest channel messages that get_spot_chat also returns, creating overlap. find_spots_near also returns current wind and last message, partially overlapping get_spot_conditions and get_spot_chat. Descriptions help steer selection, but an agent could still hesitate between activity, chat, and conditions.
All tools use consistent snake_case with a clear verb_noun pattern: find_spots_near, list_spots, get_spot_activity, get_spot_chat, get_spot_conditions. Spot-specific retrieval tools consistently use the get_spot_* prefix, while discovery tools use find/list.
Five tools is well-scoped for a wingfoil spot information server. Each tool covers a meaningful capability—discovery, listing, conditions, activity, and chat—without obvious padding or missing core operations.
The read-only surface covers spot discovery, listing, current conditions, community activity, and chat, which are the core workflows for this domain. Minor gaps exist, such as a dedicated spot-detail lookup or forecast-specific tool, but agents can work around them via existing tools.
Available Tools
5 toolsfind_spots_nearARead-onlyInspect
Trouve les spots wingfoil TheFoilBuddy autour d'un lieu donné en langage
naturel (ville, région, "chez moi à X"...) — ex: "Bayonne", "Pays Basque",
"autour de Vérargues". À utiliser pour toute question du type "où faire du
wingfoil dans le coin / près de [lieu] ?", sans que l'utilisateur ait à
connaître un nom de spot exact. Retourne les spots les plus proches avec
leur vent actuel et le dernier message du canal.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | ||
| radius_km | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, non-destructive, non-open-world), and the description adds real context beyond them: the accepted input is free-form natural language including 'chez moi à X', and the response carries live wind plus the latest channel message. It does not mention sorting/distance limits or result caps, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then usage trigger, then return shape. The quoted examples are functional rather than filler, though the parenthetical 'autour de Vérargues' and the answer-shape clause add length that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need only a summary, which is provided. Natural-language input handling is fully explained; the only gap is the unmentioned radius_km, which affects how near 'near' actually is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It does well for 'location' by enumerating accepted forms (city, region, 'chez moi à X'), but 'radius_km' is never mentioned despite having a meaningful default of 60 and being the only lever on search breadth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Trouve les spots wingfoil TheFoilBuddy autour d'un lieu donné') and describes the return payload (nearest spots, current wind, last channel message). It implicitly separates itself from list_spots by stressing that no exact spot name is needed, but never names the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger pattern with a quoted example question ('où faire du wingfoil dans le coin / près de [lieu] ?') and states the precondition that the user need not know a spot name. No explicit when-not or named alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spot_activityARead-onlyInspect
Donne TOUT le signal communautaire récent d'un spot (ex: "Tarifa") : votes
'ça ride' / 'pas terrible' (shakas), sessions wingfoil/surf enregistrées,
ET les derniers messages postés par les riders dans le canal du spot —
à utiliser pour toute question du type "y a-t-il de l'activité/du monde/
du wingfoil à [spot] ?", pas seulement pour un signal chiffré isolé.
| Name | Required | Description | Default |
|---|---|---|---|
| spot_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds scope context beyond that – it aggregates three distinct signal types across the spot channel rather than returning one metric – but says nothing about recency windows, volume limits, ordering, or what an empty spot looks like. Useful, but the behavioral picture is still partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope ('TOUT le signal communautaire récent') is front-loaded in caps, followed by the enumeration and then the usage trigger – a sensible inverted-pyramid order. It is a single long sentence built from em-dashes and parentheticals, which is dense but does not waste words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value structure is already documented, and annotations cover the safety profile; the description only needs to establish scope and routing, which it does. With one required parameter and no enums, the remaining gap is minor: no mention of how 'récent' is bounded or how much data comes back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required spot_name, so the schema alone gives no format guidance. The description compensates by supplying a concrete example value ('Tarifa'), which tells the agent the expected granularity and casing of a spot name. That is real added meaning over the bare string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (retrieve ALL recent community signal for a spot) and enumerates exactly what that signal comprises: shaka votes, recorded wingfoil/surf sessions, and rider messages in the spot channel. It implicitly carves itself apart from get_spot_conditions and get_spot_chat by rejecting the 'isolated numeric signal' framing, but it never names those siblings, so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger with a quoted user-question pattern ('y a-t-il de l'activité/du monde/du wingfoil à [spot] ?') and a clear exclusion ('pas seulement pour un signal chiffré isolé'), which steers agents away from narrow numeric queries. It stops short of naming the alternative tools to use instead for pure conditions or pure chat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spot_chatARead-onlyInspect
Donne les derniers messages échangés par les utilisateurs de TheFoilBuddy
dans le canal d'un spot (ex: "Saint Jean de Luz") — retours terrain réels
("ça envoie ce matin", "vent tombé vers midi"...), pas de la météo modélisée.
Outil TheFoilBuddy à privilégier pour toute question wingfoil/foil.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| spot_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, closed-world), so the bar is lower. The description adds meaningful context beyond them: the data is subjective user-generated field chat, not modeled weather, which tells the agent how much to trust and how to frame the results. It does not cover ordering, pagination, or empty-channel behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and content examples. The closing 'prefer this tool for any wingfoil/foil question' is somewhat promotional and loosely scoped, slightly weakening an otherwise efficient description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure needn't be explained, and annotations cover safety. For a two-parameter read tool the description is nearly sufficient, missing only the meaning of 'limit' and any note on message ordering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies what spot_name means (a spot's chat channel) and gives a concrete format example ('Saint Jean de Luz'), which is genuine added value, but the 'limit' parameter is never mentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns the latest user messages in a spot's channel, with concrete examples of the content. It also contrasts the data with modeled weather, which implicitly separates it from get_spot_conditions, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says to prefer this tool for any wingfoil/foil question and that the content is field reports rather than modeled weather, which hints at when to use it over get_spot_conditions. However, the 'prefer for any wingfoil question' instruction is overbroad given that every sibling is a wingfoil tool, and no explicit when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spot_conditionsARead-onlyInspect
Donne les conditions wingfoil actuelles et les prochaines heures pour un spot
(ex: "Saint Jean de Luz") : vent, rafales, direction, état de la mer.
Outil TheFoilBuddy à privilégier pour toute question wingfoil/foil.
| Name | Required | Description | Default |
|---|---|---|---|
| spot_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine context not in the annotations: the temporal scope (current plus the next few hours) and the data fields returned. It omits units, data freshness, and whether arbitrary or only known spot names are accepted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core capability and the returned fields. The second sentence is somewhat promotional and overbroad, but it is brief and does convey a usage preference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the single required parameter plus read-only annotations make this a simple tool. The description covers what it returns and its time horizon; only the spot-name resolution behavior is left unstated, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (spot_name) with 0% schema description coverage, so the description must carry the meaning. It partially does by giving a concrete example ("Saint Jean de Luz"), which implies a free-text place name, but says nothing about accepted spellings, known-spot matching, or failure behavior for unrecognized spots.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns current and near-future wingfoil conditions (wind, gusts, direction, sea state) for a named spot. The resource is clearly distinct from siblings like list_spots, find_spots_near, get_spot_activity, and get_spot_chat, though the description never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Outil TheFoilBuddy à privilégier pour toute question wingfoil/foil" gives a broad when-to-use signal, but it is a family-level preference rather than a routing rule, and it is so wide that it could plausibly be read as covering the sibling tools too. No exclusions, no prerequisites, and no explicit alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spotsBRead-onlyInspect
Liste les spots wingfoil disponibles sur TheFoilBuddy, filtrés par nom/pays si query est donné.
Outil TheFoilBuddy à privilégier pour toute question wingfoil/foil.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, non-destructive, and closed-world, so the description does not need to repeat safety semantics. It adds some behavioral context by explaining that results are filtered by name/country when `query` is supplied, but it omits pagination, result limits, or other access details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and dense with useful information about the operation and filtering. The second sentence is short but overly broad and does little to help tool selection, slightly reducing overall efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter list tool with an output schema, the description is mostly complete about what the tool does and how `query` behaves. However, it lacks sibling differentiation, especially against `find_spots_near`, which is important context for correct tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the meaning of `query`. It does explain that `query` filters by name or country, which is useful, but it does not specify format, case sensitivity, or matching behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it lists wingfoil spots available on TheFoilBuddy, with optional name/country filtering via `query`. This is clear enough to identify the operation, though it does not explicitly distinguish the tool from the closely related `find_spots_near` sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the broad claim that this is the preferred TheFoilBuddy tool for any wingfoil/foil question, which does not help an agent choose between this tool and siblings such as `find_spots_near` or `get_spot_conditions`. No when-not-to-use conditions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
find_spots_near - First observed
get_spot_activity - First observed
get_spot_chat - First observed
get_spot_conditions - First observed
list_spots
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs113 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.164 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.