# Ocean conditions API and MCP server for AI agents

**KaiCast answers "how's the water?" for a place and a date** — water visibility, swell, wind, tide and water temperature, plus *where* and *which day* to dive, snorkel, freedive or spearfish. It is one API with two doors: a REST API and a remote MCP server that drops into Claude, ChatGPT, Cursor, VS Code or your own agent.

Under the hood KaiCast is an ocean-conditions model: it fuses NOAA buoys and tides, PacIOOS ocean models, Open-Meteo Marine and satellite ocean-color data into a **water-visibility forecast** that is checked nightly against divers' logged observations. It is the same engine behind the KaiCast app.

**Location is a parameter everywhere — ask about any coordinates on Earth.** Where KaiCast has calibrated data, you get numbers; where it doesn't, you get an explicit `not_covered` answer with the nearest covered spot, never a guess. Coverage grows region by region (see [Coverage](https://kaicast.com/developers/coverage)).

There are two layers:

| Layer | What it answers | Price |
|---|---|---|
| **Facts** | "What are conditions at this spot, these days?" — visibility, swell, wind, tide, water temperature, a 0–100 condition score, per 3-hour period. | **Free**, no key |
| **Decisions** | "Where should I snorkel tomorrow?" "Which day this week is best for diving at Hanauma Bay?" — ranked picks with *why*, confidence and caveats, plus a branded KaiCast spot card. | **Free during early access** |

Both layers are available two ways, with identical answers:

- **REST API** at `https://kaicast.com/api/v1/…` — described by [`/openapi.json`](https://kaicast.com/openapi.json). See [REST API](https://kaicast.com/developers/rest).
- **MCP server** at `https://kaicast.com/mcp` — four tools for any MCP client. See [MCP server](https://kaicast.com/developers/mcp).

## Quickstart

**Facts — one spot, the next few days:**

```bash
curl "https://kaicast.com/api/v1/conditions?spot=hanauma-bay&from=2026-10-06&to=2026-10-08"
```

**Decision — the best snorkel spots on Oʻahu tomorrow:**

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

**Decision — the best day this week to dive near a point:**

```bash
curl "https://kaicast.com/api/v1/best-day?lat=21.27&lon=-157.82&radius_km=25&activity=dive"
```

**MCP — add KaiCast to Claude Code:**

```bash
claude mcp add --transport http kaicast https://kaicast.com/mcp
```

Then ask: *"Where's the best place to snorkel on Oʻahu tomorrow morning?"*

## What makes the answers trustworthy

- **Location is always a parameter.** Every endpoint takes a spot, a region, or a latitude/longitude. Places KaiCast doesn't cover get an honest `not_covered` answer with the nearest covered spot — never a guess.
- **Decisions quote the facts.** A recommendation's score and visibility are exactly what `/api/v1/conditions` returns for that spot and period. The decision layer chooses and explains; it never re-derives a number.
- **Confidence comes with its reasons** — satellite vs. estimated visibility, data freshness, forecast lead time, and how directly the model fits the activity.
- **Caveats are first-class.** Estimated visibility, long lead times, marginal conditions, and activities scored by proxy (scuba, freediving, spearfishing) are all flagged in a stable, machine-readable form.

## Use cases

Dive and snorkel trip planners, travel and concierge agents, dive-shop and charter tools, chat assistants, and anything that needs a marine forecast with a reason attached. Activity-by-activity support — scuba, snorkeling, freediving, spearfishing, surfing, kiteboarding — is on [Use cases](https://kaicast.com/developers/use-cases).

## Coverage

KaiCast covers the main Hawaiian Islands today — Oʻahu, Maui, Kauaʻi, Hawaiʻi Island and Molokaʻi — and is built to expand region by region. See [Coverage](https://kaicast.com/developers/coverage) for the live list and data quality per region.

## Using the answers

Forecasts are model estimates, not a safety guarantee. Every response carries a `source` object (`name`, `url`, `docs`, `citation`) — when you show KaiCast results, cite KaiCast with a link to kaicast.com, relay caveats, and link to the full forecast — every decision response includes a spot card with that link ready to render. Terms for commercial use are on the [Pricing](https://kaicast.com/developers/pricing) page.

## For agents reading this page

A plain-text index of these docs is at [`/developers/llms.txt`](https://kaicast.com/developers/llms.txt), and every page has a Markdown twin (append `.md`, e.g. [`/developers/mcp.md`](https://kaicast.com/developers/mcp.md)). The full docs in one file: [`/developers/llms-full.txt`](https://kaicast.com/developers/llms-full.txt).

## FAQ

### Is there a free ocean conditions API?

Yes. KaiCast's facts — water visibility, swell, wind, tide, water temperature and a condition score per spot in 3-hour periods up to 7 days ahead — are free and need no API key. Decisions (ranked spot picks and best-day answers) are also free during early access.

### Is there a dive visibility API?

KaiCast forecasts underwater visibility in feet for each covered spot, from satellite ocean color where available and a calibrated estimate otherwise, and says which one each number came from. Call `GET /api/v1/conditions` or the `get_conditions` MCP tool.

### Is there an MCP server for marine or ocean conditions?

Yes: `https://kaicast.com/mcp` is a remote, stateless Streamable HTTP MCP server with four tools — `get_conditions`, `list_coverage`, `recommend_spot` and `best_day`. No authentication is required.

### Which locations does KaiCast cover?

Every endpoint accepts any latitude and longitude. Today the calibrated coverage is the main Hawaiian Islands (Oʻahu, Maui, Kauaʻi, Hawaiʻi Island and Molokaʻi); outside it you get an explicit not-covered answer. The live list is at `GET /api/v1/coverage`.

### Does KaiCast forecast surf or kiteboarding?

It does not rank surf breaks or kite spots. It does publish the swell height, period and direction and the wind speed and direction for every covered spot, so an agent can reason about them; decision tools return `activity_not_modeled` for surf instead of guessing.

### How should I attribute KaiCast?

Use the `source` object in each response: cite "KaiCast" and link to https://kaicast.com. Decision responses also include a spot card with a link to the full forecast.
