{"openapi":"3.1.0","info":{"title":"AVWX (BYOK) API","version":"0.1.0","description":"AVWX (BYOK) lets an AI assistant read your own AVWX data through the AVWX API with a key you supply (AVWX API token). Read-only: 10 tools (get_station, nearest_stations, search_stations, get_metar, get_taf, get_weather_summary, get_pireps, list_airsigmets, airsigmets_at_location, get_notams). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-avwx.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-avwx/docs"},"termsOfService":"https://connectorbay.com/byok-avwx/terms"},"servers":[{"url":"https://byok-avwx.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-avwx/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_station":{"post":{"operationId":"get_station","summary":"Get an airport or weather station by ICAO or IATA code: name, city, coordinates, elevation, type and runways. Use for \"T","description":"Get an airport or weather station by ICAO or IATA code: name, city, coordinates, elevation, type and runways. Use for \"Tell me about John F Kennedy airport and its runways\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ident":{"description":"ICAO or IATA code of the station, for example 'KJFK' or 'JFK'.","maxLength":200,"title":"Ident","type":"string"}},"required":["ident"],"title":"get_stationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/nearest_stations":{"post":{"operationId":"nearest_stations","summary":"List the stations nearest to a coordinate pair, with distance; reporting airports only by default. Free plans may reques","description":"List the stations nearest to a coordinate pair, with distance; reporting airports only by default. Free plans may request at most 10. Use for \"Which airports are closest to latitude 28.1, longitude -81\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"coord":{"description":"Coordinate pair as 'lat,lon', for example '28.1,-81'.","maxLength":200,"title":"Coord","type":"string"},"n":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many stations to return (default 10; free plans are limited to 10, paid plans up to 200).","title":"N"},"airport":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include only airports when a coordinate search is used.","title":"Airport"},"reporting":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include only reporting stations when a coordinate search is used.","title":"Reporting"}},"required":["coord"],"title":"nearest_stationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_stations":{"post":{"operationId":"search_stations","summary":"Search stations by text matching ICAO, IATA, name, city or state; reporting airports only by default. Use for \"Find the ","description":"Search stations by text matching ICAO, IATA, name, city or state; reporting airports only by default. Use for \"Find the airport serving Lihue, Hawaii\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Search text, for example 'lihue hi' or 'heathrow'.","maxLength":200,"title":"Text","type":"string"},"n":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Maximum results (default 10).","title":"N"},"airport":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include only airports when a coordinate search is used.","title":"Airport"},"reporting":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include only reporting stations when a coordinate search is used.","title":"Reporting"}},"required":["text"],"title":"search_stationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_metar":{"post":{"operationId":"get_metar","summary":"Get the latest METAR observation for a station or coordinate: flight rules, wind, visibility, temperature, dew point, al","description":"Get the latest METAR observation for a station or coordinate: flight rules, wind, visibility, temperature, dew point, altimeter, clouds and the raw report. Use for \"What is the current METAR at KJFK\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Airport ICAO or IATA code (for example 'KJFK' or 'EGLL') or a 'lat,lon' coordinate pair (for example '51.47,-0.4'); a coordinate returns the nearest reporting station.","maxLength":200,"title":"Location","type":"string"},"options":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Extra data as a comma-separated list; supported values are info, translate, summary and speech (for example 'info,summary').","title":"Options"},"airport":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include only airports when a coordinate search is used.","title":"Airport"},"reporting":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include only reporting stations when a coordinate search is used.","title":"Reporting"},"onfail":{"anyOf":[{"enum":["cache","error","nearest"],"type":"string"},{"type":"null"}],"default":null,"description":"What to do when a fresh report cannot be fetched: cache (serve older data, default), error, or nearest (try the nearest station).","title":"Onfail"}},"required":["location"],"title":"get_metarArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_taf":{"post":{"operationId":"get_taf","summary":"Get the latest TAF forecast for a station or coordinate, with each forecast period's flight rules, wind, visibility and ","description":"Get the latest TAF forecast for a station or coordinate, with each forecast period's flight rules, wind, visibility and clouds. Use for \"What is the TAF forecast for EGLL\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Airport ICAO or IATA code (for example 'KJFK' or 'EGLL') or a 'lat,lon' coordinate pair (for example '51.47,-0.4'); a coordinate returns the nearest reporting station.","maxLength":200,"title":"Location","type":"string"},"options":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Extra data as a comma-separated list; supported values are info, translate, summary and speech (for example 'info,summary').","title":"Options"},"airport":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include only airports when a coordinate search is used.","title":"Airport"},"reporting":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include only reporting stations when a coordinate search is used.","title":"Reporting"},"onfail":{"anyOf":[{"enum":["cache","error","nearest"],"type":"string"},{"type":"null"}],"default":null,"description":"What to do when a fresh report cannot be fetched: cache (serve older data, default), error, or nearest (try the nearest station).","title":"Onfail"}},"required":["location"],"title":"get_tafArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_weather_summary":{"post":{"operationId":"get_weather_summary","summary":"Get a short flight-conditions summary for a station: current METAR flight rules, visibility and ceiling plus the TAF for","description":"Get a short flight-conditions summary for a station: current METAR flight rules, visibility and ceiling plus the TAF forecast periods. Use for \"Is it VFR or IFR at KJFK now and later\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Airport ICAO or IATA code (for example 'KJFK' or 'EGLL') or a 'lat,lon' coordinate pair (for example '51.47,-0.4'); a coordinate returns the nearest reporting station.","maxLength":200,"title":"Location","type":"string"},"options":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Extra data as a comma-separated list; supported values are info, translate, summary and speech (for example 'info,summary').","title":"Options"},"onfail":{"anyOf":[{"enum":["cache","error","nearest"],"type":"string"},{"type":"null"}],"default":null,"description":"What to do when a fresh report cannot be fetched: cache (serve older data, default), error, or nearest (try the nearest station).","title":"Onfail"}},"required":["location"],"title":"get_weather_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_pireps":{"post":{"operationId":"get_pireps","summary":"Get pilot reports (PIREPs) within about 200 miles of a station or coordinate: aircraft, altitude, turbulence, icing and ","description":"Get pilot reports (PIREPs) within about 200 miles of a station or coordinate: aircraft, altitude, turbulence, icing and raw text. Use for \"Any pilot reports of turbulence near Orlando\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Airport ICAO or IATA code (for example 'KJFK' or 'EGLL') or a 'lat,lon' coordinate pair (for example '51.47,-0.4'); a coordinate returns the nearest reporting station.","maxLength":200,"title":"Location","type":"string"},"options":{"anyOf":[{"const":"info","type":"string"},{"type":"null"}],"default":null,"description":"Set to 'info' to include station details.","title":"Options"},"onfail":{"anyOf":[{"enum":["cache","error","nearest"],"type":"string"},{"type":"null"}],"default":null,"description":"What to do when a fresh report cannot be fetched: cache (serve older data, default), error, or nearest (try the nearest station).","title":"Onfail"}},"required":["location"],"title":"get_pirepsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_airsigmets":{"post":{"operationId":"list_airsigmets","summary":"List all current global AIRMET and SIGMET advisories with bulletin, issuer, area, validity times and body text. Use for ","description":"List all current global AIRMET and SIGMET advisories with bulletin, issuer, area, validity times and body text. Use for \"What SIGMETs and AIRMETs are active right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"onfail":{"anyOf":[{"enum":["cache","error"],"type":"string"},{"type":"null"}],"default":null,"description":"What to do when fresh data cannot be fetched: cache (default) or error.","title":"Onfail"}},"title":"list_airsigmetsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/airsigmets_at_location":{"post":{"operationId":"airsigmets_at_location","summary":"List AIRMET and SIGMET advisories whose boundary polygon contains a station or coordinate. Use for \"Are there any SIGMET","description":"List AIRMET and SIGMET advisories whose boundary polygon contains a station or coordinate. Use for \"Are there any SIGMETs or AIRMETs covering Orlando airport\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Airport ICAO or IATA code (for example 'KJFK' or 'EGLL') or a 'lat,lon' coordinate pair (for example '51.47,-0.4'); a coordinate returns the nearest reporting station.","maxLength":200,"title":"Location","type":"string"},"distance":{"anyOf":[{"maximum":1000,"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Optional search distance in statute miles around the point.","title":"Distance"}},"required":["location"],"title":"airsigmets_at_locationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_notams":{"post":{"operationId":"get_notams","summary":"Get NOTAMs (notices to airmen) for an airport or within a distance of a coordinate; some may be served up to 10 days aft","description":"Get NOTAMs (notices to airmen) for an airport or within a distance of a coordinate; some may be served up to 10 days after they end. Use for \"What NOTAMs are active at KMCO\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Airport ICAO or IATA code (for example 'KJFK' or 'EGLL') or a 'lat,lon' coordinate pair (for example '51.47,-0.4'); a coordinate returns the nearest reporting station.","maxLength":200,"title":"Location","type":"string"},"distance":{"anyOf":[{"maximum":500,"minimum":0,"type":"number"},{"type":"null"}],"default":10,"description":"Distance in statute miles from the airport or coordinate (default 10).","title":"Distance"}},"required":["location"],"title":"get_notamsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}