KaiCast DEVELOPERS OpenAPI llms.txt kaicast.com Connect MCP

Use cases by activity

One model, many questions. This page says, activity by activity, what KaiCast answers and how directly it is modeled — so an agent never presents a proxy as a purpose-built forecast. The same levels are machine-readable in every decision response (activity.model) and in GET /api/v1/coverage.

Activityactivity idDecisionsModelUseful facts
SnorkelingsnorkelRanked spots, best dayNativevisibility, swell, wind, tide
Scuba divingdiveRanked spots, best dayProxyvisibility, swell, tide, water temp
FreedivingfreediveRanked spots, best dayProxyvisibility, wind, swell
SpearfishingspearfishRanked spots, best dayProxyvisibility, swell, tide
SurfingsurfDeclined (activity_not_modeled)Not modeledswell height/period/direction, wind
Kiteboarding, windsurfing, wing—Not offeredNot modeledwind speed and direction, swell

Native means the condition score was built and calibrated for that activity. Proxy means the shared, snorkel-calibrated score is a reasonable stand-in: picks carry a caveat and a confidence haircut. Not modeled means the decision tools decline and point you at the facts.

Dive visibility API #

The headline number is underwater visibility in feet per 3-hour period, up to 7 days ahead, with visibility_source telling you whether it came from satellite ocean color or a calibrated estimate. Visibility is also a hard ceiling on the condition rating, so a murky day can't be rated "great" because the wind is light.

bash
curl "https://kaicast.com/api/v1/conditions?spot=electric-beach&from=2026-10-06&to=2026-10-07"

Snorkel forecast API #

Snorkeling is KaiCast's native model. Ask for the best spots in a region on a day, or the best day at a spot:

bash
curl "https://kaicast.com/api/v1/recommendations?region=us-hi-maui&activity=snorkel&date=2026-10-06"

Scuba diving conditions #

activity=dive ranks with the shared condition score and breaks ties on visibility. Every pick carries a proxy_activity_model caveat; relay it. Conditions at depth (current, thermocline) are not scored.

Freediving conditions #

activity=freedive favors visibility, then calm wind. Depth, current and thermocline are not scored, and every pick says so. Never dive alone.

Spearfishing conditions #

activity=spearfish ranks on the shared score and visibility, and excludes spots inside Hawaiʻi DAR marine managed areas closed to spearfishing (Marine Life Conservation Districts such as Hanauma Bay, Molokini and Pūpūkea, Natural Area Reserves, and similar). Excluded spots are listed in considered.excluded with reason: closed_to_spearfishing and the closing areas named. Spots inside rules-only areas carry a regulated_area caveat. Closed seasons and bag limits are not modeled — every pick carries verify_fishing_rules. If the closure data can't be read, nothing is excluded and picks say regulations_not_checked instead.

Surf forecast data #

KaiCast does not model surf breaks, so recommend_spot and best_day return activity_not_modeled for surf rather than inventing a ranking. The facts are still there: swell height, period and direction, and wind speed and direction, per spot and period, from get_conditions.

Kiteboarding and wind sports #

There is no kite or windsurf decision model. Wind speed (knots) and direction (degrees, where it blows from) are published for every covered spot every 3 hours — enough for an agent to reason about a session, with the usual caveat that spot-level wind is a forecast, not a station reading.

Trip planners, travel and concierge agents #

Give the agent the destination and the dates; let it call best_day and recommend_spot. Answers come with confidence, caveats and a spot card to render in chat, and with an honest not_covered when the destination is outside coverage — so the agent can say so instead of hallucinating a forecast.

Marine conditions MCP server for AI assistants #

Connect https://kaicast.com/mcp to Claude, ChatGPT, Cursor, VS Code or your own agent — see MCP server. Tools mirror the REST endpoints exactly.

Anywhere in the world #

Every tool takes a latitude/longitude. KaiCast answers with numbers where it has calibrated coverage and says not_covered (with the nearest covered spot) everywhere else. Need a region? Email dawson@kaicast.com — requests shape the expansion order.