changedInput schema / properties / query / description
Previous value: -"Station name substring to match, case-insensitive. E.g. \"seattle\", \"puget sound\". NDBC rows also match on station ID. Blank or whitespace-only values are treated as omitted."New value: +"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 — a proximity search orders by distance instead. Blank or whitespace-only values are treated as omitted."
changedInput schema / properties / types / items / description
Previous value: -"Filter value. Five are data capabilities, matched against a station's capabilities list: tide (CO-OPS tide predictions → noaa_marine_get_tide_predictions), current (CO-OPS tidal-current predictions → noaa_marine_get_currents), water_level (CO-OPS observed water levels → noaa_marine_get_water_level), met (NDBC meteorological → noaa_marine_get_conditions), current_profile (NDBC observed ocean-current depth profile → noaa_marine_get_current_profile; note this is a different data product and source than CO-OPS `current`). The sixth, buoy, is a physical-platform filter (NDBC platform class equals buoy), not a data capability — use it to select buoy-class platforms regardless of what data they serve."New value: +"Filter value. Six are data capabilities, matched against a station's capabilities list: tide (CO-OPS tide predictions → noaa_marine_get_tide_predictions), current (CO-OPS tidal-current predictions → noaa_marine_get_currents), water_level (CO-OPS observed water levels → noaa_marine_get_water_level), met (NDBC meteorological → noaa_marine_get_conditions), current_profile (NDBC observed ocean-current depth profile → 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 → noaa_marine_get_ocean_observations). The seventh, buoy, is a physical-platform filter (NDBC platform class equals buoy), not a data capability — use it to select buoy-class platforms regardless of what data they serve."
changedInput schema / properties / types / items / enum
Previous value: -[
- "tide",
- "current",
- "water_level",
- "met",
- "current_profile",
- "buoy"
-]New value: +[
+ "tide",
+ "current",
+ "water_level",
+ "met",
+ "current_profile",
+ "water_quality",
+ "buoy"
+]
addedOutput schema / properties / applied_search
Added value: +{
+ "additionalProperties": false,
+ "description": "The narrowing dimensions this search applied, echoed when nothing matched so the caller can see which filter emptied the result.",
+ "properties": {
+ "catalogs_read": {
+ "description": "Catalogs this search actually fetched. Empty when source and state cancelled each other out and no catalog was read.",
+ "items": {
+ "description": "Catalog name: coops or ndbc.",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "center": {
+ "additionalProperties": false,
+ "description": "Proximity-search center, present only when latitude and longitude were supplied.",
+ "properties": {
+ "latitude": {
+ "description": "Center latitude the proximity filter used.",
+ "type": "number"
+ },
+ "longitude": {
+ "description": "Center longitude the proximity filter used.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "latitude",
+ "longitude"
+ ],
+ "type": "object"
+ },
+ "query": {
+ "description": "The name/ID substring as the server used it — trimmed and lowercased. Omitted when no query was supplied or it was blank.",
+ "type": "string"
+ },
+ "radius_km": {
+ "description": "Radius bound in km, present only when a center was given. Applies whenever a center is present and defaults to 100 km.",
+ "type": "number"
+ },
+ "source": {
+ "description": "The source filter applied: coops, ndbc, or all.",
+ "type": "string"
+ },
+ "state": {
+ "description": "The state filter applied. Restricts results to CO-OPS and excludes NDBC.",
+ "type": "string"
+ },
+ "types": {
+ "description": "The resolved types filter. Omitted when no types filter narrowed the search.",
+ "items": {
+ "description": "A requested capability or platform filter value.",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "types_by_source": {
+ "additionalProperties": false,
+ "description": "The requested types split by the source that can carry them — every value belongs to exactly one source, so a single-source types filter reduces the search to that source.",
+ "properties": {
+ "coops": {
+ "description": "Requested values only a CO-OPS row can carry.",
+ "items": {
+ "description": "CO-OPS-only filter value.",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "ndbc": {
+ "description": "Requested values only an NDBC row can carry.",
+ "items": {
+ "description": "NDBC-only filter value.",
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "coops",
+ "ndbc"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "catalogs_read",
+ "source"
+ ],
+ "type": "object"
+}
changedOutput schema / properties / error / properties / data / properties / reason / description
Previous value: -"Machine-readable failure mode. Declared by this tool: `no_results`: No stations match the query, location, or filters. `incomplete_coordinates`: Only one of latitude/longitude was supplied — proximity search needs the pair. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `incomplete_coordinates`: Only one of latitude/longitude was supplied — 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."
changedOutput schema / properties / error / properties / data / properties / reason / examples
Previous value: -[
- "no_results",
- "incomplete_coordinates"
-]New value: +[
+ "incomplete_coordinates",
+ "sources_unavailable"
+]
addedOutput schema / properties / notice
Added value: +{
+ "description": "Guidance about the result set: why a search matched nothing, which catalog did not answer, or that the list was capped.",
+ "type": "string"
+}
addedOutput schema / properties / sources
Added value: +{
+ "additionalProperties": false,
+ "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.",
+ "properties": {
+ "answered": {
+ "description": "Catalogs that returned a station list — the results cover these only.",
+ "items": {
+ "description": "Catalog name: coops or ndbc.",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "attempted": {
+ "description": "Catalogs this search needed, after source and state decided which to read.",
+ "items": {
+ "description": "Catalog name: coops or ndbc.",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "failed": {
+ "description": "Catalogs whose fetch rejected. A station served only by one of these is missing.",
+ "items": {
+ "description": "Catalog name: coops or ndbc.",
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "answered",
+ "attempted",
+ "failed"
+ ],
+ "type": "object"
+}
changedOutput schema / properties / stations / description
Previous value: -"Stations matching the search criteria, sorted by distance (if lat/lon provided) or name."New value: +"Stations matching the search criteria, sorted by distance (if lat/lon provided) or by exact ID match then name. Empty when nothing matched."
changedOutput schema / properties / stations / items / properties / capabilities / description
Previous value: -"Data products available at this station: any of tide, current, water_level (CO-OPS) or met, current_profile (NDBC). Empty when the station reports no data capability — platform still identifies it."New value: +"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 — platform still identifies it."
changedOutput schema / properties / total_found / description
Previous value: -"Total stations matching the filters before the limit was applied."New value: +"Total stations matching the filters before the limit was applied. Zero when nothing matched."