MCPサーバー

noaa-marine-mcp-server

io.github.cyanheads/noaa-marine-mcp-server
地図・位置情報 科学・工学 公開・接続可能 MCP 2025-11-25

このMCPでできること

Finds NOAA tide stations and buoys and retrieves tide predictions, water levels, currents, marine conditions, and oceanographic observations.

noaa_marine_find_stations
Find Marine Stations
Find CO-OPS tide, water-level and current stations and NDBC buoys near a location, by name, or by station ID, returning a unified list with source, data capabilities, coordinates, and — for NDBC — the physical platform class. This is the required first step for resolving a place name, a coordinate pair, or a bare station number to the station IDs the data tools take: CO-OPS tide and water-level IDs are numeric (e.g. 9447130 for Seattle), CO-OPS current IDs are alphanumeric (e.g. ACT4176), and NDBC buoy IDs are 5-character alphanumeric codes (e.g. 46041). Two axes are reported separately — capabilities and type name the data products a station serves (tide, current, water_level, met, current_profile, water_quality), while platform is the NDBC physical classification (buoy, fixed, oilrig, dart, tao, usv, other) that CO-OPS stations do not carry. Supply latitude and longitude together for a proximity search, or query for a name-or-ID substring matched against both sources, or state for CO-OPS coverage in one state; the filters combine, and results lead with an exact ID match unless a proximity search is ordering them by distance. A search that matches nothing is a success with total_found: 0 carrying an echo of the filters that were applied, and a search whose catalogs did not all answer says which source is missing. CO-OPS prediction stations carry a third axis as well, prediction_class, which says what a station can actually answer: a tide station is either reference, serving both hilo and the 6-minute curve, or subordinate, serving hilo only, while a current station carries its class per depth bin in bins[] — a harmonic or subordinate bin serves the normal flood/ebb/slack series, and a weak_and_variable bin may instead answer noaa_marine_get_currents with a coverage statement and no events, or report that CO-OPS publishes no predictions for it at all, so prefer a harmonic bin when one is in range.
読み取り専用 外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 200, 'minimum': 1, 'description': 'Maximum number of stations to return. Defaults to 20.'}, 'query': {'type': 'string', 'description': 'Station name or station ID substring to match, case-insensitive, on both sources. E.g. "seattle", "puget sound", "9447130", "46041". A station whose ID matches exactly is returned ahead of name matches, unless latitude/longitude were supplied â\x80\x94 a proximity search orders by distance instead. Blank or whitespace-only values are treated as omitted.'}, 'state': {'enum': ['AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY', 'DC', 'PR', 'VI', 'GU', 'AS', 'MP'], 'type': 'string', 'description': 'Filter by 2-letter US state or territory code. Applies to CO-OPS stations only â\x80\x94 providing it restricts results to CO-OPS and excludes NDBC buoys (which carry no state). A station matches on its own catalog code, or â\x80\x94 when its catalog rows carry none, as with every current station â\x80\x94 on the state of the nearest state-bearing CO-OPS tide or water-level station within 25 km, which can be wrong on waters shared across a state or national border. E.g. "WA", "CA", "PR".'}, 'types': {'type': 'array', 'items': {'enum': ['tide', 'current', 'water_level', 'met', 'current_profile', 'water_quality', 'buoy'], 'type': 'string', 'description': "Filter value. Six are data capabilities, matched against a station's capabilities list: tide (CO-OPS tide predictions â\x86\x92 noaa_marine_get_tide_predictions), current (CO-OPS tidal-current predictions â\x86\x92 noaa_marine_get_currents), water_level (CO-OPS observed water levels â\x86\x92 noaa_marine_get_water_level, and their verified monthly means â\x86\x92 noaa_marine_get_monthly_means), met (NDBC meteorological â\x86\x92 noaa_marine_get_conditions), current_profile (NDBC observed ocean-current depth profile â\x86\x92 noaa_marine_get_current_profile; note this is a different data product and source than CO-OPS `current`), water_quality (NDBC sub-surface water-column sensors â\x86\x92 noaa_marine_get_ocean_observations). The seventh, buoy, is a physical-platform filter (NDBC platform class equals buoy), not a data capability â\x80\x94 use it to select buoy-class platforms regardless of what data they serve."}, 'description': 'Filter by data capability or NDBC platform class. Every returned station matches at least one requested value â\x80\x94 a capability value against its capabilities list, or buoy against its platform class. Omit to return all stations.'}, 'source': {'enum': ['coops', 'ndbc', 'all'], 'type': 'string', 'default': 'all', 'description': 'Data source to search: coops (tide/water-level/current stations), ndbc (buoys), or all (default).'}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Center latitude in decimal degrees for proximity search. Required together with longitude â\x80\x94 supplying only one is rejected rather than silently ignored. Optionally pair with radius_km.'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Center longitude in decimal degrees for proximity search. Required together with latitude â\x80\x94 supplying only one is rejected rather than silently ignored. Optionally pair with radius_km.'}, 'radius_km': {'type': 'number', 'default': 100, 'maximum': 1000, 'minimum': 1, 'description': 'Search radius in kilometers when latitude/longitude are provided. Defaults to 100 km.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['stations', 'total_found']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['incomplete_coordinates', 'sources_unavailable'], 'description': 'Machine-readable failure mode. Declared by this tool: `incomplete_coordinates`: Only one of latitude/longitude was supplied â\x80\x94 proximity search needs the pair. `sources_unavailable`: Every station catalog this search needed failed to load, so no station list could be searched. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Guidance about the result set: why a search matched nothing, which catalog did not answer, or that the list was capped.'}, 'sources': {'type': 'object', 'required': ['answered', 'attempted', 'failed'], 'properties': {'failed': {'type': 'array', 'items': {'type': 'string', 'description': 'Catalog name: coops or ndbc.'}, 'description': 'Catalogs whose fetch rejected. A station served only by one of these is missing.'}, 'answered': {'type': 'array', 'items': {'type': 'string', 'description': 'Catalog name: coops or ndbc.'}, 'description': 'Catalogs that returned a station list â\x80\x94 the results cover these only.'}, 'attempted': {'type': 'array', 'items': {'type': 'string', 'description': 'Catalog name: coops or ndbc.'}, 'description': 'Catalogs this search needed, after source and state decided which to read.'}}, 'description': 'Which station catalogs were attempted, answered, and failed. Present only when a catalog fetch rejected, so a partial result set is never read as a complete one.', 'additionalProperties': False}, 'stations': {'type': 'array', 'items': {'type': 'object', 'required': ['station_id', 'name', 'source', 'latitude', 'longitude', 'capabilities'], 'properties': {'bins': {'type': 'array', 'items': {'type': 'object', 'required': ['bin', 'depth'], 'properties': {'bin': {'type': 'number', 'description': 'CO-OPS bin number â\x80\x94 pass it as the bin input of noaa_marine_get_currents. Omitting bin there selects the shallowest bin.'}, 'depth': {'type': ['number', 'null'], 'description': "Bin depth in FEET. The catalog publishes one figure with no unit switch, unlike the depth noaa_marine_get_currents echoes, which follows that call's units. Null when CO-OPS publishes no depth for the bin, which is usual where depth_type is U."}, 'depth_type': {'type': 'string', 'description': 'CO-OPS depth-reference code as published: B, S, or U. A U bin usually carries no depth. Omitted when the catalog row has none.'}, 'prediction_class': {'type': 'string', 'description': "CO-OPS prediction class for this bin: harmonic (predicted from the bin's own harmonic analysis) or subordinate (derived by offsets from a reference station) both serve the normal flood/ebb/slack series, while weak_and_variable may instead answer noaa_marine_get_currents with a coverage statement and no events, or report that no predictions are published at all. The class is per bin because one station can mix classes across its bins. An unrecognized catalog code is passed through verbatim."}}, 'description': 'One depth bin CO-OPS publishes current predictions for at this station, with its depth and prediction class.', 'additionalProperties': False}, 'description': 'Depth bins this current station publishes predictions for, in the order CO-OPS publishes them. Each bin has its own depth and prediction class, and its bin number is what noaa_marine_get_currents takes as bin. Omitted for a station with no current-prediction rows.'}, 'name': {'type': 'string', 'description': 'Station name.'}, 'type': {'type': 'string', 'description': 'The data capability this row leads with â\x80\x94 always one of the values in capabilities. When a types filter of capability values is set this is the first requested capability the station has, so it never contradicts the filter; otherwise it is the first capability. Omitted when the station has no data capability (e.g. a bare buoy/fixed platform matched only by a platform filter) â\x80\x94 read platform for its identity. This is a data-product axis, never the physical platform class.'}, 'state': {'type': 'string', 'description': "US state or territory code (CO-OPS stations only): the station's own catalog code, or â\x80\x94 when its catalog rows carry none, as with every current station â\x80\x94 the state of the nearest state-bearing CO-OPS tide or water-level station within 25 km, marked by state_derived. A derived state can be wrong on waters shared across a state or national border. When neither applies, the station's own non-code catalog value (e.g. FM) is shown as published and unmarked â\x80\x94 no state filter returns such a station, since the filter takes codes only. Omitted when the station publishes nothing at all and no state-bearing station is that close."}, 'source': {'enum': ['coops', 'ndbc'], 'type': 'string', 'description': 'Data source: coops (CO-OPS) or ndbc (NDBC buoy).'}, 'latitude': {'type': 'number', 'description': 'Station latitude in decimal degrees.'}, 'platform': {'type': 'string', 'description': 'NDBC physical platform class: buoy, fixed, oilrig, dart, tao, usv, or other. A different axis than type/capabilities (which describe data products). Omitted for CO-OPS stations â\x80\x94 CO-OPS publishes no platform taxonomy.'}, 'longitude': {'type': 'number', 'description': 'Station longitude in decimal degrees.'}, 'station_id': {'type': 'string', 'description': 'Station identifier â\x80\x94 use this ID with data tools.'}, 'distance_km': {'type': 'number', 'description': 'Distance in km from the search center (only present when lat/lon search was used).'}, 'capabilities': {'type': 'array', 'items': {'type': 'string', 'description': 'Capability identifier, e.g. "tide", "water_level".'}, 'description': 'Data products available at this station: any of tide, current, water_level (CO-OPS) or met, current_profile, water_quality (NDBC). Empty when the station reports no data capability â\x80\x94 platform still identifies it.'}, 'reference_id': {'type': 'string', 'description': 'The reference station a subordinate tide station derives its offsets from â\x80\x94 the station to request a 6-minute curve from. Omitted for a reference station and for any station with no tide-prediction row.'}, 'state_derived': {'type': 'boolean', 'description': "True when state was derived from the nearest state-bearing CO-OPS tide or water-level station within 25 km, because the station's own catalog rows carry no state code. Omitted when state is the station's own."}, 'prediction_class': {'type': 'string', 'description': 'CO-OPS TIDE-prediction class: reference (predicted from the station\'s own harmonic analysis, serving both hilo and the 6-minute curve) or subordinate (high and low events derived as offsets from a reference station, hilo only â\x80\x94 noaa_marine_get_tide_predictions rejects interval="6min" for it). A third axis beside type/capabilities (data products) and platform (NDBC physical class). Omitted for a station with no tide-prediction row; a current station carries its class per bin in bins[], where subordinate means something different. An unrecognized catalog code is passed through verbatim.'}}, 'description': 'A single station matching the search criteria.', 'additionalProperties': False}, 'description': 'Stations matching the search criteria, sorted by distance (if lat/lon provided) or by exact ID match then name. Empty when nothing matched.'}, 'truncated': {'type': 'boolean', 'description': 'True when total_found exceeds the limit and not all matching stations are returned. Increase limit or narrow filters to see more.'}, 'total_found': {'type': 'number', 'description': 'Total stations matching the filters before the limit was applied. Zero when nothing matched.'}, 'applied_search': {'type': 'object', 'required': ['catalogs_read', 'source'], 'properties': {'query': {'type': 'string', 'description': 'The name/ID substring as the server used it â\x80\x94 trimmed and lowercased. Omitted when no query was supplied or it was blank.'}, 'state': {'type': 'string', 'description': "The state filter applied, matched against each station's resolved state: its own catalog code, or for a station publishing none the state of the nearest state-bearing CO-OPS tide or water-level station within 25 km. Restricts results to CO-OPS and excludes NDBC."}, 'types': {'type': 'array', 'items': {'type': 'string', 'description': 'A requested capability or platform filter value.'}, 'description': 'The resolved types filter. Omitted when no types filter narrowed the search.'}, 'center': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number', 'description': 'Center latitude the proximity filter used.'}, 'longitude': {'type': 'number', 'description': 'Center longitude the proximity filter used.'}}, 'description': 'Proximity-search center, present only when latitude and longitude were supplied.', 'additionalProperties': False}, 'source': {'type': 'string', 'description': 'The source filter applied: coops, ndbc, or all.'}, 'radius_km': {'type': 'number', 'description': 'Radius bound in km, present only when a center was given. Applies whenever a center is present and defaults to 100 km.'}, 'catalogs_read': {'type': 'array', 'items': {'type': 'string', 'description': 'Catalog name: coops or ndbc.'}, 'description': 'Catalogs this search actually fetched. Empty when source and state cancelled each other out and no catalog was read.'}, 'types_by_source': {'type': 'object', 'required': ['coops', 'ndbc'], 'properties': {'ndbc': {'type': 'array', 'items': {'type': 'string', 'description': 'NDBC-only filter value.'}, 'description': 'Requested values only an NDBC row can carry.'}, 'coops': {'type': 'array', 'items': {'type': 'string', 'description': 'CO-OPS-only filter value.'}, 'description': 'Requested values only a CO-OPS row can carry.'}}, 'description': 'The requested types split by the source that can carry them â\x80\x94 every value belongs to exactly one source, so a single-source types filter reduces the search to that source.', 'additionalProperties': False}}, 'description': 'The narrowing dimensions this search applied, echoed when nothing matched so the caller can see which filter emptied the result.', 'additionalProperties': False}}, 'additionalProperties': False}
noaa_marine_get_conditions
Get Marine Conditions
Live marine conditions from an NDBC buoy: wave height, period and direction, wind speed, gust and direction, sea-surface temperature, air temperature, barometric pressure, and dew point. All values are SI units — wind in m/s, wave height in m, pressure in hPa, temperatures in °C — except TIDE, which is in feet, and VIS, in nautical miles, both rarely populated at offshore buoys; a numeric field is null when the buoy sensor did not report a value, which is normal offshore. Row cadence varies by station from 5 to 60 minutes, so observed_at can be that old, and NDBC writes each block of columns on its own cycle, so any block can resolve from an earlier row within 90 minutes of observed_at. Waves carry their own waves_observed_at, null when no wave sample falls inside that window, and any other block read from an earlier row is named with its measurement time in the response notice. Use noaa_marine_find_stations with source="ndbc" and types=["met"] to find station IDs near a location, since met-flagged stations are the ones most likely to serve live conditions: roughly a third of active NDBC stations report neither meteorological nor current data, most of those have no observation file, and omitting the types filter surfaces station IDs this tool cannot read.
読み取り専用 外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['station_id'], 'properties': {'station_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,20}$', 'description': 'NDBC buoy station ID (5-character alphanumeric, e.g. "46041" for Cape Elizabeth). Obtain from noaa_marine_find_stations with source="ndbc" and types=["met"].'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['station_id', 'station_name', 'latitude', 'longitude', 'observed_at', 'source', 'wind_direction_deg', 'wind_speed_ms', 'gust_speed_ms', 'wave_height_m', 'dominant_period_sec', 'average_period_sec', 'mean_wave_direction_deg', 'waves_observed_at', 'pressure_hpa', 'air_temp_c', 'water_temp_c', 'dew_point_c', 'visibility_nmi', 'tide_ft']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['buoy_not_found', 'no_sensor_data'], 'description': 'Machine-readable failure mode. Declared by this tool: `buoy_not_found`: NDBC returned 404 for the station ID. `no_sensor_data`: Buoy file exists but all sensor fields are MM (missing) â\x80\x94 buoy offline or sensor failure. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Present when a sensor block other than waves was read from a row older than observed_at, naming each such block, the output fields it fills, and the time those values were measured. Absent when every block outside the wave columns came from the newest row.'}, 'source': {'type': 'string', 'description': 'Data source â\x80\x94 always "ndbc" for this tool.'}, 'tide_ft': {'type': ['number', 'null'], 'description': 'Tide height in feet. NOTE: always in feet regardless of other unit settings. Rarely populated at offshore buoys. Null if not reported.'}, 'latitude': {'type': ['number', 'null'], 'description': 'Station latitude in decimal degrees. Null when the station is absent from the NDBC active-stations list â\x80\x94 the realtime feed carries observations but no coordinates.'}, 'longitude': {'type': ['number', 'null'], 'description': 'Station longitude in decimal degrees. Null when the station is absent from the NDBC active-stations list.'}, 'air_temp_c': {'type': ['number', 'null'], 'description': 'Air temperature in °C. Null if not reported.'}, 'station_id': {'type': 'string', 'description': 'Station ID echoed from the request â\x80\x94 for chaining.'}, 'dew_point_c': {'type': ['number', 'null'], 'description': 'Dew point temperature in °C. Null if not reported.'}, 'observed_at': {'type': 'string', 'description': 'ISO 8601 UTC timestamp of the newest data row. Always a valid instant â\x80\x94 a row whose upstream time columns are malformed is rejected rather than timestamped with the current time. A sensor block NDBC wrote on an earlier row was measured before this time: waves report theirs in waves_observed_at, and any other block is named with its own time in the notice.'}, 'pressure_hpa': {'type': ['number', 'null'], 'description': 'Atmospheric pressure in hPa. Null if not reported.'}, 'station_name': {'type': 'string', 'description': 'Station name from the NDBC active stations list.'}, 'water_temp_c': {'type': ['number', 'null'], 'description': 'Sea-surface temperature in °C. Null if not reported.'}, 'gust_speed_ms': {'type': ['number', 'null'], 'description': 'Wind gust speed in m/s. Null if not reported.'}, 'wave_height_m': {'type': ['number', 'null'], 'description': 'Significant wave height in meters. Null if not reported.'}, 'wind_speed_ms': {'type': ['number', 'null'], 'description': 'Wind speed in m/s. Null if not reported.'}, 'visibility_nmi': {'type': ['number', 'null'], 'description': 'Visibility in nautical miles. NOTE: always in nautical miles regardless of other unit settings. Null if not reported.'}, 'waves_observed_at': {'type': ['string', 'null'], 'description': 'ISO 8601 UTC timestamp of the row the four wave fields were read from. NDBC runs its wave pass on a slower cycle than the met row, so this can be older than observed_at; it applies to all four wave fields, which are never sampled apart. Null when no wave sample falls inside the 90-minute look-back window, including when the buoy has no wave sensor.'}, 'average_period_sec': {'type': ['number', 'null'], 'description': 'Average wave period in seconds. Null if not reported.'}, 'wind_direction_deg': {'type': ['number', 'null'], 'description': 'Wind direction in degrees true (0â\x80\x93360). Null if not reported by the buoy.'}, 'dominant_period_sec': {'type': ['number', 'null'], 'description': 'Dominant wave period in seconds. Null if not reported.'}, 'mean_wave_direction_deg': {'type': ['number', 'null'], 'description': 'Mean wave direction in degrees true. Null if not reported.'}}, 'additionalProperties': False}
noaa_marine_get_current_profile
Get Ocean Current Profile
Observed ocean-current depth profile from an NDBC ADCP buoy — the most recent measurement of current speed and direction at each depth bin, returning depth in meters, direction in degrees true (the direction the current flows toward), and speed in cm/s. It is distinct from noaa_marine_get_currents, which returns CO-OPS tidal-current predictions of max flood, ebb and slack rather than these observed acoustic-Doppler measurements. A depth bin is reported whenever NDBC gives it a depth, and its direction or speed is null when the sensor did not report that component. Use noaa_marine_find_stations with source="ndbc" and types=["current_profile"] to find station IDs, since most NDBC stations serve no ADCP profile and an unfiltered search returns IDs this tool cannot read.
読み取り専用 外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['station_id'], 'properties': {'station_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,20}$', 'description': 'NDBC station ID (5-character alphanumeric, e.g. "44033"). Obtain from noaa_marine_find_stations with source="ndbc" and types=["current_profile"].'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['station_id', 'station_name', 'latitude', 'longitude', 'observed_at', 'source', 'bin_count', 'bins']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'bins': {'type': 'array', 'items': {'type': 'object', 'required': ['depth_m', 'direction_deg', 'speed_cm_s'], 'properties': {'depth_m': {'type': 'number', 'description': 'Bin depth below the surface in meters.'}, 'speed_cm_s': {'type': ['number', 'null'], 'description': 'Current speed in cm/s. Null if not reported for this bin.'}, 'direction_deg': {'type': ['number', 'null'], 'description': 'Direction the current flows toward, in degrees true (0â\x80\x93360). Null if not reported for this bin.'}}, 'description': 'A single depth-bin current measurement.', 'additionalProperties': False}, 'description': 'Depth-binned current measurements, shallowest first (NDBC source order).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['profile_not_found', 'no_current_data'], 'description': 'Machine-readable failure mode. Declared by this tool: `profile_not_found`: NDBC returned 404 for the station â\x80\x94 no ADCP current-profile file exists for it. `no_current_data`: The ADCP file exists but has no usable data rows â\x80\x94 profiler offline or every bin missing. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'source': {'type': 'string', 'description': 'Data source â\x80\x94 always "ndbc" for this tool.'}, 'latitude': {'type': ['number', 'null'], 'description': 'Station latitude in decimal degrees. Null when the station is absent from the NDBC active-stations list â\x80\x94 the ADCP feed carries current data but no coordinates.'}, 'bin_count': {'type': 'number', 'description': 'Number of depth bins in the profile.'}, 'longitude': {'type': ['number', 'null'], 'description': 'Station longitude in decimal degrees. Null when the station is absent from the NDBC active-stations list.'}, 'station_id': {'type': 'string', 'description': 'Station ID echoed from the request â\x80\x94 for chaining.'}, 'observed_at': {'type': 'string', 'description': 'ISO 8601 UTC timestamp of the observation. Always a valid instant â\x80\x94 a row whose upstream time columns are malformed is rejected rather than timestamped with the current time.'}, 'station_name': {'type': 'string', 'description': 'Station name from the NDBC active stations list.'}}, 'additionalProperties': False}
noaa_marine_get_currents
Get Tidal Currents
Tidal current predictions for a CO-OPS current station: max flood and ebb speeds, slack times, and the station's mean flood and ebb bearings. These are forecast predictions from CO-OPS, distinct from noaa_marine_get_current_profile, which returns NDBC observed ocean-current measurements binned by depth. The default MAX_SLACK interval is the practical planning view, showing when currents peak and when slack water occurs, and a 6-minute interval returns the continuous curve for detailed analysis, each row carrying its own flood/ebb/slack sense. A station can publish predictions for several depth bins at different depths: bin selects one, omitting it takes the CO-OPS default of the shallowest bin, and the bin and its depth are echoed on every response — read bins[] on a noaa_marine_find_stations current row for the bins a station actually has. A station whose currents CO-OPS will not predict as discrete events answers with an empty list and its own wording in the notice rather than an error. Both intervals are bounded by response size: a range whose rows fit is returned whole, a longer one returns the leading rows with rows_matched, rows_returned, and next_offset reporting how much matched and which offset reaches the rest, and offset and limit walk whichever series the interval selects. Current station IDs are alphanumeric (e.g. ACT4176), distinct from the numeric tide and water-level IDs, and the date range is limited to 1 year per request — use noaa_marine_find_stations with types=["current"] to obtain a valid current station ID.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['station_id', 'begin_date', 'end_date'], 'properties': {'bin': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Depth bin to predict for, taken from the bins[] array on a noaa_marine_find_stations current row (e.g. 15, 10 or 1 at PUG1515). Omit to take the CO-OPS default, which is the shallowest bin. A bin the station does not publish comes back as bin_unavailable naming the bins it does.'}, 'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Maximum prediction rows to return on this page â\x80\x94 max/slack events or 6-minute rows, whichever the interval selects â\x80\x94 for a caller that wants fewer than the response budget allows. Omit for the largest page that fits; a value larger than the budget allows does not widen the page.'}, 'units': {'enum': ['english', 'metric'], 'type': 'string', 'default': 'english', 'description': 'Unit system: english = knots for speed and feet for the echoed depth; metric = cm/s for speed (not m/s) and meters for the echoed depth.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Row offset into the matched prediction series â\x80\x94 the max/slack events on the MAX_SLACK interval, the 6-minute curve on 6min â\x80\x94 for reading a range whose rows do not fit one response. 0 (default) starts at the first row; pass the next_offset from a previous call to continue. An offset past the last row returns an empty page rather than an error.'}, 'end_date': {'type': 'string', 'pattern': '^(\\d{8}|\\d{4}-\\d{2}-\\d{2})$', 'description': 'End date (inclusive), YYYYMMDD or YYYY-MM-DD, e.g. "20240607" or "2024-06-07".'}, 'interval': {'enum': ['MAX_SLACK', '6min'], 'type': 'string', 'default': 'MAX_SLACK', 'description': 'Prediction interval: MAX_SLACK (default) returns max flood, max ebb, and slack water events â\x80\x94 ideal for passage planning. 6min returns a continuous current curve.'}, 'time_zone': {'enum': ['lst_ldt', 'gmt', 'lst'], 'type': 'string', 'default': 'lst_ldt', 'description': 'Time zone for returned timestamps. lst_ldt = local standard/daylight time (default); gmt = UTC; lst = local standard time year-round.'}, 'begin_date': {'type': 'string', 'pattern': '^(\\d{8}|\\d{4}-\\d{2}-\\d{2})$', 'description': 'Start date, YYYYMMDD or YYYY-MM-DD, e.g. "20240601" or "2024-06-01".'}, 'station_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,20}$', 'description': 'CO-OPS current station ID (alphanumeric, e.g. "ACT4176"). Obtain from noaa_marine_find_stations with types=["current"].'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['station_id', 'station_name', 'units', 'bin', 'depth']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'bin': {'type': ['number', 'null'], 'description': 'Depth bin CO-OPS answered with â\x80\x94 the requested bin, or its default shallowest bin when none was requested. Null when the response carried no prediction rows.'}, 'depth': {'type': ['number', 'null'], 'description': 'Depth of the returned bin, in the requested units: feet under english, meters under metric. Distinct from the bins[].depth on a noaa_marine_find_stations row, which the catalog always publishes in feet. Null when CO-OPS publishes no depth for the bin, or when the response carried no prediction rows.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['station_not_found', 'invalid_date_range', 'date_range_exceeded', 'no_predictions', 'predictions_unavailable', 'bin_unavailable', 'upstream_throttled'], 'description': 'Machine-readable failure mode. Declared by this tool: `station_not_found`: CO-OPS rejected the station ID as unknown or invalid â\x80\x94 current stations require alphanumeric IDs. `invalid_date_range`: begin_date/end_date is not a real calendar date or begin_date is after end_date. `date_range_exceeded`: Requested date range exceeds the 1-year CO-OPS limit. `no_predictions`: Station exists but CO-OPS returned no current-prediction data for the requested date range. `predictions_unavailable`: The station is in the current-predictions catalog, but CO-OPS publishes no current predictions for it at any date. `bin_unavailable`: CO-OPS rejected the requested bin because the station publishes no predictions at that bin. `upstream_throttled`: CO-OPS answered HTTP 403, which it returns for about two minutes while it throttles a burst of requests from one address. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'units': {'type': 'string', 'description': 'Unit system these values are in: "english" (speed in knots, depth in feet) or "metric" (speed in cm/s, depth in meters).'}, 'events': {'type': 'array', 'items': {'type': 'object', 'required': ['time', 'type'], 'properties': {'time': {'type': 'string', 'description': 'Event datetime in the requested time zone.'}, 'type': {'enum': ['flood', 'ebb', 'slack'], 'type': 'string', 'description': 'Current event type: flood (onshore/inbound flow), ebb (offshore/outbound flow), or slack (near-zero current).'}, 'speed': {'type': 'number', 'description': 'Peak speed as a non-negative magnitude, in the requested units. Absent when CO-OPS reports no speed for the event, which is the usual case at slack water â\x80\x94 though a slack event can carry a small residual speed under metric units.'}, 'direction': {'type': 'number', 'description': "The station's mean flood direction on a flood event and its mean ebb direction on an ebb event, as a true bearing in degrees (0â\x80\x93360). A station constant, not an instantaneous heading. Absent for slack events and wherever CO-OPS reports no mean direction."}}, 'description': 'A single max flood, max ebb, or slack current event.', 'additionalProperties': False}, 'description': 'Max flood, max ebb, and slack events â\x80\x94 the whole matched series when it fits one response, otherwise the leading page starting at offset. Present for MAX_SLACK interval, and empty when CO-OPS answered with a statement instead of events â\x80\x94 read notice for its wording.'}, 'notice': {'type': 'string', 'description': "CO-OPS's own statement about the station when it returned that instead of prediction events â\x80\x94 the answer to report, not a failure â\x80\x94 or what this page of the prediction series covers and how to reach the next one."}, 'truncated': {'type': 'boolean', 'description': 'True when this page stops short of the last matched row, so further rows remain at next_offset. False on the final page and on a page past the end. Absent when the whole matched series was returned.'}, 'station_id': {'type': 'string', 'description': 'Station ID echoed from the request â\x80\x94 for chaining.'}, 'next_offset': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Offset to pass as offset on the next call, or null when this page reaches the last matched row. Absent when the whole matched series was returned.'}, 'page_offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Row offset this page starts at, echoed from the request. Absent when the whole matched series was returned.'}, 'predictions': {'type': 'array', 'items': {'type': 'object', 'required': ['time', 'type', 'speed', 'direction'], 'properties': {'time': {'type': 'string', 'description': 'Prediction datetime in the requested time zone.'}, 'type': {'enum': ['flood', 'ebb', 'slack'], 'type': 'string', 'description': 'Flow sense at this row, from the sign of the speed CO-OPS predicts: flood (inbound), ebb (outbound), or slack (zero). speed is a non-negative magnitude, so this is what carries which way the water is moving.'}, 'speed': {'type': 'number', 'description': 'Current speed as a non-negative magnitude, in the requested units.'}, 'direction': {'type': ['number', 'null'], 'description': "The station's mean flood direction on a flood row and its mean ebb direction on an ebb row, as a true bearing in degrees (0â\x80\x93360). A station constant, not an instantaneous heading. Null on a slack row and wherever CO-OPS reports no mean direction."}}, 'description': 'A single 6-minute current prediction.', 'additionalProperties': False}, 'description': '6-minute continuous current predictions â\x80\x94 the whole curve when it fits one response, otherwise the leading page starting at offset. Present for 6min interval, and empty when CO-OPS answered with a statement instead of a curve â\x80\x94 read notice for its wording.'}, 'rows_matched': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Prediction rows the requested date range matched, before the page was cut. Absent when the whole matched series was returned.'}, 'station_name': {'type': 'string', 'description': 'Station name as returned by CO-OPS.'}, 'rows_returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Prediction rows this page carries â\x80\x94 the length of events on the MAX_SLACK interval, of predictions on 6min. Absent when the whole matched series was returned.'}}, 'additionalProperties': False}
noaa_marine_get_monthly_means
Get Monthly Means
Verified monthly means for a CO-OPS water-level station, one row per station-month: the month's highest and lowest water, its tidal datums (MHHW, MHW, MSL, MTL, MLW, MLLW, DTL), tidal ranges (GT, MN, DHQ, DLQ), and lunitidal intervals (HWI, LWI) — the record a sea-level or tidal-range trend over years to decades is read from. Heights are relative to the requested datum in the requested units. A value CO-OPS publishes no figure for is omitted rather than reported as zero; a Great Lakes station carries only highest, msl, and lowest. A range may span up to 73,000 days, checked before the call, and CO-OPS verifies this product monthly, for the prior month, so a window ending on or after the first day of the prior month can fail with verified_data_lag. A range whose months fit the response budget is returned whole; a longer one returns the leading months, with rows_matched, rows_returned, and next_offset reporting how many matched and which offset reaches the rest. Use noaa_marine_find_stations with types=["water_level"] first to resolve a station name or location to a station ID.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['station_id', 'begin_date', 'end_date'], 'properties': {'datum': {'enum': ['MLLW', 'MHHW', 'MHW', 'MTL', 'MSL', 'MLW', 'NAVD', 'STND', 'IGLD', 'LWD', 'CRD'], 'type': 'string', 'default': 'MLLW', 'description': "Datum the monthly heights are referenced to. MLLW (default) is the US nautical chart datum; MHHW, MHW, MTL, MSL, and MLW are the other tidal planes. NAVD is NAVD88 and reads only where the station has an NAVD88 tie. STND is the station's own datum and reads any station. IGLD and LWD apply at Great Lakes stations only, which carry no tidal datum, and CRD at Columbia River stations only. A datum this station does not carry comes back as datum_unavailable."}, 'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Maximum months to return on this page, for a caller that wants fewer than the response budget allows. Omit for the largest page that fits; a value larger than the budget allows does not widen the page.'}, 'units': {'enum': ['english', 'metric'], 'type': 'string', 'default': 'english', 'description': 'Unit system for the heights: english = feet; metric = meters. The lunitidal intervals are hours either way.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Month offset into the matched series, for reading a range whose months do not fit one response. 0 (default) starts at the first month; pass the next_offset from a previous call to continue. An offset past the last month returns an empty page rather than an error.'}, 'end_date': {'type': 'string', 'pattern': '^(\\d{8}|\\d{4}-\\d{2}-\\d{2})$', 'description': 'End date (inclusive), YYYYMMDD or YYYY-MM-DD, e.g. "20251231" or "2025-12-31". The month it falls in is the last month returned.'}, 'begin_date': {'type': 'string', 'pattern': '^(\\d{8}|\\d{4}-\\d{2}-\\d{2})$', 'description': 'Start date, YYYYMMDD or YYYY-MM-DD, e.g. "19750101" or "1975-01-01". The month it falls in is the first month returned.'}, 'station_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,20}$', 'description': 'CO-OPS water-level station ID (numeric, e.g. "9447130" for Seattle). Obtain from noaa_marine_find_stations with types=["water_level"].'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['station_id', 'station_name', 'datum', 'units', 'begin_date', 'end_date', 'months']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'datum': {'type': 'string', 'description': 'Datum the heights are referenced to â\x80\x94 echoed for correct interpretation.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_date_range', 'date_range_exceeded', 'station_not_found', 'datum_unavailable', 'verified_data_lag', 'no_data', 'upstream_throttled'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_date_range`: begin_date/end_date is not a real calendar date or begin_date is after end_date. `date_range_exceeded`: The requested range spans more than 73,000 days, the CO-OPS limit for monthly means. `station_not_found`: CO-OPS rejected the station ID as not a valid station. `datum_unavailable`: The station does not carry the requested datum â\x80\x94 a Great Lakes station has no tidal datum, and IGLD and LWD apply at Great Lakes stations only. `verified_data_lag`: CO-OPS returned no months for a window ending on or after the first day of the prior month, which it may not have verified yet. `no_data`: CO-OPS returned no months for a window ending before the prior month â\x80\x94 the station has no monthly means for it. `upstream_throttled`: CO-OPS answered the monthly-mean request with HTTP 403, which it returns for about two minutes while it throttles a burst of requests from one address. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'units': {'type': 'string', 'description': 'Height units: "english" (feet) or "metric" (meters).'}, 'months': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'month', 'inferred'], 'properties': {'gt': {'type': 'number', 'description': 'Great diurnal range, MHHW â\x88\x92 MLLW (GT), in the requested units. A difference between two tidal planes, so it is the same under every datum. Omitted when CO-OPS publishes no value for the month.'}, 'mn': {'type': 'number', 'description': 'Mean range of tide, MHW â\x88\x92 MLW (MN), in the requested units. A difference between two tidal planes, so it is the same under every datum. Omitted when CO-OPS publishes no value for the month.'}, 'dhq': {'type': 'number', 'description': 'Mean diurnal high water inequality, MHHW â\x88\x92 MHW (DHQ), in the requested units. A difference between two tidal planes, so it is the same under every datum. Omitted when CO-OPS publishes no value for the month.'}, 'dlq': {'type': 'number', 'description': 'Mean diurnal low water inequality, MLW â\x88\x92 MLLW (DLQ), in the requested units. A difference between two tidal planes, so it is the same under every datum. Omitted when CO-OPS publishes no value for the month.'}, 'dtl': {'type': 'number', 'description': "The month's mean diurnal tide level (DTL), in the requested units relative to the requested datum. Omitted when CO-OPS publishes no value for the month."}, 'hwi': {'type': 'number', 'description': 'Greenwich high water interval (HWI), in hours. Omitted when CO-OPS publishes no value for the month.'}, 'lwi': {'type': 'number', 'description': 'Greenwich low water interval (LWI), in hours. Omitted when CO-OPS publishes no value for the month.'}, 'mhw': {'type': 'number', 'description': "The month's mean high water (MHW), in the requested units relative to the requested datum. Omitted when CO-OPS publishes no value for the month."}, 'mlw': {'type': 'number', 'description': "The month's mean low water (MLW), in the requested units relative to the requested datum. Omitted when CO-OPS publishes no value for the month."}, 'msl': {'type': 'number', 'description': "The month's mean sea level (MSL), in the requested units relative to the requested datum. Omitted when CO-OPS publishes no value for the month."}, 'mtl': {'type': 'number', 'description': "The month's mean tide level (MTL), in the requested units relative to the requested datum. Omitted when CO-OPS publishes no value for the month."}, 'mhhw': {'type': 'number', 'description': "The month's mean higher high water (MHHW), in the requested units relative to the requested datum. Omitted when CO-OPS publishes no value for the month."}, 'mllw': {'type': 'number', 'description': "The month's mean lower low water (MLLW), in the requested units relative to the requested datum. Omitted when CO-OPS publishes no value for the month."}, 'year': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Calendar year of the month.'}, 'month': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Month number, 1â\x80\x9312.'}, 'lowest': {'type': 'number', 'description': "The month's lowest observed water level, in the requested units relative to the requested datum. Omitted when CO-OPS publishes no value for the month."}, 'highest': {'type': 'number', 'description': "The month's highest observed water level, in the requested units relative to the requested datum. Omitted when CO-OPS publishes no value for the month."}, 'inferred': {'type': 'string', 'description': 'CO-OPS inferred-data code for the month, exactly as CO-OPS sends it. Observed values include "0", "1", and "11" â\x80\x94 a code, not a boolean.'}}, 'description': 'One station-month of tidal datums and extremes.', 'additionalProperties': False}, 'description': 'One row per station-month in the requested range, oldest first â\x80\x94 the whole matched series when it fits one response, otherwise the leading page starting at offset. rows_matched and next_offset report what a page left behind.'}, 'notice': {'type': 'string', 'description': 'What this page of the monthly series covers and how to reach the next page.'}, 'end_date': {'type': 'string', 'description': 'End of the requested range as sent to CO-OPS, YYYYMMDD.'}, 'truncated': {'type': 'boolean', 'description': 'True when this page stops short of the last matched month, so further months remain at next_offset. False on the final page and on a page past the end. Absent when the whole matched series was returned.'}, 'begin_date': {'type': 'string', 'description': 'Start of the requested range as sent to CO-OPS, YYYYMMDD.'}, 'station_id': {'type': 'string', 'description': 'Station ID echoed from the request â\x80\x94 for chaining.'}, 'next_offset': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Offset to pass as offset on the next call, or null when this page reaches the last matched month. Absent when the whole matched series was returned.'}, 'page_offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Month offset this page starts at, echoed from the request. Absent when the whole matched series was returned.'}, 'rows_matched': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Months the requested range matched, before the page was cut. Absent when the whole matched series was returned.'}, 'station_name': {'type': 'string', 'description': 'Station name as returned by CO-OPS.'}, 'rows_returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Months this page carries â\x80\x94 the length of months. Absent when the whole matched series was returned.'}}, 'additionalProperties': False}
noaa_marine_get_ocean_observations
Get Ocean Observations
Live sub-surface oceanographic observations from an NDBC station's water-quality sensors: at each reported depth, water temperature, conductivity, salinity, dissolved oxygen as both saturation percent and concentration in ppm, chlorophyll, turbidity, pH, and redox potential. This is the water-column counterpart to noaa_marine_get_conditions, which returns surface meteorological and wave data — use this tool for what the water is doing below the surface, that one for weather and sea state at the buoy. It returns the most recent observation as one reading per reported depth, and most stations report a single depth while some report several at the same time; sensor coverage is sparse, most stations populating only water temperature and salinity, and any value the station did not report comes back null rather than a fabricated zero, as do latitude and longitude for a station absent from the NDBC active-stations list. Sub-surface sensors are on only a subset of NDBC stations, so find one with noaa_marine_find_stations using source="ndbc" and types=["water_quality"], which filters on NDBC's own water-quality catalog flag — the flag and actual .ocean availability drift, so this tool reads any station that serves the file and returns observations_not_found for one that does not.
読み取り専用 外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['station_id'], 'properties': {'station_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,20}$', 'description': 'NDBC station ID (5-character alphanumeric, e.g. "44033" or "TIBC1"). Obtain from noaa_marine_find_stations with source="ndbc" and types=["water_quality"].'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['station_id', 'station_name', 'latitude', 'longitude', 'observed_at', 'source', 'reading_count', 'readings']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['observations_not_found', 'no_ocean_data'], 'description': 'Machine-readable failure mode. Declared by this tool: `observations_not_found`: NDBC returned 404 for the station â\x80\x94 no .ocean oceanographic file exists for it. `no_ocean_data`: The .ocean file exists but has no usable data rows â\x80\x94 station offline or every depth row missing. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'source': {'type': 'string', 'description': 'Data source â\x80\x94 always "ndbc" for this tool.'}, 'latitude': {'type': ['number', 'null'], 'description': 'Station latitude in decimal degrees. Null when the station is absent from the NDBC active-stations list â\x80\x94 the .ocean feed carries observations but no coordinates.'}, 'readings': {'type': 'array', 'items': {'type': 'object', 'required': ['depth_m', 'water_temp_c', 'conductivity_ms_cm', 'salinity_psu', 'oxygen_percent', 'oxygen_ppm', 'chlorophyll_ug_l', 'turbidity_ftu', 'ph', 'redox_mv'], 'properties': {'ph': {'type': ['number', 'null'], 'description': 'pH, dimensionless (PH). Null when the station did not report it.'}, 'depth_m': {'type': 'number', 'description': 'Measurement depth below the surface in meters (DEPTH).'}, 'redox_mv': {'type': ['number', 'null'], 'description': 'Oxidation-reduction (redox) potential in mV (EH). Null when the station did not report it.'}, 'oxygen_ppm': {'type': ['number', 'null'], 'description': 'Dissolved-oxygen concentration in ppm (O2PPM). Null when the station did not report it.'}, 'salinity_psu': {'type': ['number', 'null'], 'description': 'Salinity in practical salinity units (SAL). Null when the station did not report it.'}, 'water_temp_c': {'type': ['number', 'null'], 'description': 'Water temperature in °C (OTMP). Null when the station did not report it.'}, 'turbidity_ftu': {'type': ['number', 'null'], 'description': 'Turbidity in Formazin Turbidity Units (TURB). Null when the station did not report it.'}, 'oxygen_percent': {'type': ['number', 'null'], 'description': 'Dissolved-oxygen saturation in percent (O2%). Null when the station did not report it.'}, 'chlorophyll_ug_l': {'type': ['number', 'null'], 'description': 'Chlorophyll concentration in µg/l (CLCON). Null when the station did not report it.'}, 'conductivity_ms_cm': {'type': ['number', 'null'], 'description': 'Conductivity in mS/cm (COND). Null when the station did not report it.'}}, 'description': 'Water-column sensor readings at a single depth.', 'additionalProperties': False}, 'description': 'Per-depth readings sharing the most recent observation timestamp, in NDBC source order.'}, 'longitude': {'type': ['number', 'null'], 'description': 'Station longitude in decimal degrees. Null when the station is absent from the NDBC active-stations list.'}, 'station_id': {'type': 'string', 'description': 'Station ID echoed from the request â\x80\x94 for chaining.'}, 'observed_at': {'type': 'string', 'description': 'ISO 8601 UTC timestamp of the observation. Always a valid instant â\x80\x94 a row whose upstream time columns are malformed is rejected rather than timestamped with the current time.'}, 'station_name': {'type': 'string', 'description': 'Station name from the NDBC active stations list.'}, 'reading_count': {'type': 'number', 'description': 'Number of per-depth readings in the latest observation (usually 1).'}}, 'additionalProperties': False}
noaa_marine_get_tide_predictions
Get Tide Predictions
High and low tide predictions for a CO-OPS tide station over a date range. The default hilo interval returns the time, height, and tide type (H for high, L for low) of each event, while the 6-minute interval returns the detailed tide curve. Most tide stations are subordinate — CO-OPS derives their high and low events as offsets from a reference station and publishes no 6-minute curve for them — so interval="6min" reaches only a reference station, and a subordinate station comes back as subordinate_no_6min naming the reference station to ask instead; the prediction_class on a noaa_marine_find_stations tide row says which kind a station is before the call. Datum defaults to MLLW, mean lower low water, the standard for US nautical charts, and the date range is limited to 1 year per request. A range whose predictions fit the response budget is returned whole; a longer one is returned as a page of leading rows, and rows_matched, rows_returned, and next_offset then report how much matched and which offset reaches the rest, so a year of events is read by walking offset rather than by splitting the range. Use noaa_marine_find_stations first to resolve a station name or location to a numeric station ID.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['station_id', 'begin_date', 'end_date'], 'properties': {'datum': {'enum': ['MLLW', 'MHHW', 'MHW', 'MTL', 'MSL', 'MLW', 'DTL', 'NAVD', 'STND', 'CRD'], 'type': 'string', 'default': 'MLLW', 'description': "Datum the predicted heights are referenced to. MLLW (default) is the US nautical chart datum, and MHHW (mean higher high water) is the flooding reference; MHW, MTL, MSL, MLW, and DTL (diurnal tide level) are the other tidal planes. NAVD is NAVD88 and reads only where the station has an NAVD88 tie. STND is the station's own datum and is the plane that works where no tidal datum exists. CRD applies at Columbia River stations only. A datum this station does not carry comes back as datum_unavailable naming the ones it does."}, 'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Maximum prediction rows to return on this page, for a caller that wants fewer than the response budget allows. Omit for the largest page that fits; a value larger than the budget allows does not widen the page.'}, 'units': {'enum': ['english', 'metric'], 'type': 'string', 'default': 'english', 'description': 'Unit system for heights: english = feet; metric = meters.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Row offset into the matched prediction series, for reading a range whose rows do not fit one response. 0 (default) starts at the first row; pass the next_offset from a previous call to continue. An offset past the last row returns an empty page rather than an error.'}, 'end_date': {'type': 'string', 'pattern': '^(\\d{8}|\\d{4}-\\d{2}-\\d{2})$', 'description': 'End date (inclusive), YYYYMMDD or YYYY-MM-DD, e.g. "20240607" or "2024-06-07".'}, 'interval': {'enum': ['hilo', '6min'], 'type': 'string', 'default': 'hilo', 'description': 'Prediction interval: hilo (default) returns only high and low tide events; 6min returns a continuous prediction curve at 6-minute intervals, and is served only by a reference station â\x80\x94 a subordinate station has no 6-minute curve.'}, 'time_zone': {'enum': ['lst_ldt', 'gmt', 'lst'], 'type': 'string', 'default': 'lst_ldt', 'description': 'Time zone for returned timestamps. lst_ldt = local standard/daylight time (default); gmt = UTC; lst = local standard time year-round.'}, 'begin_date': {'type': 'string', 'pattern': '^(\\d{8}|\\d{4}-\\d{2}-\\d{2})$', 'description': 'Start date, YYYYMMDD or YYYY-MM-DD, e.g. "20240601" or "2024-06-01".'}, 'station_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,20}$', 'description': 'CO-OPS tide station ID (numeric, e.g. "9447130" for Seattle). Obtain from noaa_marine_find_stations with types=["tide"].'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['station_id', 'station_name', 'datum', 'units', 'predictions']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'datum': {'type': 'string', 'description': 'Tidal datum used (e.g. MLLW) â\x80\x94 echoed for correct interpretation of heights.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['station_not_found', 'invalid_date_range', 'date_range_exceeded', 'no_predictions', 'subordinate_no_6min', 'datum_unavailable', 'upstream_throttled'], 'description': 'Machine-readable failure mode. Declared by this tool: `station_not_found`: CO-OPS returned an error for the station ID â\x80\x94 likely wrong type or invalid ID. `invalid_date_range`: begin_date/end_date is not a real calendar date or begin_date is after end_date. `date_range_exceeded`: Requested date range exceeds the 1-year CO-OPS limit. `no_predictions`: Station exists but CO-OPS returned no prediction data for the date range. `subordinate_no_6min`: interval="6min" was requested for a subordinate station, whose predictions are high and low events derived from a reference station. `datum_unavailable`: The station does not carry the requested datum â\x80\x94 NAVD reads only where the station has an NAVD88 tie, and CRD only on the Columbia River. `upstream_throttled`: CO-OPS answered HTTP 403, which it returns for about two minutes while it throttles a burst of requests from one address. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'units': {'type': 'string', 'description': 'Height units: "english" (feet) or "metric" (meters).'}, 'notice': {'type': 'string', 'description': 'What this page of the prediction series covers and how to reach the next one. Present only when the response is a page rather than the whole matched series.'}, 'truncated': {'type': 'boolean', 'description': 'True when this page stops short of the last matched row, so further rows remain at next_offset. False on the final page and on a page past the end. Absent when the whole matched series was returned.'}, 'station_id': {'type': 'string', 'description': 'Station ID echoed from the request â\x80\x94 for chaining.'}, 'next_offset': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Offset to pass as offset on the next call, or null when this page reaches the last matched row. Absent when the whole matched series was returned.'}, 'page_offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Row offset this page starts at, echoed from the request. Absent when the whole matched series was returned.'}, 'predictions': {'type': 'array', 'items': {'type': 'object', 'required': ['time', 'height'], 'properties': {'time': {'type': 'string', 'description': 'Prediction datetime in the requested time zone (YYYY-MM-DD HH:MM format).'}, 'type': {'type': 'string', 'description': 'Tide type: H = high tide, L = low tide (only present for hilo interval).'}, 'height': {'type': 'number', 'description': 'Predicted water height in the requested units (feet or meters) relative to the datum.'}}, 'description': 'A single tide prediction event.', 'additionalProperties': False}, 'description': 'Tide predictions for the requested date range â\x80\x94 the whole series when it fits one response, otherwise the leading page starting at offset. rows_matched and next_offset report what a page left behind.'}, 'rows_matched': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Prediction rows the requested date range matched, before the page was cut. Absent when the whole matched series was returned.'}, 'station_name': {'type': 'string', 'description': 'Station name as returned by CO-OPS â\x80\x94 confirms the correct station was queried.'}, 'rows_returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Prediction rows this page carries â\x80\x94 the length of predictions. Absent when the whole matched series was returned.'}}, 'additionalProperties': False}
noaa_marine_get_water_level
Get Water Level
Observed water level, real-time or historical, for a CO-OPS water-level station, paired with tide predictions for the same period so the residual (observed − predicted) shows storm surge when positive and anomalous drawdown when negative. The interval selects the cadence: 6min (default) is the full curve, hourly and high_low cover months to a year of the same series at far fewer rows, and daily_mean serves Great Lakes stations only. Each interval carries its own CO-OPS range ceiling — 31 days for 6min, 365 for hourly and high_low, 3655 for daily_mean — rejected locally before the call, and only 6min and hourly report a residual. Observations and predictions are fetched independently, so when the prediction series is empty, predictions_status says whether CO-OPS has none for this station and range or the prediction fetch failed — the observed series returns either way, and residual_summary is present only when both series are and the cadence supports the join. A sensor outage leaves slots with no reading; those slots are dropped and counted in gaps_dropped, so the observed series is continuous across the range only when that count is absent. A range whose rows fit the response budget is returned whole; a longer one returns the leading rows, with rows_matched, rows_returned, and next_offset reporting how much matched and which offset reaches the rest. Use noaa_marine_find_stations first to resolve a station name or location to a valid station ID.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['station_id', 'begin_date', 'end_date'], 'properties': {'datum': {'enum': ['MLLW', 'MHHW', 'MHW', 'MTL', 'MSL', 'MLW', 'NAVD', 'STND', 'IGLD', 'LWD', 'CRD', 'LWI', 'HWI'], 'type': 'string', 'default': 'MLLW', 'description': "Datum the observed heights are referenced to. MLLW (default) is the US nautical chart datum, and MHHW (mean higher high water) is the flooding reference; MHW, MTL, MSL, and MLW are the other tidal planes. NAVD is NAVD88 and reads only where the station has an NAVD88 tie. STND is the station's own datum and is the plane that works where no tidal datum exists. IGLD and LWD apply at Great Lakes stations only, CRD at Columbia River stations only, and LWI and HWI are lunitidal intervals rather than heights. A datum this station does not carry comes back as datum_unavailable naming the ones it does."}, 'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Maximum observation rows to return on this page, for a caller that wants fewer than the response budget allows. Omit for the largest page that fits; a value larger than the budget allows does not widen the page.'}, 'units': {'enum': ['english', 'metric'], 'type': 'string', 'default': 'english', 'description': 'Unit system: english = feet; metric = meters.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Row offset into the matched observation series, for reading a range whose rows do not fit one response. 0 (default) starts at the first row; pass the next_offset from a previous call to continue. An offset past the last row returns an empty page rather than an error.'}, 'end_date': {'type': 'string', 'pattern': '^(\\d{8}|\\d{4}-\\d{2}-\\d{2})$', 'description': 'End date (inclusive), YYYYMMDD or YYYY-MM-DD, e.g. "20240601" or "2024-06-01".'}, 'interval': {'enum': ['6min', 'hourly', 'high_low', 'daily_mean'], 'type': 'string', 'default': '6min', 'description': 'Observed cadence. 6min (default) is the full curve, 31 days per request, the only one carrying a quality flag. hourly is hourly heights, 365 days per request, and reports a residual against the hourly prediction series. high_low is the observed high and low waters with their H/HH/L/LL classification, 365 days per request, and reports no residual because observed extremes do not fall on predicted extreme times. daily_mean is the daily mean water level, 3655 days per request, published at Great Lakes stations only and with no paired prediction series; a coastal station comes back as great_lakes_only.'}, 'time_zone': {'enum': ['lst_ldt', 'gmt', 'lst'], 'type': 'string', 'default': 'lst_ldt', 'description': 'Time zone for returned timestamps. lst_ldt = local standard/daylight time (default); gmt = UTC; lst = local standard time year-round. Overridden to lst on interval="daily_mean", which CO-OPS serves in local standard time only and otherwise stamps every row a day off.'}, 'begin_date': {'type': 'string', 'pattern': '^(\\d{8}|\\d{4}-\\d{2}-\\d{2})$', 'description': 'Start date, YYYYMMDD or YYYY-MM-DD, e.g. "20240601" or "2024-06-01".'}, 'station_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,20}$', 'description': 'CO-OPS water-level station ID (numeric, e.g. "9447130" for Seattle). Obtain from noaa_marine_find_stations with types=["water_level"].'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['station_id', 'station_name', 'datum', 'units', 'interval', 'observations', 'predictions']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'datum': {'type': 'string', 'description': 'Tidal datum used â\x80\x94 echoed for correct interpretation of water heights.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['station_not_found', 'invalid_date_range', 'date_range_exceeded', 'no_data', 'great_lakes_only', 'verified_data_lag', 'datum_unavailable', 'upstream_throttled'], 'description': 'Machine-readable failure mode. Declared by this tool: `station_not_found`: CO-OPS returned an error for the station ID. `invalid_date_range`: begin_date/end_date is not a real calendar date or begin_date is after end_date. `date_range_exceeded`: Requested date range exceeds the selected interval\'s CO-OPS limit â\x80\x94 31 days for 6min, 365 for hourly and high_low, 3655 for daily_mean. `no_data`: Station exists but no observed water-level data for the date range â\x80\x94 including an hourly, high_low, or daily_mean window ending before the prior month, which is not a verification lag. `great_lakes_only`: interval="daily_mean" was requested for a coastal station â\x80\x94 CO-OPS publishes water-level daily means at Great Lakes stations only. `verified_data_lag`: The hourly, high_low, or daily_mean product returned no rows for a window ending on or after the first day of the prior month, which CO-OPS may not have verified yet. `datum_unavailable`: The station does not carry the requested datum â\x80\x94 a Great Lakes station has no tidal datum, and NAVD reads only where the station has an NAVD88 tie. `upstream_throttled`: CO-OPS answered the observed-series request with HTTP 403, which it returns for about two minutes while it throttles a burst of requests from one address. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'units': {'type': 'string', 'description': 'Height units: "english" (feet) or "metric" (meters).'}, 'notice': {'type': 'string', 'description': 'Why the paired prediction series is missing or carries no residual, how many sample slots were dropped, and what this page of the observed series covers â\x80\x94 whichever of those apply, composed into one string.'}, 'interval': {'enum': ['6min', 'hourly', 'high_low', 'daily_mean'], 'type': 'string', 'description': 'Observed cadence echoed from the request â\x80\x94 the CO-OPS product these rows came from, and what decides whether quality, type, and residual_summary are populated.'}, 'truncated': {'type': 'boolean', 'description': 'True when this page stops short of the last matched observation, so further rows remain at next_offset. False on the final page and on a page past the end. Absent when the whole matched series was returned.'}, 'station_id': {'type': 'string', 'description': 'Station ID echoed from the request â\x80\x94 for chaining.'}, 'next_offset': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Offset to pass as offset on the next call, or null when this page reaches the last matched observation. Absent when the whole matched series was returned.'}, 'page_offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Observation row offset this page starts at, echoed from the request. Absent when the whole matched series was returned.'}, 'predictions': {'type': 'array', 'items': {'type': 'object', 'required': ['time', 'value'], 'properties': {'time': {'type': 'string', 'description': 'Prediction datetime in the requested time zone.'}, 'value': {'type': 'number', 'description': 'Predicted water height in the requested units relative to the datum.'}}, 'description': 'A single tide prediction.', 'additionalProperties': False}, 'description': 'Paired tide predictions covering the same period as the returned observations, at the interval matching the observed cadence. Always empty on the daily_mean interval, which has no paired series. Otherwise empty when CO-OPS returned no predictions for this station and range, or when the prediction fetch failed â\x80\x94 predictions_status says which.'}, 'gaps_dropped': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Number of sample slots CO-OPS sent with no reading, dropped from observations. Present only when there was at least one. The observed series is therefore not continuous across the requested range: it has this many missing slots, and rows_matched counts only the slots that carry a value.'}, 'observations': {'type': 'array', 'items': {'type': 'object', 'required': ['time', 'value'], 'properties': {'time': {'type': 'string', 'description': 'Observation datetime in the requested time zone.'}, 'type': {'enum': ['H', 'HH', 'L', 'LL'], 'type': 'string', 'description': 'Observed extreme classification on the high_low interval: H = high water, HH = higher high water, L = low water, LL = lower low water. Absent on every other interval.'}, 'sigma': {'type': 'number', 'description': 'Standard deviation of the water level sensor reading. Present on the 6min and hourly intervals; CO-OPS sends none for high_low or daily_mean.'}, 'value': {'type': 'number', 'description': 'Observed water height in the requested units relative to the datum.'}, 'quality': {'type': 'string', 'description': 'Quality flag: p = preliminary, v = verified. Present on the 6min interval only â\x80\x94 CO-OPS sends no flag with the hourly, high_low, or daily_mean products, which are verified data, so the field is absent rather than defaulted to preliminary.'}}, 'description': 'A single observed water level reading at the requested cadence.', 'additionalProperties': False}, 'description': 'Observed water level readings at the requested cadence â\x80\x94 the whole matched series when it fits one response, otherwise the leading page starting at offset. rows_matched and next_offset report what a page left behind.'}, 'rows_matched': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Observation rows the requested date range matched, before the page was cut. Absent when the whole matched series was returned.'}, 'station_name': {'type': 'string', 'description': 'Station name as returned by CO-OPS.'}, 'rows_returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Observation rows this page carries â\x80\x94 the length of observations. Absent when the whole matched series was returned.'}, 'residual_summary': {'type': 'object', 'required': ['max_surge', 'max_drawdown'], 'properties': {'max_surge': {'type': 'number', 'description': 'Maximum positive residual (observed â\x88\x92 predicted) in the requested units (feet for english, meters for metric) â\x80\x94 storm surge indicator. 0 when the observed level never rose above prediction in the range.'}, 'max_drawdown': {'type': 'number', 'description': 'Maximum negative residual magnitude in the requested units (feet for english, meters for metric) â\x80\x94 anomalous drawdown indicator. 0 when the observed level never fell below prediction in the range.'}}, 'description': 'Summary of observed-minus-predicted residuals in the requested units, computed across the whole matched series rather than the returned page â\x80\x94 so a paged response still reports the largest surge in the range. Present only on the 6min and hourly intervals, and only when both series are available; the notice says why it is absent on high_low and daily_mean.', 'additionalProperties': False}, 'predictions_status': {'enum': ['empty', 'unavailable'], 'type': 'string', 'description': 'Present only when predictions is empty on an interval that has a paired series. "empty" means CO-OPS returned no prediction rows for this station and date range; "unavailable" means the prediction fetch failed, so no comparison series could be retrieved and the absence says nothing about the station. Absent when predictions were returned, and on the daily_mean interval, which has no paired series to report on.'}}, 'additionalProperties': False}
変更
noaa_marine_get_currents
2026年9月25日2:51
追加
noaa_marine_get_monthly_means
2026年9月25日2:51
変更
noaa_marine_get_water_level
2026年9月25日2:51
変更
noaa_marine_get_tide_predictions
2026年9月25日2:51
変更
noaa_marine_find_stations
2026年9月25日2:51
変更
noaa_marine_get_ocean_observations
2026年9月19日2:41
変更
noaa_marine_get_current_profile
2026年9月19日2:41
変更
noaa_marine_get_conditions
2026年9月19日2:41
変更
noaa_marine_get_currents
2026年9月19日2:41
変更
noaa_marine_get_water_level
2026年9月19日2:41
変更
noaa_marine_get_tide_predictions
2026年9月19日2:41
変更
noaa_marine_find_stations
2026年9月19日2:41
追加
noaa_marine_get_ocean_observations
2026年9月17日12:41
追加
noaa_marine_get_current_profile
2026年9月17日12:41
追加
noaa_marine_get_conditions
2026年9月17日12:41
追加
noaa_marine_get_currents
2026年9月17日12:41
追加
noaa_marine_get_water_level
2026年9月17日12:41
追加
noaa_marine_get_tide_predictions
2026年9月17日12:41
追加
noaa_marine_find_stations
2026年9月17日12:41