MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Other

Swell Cabin

Plan surf trips: surf towns and spots worldwide, rated surf forecasts, live cams and where to stay.

Checks passed
12 / 22

2 failed · 8 not measured

Median response
460 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
12

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Outdated check

Last connection measurement is over 24 hours old. Current availability is unknown.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
310
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 460 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name swellcabin.

  • Pass
    Lists tools

    tools/list returned 12 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 460 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 460 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Fail
    Parameters documented

    31 of 47 parameters have a description (66%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-11-08T18:33:04.879645Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using Swell Cabin

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http swell-cabin https://swellcabin.com/api/mcp

Capabilities

Tools 12

cam_now

What the surf cams show right now, spot by spot: every 3 hours in daylight an AI reads a still from each free surf cam Swell Cabin can read and says what it shows in the forecast's own words (words: 'Waist to chest high'; surface: Glassy, Clean, Fair, Bumpy, Choppy or Blown out; shape, how the waves break: Peeling, Peaky, Mushy, Messy or Closing out, null on readings from before it was read; crowd: none, a few or many surfers out; sure: high or medium) and what that means at that spot for its level (verdict good, fair, poor or flat; label Looks good, Surfable, Looks poor, Flat; reason small or big when the size doesn't suit it, shape when waves that close out or break messy keep it at Surfable). Each reading has its time (and local: the town's clock), the cam's page (cam, provider), what our forecast said for that spot and hour (forecast.words, rating, steps: + when the forecast said bigger) and the nearest buoy's reading. Only readings from the last 3 hours are given; a reading the nearest buoy says can't be right is left out (leftOut, with why). These are an AI's readings of a picture, not measurements: say so, give the time, and link the cam. Each spot has a score (0–10, like the forecast's rating: size on one scale for every spot × surface × how the waves break × surfers out, the mean of its cams), cams (how many were read) and rank (the reader's side-by-side rank in the town, 1 looks best, when two or more spots were read). best is what looks best across the town's cams (the rank, else the score); standout is that same reading only when the reader ranked it first on its own and it looks good or surfable (null otherwise: scores of separate readings never name one): use it to answer "which spot looks best right now in …", and when standout is null say the cams don't show one clearly ahead. With a town, that town's spots, best looking first (readings is empty when no cam was readable lately: use surf_forecast); without one, every town with a reading now, best looking first. Towns are ordered by their best spot's score. good: true keeps only spots that look good. Use it for "is it good right now at …", next to surf_forecast.

Discovered
find_surf_spots

Curated surf spots with exact coordinates, break type, direction and level. Search within a town (slug) or around any point (lat/lng + radius_km), sorted by distance.

Discovered
get_town

Full profile of one surf town: description, season, water temperature, wave types, levels and curated surf spots (each with its type, level, the way its coast faces in degrees (facing), its best tide where known (tide, e.g. "low to mid, rising", with tideSources), a reviewed, freely licensed photo of surf at that break from Wikimedia Commons when one exists, with author and licence, and reviewed YouTube surf clips filmed there: clips[].url). `dataQuality` says how far to trust the town's data (trust 0–100 and level high/medium/low, when it was last checked against sources, how many spots are verified, open audit warnings): tell the user when trust is low or the data was never checked. `surfByMonth` gives, for each month, how often the surf was good there, measured over the last three years (goodDays, greatDays: % of days rated Good or better / Great or better at the best spot; seaTempC: the mean sea temperature measured by satellite, NASA JPL MUR SST; waveHeightM; rainMm: the mean rain of the month in town) and drySeason (the measured dry months, or all/none), with its source: use it for "when should I go" (the waves, and the weather for the trip) and say it is measured, not a forecast.

Discovered
nearby_places

Places around a surf town, closest to the surf first (as on the site): stay (Places to stay), coffee (Coffee), food (Food & drinks), surf (Surf shops & schools), spots (Surf spots (community mapped)). Stays are a saved, merged OpenStreetMap + Overture Maps collection (hotels, resorts, hostels, surf camps, guesthouses, homestays, B&Bs, holiday rentals, villas, camping) with website, phone, email, socials, stars, rooms and facilities where known. Cafés, food and surf shops/schools are a saved Overture Maps collection too; community-mapped surf spots are a live OpenStreetMap lookup. Places with a reviewed, freely licensed photo (Wikimedia Commons) include it as photo { url, page, author, license }. Each place has distanceKm from the town centre and nearestSpot { name, distanceKm }: the town's curated surf spot closest to it. sort: "surf" (default) puts the places closest to any surf spot first, "distance" closest to the town centre, "stars" (places to stay) most stars first, "name" A–Z; spot (a surf spot's name from get_town) puts the places closest to that one spot first, each with toSpot { name, distanceKm }. sortedBy says the order used (a town without curated spots is in order from its centre).

Discovered
search_towns

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).

Discovered
social_posts

What Swell Cabin posts on social media, worked out from its own data: swell alerts (a swell building to 1.5 m or more with a Good-or-better day in it, on days the three wave models agree on), the best day this week (Good or better, and big enough for the word: Good from waist high, Great from chest high, Epic from head high), the weekend's best-rated towns, a town's surf season opening, surf events, the evergreen kinds (where to surf this month: the best-known towns in season with the water and wetsuit; a town spotlight from its own record; about Swell Cabin, in its own numbers), and the weekly stories (swell on the move: a long-period swell reaching towns of one region in the order it arrives; the week ahead in numbers on Mondays; the local surf scene, a town's reviewed local accounts, on Tuesdays; learn to surf this weekend on Thursdays; surf by day, out by night on Fridays; the spot of the week with a reviewed, credited surf clip on Saturdays). Cards show the town's or spot's reviewed, freely licensed photo with its credit; a list's towns follow as photo slides; a post for a spot with a reviewed clip shares the clip as its video. With a town: the posts it would make about that town now, best first, each written for Instagram, Facebook, Threads, X, Bluesky and Mastodon with its time (UTC, in the town's morning or evening), link, card image (a PNG drawn from the same facts: card for a feed post, story for 9:16) and the facts every number comes from. Without a town: the latest daily proposal across every town (the owner approves it; the approved posts go out through Buffer) and the posts already scheduled. A post names a surf spot only when it is well known (it has a cam or surf clips), and never says today or tomorrow (it goes out later than it's written).

Discovered
surf_cams

Live surf cams for a town or one of its surf spots: free cams (e.g. MEO Beachcam and Surftotal in Portugal, Viewsurf and GoSurf in France, Beach Cam Israel, WaveHub and GoSurf Israel, council, surf-school and YouTube live cams) and premium ones (Surfline), each with when it was last checked, whether it was up, when a browser last saw it play a real picture (verifiedPlaying) and whether it is video (live: true) or still pictures (live: false), and embed: how Swell Cabin shows it on its own pages where the operator allows that (kind youtube: the YouTube player URL; kind still: the SkylineWebcams picture that updates every 5 minutes, from the still API; kind player: the operator's own player, which the operator agreed Swell Cabin may show, with the date they agreed (permission); null: a link only, e.g. MEO Beachcam, whose terms keep the stream its own); pinNote explains where a network pins the cam in the wrong place. `networks` are the local cam networks that cover the town (worth checking for spots without a saved cam). Only cams Swell Cabin opened and checked are listed (Surfline last); no search links. For spots without a saved cam, `search` lists the checked networks that cover the town.

Discovered
surf_forecast

Live 7-day surf forecast for a surf town and each of its spots, rated hour by hour for that spot (rating Flat, Poor, Fair, Good, Great or Epic with a 0–10 score and the reasons why, from the way the spot's coast faces, the swell trains, their period and the wind against the coast): per day the rating, the best time window (best.from–best.to, local time, which already accounts for the tide), what to expect in surfers' words (body: 'Chest to head high', surface: Glassy/Clean/Fair/Bumpy/Choppy/Blown out), breaking surf height (surf [min, max] m), wave height range, swell height, period and direction, wind, high and low tides with heights (predicted from the nearest tide gauge: see `tide`, or approximate from the ocean model where there is none), sunrise/sunset, water temperature (the ocean model's, set to the newest satellite measurement at the town: `water` says how, with source 'satellite' and the satellite's day, 'climate' when only this month's measured difference was used, or 'model'; months: the measured mean by month) and confidence (high/medium/low: three wave models compared, ECMWF, Météo-France and NOAA, with their figures in models; a model the town's buoy has shown to be far off there is left out), and, when the models differ on a day's size by 20% or more, `range` (wave [min, max] m at sea, surf [min, max] m at the spot, body in surfers' words); the town's days name the best spot (bestSpot). `accuracy`, where the town has a buoy (NOAA, Queensland Government, E.U. Copernicus Marine or Israel Oceanographic & Limnological Research): how often the forecast was within 20% of it over the last weeks, whether sizes are corrected for the model's bias there (method 'ratio', or 'power' with fit { k, beta }: the correction depends on size), at which spots (correctedSpots: those facing the same sea as the buoy), the swell period's record and correction (period: within15 is the share of hours within 1.5 s, offset the seconds added), each wave model's own record at the buoy (models: { n, mae, within20 }), the closest one (bestModel) and the ones left out of the confidence check (unreliable). `offshore`, for every town: the open water off the town checked against the satellite altimeters' passes (Copernicus Marine, within 100 km; passes, km, from/to, within20 and within20Raw, ratio satellite ÷ model, corrected: whether sizes here are scaled by it, which happens only where no buoy correction applies, models/bestModel/unreliable offshore, and the credit line to show). `updated` says when the forecast was worked out (it is cached for up to 3 hours). Plus the next 48 hours every 3 hours, `now` (rating, why, tide rising/falling, and water: this hour's sea temperature in °C, set to the satellites like the days'; trust it as measured only where `water.source` is 'satellite' or 'climate', as the town page does) and `live`: what the nearest buoy or wave station, the newest satellite altimeter pass near the town (satellite: mission, time, km out, wave height, and what the model said there and then) and the airport wind report (METAR) measure right now, checked against the forecast (check: on-track, bigger/smaller, windier/calmer; check.factor is the nudge applied to today's sizes, from the buoy, or from the satellite where there is no buoy). When it is not 1, `nowcast` says so and today's surf and body (now, hours, today's day) are already scaled toward the measurement, as on the site; ratings stay the model's. Waves from Open-Meteo Marine, wind from MET Norway.

Discovered
surf_now

Where the surf is good around the world in the next days: every town whose best day from today up to within_days ahead is at least min_rating, best and soonest first, each with that day (rating Flat … Epic at its best spot, the spot, its best time, the surf in surfers' words, how sure the forecast is, and when: today, tomorrow or the weekday in the town's own time) and today's rating. From Swell Cabin's forecast for every town, worked out twice a day (generated says when; stale is true when it is more than 36 hours old). Use it for "where is it good right now / this weekend", then surf_forecast for one town's full forecast, and share each town's url.

Discovered
surf_pools

Wave pools and surf lakes open to the public (The Wave Bristol, URBNSURF, Alaïa Bay, Atlantic Park, DSRT Surf...): city, country, coordinates, wave technology where published (e.g. Wavegarden Cove), levels, website, notes (address, seasons), the date each was last checked and the published sources it was checked against, and a reviewed, freely licensed photo where there is one (photo: thumb, page, author, license; credit the author). Give a town slug (pools within 250 km, nearest first, with km), lat and lng (with radius_km), a country code, or nothing for all of them. Pools are inland: they work when the sea is flat, and are good for beginners and for training.

Discovered
town_feed

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.

Discovered
whats_on

What happens each night in a surf town (weekly schedule: parties, live music, DJs, comedy, movie nights, games, salsa, markets, culture) and upcoming dated events, with a short summary of the scene and the source of every entry. Defaults to tonight and the coming week, in the town's local time. Some towns aren't covered yet (covered: false).

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected460 ms12