Koskamo

Perigee Tides MCP

A hosted MCP server providing 26 tools for NOAA tide predictions, current speeds, water levels, meteorological data, station search, and astronomical data for US coastal stations.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Perigee Tides MCP logo, by Cardin LLCCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by Cardin LLC
You need:Anonymous access works out of the boxa free key raises the limit 10×
MCP endpoint (Streamable HTTP)
https://perigeetides.com/mcp
Vendor documentation

What its tools do

26 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

26 of 26 have a description · 26 of 26 declare behavior hints · 25 of 25 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Retrieve high and low tide predictions for specific stations
  • Get observed water levels and current speeds
  • Search for NOAA stations by name or location
  • Fetch sun, moon, and twilight data for coastal planning

Source and maintenance

Community listingRegistry 2.1.0
Maintenance checked

Protocol and capabilities

Server
noaa-tides-currents-mcp-server 2.0.0
MCP protocol negotiated in check
2025-11-25
Tools
26 advertised
Resources
11 advertised
Resource templates
1 advertised
Prompts
4 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  },
  "completions": {}
}

Tools

26 advertised

noaa_get_water_levels — Get Observed Water Levels
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get observed water levels from a NOAA tide station as a time series. Choose the interval: "6" = standard 6-minute observations (preliminary or verified, max 31 days per request), "1" = 1-minute preliminary data (max 4 days), "hourly" = verified hourly heights (max 1 year). Heights are relative to the requested datum (MLLW by default — the US nautical chart zero). Returns per record: t (timestamp in requested time zone), v (height), s (sigma), f (quality flags, decoded in output), q (p=preliminary, v=verified). Recent data is preliminary; verification takes days to weeks. Use for: "what is the water level right now" (date=latest), storm surge analysis, comparing observed vs predicted tide. Do NOT use for future tides — use noaa_get_tide_predictions.

noaa_get_water_levels input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "date": {
      "enum": [
        "today",
        "latest",
        "recent"
      ],
      "type": "string",
      "description": "Shortcut window: \"today\" = midnight to now, \"latest\" = single most recent reading, \"recent\" = last 72 hours. Mutually exclusive with begin_date/end_date/range."
    },
    "datum": {
      "enum": [
        "MHHW",
        "MHW",
        "MTL",
        "MSL",
        "MLW",
        "MLLW",
        "NAVD",
        "STND",
        "IGLD",
        "LWD",
        "CRD"
      ],
      "type": "string",
      "default": "MLLW",
      "description": "Vertical reference datum for heights. MLLW is the standard chart datum for coastal stations. IGLD and LWD apply to Great Lakes stations ONLY; NAVD/CRD exist only at stations where computed. Check a station's supported datums with noaa_get_station_datums."
    },
    "range": {
      "type": "integer",
      "description": "Number of hours. With begin_date: hours forward. With end_date: hours back. Alone: hours back from now.",
      "exclusiveMinimum": 0
    },
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "end_date": {
      "type": "string",
      "description": "End date/time. Same formats as begin_date."
    },
    "interval": {
      "enum": [
        "1",
        "6",
        "hourly"
      ],
      "type": "string",
      "default": "6",
      "description": "Observation interval: \"6\" = 6-minute (standard, 31-day max), \"1\" = 1-minute preliminary (4-day max), \"hourly\" = verified hourly heights (1-year max)."
    },
    "time_zone": {
      "enum": [
        "gmt",
        "lst",
        "lst_ldt"
      ],
      "type": "string",
      "default": "lst_ldt",
      "description": "Time zone for timestamps: gmt = UTC, lst = station local standard time (no DST), lst_ldt = station local time with DST. Note: daily_mean data requires lst."
    },
    "begin_date": {
      "type": "string",
      "description": "Start date/time. Formats: yyyyMMdd, \"yyyyMMdd HH:mm\", MM/dd/yyyy, or ISO yyyy-MM-dd[THH:mm]."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_water_levels output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_water_levels annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_water_level_summaries — Get Water Level Summaries (High/Low, Daily, Monthly)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get verified summary water-level products from a NOAA station: - high_low: each day's observed highs/lows with ty = HH (higher high), H, L, LL (lower low). Max 1 year per request. - daily_mean: daily mean levels — GREAT LAKES STATIONS ONLY; NOAA requires local standard time, which this tool applies automatically. Max 10 years. - daily_max_min: daily maxima/minima from hourly and 6-minute data with completeness percentages. Max 10 years. - monthly_mean: monthly tidal datum means (columns MHHW, MHW, MSL, MTL, MLW, MLLW, DTL, GT, MN, DHQ, DLQ, HWI, LWI, highest, lowest). Max 200 years — ideal for long-term climatology. Use for: historical extremes, mixed-tide analysis (HH vs H), long-term averages. For raw time series use noaa_get_water_levels; for future tides use noaa_get_tide_predictions.

noaa_get_water_level_summaries input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station",
    "product"
  ],
  "properties": {
    "date": {
      "enum": [
        "today",
        "latest",
        "recent"
      ],
      "type": "string",
      "description": "Shortcut window: \"today\" = midnight to now, \"latest\" = single most recent reading, \"recent\" = last 72 hours. Mutually exclusive with begin_date/end_date/range."
    },
    "datum": {
      "enum": [
        "MHHW",
        "MHW",
        "MTL",
        "MSL",
        "MLW",
        "MLLW",
        "NAVD",
        "STND",
        "IGLD",
        "LWD",
        "CRD"
      ],
      "type": "string",
      "default": "MLLW",
      "description": "Vertical reference datum for heights. MLLW is the standard chart datum for coastal stations. IGLD and LWD apply to Great Lakes stations ONLY; NAVD/CRD exist only at stations where computed. Check a station's supported datums with noaa_get_station_datums."
    },
    "range": {
      "type": "integer",
      "description": "Number of hours. With begin_date: hours forward. With end_date: hours back. Alone: hours back from now.",
      "exclusiveMinimum": 0
    },
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "product": {
      "enum": [
        "high_low",
        "daily_mean",
        "daily_max_min",
        "monthly_mean"
      ],
      "type": "string",
      "description": "Summary product: high_low (daily tide extremes, 1yr max), daily_mean (Great Lakes only, 10yr), daily_max_min (10yr), monthly_mean (datum means, 200yr)."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "end_date": {
      "type": "string",
      "description": "End date/time. Same formats as begin_date."
    },
    "time_zone": {
      "enum": [
        "gmt",
        "lst",
        "lst_ldt"
      ],
      "type": "string",
      "default": "lst_ldt",
      "description": "Time zone for timestamps: gmt = UTC, lst = station local standard time (no DST), lst_ldt = station local time with DST. Note: daily_mean data requires lst."
    },
    "begin_date": {
      "type": "string",
      "description": "Start date/time. Formats: yyyyMMdd, \"yyyyMMdd HH:mm\", MM/dd/yyyy, or ISO yyyy-MM-dd[THH:mm]."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_water_level_summaries output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_water_level_summaries annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_tide_predictions — Get Tide Predictions
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get NOAA harmonic tide predictions (future or past) for a station. interval="hilo" (recommended for "when is high/low tide") returns the daily tide events with type H/L — up to 10 years per request. Other intervals (h, 1, 5, 6, 10, 15, 30, 60 minutes) return a height time series — up to 1 year per request. Heights are relative to the requested datum (MLLW default). Notes: - Great Lakes stations have NO tide predictions (lake levels are not tidal). - Subordinate stations (type "S") only support interval=hilo; use the station's reference (R) station for interval series. - Predictions are astronomical only — they exclude weather effects (storm surge, wind setup). Compare with noaa_get_water_levels for actual conditions.

noaa_get_tide_predictions input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "date": {
      "enum": [
        "today",
        "latest",
        "recent"
      ],
      "type": "string",
      "description": "Shortcut window: \"today\" = midnight to now, \"latest\" = single most recent reading, \"recent\" = last 72 hours. Mutually exclusive with begin_date/end_date/range."
    },
    "datum": {
      "enum": [
        "MHHW",
        "MHW",
        "MTL",
        "MSL",
        "MLW",
        "MLLW",
        "NAVD",
        "STND",
        "IGLD",
        "LWD",
        "CRD"
      ],
      "type": "string",
      "default": "MLLW",
      "description": "Vertical reference datum for heights. MLLW is the standard chart datum for coastal stations. IGLD and LWD apply to Great Lakes stations ONLY; NAVD/CRD exist only at stations where computed. Check a station's supported datums with noaa_get_station_datums."
    },
    "range": {
      "type": "integer",
      "description": "Number of hours. With begin_date: hours forward. With end_date: hours back. Alone: hours back from now.",
      "exclusiveMinimum": 0
    },
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "end_date": {
      "type": "string",
      "description": "End date/time. Same formats as begin_date."
    },
    "interval": {
      "enum": [
        "hilo",
        "h",
        "1",
        "5",
        "6",
        "10",
        "15",
        "30",
        "60"
      ],
      "type": "string",
      "default": "hilo",
      "description": "\"hilo\" = high/low tide events only (max 10-year span). \"h\" = hourly, or 1/5/6/10/15/30/60-minute series (max 1-year span)."
    },
    "time_zone": {
      "enum": [
        "gmt",
        "lst",
        "lst_ldt"
      ],
      "type": "string",
      "default": "lst_ldt",
      "description": "Time zone for timestamps: gmt = UTC, lst = station local standard time (no DST), lst_ldt = station local time with DST. Note: daily_mean data requires lst."
    },
    "begin_date": {
      "type": "string",
      "description": "Start date/time. Formats: yyyyMMdd, \"yyyyMMdd HH:mm\", MM/dd/yyyy, or ISO yyyy-MM-dd[THH:mm]."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_tide_predictions output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_tide_predictions annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_currents — Get Observed Currents
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get observed current speed and direction from a NOAA current meter station. Current stations use alphanumeric IDs (e.g. "cb0102" Chesapeake, "bh0101" Boston Harbor) — NOT the 7-digit water-level station IDs. Find them with noaa_search_stations (type "currents") or noaa_find_nearest_stations. UNITS WARNING: english = knots, but metric = cm/s (centimeters/second, not m/s). Returns per record: t (time), s (speed), d (direction, degrees true), b (bin number). Max 7 days per request. Set expand_detailed=true to include per-beam echo intensity and correlation diagnostics.

noaa_get_currents input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "bin": {
      "type": "integer",
      "minimum": 0,
      "description": "Depth bin number (current meters measure at multiple depths). Find valid bins with noaa_get_station_info (expand [\"bins\"]). bin=0 returns ALL bins but caps the request at 7 days. Omit at single-bin stations."
    },
    "date": {
      "enum": [
        "today",
        "latest",
        "recent"
      ],
      "type": "string",
      "description": "Shortcut window: \"today\" = midnight to now, \"latest\" = single most recent reading, \"recent\" = last 72 hours. Mutually exclusive with begin_date/end_date/range."
    },
    "range": {
      "type": "integer",
      "description": "Number of hours. With begin_date: hours forward. With end_date: hours back. Alone: hours back from now.",
      "exclusiveMinimum": 0
    },
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "end_date": {
      "type": "string",
      "description": "End date/time. Same formats as begin_date."
    },
    "time_zone": {
      "enum": [
        "gmt",
        "lst",
        "lst_ldt"
      ],
      "type": "string",
      "default": "lst_ldt",
      "description": "Time zone for timestamps: gmt = UTC, lst = station local standard time (no DST), lst_ldt = station local time with DST. Note: daily_mean data requires lst."
    },
    "begin_date": {
      "type": "string",
      "description": "Start date/time. Formats: yyyyMMdd, \"yyyyMMdd HH:mm\", MM/dd/yyyy, or ISO yyyy-MM-dd[THH:mm]."
    },
    "expand_detailed": {
      "type": "boolean",
      "default": false,
      "description": "Include ADCP beam diagnostics (echo1-4, corr1-4) per record."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_currents output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_currents annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_current_predictions — Get Current Predictions
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get predicted tidal currents for a NOAA current prediction station. interval="max_slack" (recommended for navigation) returns the tidal-current events — maximum flood, maximum ebb, and slack water times — up to 1 year per request. Other intervals (h, 1, 6, 10, 30, 60 minutes) return a velocity time series — up to 31 days. UNITS WARNING: english = knots; metric = cm/s. vel_type="speed_dir" returns Speed/Direction pairs; "default" returns velocities projected on the flood/ebb axis (Velocity_Major: positive = flood direction, negative = ebb) with meanFloodDir/meanEbbDir. Subordinate (type "S") prediction stations derive from a reference station — see noaa_get_prediction_offsets.

noaa_get_current_predictions input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "bin": {
      "type": "integer",
      "minimum": 0,
      "description": "Depth bin number (current meters measure at multiple depths). Find valid bins with noaa_get_station_info (expand [\"bins\"]). bin=0 returns ALL bins but caps the request at 7 days. Omit at single-bin stations."
    },
    "date": {
      "enum": [
        "today",
        "latest",
        "recent"
      ],
      "type": "string",
      "description": "Shortcut window: \"today\" = midnight to now, \"latest\" = single most recent reading, \"recent\" = last 72 hours. Mutually exclusive with begin_date/end_date/range."
    },
    "range": {
      "type": "integer",
      "description": "Number of hours. With begin_date: hours forward. With end_date: hours back. Alone: hours back from now.",
      "exclusiveMinimum": 0
    },
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "end_date": {
      "type": "string",
      "description": "End date/time. Same formats as begin_date."
    },
    "interval": {
      "enum": [
        "max_slack",
        "h",
        "1",
        "6",
        "10",
        "30",
        "60"
      ],
      "type": "string",
      "default": "max_slack",
      "description": "\"max_slack\" = max flood/ebb + slack events (1-year max span); h/1/6/10/30/60 = time series (31-day max span)."
    },
    "vel_type": {
      "enum": [
        "default",
        "speed_dir"
      ],
      "type": "string",
      "default": "default",
      "description": "\"default\" = flood/ebb-axis velocity (Velocity_Major signed: + flood, - ebb); \"speed_dir\" = speed and compass direction."
    },
    "time_zone": {
      "enum": [
        "gmt",
        "lst",
        "lst_ldt"
      ],
      "type": "string",
      "default": "lst_ldt",
      "description": "Time zone for timestamps: gmt = UTC, lst = station local standard time (no DST), lst_ldt = station local time with DST. Note: daily_mean data requires lst."
    },
    "begin_date": {
      "type": "string",
      "description": "Start date/time. Formats: yyyyMMdd, \"yyyyMMdd HH:mm\", MM/dd/yyyy, or ISO yyyy-MM-dd[THH:mm]."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_current_predictions output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_current_predictions annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_meteorological_data — Get Meteorological & Sensor Data
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get observed meteorological/oceanographic sensor data from a NOAA station. Products: air_temperature, water_temperature, wind (speed/gust/direction), air_pressure, air_gap (bridge clearance to water surface), conductivity, visibility, humidity, salinity. Units by system: temps °F/°C; wind knots (english) or m/s (metric); air_gap feet/meters; visibility nautical miles/kilometers; air_pressure always millibars; salinity always PSU. Max span ~31 days per request; interval "6" (6-minute, default) or "h" (hourly). Not every station has every sensor — check with noaa_get_station_info (expand ["sensors"]). Water-level data is served by noaa_get_water_levels, not this tool.

noaa_get_meteorological_data input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station",
    "product"
  ],
  "properties": {
    "date": {
      "enum": [
        "today",
        "latest",
        "recent"
      ],
      "type": "string",
      "description": "Shortcut window: \"today\" = midnight to now, \"latest\" = single most recent reading, \"recent\" = last 72 hours. Mutually exclusive with begin_date/end_date/range."
    },
    "range": {
      "type": "integer",
      "description": "Number of hours. With begin_date: hours forward. With end_date: hours back. Alone: hours back from now.",
      "exclusiveMinimum": 0
    },
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "product": {
      "enum": [
        "air_temperature",
        "water_temperature",
        "wind",
        "air_pressure",
        "air_gap",
        "conductivity",
        "visibility",
        "humidity",
        "salinity"
      ],
      "type": "string",
      "description": "Sensor product to retrieve."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "end_date": {
      "type": "string",
      "description": "End date/time. Same formats as begin_date."
    },
    "interval": {
      "enum": [
        "6",
        "h"
      ],
      "type": "string",
      "default": "6",
      "description": "\"6\" = 6-minute observations (default), \"h\" = hourly."
    },
    "time_zone": {
      "enum": [
        "gmt",
        "lst",
        "lst_ldt"
      ],
      "type": "string",
      "default": "lst_ldt",
      "description": "Time zone for timestamps: gmt = UTC, lst = station local standard time (no DST), lst_ldt = station local time with DST. Note: daily_mean data requires lst."
    },
    "begin_date": {
      "type": "string",
      "description": "Start date/time. Formats: yyyyMMdd, \"yyyyMMdd HH:mm\", MM/dd/yyyy, or ISO yyyy-MM-dd[THH:mm]."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_meteorological_data output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_meteorological_data annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_search_stations — Search NOAA Stations
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Search the NOAA CO-OPS station directory by capability type, name, and/or state. Filter with: - type: what the station does (waterlevels, tidepredictions, currents, currentpredictions, met, ...) — pick the type matching the data you plan to request. - name: case-insensitive substring ("San Francisco", "Boston"). - state: two-letter code ("CA", "MA"). Returns id, name, location, tide type, Great Lakes flag, and for prediction stations whether they are reference (R, harmonic) or subordinate (S, offset-based — hilo predictions only). Results are paginated (limit/offset). For proximity search by coordinates use noaa_find_nearest_stations instead.

noaa_search_stations input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "Case-insensitive substring of the station name."
    },
    "type": {
      "enum": [
        "waterlevels",
        "historicwl",
        "met",
        "waterlevelsandmet",
        "tidepredictions",
        "harcon",
        "datums",
        "supersededdatums",
        "benchmarks",
        "supersededbenchmarks",
        "currents",
        "historiccurrents",
        "surveycurrents",
        "currentpredictions",
        "cond",
        "watertemp",
        "physocean",
        "tcoon",
        "1minute",
        "airgap",
        "visibility",
        "highwater",
        "lowwater"
      ],
      "type": "string",
      "description": "Station capability filter. Common: \"waterlevels\" (active water level), \"tidepredictions\", \"currents\" (observed currents), \"currentpredictions\", \"met\" (weather sensors). Full list via noaa_get_reference_guide topic \"station_types\"."
    },
    "limit": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum stations to return."
    },
    "state": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2,
      "description": "Two-letter US state/territory code, e.g. \"CA\"."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "minimum": 0,
      "description": "Pagination offset."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_search_stations output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_search_stations annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_find_nearest_stations — Find Nearest NOAA Stations
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Find the NOAA stations closest to a latitude/longitude point, sorted by distance. Use this to answer "what's the tide station near <place>?" — geocode the place to coordinates first, then call this. Filter by type to match the data you need (e.g. type "tidepredictions" before calling noaa_get_tide_predictions, "currents" before noaa_get_currents — current stations have different IDs than water-level stations). Distance is computed great-circle (Haversine) and reported in both km and miles. (NOAA's API has no native coordinate search; this tool maintains a cached station directory.)

noaa_find_nearest_stations input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "latitude",
    "longitude"
  ],
  "properties": {
    "type": {
      "enum": [
        "waterlevels",
        "historicwl",
        "met",
        "waterlevelsandmet",
        "tidepredictions",
        "harcon",
        "datums",
        "supersededdatums",
        "benchmarks",
        "supersededbenchmarks",
        "currents",
        "historiccurrents",
        "surveycurrents",
        "currentpredictions",
        "cond",
        "watertemp",
        "physocean",
        "tcoon",
        "1minute",
        "airgap",
        "visibility",
        "highwater",
        "lowwater"
      ],
      "type": "string",
      "description": "Station capability filter. Common: \"waterlevels\" (active water level), \"tidepredictions\", \"currents\" (observed currents), \"currentpredictions\", \"met\" (weather sensors). Full list via noaa_get_reference_guide topic \"station_types\"."
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1,
      "description": "Number of stations to return."
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Latitude in decimal degrees (-90 to 90)."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Longitude in decimal degrees (-180 to 180)."
    },
    "max_distance_km": {
      "type": "number",
      "description": "Optional cutoff radius in kilometers.",
      "exclusiveMinimum": 0
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_find_nearest_stations output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_find_nearest_stations annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_station_info — Get Station Info
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get a NOAA station's full metadata record: location, state, time zone, tide type, Great Lakes flag, capability flags, and links to available sub-resources. Optionally expand sub-resources inline via the "expand" list: - details (established/removed dates), sensors (installed instruments + elevations), floodlevels (NOS/NWS minor/moderate/major flood thresholds), benchmarks, products (available data page links), notices, disclaimers — for water-level stations - bins (ADCP depth bins), deployments — for current stations (alphanumeric IDs) Use this before requesting data to confirm what the station actually collects. For datum values use noaa_get_station_datums; for harmonic constituents use noaa_get_harmonic_constituents.

noaa_get_station_info input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "expand": {
      "type": "array",
      "items": {
        "enum": [
          "details",
          "sensors",
          "floodlevels",
          "benchmarks",
          "products",
          "notices",
          "disclaimers",
          "bins",
          "deployments"
        ],
        "type": "string"
      },
      "description": "Sub-resources to embed inline (availability varies by station type)."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_station_info output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_station_info annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_station_datums — Get Station Datums
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get the accepted tidal datum values for a station: the elevations of MHHW, MHW, MTL, MSL, DTL, MLW, MLLW, STND, NAVD88 (where computed), plus GT (great diurnal range), MN (mean range), LAT/HAT (lowest/highest astronomical tide), and the station's historical extreme min/max water levels with dates. epoch "current" returns the present National Tidal Datum Epoch (1983–2001) values; "superseded" returns the prior epoch's values (useful for historical comparisons — not all stations have one). All values share one reference zero (the station datum), so datum-to-datum conversion is subtraction: height_above_MLLW = height_above_MSL + (MSL − MLLW). Use this tool to (1) check which datums a station supports before requesting data, and (2) convert heights between datums.

noaa_get_station_datums input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "epoch": {
      "enum": [
        "current",
        "superseded"
      ],
      "type": "string",
      "default": "current",
      "description": "\"current\" = present NTDE (1983–2001); \"superseded\" = prior epoch values."
    },
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_station_datums output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_station_datums annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_harmonic_constituents — Get Harmonic Constituents
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get the harmonic constituents NOAA uses to compute tide or current predictions at a station — the amplitude, phase, and angular speed of each tidal constituent (M2, S2, N2, K1, O1, ...). For water-level stations: amplitude (feet/meters), phase_GMT and phase_local (degrees), speed (degrees/hour). For current stations (alphanumeric IDs) constituents are current ellipses (major/minor amplitudes and phases per depth bin — pass bin to filter). Use for: building custom tide computations, checking a station's dominant constituents (M2 amplitude indicates semidiurnal range), verifying whether a station is harmonically predicted at all. Only reference (R) stations have constituents — subordinate stations use offsets (noaa_get_prediction_offsets).

noaa_get_harmonic_constituents input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "bin": {
      "type": "integer",
      "minimum": 1,
      "description": "For current stations: restrict to one depth bin."
    },
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_harmonic_constituents output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_harmonic_constituents annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_prediction_offsets — Get Prediction Offsets (Subordinate Stations)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get the offsets a subordinate (type "S") prediction station applies to its reference station's predictions. kind "tide": returns refStationId, time offsets for high/low tide (minutes), height offsets for high/low tide, and whether the height adjustment is a ratio (multiplied) or fixed value — this is how NOAA derives subordinate-station tide times from the reference harmonic station. kind "current": returns refStationId/bin, mean flood/ebb directions, and time adjustments (minutes) for max flood, slack-before-ebb, max ebb, slack-before-flood plus amplitude ratios. Note: current prediction offsets are indexed per bin — pass the station_bin_suffix ID form (e.g. "ACT0091_1") if the plain ID returns nothing. Reference (R) stations return empty/null offsets — they don't need any.

noaa_get_prediction_offsets input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "kind": {
      "enum": [
        "tide",
        "current"
      ],
      "type": "string",
      "default": "tide",
      "description": "\"tide\" = tidepredoffsets; \"current\" = currentpredictionoffsets."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_prediction_offsets output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_prediction_offsets annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_sea_level_trends — Get Relative Sea Level Trends
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get the long-term relative sea level trend at a NOAA station: trend and error (reported by NOAA in mm/yr or inches/decade — the payload's trendUnits field says which), the observation period (startDate/endDate), and seasonal amplitude. Relative sea level combines ocean rise AND local land movement (subsidence/uplift), so trends vary widely by station (e.g. strongly positive on the Gulf Coast, negative in Alaska). Requires a station with a long water-level record; omit station to list all (affil "US" or "Global" filters the network).

noaa_get_sea_level_trends input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "affil": {
      "enum": [
        "US",
        "Global"
      ],
      "type": "string",
      "description": "Network filter when listing multiple stations."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_sea_level_trends output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_sea_level_trends annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_sea_level_rise_projections — Get Sea Level Rise Projections
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get NOAA's Interagency Sea Level Rise Scenario projections for a station (from the 2022 technical report): projected relative sea level (meters or feet, see units field) per decade through 2150 under the chosen scenario. Scenarios: low, intermediate-low, intermediate, intermediate-high, high, extreme, or all. Use for coastal planning questions ("how much sea level rise is projected at X by 2050?"). Pair with noaa_get_sea_level_trends (observed) and noaa_get_high_tide_flooding (flooding impact).

noaa_get_sea_level_rise_projections input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "scenario": {
      "enum": [
        "all",
        "low",
        "intermediate-low",
        "intermediate",
        "intermediate-high",
        "high",
        "extreme"
      ],
      "type": "string",
      "default": "intermediate",
      "description": "Emissions/rise scenario from the 2022 Interagency report."
    },
    "projection_year": {
      "type": "integer",
      "maximum": 2150,
      "minimum": 2000,
      "description": "Filter to a single decade year (e.g. 2050)."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_sea_level_rise_projections output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_sea_level_rise_projections annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_extreme_water_levels — Get Extreme Water Levels
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get NOAA's extreme water level exceedance statistics for a station: the annual exceedance probability levels (e.g. the 1%-annual-chance "100-year" level) and historical extreme events, computed from the station's verified record. Use for flood risk questions ("what water level has a 1% chance per year at X?"). Levels are relative to the station's datums for the 1983–2001 epoch. Only long-record stations have this product.

noaa_get_extreme_water_levels input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "levelType": {
      "enum": [
        "high",
        "low"
      ],
      "type": "string",
      "description": "High extremes (default) or low."
    },
    "extremeType": {
      "enum": [
        "annuals",
        "monthlies"
      ],
      "type": "string",
      "description": "Extreme statistics basis: annual (default) or monthly extremes."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_extreme_water_levels output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_extreme_water_levels annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_top_ten_water_levels — Get Top Ten / Peak Water Levels
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get a station's highest recorded water levels: analysis "toptenwaterlevels" returns the ten highest events on record (with date, height, causal event name like "Great New England Hurricane", and category); "peakwaterlevels" returns peak event records (optionally filtered by year). Heights are relative to the requested datum (MHHW is typical for flood comparisons). Use for "what's the worst flooding ever recorded at X?".

noaa_get_top_ten_water_levels input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "year": {
      "type": "integer",
      "description": "For peakwaterlevels: filter to one year."
    },
    "datum": {
      "enum": [
        "STND",
        "MHHW",
        "MHW",
        "MSL",
        "MTL",
        "MLW",
        "MLLW",
        "NAVD",
        "IGLD",
        "LWD"
      ],
      "type": "string",
      "default": "MHHW",
      "description": "Reference datum for reported heights (MHHW is standard for flood context)."
    },
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "analysis": {
      "enum": [
        "toptenwaterlevels",
        "peakwaterlevels"
      ],
      "type": "string",
      "default": "toptenwaterlevels",
      "description": "\"toptenwaterlevels\" = ten highest on record; \"peakwaterlevels\" = peak event records."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_top_ten_water_levels output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_top_ten_water_levels annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_high_tide_flooding — Get High Tide Flooding Data
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get NOAA high tide flooding (HTF, "nuisance"/"sunny day" flooding) statistics for a station. Reports: - daily: flood occurrence per day (REQUIRES start_date and end_date, YYYYMMDD) - monthly / seasonal / annual: counts of minor/moderate/major flood days per period (filter with year/month/season_months, or range = last N periods) - met_year_annual: counts by meteorological year (May–April) - annual_outlook: NOAA's projected flood-day outlook for the coming met year - projections: decadal flood-day projections through 2100 (filter by decade, flood_threshold) - record_days: record flood-day counts - likely_scenarios: likely decadal flooding scenarios - daily_likelihoods: day-by-day flood likelihood forecasts Use for: "how often does X flood?", trends in nuisance flooding, future flooding projections. Not all stations have HTF products — check the HTFhistorical flag via noaa_get_station_info.

noaa_get_high_tide_flooding input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "station"
  ],
  "properties": {
    "year": {
      "type": "integer",
      "description": "Filter to a calendar year (monthly/seasonal/annual/record_days)."
    },
    "month": {
      "type": "integer",
      "maximum": 12,
      "minimum": 1,
      "description": "Filter to a month (monthly report)."
    },
    "range": {
      "type": "integer",
      "description": "Number of years to cover: with year (or met_year) set, returns year..year+range; without, returns the last N years.",
      "exclusiveMinimum": 0
    },
    "decade": {
      "type": "integer",
      "description": "Decade for projections/likely_scenarios (e.g. 2050)."
    },
    "report": {
      "enum": [
        "daily",
        "monthly",
        "seasonal",
        "annual",
        "met_year_annual",
        "annual_outlook",
        "projections",
        "record_days",
        "likely_scenarios",
        "daily_likelihoods"
      ],
      "type": "string",
      "default": "annual",
      "description": "Which HTF report to retrieve (see tool description)."
    },
    "station": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_]{4,10}$",
      "description": "Station ID. Water-level/met stations use 7-digit numeric IDs (e.g. \"9414290\" San Francisco); current stations use alphanumeric IDs (e.g. \"cb0102\"). Find stations with noaa_search_stations or noaa_find_nearest_stations."
    },
    "end_date": {
      "type": "string",
      "description": "YYYYMMDD — required for report \"daily\"."
    },
    "met_year": {
      "type": "integer",
      "description": "Meteorological year (met_year_annual / annual_outlook)."
    },
    "start_date": {
      "type": "string",
      "description": "YYYYMMDD — required for report \"daily\"."
    },
    "season_months": {
      "enum": [
        "DJF",
        "MAM",
        "JJA",
        "SON"
      ],
      "type": "string",
      "description": "Season for the seasonal report (Dec-Jan-Feb, Mar-Apr-May, ...)."
    },
    "flood_threshold": {
      "enum": [
        "minor",
        "moderate",
        "major"
      ],
      "type": "string",
      "description": "Flood severity threshold for projections/likely_scenarios."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
noaa_get_high_tide_flooding output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
noaa_get_high_tide_flooding annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
astro_get_moon_phase — Get Moon Phase
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the moon phase for a date (or each day of a date range if end_date is given): phase name (New Moon, Waxing Crescent, ...), illuminated fraction, age in days within the 29.53-day cycle, distance (km), apparent diameter (degrees), and waxing/waning. Tide context: spring tides (largest range) occur just after new and full moons; neap tides after quarter moons. Computed locally — no NOAA data involved.

astro_get_moon_phase input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Date in YYYY-MM-DD format. Defaults to today."
    },
    "end_date": {
      "$ref": "#/properties/date",
      "description": "Optional range end (YYYY-MM-DD): returns one entry per day from date through end_date."
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Optional latitude for distance/diameter precision."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Longitude in decimal degrees (-180 to 180)."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
astro_get_moon_phase output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
astro_get_moon_phase annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
astro_get_next_moon_phase — Get Next Moon Phase Occurrence
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find the date(s) of the next occurrence(s) of a principal moon phase (New Moon, First Quarter, Full Moon, Last Quarter) from a starting date. Use for: "when is the next full moon?", planning around spring tides (which follow new/full moons by 1–2 days).

astro_get_next_moon_phase input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "phase"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Search start date (YYYY-MM-DD). Defaults to today."
    },
    "count": {
      "type": "integer",
      "default": 1,
      "maximum": 24,
      "minimum": 1,
      "description": "How many occurrences to return."
    },
    "phase": {
      "enum": [
        "New Moon",
        "First Quarter",
        "Full Moon",
        "Last Quarter"
      ],
      "type": "string",
      "description": "Which principal phase to find."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
astro_get_next_moon_phase output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
astro_get_next_moon_phase annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
astro_get_sun_times — Get Sun Times
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get sunrise, sunset, solar noon, dawn/dusk (civil), nautical dawn/dusk, astronomical dawn/dusk, golden hour, and day length for a location and date (or each day of a range if end_date is given). Times are ISO UTC unless an IANA timezone is provided. At high latitudes some events may be null (e.g. no astronomical night in summer). Computed locally.

astro_get_sun_times input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "latitude",
    "longitude"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Date in YYYY-MM-DD format. Defaults to today."
    },
    "end_date": {
      "$ref": "#/properties/date",
      "description": "Optional range end: one entry per day."
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Latitude in decimal degrees (-90 to 90)."
    },
    "timezone": {
      "type": "string",
      "description": "IANA timezone for output times (e.g. \"America/New_York\"). Defaults to UTC ISO timestamps."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Longitude in decimal degrees (-180 to 180)."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
astro_get_sun_times output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
astro_get_sun_times annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
astro_get_sun_position — Get Sun Position
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the sun's position for a date, time, and location: azimuth (degrees clockwise from north as rendered here), altitude above the horizon (degrees), plus approximate declination and right ascension. Use for: shadow/lighting analysis, solar exposure. Computed locally with suncalc; declination/RA are approximate.

astro_get_sun_position input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "latitude",
    "longitude"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Date in YYYY-MM-DD format. Defaults to today."
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}(:\\d{2})?$",
      "description": "Time of day (HH:MM[:SS], interpreted in the local runtime timezone). Defaults to now."
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Latitude in decimal degrees (-90 to 90)."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Longitude in decimal degrees (-180 to 180)."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
astro_get_sun_position output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
astro_get_sun_position annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
astro_get_next_sun_event — Get Next Sun Event
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find the next occurrence(s) of a sun event (sunrise, sunset, dawn, dusk, solarNoon, night, nightEnd, goldenHourStart, goldenHourEnd, nauticalDawn, nauticalDusk, astronomicalDawn, astronomicalDusk) at a location from a starting date. Use for: "when is sunset today?", planning golden-hour photography or dawn fishing around tide windows.

astro_get_next_sun_event input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "event",
    "latitude",
    "longitude"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Search start date. Defaults to today."
    },
    "count": {
      "type": "integer",
      "default": 1,
      "maximum": 30,
      "minimum": 1,
      "description": "How many occurrences to return."
    },
    "event": {
      "enum": [
        "sunrise",
        "sunset",
        "dawn",
        "dusk",
        "solarNoon",
        "night",
        "nightEnd",
        "goldenHourStart",
        "goldenHourEnd",
        "nauticalDawn",
        "nauticalDusk",
        "astronomicalDawn",
        "astronomicalDusk"
      ],
      "type": "string",
      "description": "Sun event to find."
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Latitude in decimal degrees (-90 to 90)."
    },
    "timezone": {
      "type": "string",
      "description": "IANA timezone for output times (e.g. \"America/New_York\"). Defaults to UTC ISO timestamps."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Longitude in decimal degrees (-180 to 180)."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
astro_get_next_sun_event output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
astro_get_next_sun_event annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nws_get_wind_forecast — Get Wind Forecast (NWS)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get the NWS hourly wind FORECAST (speed, gust, direction — plus wave height where the grid carries it) for a latitude/longitude. Data comes from the NWS forecast grid (api.weather.gov gridpoints — numeric NDFD values, not display strings). Horizon is up to ~7 days (156 hours), starting at the current hour. US and territories only. Wave height appears for marine/nearshore gridpoints; swell/period fields are typically only populated for open-ocean points. Units: english = knots and feet (default), metric = m/s and meters. Direction is degrees true, the direction the wind blows FROM. This is FORECAST data. For observed (measured) wind at a NOAA station right now, use noaa_get_meteorological_data (product "wind"). For the official marine text forecast (Coastal Waters Forecast narrative with small-craft advisories), use nws_get_marine_forecast.

nws_get_wind_forecast input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "latitude",
    "longitude"
  ],
  "properties": {
    "hours": {
      "type": "integer",
      "default": 24,
      "maximum": 156,
      "minimum": 1,
      "description": "Forecast hours to return, starting at the current hour (max 156 ≈ 7 days; the grid may end sooner)."
    },
    "units": {
      "enum": [
        "english",
        "metric"
      ],
      "type": "string",
      "default": "english",
      "description": "Unit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems."
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Latitude in decimal degrees (-90 to 90)."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Longitude in decimal degrees (-180 to 180)."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
nws_get_wind_forecast output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
nws_get_wind_forecast annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
nws_get_marine_forecast — Get Marine Text Forecast (NWS)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get the official NWS Coastal Waters Forecast (CWF) narrative for the marine zone covering a latitude/longitude — day-part wind/seas text ("SE winds 10 to 15 kt... Bay waters choppy"), including Small Craft Advisories. The point must lie in (or very near) US coastal waters; CWF zones extend roughly 20-60 NM offshore. Returns the zone's segment from the latest bulletin plus the office-wide synopsis. For numeric hourly wind values use nws_get_wind_forecast; for observed wind at a NOAA station use noaa_get_meteorological_data (product "wind").

nws_get_marine_forecast input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "latitude",
    "longitude"
  ],
  "properties": {
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Latitude in decimal degrees (-90 to 90)."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Longitude in decimal degrees (-180 to 180)."
    },
    "response_format": {
      "enum": [
        "markdown",
        "json"
      ],
      "type": "string",
      "default": "markdown",
      "description": "Output format: \"markdown\" for a readable summary table, \"json\" for the complete structured payload."
    }
  },
  "additionalProperties": false
}
nws_get_marine_forecast output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "_response"
  ],
  "properties": {
    "_response": {
      "type": "object",
      "required": [
        "contractVersion",
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "const": "complete"
        },
        "contractVersion": {
          "type": "string",
          "const": "2026-09-29.1"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
nws_get_marine_forecast annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
noaa_get_reference_guide — Get NOAA API Reference Guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get curated reference documentation for NOAA CO-OPS concepts and parameters. Topics: - products: Every NOAA CO-OPS data product and which tool serves it - datums: Vertical datums (MLLW, MSL, IGLD...) and station applicability - units: What english vs metric means per measurement (incl. cm/s currents) - time_zones: gmt / lst / lst_ldt semantics and restrictions - intervals: Valid interval values per product family - station_types: Station type filters and station ID formats - data_limits: Maximum date-range span per product - quality_flags: Data quality fields (v/s/f/q), flag letters, HH/H/L/LL - date_formats: Accepted date formats and parameter combinations - marine_forecast: NWS wind & marine forecast tools vs CO-OPS observations Consult this before constructing unusual requests — especially "datums" (which vertical reference to use and station applicability), "units" (english/metric asymmetries like cm/s current speeds), and "data_limits" (maximum date spans per product).

noaa_get_reference_guide input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "topic"
  ],
  "properties": {
    "topic": {
      "enum": [
        "products",
        "datums",
        "units",
        "time_zones",
        "intervals",
        "station_types",
        "data_limits",
        "quality_flags",
        "date_formats",
        "marine_forecast"
      ],
      "type": "string",
      "description": "Reference topic to retrieve."
    }
  },
  "additionalProperties": false
}
noaa_get_reference_guide output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "topic",
    "guide"
  ],
  "properties": {
    "guide": {
      "type": "string"
    },
    "topic": {
      "enum": [
        "products",
        "datums",
        "units",
        "time_zones",
        "intervals",
        "station_types",
        "data_limits",
        "quality_flags",
        "date_formats",
        "marine_forecast"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
noaa_get_reference_guide annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
perigee_whoami — Which Perigee account is this connection using?
Advertised by the server during the last successful anonymous check.
Advertised read-only

Show how this MCP connection is authenticated: the Perigee account it is linked to (if any), how it signed in (OAuth connector or API key), its rate-limit tier, and the requests-per-minute limit. Use when the user asks which account they're connected as, why they're rate limited, or whether their sign-in worked.

perigee_whoami input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
perigee_whoami output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "note": {
      "type": "string"
    },
    "tier": {
      "type": "string"
    },
    "error": {
      "type": "string"
    },
    "method": {
      "enum": [
        "oauth",
        "api_key"
      ],
      "type": "string"
    },
    "account": {
      "type": "object",
      "required": [
        "email",
        "displayName"
      ],
      "properties": {
        "email": {
          "type": [
            "string",
            "null"
          ]
        },
        "displayName": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "apiKeyName": {
      "type": "string"
    },
    "authenticated": {
      "type": "boolean"
    },
    "limitPerMinute": {
      "type": "number"
    },
    "connectedClient": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
perigee_whoami annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

4 advertised

tide_report — Tide Report

Advertised by the server during the last successful anonymous check.

Produce a tide report (high/low times, current level, context) for a place or station and date.

location
Place name, coordinates, or a 7-digit NOAA station ID. (required)
date
Date (YYYY-MM-DD). Defaults to today.
boating_conditions — Boating & On-the-Water Conditions

Advertised by the server during the last successful anonymous check.

Assemble tides, currents, wind, weather, and daylight for a location and date — a pre-departure briefing.

location
Place name or coordinates of the launch/operating area. (required)
date
Date (YYYY-MM-DD). Defaults to today.
station_flood_risk — Station Flood Risk Profile

Advertised by the server during the last successful anonymous check.

Synthesize high-tide-flooding history, extremes, sea level trend, and projections into a flood risk profile for a station.

station
7-digit NOAA water-level station ID (e.g. "8454000"). (required)
station_overview — Station Capabilities Overview

Advertised by the server during the last successful anonymous check.

Summarize everything a NOAA station offers: sensors, datums, products, data availability.

station
NOAA station ID (7-digit or alphanumeric current station). (required)

Resources

11 advertised

getting-started — Getting Started with NOAA Tides & Currents

Advertised by the server during the last successful anonymous check.

Workflow recipes and common pitfalls for this server.

getting-started URI
noaa://guide/getting-started

MIME type: text/markdown

NOAA reference: products — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

Every NOAA CO-OPS data product and which tool serves it

NOAA reference: products URI
noaa://reference/products

MIME type: text/markdown

NOAA reference: datums — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

Vertical datums (MLLW, MSL, IGLD...) and station applicability

NOAA reference: datums URI
noaa://reference/datums

MIME type: text/markdown

NOAA reference: units — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

What english vs metric means per measurement (incl. cm/s currents)

NOAA reference: units URI
noaa://reference/units

MIME type: text/markdown

NOAA reference: time_zones — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

gmt / lst / lst_ldt semantics and restrictions

NOAA reference: time_zones URI
noaa://reference/time_zones

MIME type: text/markdown

NOAA reference: intervals — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

Valid interval values per product family

NOAA reference: intervals URI
noaa://reference/intervals

MIME type: text/markdown

NOAA reference: station_types — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

Station type filters and station ID formats

NOAA reference: station_types URI
noaa://reference/station_types

MIME type: text/markdown

NOAA reference: data_limits — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

Maximum date-range span per product

NOAA reference: data_limits URI
noaa://reference/data_limits

MIME type: text/markdown

NOAA reference: quality_flags — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

Data quality fields (v/s/f/q), flag letters, HH/H/L/LL

NOAA reference: quality_flags URI
noaa://reference/quality_flags

MIME type: text/markdown

NOAA reference: date_formats — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

Accepted date formats and parameter combinations

NOAA reference: date_formats URI
noaa://reference/date_formats

MIME type: text/markdown

NOAA reference: marine_forecast — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

NWS wind & marine forecast tools vs CO-OPS observations

NOAA reference: marine_forecast URI
noaa://reference/marine_forecast

MIME type: text/markdown

reference — NOAA CO-OPS Reference

Advertised by the server during the last successful anonymous check.

Curated NOAA API reference topics (datums, units, limits, flags...).

reference URI template
noaa://reference/{topic}

MIME type: text/markdown

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1404 ms
95th percentile latency
1404 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1404 ms · metadata changed · 26 tool(s), 11 resource(s), 1 resource template(s), 4 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http perigee-tides-mcp https://perigeetides.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add perigee-tides-mcp --url https://perigeetides.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable perigee-tides-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "perigee-tides-mcp": {
      "url": "https://perigeetides.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "perigee-tides-mcp": {
      "type": "streamableHttp",
      "url": "https://perigeetides.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start perigee-tides-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "perigee-tides-mcp": {
      "type": "http",
      "url": "https://perigeetides.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http perigee-tides-mcp https://perigeetides.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://perigeetides.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "perigee-tides-mcp": {
      "serverUrl": "https://perigeetides.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Perigee Tides MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.