Skip to main content
Glama

What's new in a surf town

town_feed
Read-onlyIdempotent

The town's Feed: what's new there, and what Swell Cabin's data says. insights: Swell Cabin's own cards worked out from the live forecast and what's on (today's surf in plain words, the best day this week with a 7-day wave chart, go early before the wind, swell building or dropping, a beginner or experts-only day with the spots for that level, what's on tonight, upcoming events, the season and the wetsuit for this month), each { key, kind, label, title, text, chart? }. posts: recent public Bluesky and Mastodon posts about surfing the town (text, photo or link, likes, replies, link to reply). recentVideos: YouTube videos about surfing the town from the last 30 days, newest first (at most two per channel), with links to watch, whether each is portrait (a Short), its duration in seconds, views and likes; videosAt: when they were fetched from YouTube (each town's videos are fetched at most once a day, the every-town ones every 12 hours, to stay within YouTube's quota; null when there are none yet). instagramPosts: the latest posts from the town's Instagram pages and its region's (instagramAccounts: e.g. the surf club, surf schools and shops, and regional pages such as a national surf-cam network, which carry region "zone:…" or "country:XX"; pages are found and ranked from measured activity, engagement, surf focus and the places their posts name), newest first (at most 4 from one page), with likes, comments, video (every reel's mp4 to play: from Business Discovery, or from the reel's public embed page when that leaves it out) and a link to like or comment on Instagram. articles: the newest articles from the major surf magazines (Surfer, Stab, BeachGrit, Surfer Today, The Surfer's Journal, Tracks, Carve, SurfGirl, Freesurf, Eastern Surf, Zigzag, and in French, Portuguese and Spanish Surf Session, ONFIRE, Waves and Surfer Rule; never Surfline) that name the town or one of its breaks (an article about Pipeline is Haleiwa's, one about Cloud 9 General Luna's), from the last 21 days, newest first: { magazine, name, title, summary, url, image, publishedAt, tags, towns (every town it names, most prominent first), town }. Every video and post has passed Swell Cabin's quality check first: hotel, villa and rental ads, property for sale, transport and transfer guides, children's videos, video games, TV, live-cam recordings and upcoming streams, posts nobody watched or liked after a fair chance, posts with too little to show, reels Instagram plays only in its own app (licensed music), Bluesky/Mastodon posts that say surf only in their hashtags or don't name the town, and the same post again from one account are left out; promos and clickbait are kept but ranked lower (quality below 1, with qualityFlags). quality: { checked, kept, dropped: { reason: count } }; review: true also lists what was left out and why (dropped). classics: surf clips a person picked for the town's breaks (or every town's with town "all"), what the site's Feed goes on with once everything new is shown. Every video, post and classic says which languages it's written in (langs, ISO 639-1 codes, main first; none when it's too short or too full of names to tell); the site shows each visitor only what's in English or in their own language (the page's, or one their browser is set to) and what's too short to tell; languages does the same here (e.g. ["pt"]: English, Portuguese and the unsure ones). Share the links and the town's Feed page so the user can watch. town "all" gives the same across every town (no insights), each item with its town slug and page, every magazine article (one about none of our towns has no town: general surf news), plus top: the home Feed's mix ranked across towns by engagement (likes, comments, views), quality and freshness, Instagram and videos before Bluesky/Mastodon, articles about a town before general surf news (which is spaced out, at most one card in ten; any article at most one in four), automated alert accounts left out; exclude leaves towns out.

Input Schema

NameRequiredDescriptionDefault
townYesTown slug, or "all" for what's new across every town (the home page's Feed; each video and post then names its town).
limitNo
reviewNoAlso list the videos and posts the quality check left out, with why (dropped).
excludeNoWith town "all": town slugs to leave out.
languagesNoThe languages the user reads (ISO 639-1 codes, e.g. ["pt"] or ["he"]): leaves out videos and posts that are in neither English nor one of these, as the site does for each visitor. Leave out for every language.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses extensive behavior: the quality check and what it drops, ranking of promos and clickbait, YouTube fetch cadence and quota constraints, Instagram reel handling, language filtering, town "all" aggregation, top ranking rules, and exclusion behavior. It does not contradict the readOnlyHint, idempotentHint, openWorldHint, or destructiveHint annotations.

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

Conciseness2/5

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

The description is a very long, dense paragraph with nested parentheticals and implementation details such as YouTube quota timing and Instagram Business Discovery. Although it starts with a high-level purpose and labels many fields, its run-on structure makes it difficult to scan and includes more detail than an agent needs for invocation.

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?

There is no output schema, so the description must carry the return-shape burden, and it does: it enumerates the feed sections, item fields, quality metadata, language behavior, classics, and town "all" output. For a complex composite feed tool, this is complete enough for an agent to understand what will be returned.

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 description coverage is high at 80%, so the baseline is 3, but the description adds substantial meaning for town "all," review's dropped items, languages filtering, and exclude. The only notable gap is that the limit parameter is not described in either the schema or the description.

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?

The description clearly identifies the resource as the town's Feed and enumerates what it contains: insights, posts, videos, Instagram posts, articles, classics, quality metadata, and the town "all" variant. It does not explicitly differentiate this composite feed from siblings such as social_posts, whats_on, or surf_now, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description explains what the feed contains and how town "all" behaves, but it gives no explicit when-to-use guidance, no when-not-to-use conditions, and no named alternatives among the sibling tools. Usage is only implied by the word "Feed," which is not enough for strong selection 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