{"openapi":"3.1.0","info":{"title":"Ambee (BYOK) API","version":"0.1.0","description":"Ambee (BYOK) lets an AI assistant read your own Ambee data through the Ambee API with a key you supply (Ambee API key). Read-only: 10 tools (get_air_quality_now, get_air_quality_now_by_place, get_air_quality_forecast, get_air_quality_history, get_pollen_now, get_pollen_forecast, get_weather_now, get_weather_now_by_place, get_weather_forecast, get_weather_history). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-ambeedata.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-ambeedata/docs"},"termsOfService":"https://connectorbay.com/byok-ambeedata/terms"},"servers":[{"url":"https://byok-ambeedata.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-ambeedata/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_air_quality_now":{"post":{"operationId":"get_air_quality_now","summary":"Get the latest air quality at coordinates: AQI, category, main pollutant and PM2.5, PM10, ozone, NO2, SO2 and CO reading","description":"Get the latest air quality at coordinates: AQI, category, main pollutant and PM2.5, PM10, ozone, NO2, SO2 and CO readings. Use for \"What is the air quality at 12.9889,77.5740 right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude between -90 and 90.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lng":{"description":"Longitude between -180 and 180.","maximum":180,"minimum":-180,"title":"Lng","type":"number"},"aqi_standard":{"anyOf":[{"enum":["EPA","IN","UK","CN","CA"],"type":"string"},{"type":"null"}],"default":"EPA","description":"AQI standard used for the index and category: EPA, IN, UK, CN or CA.","title":"Aqi Standard"}},"required":["lat","lng"],"title":"get_air_quality_nowArguments","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_quality_now_by_place":{"post":{"operationId":"get_air_quality_now_by_place","summary":"Get the latest air quality for a named place instead of coordinates. Use for \"What is the air quality in Bengaluru right","description":"Get the latest air quality for a named place instead of coordinates. Use for \"What is the air quality in Bengaluru right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"description":"Name of a city, region or place, for example Bengaluru.","maxLength":100,"title":"Place","type":"string"},"aqi_standard":{"anyOf":[{"enum":["EPA","IN","UK","CN","CA"],"type":"string"},{"type":"null"}],"default":"EPA","description":"AQI standard used for the index and category: EPA, IN, UK, CN or CA.","title":"Aqi Standard"}},"required":["place"],"title":"get_air_quality_now_by_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/get_air_quality_forecast":{"post":{"operationId":"get_air_quality_forecast","summary":"Get the hourly 48-hour air quality forecast at coordinates with AQI, category and pollutant levels. Use for \"How will ai","description":"Get the hourly 48-hour air quality forecast at coordinates with AQI, category and pollutant levels. Use for \"How will air quality change over the next two days at 12.9889,77.5740\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude between -90 and 90.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lng":{"description":"Longitude between -180 and 180.","maximum":180,"minimum":-180,"title":"Lng","type":"number"},"aqi_standard":{"anyOf":[{"enum":["EPA","IN","UK","CN","CA"],"type":"string"},{"type":"null"}],"default":"EPA","description":"AQI standard used for the index and category: EPA, IN, UK, CN or CA.","title":"Aqi Standard"}},"required":["lat","lng"],"title":"get_air_quality_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_quality_history":{"post":{"operationId":"get_air_quality_history","summary":"Get hourly air quality readings at coordinates between two timestamps. Use for \"What was the air quality at 12.9889,77.5","description":"Get hourly air quality readings at coordinates between two timestamps. Use for \"What was the air quality at 12.9889,77.5740 between 2026-05-02 and 2026-05-04\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude between -90 and 90.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lng":{"description":"Longitude between -180 and 180.","maximum":180,"minimum":-180,"title":"Lng","type":"number"},"start":{"description":"Start of the period, 'YYYY-MM-DD hh:mm:ss' (UTC).","maxLength":19,"title":"Start","type":"string"},"end":{"description":"End of the period, 'YYYY-MM-DD hh:mm:ss' (UTC).","maxLength":19,"title":"End","type":"string"},"aqi_standard":{"anyOf":[{"enum":["EPA","IN","UK","CN","CA"],"type":"string"},{"type":"null"}],"default":"EPA","description":"AQI standard used for the index and category: EPA, IN, UK, CN or CA.","title":"Aqi Standard"}},"required":["lat","lng","start","end"],"title":"get_air_quality_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}},"/v1/tools/get_pollen_now":{"post":{"operationId":"get_pollen_now","summary":"Get the latest pollen risk levels and counts (grass, tree, weed) at coordinates. Use for \"What is the pollen level in Ba","description":"Get the latest pollen risk levels and counts (grass, tree, weed) at coordinates. Use for \"What is the pollen level in Barcelona right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude between -90 and 90.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lng":{"description":"Longitude between -180 and 180.","maximum":180,"minimum":-180,"title":"Lng","type":"number"}},"required":["lat","lng"],"title":"get_pollen_nowArguments","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_pollen_forecast":{"post":{"operationId":"get_pollen_forecast","summary":"Get the hourly pollen forecast (risk and counts) at coordinates for the next 48 or 120 hours. Use for \"What is the polle","description":"Get the hourly pollen forecast (risk and counts) at coordinates for the next 48 or 120 hours. Use for \"What is the pollen forecast for the next five days at lat 38, lng -97\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"window":{"description":"Forecast length: 48hrs or 120hrs.","enum":["48hrs","120hrs"],"title":"Window","type":"string"},"lat":{"description":"Latitude between -90 and 90.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lng":{"description":"Longitude between -180 and 180.","maximum":180,"minimum":-180,"title":"Lng","type":"number"}},"required":["window","lat","lng"],"title":"get_pollen_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_weather_now":{"post":{"operationId":"get_weather_now","summary":"Get the latest weather at coordinates: temperature, feels-like, humidity, pressure, wind, cloud cover, UV index and summ","description":"Get the latest weather at coordinates: temperature, feels-like, humidity, pressure, wind, cloud cover, UV index and summary. Use for \"What is the weather at 12.9889,77.5740 right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude between -90 and 90.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lng":{"description":"Longitude between -180 and 180.","maximum":180,"minimum":-180,"title":"Lng","type":"number"},"units":{"anyOf":[{"const":"si","type":"string"},{"type":"null"}],"default":null,"description":"Pass si for metric (SI) units; leave empty for US units.","title":"Units"}},"required":["lat","lng"],"title":"get_weather_nowArguments","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_now_by_place":{"post":{"operationId":"get_weather_now_by_place","summary":"Get the latest weather for a named place instead of coordinates. Use for \"What is the weather in Bengaluru right now\".","description":"Get the latest weather for a named place instead of coordinates. Use for \"What is the weather in Bengaluru right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"description":"Name of a city, region or place, for example Bengaluru.","maxLength":100,"title":"Place","type":"string"},"units":{"anyOf":[{"const":"si","type":"string"},{"type":"null"}],"default":null,"description":"Pass si for metric (SI) units; leave empty for US units.","title":"Units"}},"required":["place"],"title":"get_weather_now_by_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/get_weather_forecast":{"post":{"operationId":"get_weather_forecast","summary":"Get the hourly weather forecast at coordinates for the next 48 or 120 hours. Use for \"What is the five day weather forec","description":"Get the hourly weather forecast at coordinates for the next 48 or 120 hours. Use for \"What is the five day weather forecast at 21,77\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"window":{"description":"Forecast length: 48hrs or 120hrs.","enum":["48hrs","120hrs"],"title":"Window","type":"string"},"lat":{"description":"Latitude between -90 and 90.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lng":{"description":"Longitude between -180 and 180.","maximum":180,"minimum":-180,"title":"Lng","type":"number"},"units":{"anyOf":[{"const":"si","type":"string"},{"type":"null"}],"default":null,"description":"Pass si for metric (SI) units; leave empty for US units.","title":"Units"}},"required":["window","lat","lng"],"title":"get_weather_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_weather_history":{"post":{"operationId":"get_weather_history","summary":"Get hourly weather readings at coordinates between two timestamps. Use for \"What was the weather at 12.9889,77.5740 betw","description":"Get hourly weather readings at coordinates between two timestamps. Use for \"What was the weather at 12.9889,77.5740 between 2026-05-02 and 2026-05-04\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude between -90 and 90.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lng":{"description":"Longitude between -180 and 180.","maximum":180,"minimum":-180,"title":"Lng","type":"number"},"start":{"description":"Start of the period, 'YYYY-MM-DD hh:mm:ss' (UTC).","maxLength":19,"title":"Start","type":"string"},"end":{"description":"End of the period, 'YYYY-MM-DD hh:mm:ss' (UTC).","maxLength":19,"title":"End","type":"string"},"units":{"anyOf":[{"const":"si","type":"string"},{"type":"null"}],"default":null,"description":"Pass si for metric (SI) units; leave empty for US units.","title":"Units"}},"required":["lat","lng","start","end"],"title":"get_weather_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}}}}