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://perigee-two.vercel.app/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://perigee-two.vercel.app/mcpThen ask things like “when is the next high tide in Seattle?” or “compare current speed at cb0102 over the last two days.” Using a key? Send it as an Authorization: Bearer header on the same URL.
The 23 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
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
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/astronomy | ?lat= &lon= [&date= &days=] |
curl "https://perigee-two.vercel.app/api/v1/stations/9414290/predictions?interval=hilo&hours=48"Rate limits & keys
| Tier | Limit | Identified by |
|---|---|---|
| Anonymous | 30 req/min | client IP |
| Free key | 300 req/min | Authorization: Bearer pg_live_… |
| Pro key | 3,000 req/min | Authorization: Bearer pg_live_… |
- MCP and REST have separate buckets, so heavy scripting never starves your AI session.
- Every response carries
X-RateLimit-Limit / -Remaining / -Reset; a 429 includesRetry-After. - 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