Developer guide
Build on the ocean
Everything Perigee shows — live water levels, tide predictions, currents, weather at the gauge, and the sky above it — is yours as a clean REST API and a hosted MCP server your AI can call. Anonymous access works out of the box; a free key raises the limit 10×.
Give your AI the tides
One hosted endpoint — https://perigeetides.com/mcp — speaking MCP streamable HTTP. Pick your client:
- Run this in your terminal — that's the whole setup:
claude mcp add --transport http perigee https://perigeetides.com/mcpThen ask things like “when is the next high tide in Seattle?” or “compare current speed at cb0102 over the last two days.” Want your account's limits? Clients with a sign-in flow (claude.ai, Claude Desktop) just connect to /pro/mcp and approve the Perigee prompt — no key handling at all. Clients that send headers can keep using an API key as Authorization: Bearer on either URL.
The 26 tools
Water
- noaa_get_water_levels
- noaa_get_water_level_summaries
- noaa_get_tide_predictions
- noaa_get_currents
- noaa_get_current_predictions
Weather
- noaa_get_meteorological_data
- nws_get_wind_forecast
- nws_get_marine_forecast
Stations
- noaa_search_stations
- noaa_find_nearest_stations
- noaa_get_station_info
- noaa_get_station_datums
- noaa_get_harmonic_constituents
- noaa_get_tide_prediction_offsets
- noaa_get_station_sensors
- noaa_get_current_station_bins
- noaa_get_station_flood_levels
Derived products
- noaa_get_sea_level_trends
- noaa_get_extreme_water_levels
- noaa_get_high_tide_flooding
- noaa_get_top_ten_water_levels
Sky
- astro_get_moon_phase
- astro_get_sun_times
- astro_get_sun_position
Reference
- noaa_get_reference_guide
- perigee_whoami
The server also exposes reference topics as MCP resources (noaa://reference/…) and prompt templates for tide reports and fishing windows.
REST API
The site itself runs on these endpoints — anything the pages show, you can fetch.
| GET /api/v1/stations | directory · ?q= ?type= ?state= |
| GET /api/v1/stations/nearest | ?lat= &lon= [&type=] |
| GET /api/v1/stations/{id} | metadata, datums, flood levels |
| GET /api/v1/stations/{id}/predictions | ?interval=hilo|6|60 &hours= &datum= |
| GET /api/v1/stations/{id}/water-levels | observed · ?hours= &datum= |
| GET /api/v1/stations/{id}/conditions | latest water level, wind, temps, pressure |
| GET /api/v1/stations/{id}/forecast | NWS wind forecast + coastal waters text · ?hours= &units= |
| GET /api/v1/astronomy | ?lat= &lon= [&date= &days=] |
| POST /api/v1/decisions/trip-health | public explainable planning sample |
| POST /api/v1/decisions/best-window | rank 2–12 candidate windows · Pro |
| POST /api/v1/decisions/evaluate-rules | deterministic decision rules · Pro |
| POST /api/v1/decisions/material-change | compare prior and current inputs · Pro |
curl "https://perigeetides.com/api/v1/stations/9414290/predictions?interval=hilo&hours=48"Official SDKs
The JavaScript and Python clients share the versioned API contract, return request and quota metadata, and have no runtime dependencies. Public tide calls work without a key; keep credentials on your server for authenticated decision calls.
npm install perigee-tidespython -m pip install perigeeRate limits & keys
| Tier | Limit | Monthly | Identified by |
|---|---|---|---|
| Anonymous | 30 req/min | — | client IP |
| Free key | 300 req/min | 10,000 | Authorization: Bearer pg_live_… |
| Pro key | 3,000 req/min | 250,000 | Authorization: Bearer pg_live_… |
- MCP and REST have separate buckets, so heavy scripting never starves your AI session.
- Every response carries
X-RateLimit-*andX-Quota-Month-*headers; a 429 includesRetry-After. Commercial quota reservation fails closed instead of silently granting overage. - Connecting from claude.ai or Claude Desktop? Add
/pro/mcpas the connector URL and sign in when prompted — the OAuth connection carries your tier, so there's no key to paste (connector UIs don't accept one anyway). - Keys are shown once at creation, stored hashed, and revocable any time in the dashboard. Send them as
Authorization: Bearerorx-api-key. - Tiers and what they cost live on the pricing page.
Prefer to self-host?
The underlying MCP server is open source and runs over stdio for local use:
claude mcp add noaa -- npx -y @ryancardin/noaa-tides-currents-mcp-server