{"openapi":"3.1.0","info":{"title":"OpenWeather (BYOK) API","version":"0.1.0","description":"OpenWeather (BYOK) lets an AI assistant read your own OpenWeather data through the OpenWeather API with a key you supply (API key). Read-only: 8 tools (get_current_weather, get_forecast, geocode_place, geocode_postal_code, reverse_geocode, get_current_air_pollution, get_air_pollution_forecast, get_air_pollution_history). The BYOK key travels with each request, is used for that one call only and...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-openweathermap.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-openweathermap/docs"},"termsOfService":"https://connectorbay.com/byok-openweathermap/terms"},"servers":[{"url":"https://byok-openweathermap.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-openweathermap/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_current_weather":{"post":{"operationId":"get_current_weather","summary":"Get the current weather at a latitude and longitude: temperature, feels-like, pressure, humidity, wind, clouds, visibili","description":"Get the current weather at a latitude and longitude: temperature, feels-like, pressure, humidity, wind, clouds, visibility, rain or snow in the last hour, and sunrise and sunset times. Use for \"What is the weather in London right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude in decimal degrees, from -90 to 90 (use geocode_place to turn a place name into coordinates).","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees, from -180 to 180.","maximum":180,"minimum":-180,"title":"Lon","type":"number"},"units":{"anyOf":[{"enum":["standard","metric","imperial"],"type":"string"},{"type":"null"}],"default":"standard","description":"Unit system: standard (Kelvin, m/s), metric (Celsius, m/s) or imperial (Fahrenheit, miles/hour).","title":"Units"},"lang":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for the place name and weather description, for example en, de, fr, es, ja or pt_br.","title":"Lang"}},"required":["lat","lon"],"title":"get_current_weatherArguments","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_forecast":{"post":{"operationId":"get_forecast","summary":"Get the 5-day weather forecast at a latitude and longitude in 3-hour steps (up to 40 steps): temperature, conditions, wi","description":"Get the 5-day weather forecast at a latitude and longitude in 3-hour steps (up to 40 steps): temperature, conditions, wind, chance of precipitation and rain or snow volume per step. Use for \"Will it rain in Paris over the next two days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude in decimal degrees, from -90 to 90 (use geocode_place to turn a place name into coordinates).","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees, from -180 to 180.","maximum":180,"minimum":-180,"title":"Lon","type":"number"},"units":{"anyOf":[{"enum":["standard","metric","imperial"],"type":"string"},{"type":"null"}],"default":"standard","description":"Unit system: standard (Kelvin, m/s), metric (Celsius, m/s) or imperial (Fahrenheit, miles/hour).","title":"Units"},"lang":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for the place name and weather description, for example en, de, fr, es, ja or pt_br.","title":"Lang"},"cnt":{"anyOf":[{"maximum":40,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of 3-hour steps to return, from 1 to 40 (default: all 40).","title":"Cnt"}},"required":["lat","lon"],"title":"get_forecastArguments","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/geocode_place":{"post":{"operationId":"geocode_place","summary":"Find coordinates for a place name (city, optionally with state code for the US and ISO 3166 country code), up to 5 match","description":"Find coordinates for a place name (city, optionally with state code for the US and ISO 3166 country code), up to 5 matches with name, latitude, longitude, country and state. Use for \"What are the coordinates of Springfield, Illinois\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"description":"Place name, optionally followed by a comma and state code (US only) and a comma and country code, for example 'London,GB' or 'Springfield,IL,US'.","maxLength":100,"title":"Q","type":"string"},"limit":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many matches to return (1 to 5).","title":"Limit"}},"required":["q"],"title":"geocode_placeArguments","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/geocode_postal_code":{"post":{"operationId":"geocode_postal_code","summary":"Find the coordinates and place name for a zip or postal code with its country code. Use for \"Where is zip code 90210 in ","description":"Find the coordinates and place name for a zip or postal code with its country code. Use for \"Where is zip code 90210 in the US\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"zip":{"description":"Zip or postal code followed by a comma and the ISO 3166 country code, for example '90210,US' or 'E14,GB'.","maxLength":30,"title":"Zip","type":"string"}},"required":["zip"],"title":"geocode_postal_codeArguments","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/reverse_geocode":{"post":{"operationId":"reverse_geocode","summary":"Find place names near a latitude and longitude, up to several matches with name, country and state. Use for \"What city i","description":"Find place names near a latitude and longitude, up to several matches with name, country and state. Use for \"What city is at latitude 51.5074 and longitude -0.1278\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude in decimal degrees, from -90 to 90 (use geocode_place to turn a place name into coordinates).","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees, from -180 to 180.","maximum":180,"minimum":-180,"title":"Lon","type":"number"},"limit":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many place names to return (1 to 5).","title":"Limit"}},"required":["lat","lon"],"title":"reverse_geocodeArguments","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_current_air_pollution":{"post":{"operationId":"get_current_air_pollution","summary":"Get the current air quality at a latitude and longitude: the 1 to 5 air quality index (1 good, 5 very poor) and concentr","description":"Get the current air quality at a latitude and longitude: the 1 to 5 air quality index (1 good, 5 very poor) and concentrations of CO, NO, NO2, O3, SO2, PM2.5, PM10 and NH3 in micrograms per cubic metre. Use for \"How is the air quality in Delhi right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude in decimal degrees, from -90 to 90 (use geocode_place to turn a place name into coordinates).","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees, from -180 to 180.","maximum":180,"minimum":-180,"title":"Lon","type":"number"}},"required":["lat","lon"],"title":"get_current_air_pollutionArguments","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_air_pollution_forecast":{"post":{"operationId":"get_air_pollution_forecast","summary":"Get the hourly air quality forecast for the next 4 days at a latitude and longitude, with the 1 to 5 index and pollutant","description":"Get the hourly air quality forecast for the next 4 days at a latitude and longitude, with the 1 to 5 index and pollutant concentrations per hour. Use for \"Will the air quality get worse in Los Angeles in the next few days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude in decimal degrees, from -90 to 90 (use geocode_place to turn a place name into coordinates).","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees, from -180 to 180.","maximum":180,"minimum":-180,"title":"Lon","type":"number"}},"required":["lat","lon"],"title":"get_air_pollution_forecastArguments","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_air_pollution_history":{"post":{"operationId":"get_air_pollution_history","summary":"Get historical hourly air quality at a latitude and longitude between two Unix times (UTC); data starts 27 November 2020","description":"Get historical hourly air quality at a latitude and longitude between two Unix times (UTC); data starts 27 November 2020. Use for \"What was the air quality in Beijing on 1 December 2024\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude in decimal degrees, from -90 to 90 (use geocode_place to turn a place name into coordinates).","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees, from -180 to 180.","maximum":180,"minimum":-180,"title":"Lon","type":"number"},"start":{"description":"Start of the period as Unix time in seconds (UTC), for example 1733011200.","minimum":1,"title":"Start","type":"integer"},"end":{"description":"End of the period as Unix time in seconds (UTC), after start; long periods return many hourly records and are cut off.","minimum":1,"title":"End","type":"integer"}},"required":["lat","lon","start","end"],"title":"get_air_pollution_historyArguments","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}}}}