addedInput schema / properties / bbox
Added value: +{
+ "description": "Geographic bounding box for an area observation survey.",
+ "properties": {
+ "maxLat": {
+ "description": "Northern boundary latitude in decimal degrees.",
+ "maximum": 90,
+ "minimum": -90,
+ "type": "number"
+ },
+ "maxLon": {
+ "description": "Eastern boundary longitude in decimal degrees.",
+ "maximum": 180,
+ "minimum": -180,
+ "type": "number"
+ },
+ "minLat": {
+ "description": "Southern boundary latitude in decimal degrees.",
+ "maximum": 90,
+ "minimum": -90,
+ "type": "number"
+ },
+ "minLon": {
+ "description": "Western boundary longitude in decimal degrees.",
+ "maximum": 180,
+ "minimum": -180,
+ "type": "number"
+ }
+ },
+ "required": [
+ "minLat",
+ "minLon",
+ "maxLat",
+ "maxLon"
+ ],
+ "type": "object"
+}
changedInput schema / properties / hours / description
Previous value: -"Lookback window in hours (1–12), not a row limit: every observation inside the window is returned, so a station reporting more often than hourly yields more than one row per hour. At the default of 1, half-hourly stations return two observations and SPECI-issuing stations can return more. Budget rows by the station reporting interval, never one per station."New value: +"Lookback window in hours (1–12), not a row limit. With station_ids every observation inside the window is returned, so a station reporting more often than hourly yields more than one row per hour: at the default of 1, half-hourly stations return two observations and SPECI-issuing stations can return more, so budget rows by the station reporting interval, never one per station. With bbox the result is reduced to the latest observation per station, but the window still shapes the draw the upstream row cap applies to — a wide window spends that cap on repeat readings from busy stations instead of on more stations, so lower it before narrowing the box."
addedInput schema / properties / limit
Added value: +{
+ "description": "Maximum stations to return, applied after the draw is reduced to the latest observation per station and ordered by station ID ascending — so the same query with the same limit returns the same stations. It bounds the response without changing the area searched, which a smaller bbox would. Distinct from the 400-row upstream cap: a limited result examined every station it counted and withheld some, while a capped one never drew the rest. Belongs to the bbox mode; supplying it alongside station_ids is rejected, since that mode already names the set. Omit to return every station in the box. Optional.",
+ "maximum": 400,
+ "minimum": 1,
+ "type": "integer"
+}
changedInput schema / properties / station_ids / description
Previous value: -"ICAO station IDs to query. 1–10 stations per call."New value: +"ICAO station IDs to query. 1–10 stations per call, and every observation inside the hours window is returned for each. Supplying it alongside bbox is rejected — use bbox to ask about an area rather than a named set."
changedInput schema / properties / station_ids / items / description
Previous value: -"4-letter ICAO station ID (e.g., KSEA, KJFK)."New value: +"ICAO station ID: 4 uppercase letters or digits (e.g., KSEA, KJFK, K0S9)."
changedInput schema / properties / station_ids / items / pattern
Previous value: -"^[A-Z]{4}$"New value: +"^[A-Z0-9]{4}$"
removedInput schema / required
Removed value: -[
- "station_ids"
-]
changedOutput schema / anyOf
Previous value: -[
- {
- "not": {
- "required": [
- "error"
- ]
- },
- "required": [
- "observations",
- "requested",
- "returned",
- "partial"
- ]
- },
- {
- "required": [
- "error"
- ]
- }
-]New value: +[
+ {
+ "not": {
+ "required": [
+ "error"
+ ]
+ },
+ "required": [
+ "observations"
+ ]
+ },
+ {
+ "required": [
+ "error"
+ ]
+ }
+]
addedOutput schema / properties / cap
Added value: +{
+ "description": "The upstream row maximum that was applied to the draw. Present only on a truncated result.",
+ "type": "number"
+}
changedOutput schema / properties / error / properties / data / properties / reason / description
Previous value: -"Machine-readable failure mode. Declared by this tool: `no_stations_found`: None of the requested station IDs returned METAR data. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `no_stations_found`: No station returned METAR data — none of the requested IDs, or no station inside the bounding box. `missing_location`: Neither station_ids nor bbox was provided. `conflicting_location`: Both station_ids and bbox were provided. `invalid_bbox`: The bounding box is inverted — minLat > maxLat or minLon > maxLon. `conflicting_limit`: limit was provided together with station_ids, where the caller has already named the set. Other values are possible when a failure originates below the handler."
changedOutput schema / properties / error / properties / data / properties / reason / examples
Previous value: -[
- "no_stations_found"
-]New value: +[
+ "no_stations_found",
+ "missing_location",
+ "conflicting_location",
+ "invalid_bbox",
+ "conflicting_limit"
+]
addedOutput schema / properties / limited
Added value: +{
+ "description": "True when the requested limit withheld stations that matched — the caller asked to see fewer of them. False affirms the limit did not bite, so every station drawn is here. Present only when a bbox survey supplied a limit. It never states anything about the upstream cap: a limited result examined every station it counted, while a truncated one never drew the rest.",
+ "type": "boolean"
+}
addedOutput schema / properties / matched
Added value: +{
+ "description": "Stations the draw held before the limit selected from them. Present only on a limited result. Where the result is also truncated this counts the capped draw and not the box — the observations the cap dropped were never examined, so no count can include them.",
+ "type": "number"
+}
changedOutput schema / properties / notice / description
Previous value: -"Recovery guidance naming the missing station IDs. Present only on a partial result. It lists the candidate causes without asserting one — upstream omits the row either way."New value: +"Guidance for whichever disclosures fired: the levers that narrow a truncated draw, what a requested limit withheld, or the station IDs that returned nothing. The cap and the limit can both fire on one result, and the text keeps them apart; the reconciliation cannot join them, since only bbox reaches the row cap or accepts a limit, and only station_ids reconciles a request."
changedOutput schema / properties / observations / description
Previous value: -"Weather observations, one per station/time pair. Multiple entries per station when hours > 1."New value: +"Weather observations. With station_ids, one per station/time pair — multiple entries per station when the hours window holds more than one observation. With bbox, one per station: the latest observation inside that window."
changedOutput schema / properties / observations / items / properties / clouds / description
Previous value: -"All reported cloud layers from lowest to highest. Empty whenever the observation published no layer heights, which covers a clear sky, an obscuration with no determinable height, and an observation that reported no sky condition at all; sky_condition distinguishes them. An empty array is not a clear sky on its own."New value: +"Cloud layers from lowest to highest, as AWC decoded them — at most four, so a fifth or higher reported layer is left out with no marker and raw_metar is the complete source. Empty whenever the observation published no layer heights, which covers a clear sky, an obscuration with no determinable height, and an observation that reported no sky condition at all; sky_condition distinguishes them. An empty array is not a clear sky on its own."
changedOutput schema / properties / observations / items / properties / station_id / description
Previous value: -"ICAO 4-letter station identifier (e.g., KSEA)."New value: +"ICAO station identifier, 4 uppercase letters or digits (e.g., KSEA, K0S9)."
changedOutput schema / properties / observations / items / properties / wind / properties / direction_deg / description
Previous value: -"Wind direction in degrees true. Null when variable."New value: +"Wind direction in degrees true. Null when the observation reported a variable wind (VRB), and also when it carried no wind group at all — speed_kt is a number in the first case and null in the second."
changedOutput schema / properties / partial / description
Previous value: -"True when a requested station produced no observation. False affirms the result covers every requested station, so full coverage is distinguishable from a short batch rather than being inferred from the count."New value: +"True when a requested station produced no observation. False affirms the result covers every requested station, so full coverage is distinguishable from a short batch rather than being inferred from the count. Present only on a station_ids lookup."
changedOutput schema / properties / requested / description
Previous value: -"Station IDs this call asked for, in the order given."New value: +"Station IDs this call asked for, in the order given. Present only on a station_ids lookup — a bbox survey asks for an area, not a list."
changedOutput schema / properties / returned / description
Previous value: -"Distinct station IDs that produced at least one observation. Counted per station, not per row — with hours > 1 a station reporting six times still appears once."New value: +"Distinct station IDs that produced at least one observation. Counted per station, not per row — with hours > 1 a station reporting six times still appears once. Present only on a station_ids lookup."
addedOutput schema / properties / shown
Added value: +{
+ "description": "Stations in this result, counted after the reduction to one observation per station and after any limit. Present only on a bbox survey.",
+ "type": "number"
+}
addedOutput schema / properties / truncated
Added value: +{
+ "description": "True when the upstream draw hit the AWC row cap, so stations inside the box are missing from this result. False says the draw did not reach that cap, which a count alone cannot establish — the draw is reduced to one row per station, so the returned count sits far below the cap either way. It is not a completeness claim: AWC also thins a dense box by station priority, independently of the cap and with nothing in the response to mark it, so re-run over smaller quadrants and union the results when the box must be complete. Present only on a bbox survey.",
+ "type": "boolean"
+}
addedOutput schema / properties / upstreamRows
Added value: +{
+ "description": "Observations AWC returned before the reduction to one row per station. Present only on a truncated draw the reduction then narrowed, where the station count sits below the cap and so cannot reveal the truncation on its own.",
+ "type": "number"
+}