{"openapi":"3.1.0","info":{"title":"Open-Meteo (BYOK) API","version":"0.1.0","description":"Open-Meteo (BYOK) lets an AI assistant read your own Open-Meteo data through the Open-Meteo API with a key you supply (Open-Meteo commercial API key). Read-only: 7 tools (get_current_weather, get_daily_forecast, get_hourly_forecast, get_solar_forecast, get_wind_forecast, get_agriculture_forecast, get_elevation). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-openmeteo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-openmeteo/docs"},"termsOfService":"https://connectorbay.com/byok-openmeteo/terms"},"servers":[{"url":"https://byok-openmeteo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-openmeteo/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 coordinates: temperature, feels-like, humidity, precipitation, cloud cover, wind and a WMO we","description":"Get the current weather at coordinates: temperature, feels-like, humidity, precipitation, cloud cover, wind and a WMO weather code. Use for \"What is the weather right now in Berlin\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"latitude":{"description":"Latitude in decimal degrees (WGS84), -90 to 90.","maximum":90,"minimum":-90,"title":"Latitude","type":"number"},"longitude":{"description":"Longitude in decimal degrees (WGS84), -180 to 180; negative west of Greenwich.","maximum":180,"minimum":-180,"title":"Longitude","type":"number"},"current":{"anyOf":[{"maxLength":400,"type":"string"},{"type":"null"}],"default":"temperature_2m,relative_humidity_2m,apparent_temperature,precipitation,weather_code,wind_speed_10m,wind_direction_10m,cloud_cover","description":"Comma-separated current variables. Default: temperature_2m,relative_humidity_2m,apparent_temperature,precipitation,weather_code,wind_speed_10m,wind_direction_10m,cloud_cover.","title":"Current"},"timezone":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"auto","description":"IANA time zone name such as 'Europe/Berlin', or 'auto' to use the location's zone; GMT when omitted.","title":"Timezone"},"temperature_unit":{"anyOf":[{"enum":["celsius","fahrenheit"],"type":"string"},{"type":"null"}],"default":null,"description":"celsius (default) or fahrenheit.","title":"Temperature Unit"},"wind_speed_unit":{"anyOf":[{"enum":["kmh","ms","mph","kn"],"type":"string"},{"type":"null"}],"default":null,"description":"Wind speed unit: kmh (default), ms, mph or kn.","title":"Wind Speed Unit"},"precipitation_unit":{"anyOf":[{"enum":["mm","inch"],"type":"string"},{"type":"null"}],"default":null,"description":"mm (default) or inch.","title":"Precipitation Unit"}},"required":["latitude","longitude"],"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_daily_forecast":{"post":{"operationId":"get_daily_forecast","summary":"Get a daily forecast at coordinates (up to 16 days): weather code, min and max temperature, precipitation, wind, sunrise","description":"Get a daily forecast at coordinates (up to 16 days): weather code, min and max temperature, precipitation, wind, sunrise, sunset and UV index. Use for \"What is the 7-day forecast for Paris\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"latitude":{"description":"Latitude in decimal degrees (WGS84), -90 to 90.","maximum":90,"minimum":-90,"title":"Latitude","type":"number"},"longitude":{"description":"Longitude in decimal degrees (WGS84), -180 to 180; negative west of Greenwich.","maximum":180,"minimum":-180,"title":"Longitude","type":"number"},"daily":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"weather_code,temperature_2m_max,temperature_2m_min,precipitation_sum,wind_speed_10m_max,sunrise,sunset,uv_index_max","description":"Comma-separated daily variables (a time zone is then required). Default: weather_code,temperature_2m_max,temperature_2m_min,precipitation_sum,wind_speed_10m_max,sunrise,sunset,uv_index_max.","title":"Daily"},"timezone":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"auto","description":"IANA time zone name such as 'Europe/Berlin', or 'auto' to use the location's zone; GMT when omitted.","title":"Timezone"},"forecast_days":{"anyOf":[{"maximum":16,"minimum":0,"type":"integer"},{"type":"null"}],"default":3,"description":"How many forecast days (0 to 16, default 7).","title":"Forecast Days"},"past_days":{"anyOf":[{"maximum":92,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Also include this many past days (0 to 92).","title":"Past Days"},"temperature_unit":{"anyOf":[{"enum":["celsius","fahrenheit"],"type":"string"},{"type":"null"}],"default":null,"description":"celsius (default) or fahrenheit.","title":"Temperature Unit"},"wind_speed_unit":{"anyOf":[{"enum":["kmh","ms","mph","kn"],"type":"string"},{"type":"null"}],"default":null,"description":"Wind speed unit: kmh (default), ms, mph or kn.","title":"Wind Speed Unit"},"precipitation_unit":{"anyOf":[{"enum":["mm","inch"],"type":"string"},{"type":"null"}],"default":null,"description":"mm (default) or inch.","title":"Precipitation Unit"},"models":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated weather models to use instead of the automatic best match (see the Open-Meteo docs for names).","title":"Models"}},"required":["latitude","longitude"],"title":"get_daily_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_hourly_forecast":{"post":{"operationId":"get_hourly_forecast","summary":"Get an hourly forecast at coordinates for the variables you name (temperature, precipitation, wind, pressure, cloud cove","description":"Get an hourly forecast at coordinates for the variables you name (temperature, precipitation, wind, pressure, cloud cover ...), for up to 16 days. Use for \"Give me hourly temperature and rain for Madrid tomorrow\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"latitude":{"description":"Latitude in decimal degrees (WGS84), -90 to 90.","maximum":90,"minimum":-90,"title":"Latitude","type":"number"},"longitude":{"description":"Longitude in decimal degrees (WGS84), -180 to 180; negative west of Greenwich.","maximum":180,"minimum":-180,"title":"Longitude","type":"number"},"hourly":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"temperature_2m,precipitation,wind_speed_10m","description":"Comma-separated hourly variables. Default: temperature_2m,precipitation,wind_speed_10m. Any hourly variable of the Open-Meteo forecast API is accepted.","title":"Hourly"},"timezone":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"auto","description":"IANA time zone name such as 'Europe/Berlin', or 'auto' to use the location's zone; GMT when omitted.","title":"Timezone"},"forecast_hours":{"anyOf":[{"maximum":384,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Limit to this many hours from the current hour (overrides forecast_days when set).","title":"Forecast Hours"},"forecast_days":{"anyOf":[{"maximum":16,"minimum":0,"type":"integer"},{"type":"null"}],"default":3,"description":"How many forecast days (0 to 16, default 7).","title":"Forecast Days"},"past_days":{"anyOf":[{"maximum":92,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Also include this many past days (0 to 92).","title":"Past Days"},"temperature_unit":{"anyOf":[{"enum":["celsius","fahrenheit"],"type":"string"},{"type":"null"}],"default":null,"description":"celsius (default) or fahrenheit.","title":"Temperature Unit"},"wind_speed_unit":{"anyOf":[{"enum":["kmh","ms","mph","kn"],"type":"string"},{"type":"null"}],"default":null,"description":"Wind speed unit: kmh (default), ms, mph or kn.","title":"Wind Speed Unit"},"precipitation_unit":{"anyOf":[{"enum":["mm","inch"],"type":"string"},{"type":"null"}],"default":null,"description":"mm (default) or inch.","title":"Precipitation Unit"},"models":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated weather models to use instead of the automatic best match (see the Open-Meteo docs for names).","title":"Models"}},"required":["latitude","longitude"],"title":"get_hourly_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_solar_forecast":{"post":{"operationId":"get_solar_forecast","summary":"Get hourly solar radiation at coordinates for solar-energy planning: shortwave (global horizontal), direct normal and di","description":"Get hourly solar radiation at coordinates for solar-energy planning: shortwave (global horizontal), direct normal and diffuse irradiance in W/m2, cloud cover, optionally tilted-panel irradiance. Use for \"How much solar radiation will Munich get tomorrow\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"latitude":{"description":"Latitude in decimal degrees (WGS84), -90 to 90.","maximum":90,"minimum":-90,"title":"Latitude","type":"number"},"longitude":{"description":"Longitude in decimal degrees (WGS84), -180 to 180; negative west of Greenwich.","maximum":180,"minimum":-180,"title":"Longitude","type":"number"},"hourly":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"shortwave_radiation,direct_normal_irradiance,diffuse_radiation,cloud_cover,temperature_2m","description":"Comma-separated hourly variables. Default: shortwave_radiation,direct_normal_irradiance,diffuse_radiation,cloud_cover,temperature_2m. Any hourly variable of the Open-Meteo forecast API is accepted.","title":"Hourly"},"timezone":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"auto","description":"IANA time zone name such as 'Europe/Berlin', or 'auto' to use the location's zone; GMT when omitted.","title":"Timezone"},"tilt":{"anyOf":[{"maximum":90,"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Panel tilt in degrees (0 horizontal to 90 vertical); needed when hourly includes global_tilted_irradiance.","title":"Tilt"},"azimuth":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Panel azimuth in degrees (0 south, -90 east, 90 west, 180 north); needed with global_tilted_irradiance.","title":"Azimuth"},"forecast_days":{"anyOf":[{"maximum":16,"minimum":0,"type":"integer"},{"type":"null"}],"default":3,"description":"How many forecast days (0 to 16, default 7).","title":"Forecast Days"},"past_days":{"anyOf":[{"maximum":92,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Also include this many past days (0 to 92).","title":"Past Days"},"models":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated weather models to use instead of the automatic best match (see the Open-Meteo docs for names).","title":"Models"}},"required":["latitude","longitude"],"title":"get_solar_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_wind_forecast":{"post":{"operationId":"get_wind_forecast","summary":"Get hourly wind speed at 10, 80, 120 and 180 metres, wind direction and gusts at coordinates, for wind-energy planning. ","description":"Get hourly wind speed at 10, 80, 120 and 180 metres, wind direction and gusts at coordinates, for wind-energy planning. Use for \"What will the wind speed at turbine height be near Hamburg this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"latitude":{"description":"Latitude in decimal degrees (WGS84), -90 to 90.","maximum":90,"minimum":-90,"title":"Latitude","type":"number"},"longitude":{"description":"Longitude in decimal degrees (WGS84), -180 to 180; negative west of Greenwich.","maximum":180,"minimum":-180,"title":"Longitude","type":"number"},"hourly":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"wind_speed_10m,wind_speed_80m,wind_speed_120m,wind_speed_180m,wind_direction_80m,wind_gusts_10m","description":"Comma-separated hourly variables. Default: wind_speed_10m,wind_speed_80m,wind_speed_120m,wind_speed_180m,wind_direction_80m,wind_gusts_10m. Any hourly variable of the Open-Meteo forecast API is accepted.","title":"Hourly"},"timezone":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"auto","description":"IANA time zone name such as 'Europe/Berlin', or 'auto' to use the location's zone; GMT when omitted.","title":"Timezone"},"forecast_days":{"anyOf":[{"maximum":16,"minimum":0,"type":"integer"},{"type":"null"}],"default":3,"description":"How many forecast days (0 to 16, default 7).","title":"Forecast Days"},"past_days":{"anyOf":[{"maximum":92,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Also include this many past days (0 to 92).","title":"Past Days"},"wind_speed_unit":{"anyOf":[{"enum":["kmh","ms","mph","kn"],"type":"string"},{"type":"null"}],"default":null,"description":"Wind speed unit: kmh (default), ms, mph or kn.","title":"Wind Speed Unit"},"models":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated weather models to use instead of the automatic best match (see the Open-Meteo docs for names).","title":"Models"}},"required":["latitude","longitude"],"title":"get_wind_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_agriculture_forecast":{"post":{"operationId":"get_agriculture_forecast","summary":"Get hourly and daily farm-relevant forecast at coordinates: soil temperature and moisture at several depths, reference e","description":"Get hourly and daily farm-relevant forecast at coordinates: soil temperature and moisture at several depths, reference evapotranspiration (ET0), vapour pressure deficit and rain. Use for \"Is the soil moist enough near Lyon and how much evapotranspiration is expected\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"latitude":{"description":"Latitude in decimal degrees (WGS84), -90 to 90.","maximum":90,"minimum":-90,"title":"Latitude","type":"number"},"longitude":{"description":"Longitude in decimal degrees (WGS84), -180 to 180; negative west of Greenwich.","maximum":180,"minimum":-180,"title":"Longitude","type":"number"},"hourly":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"temperature_2m,precipitation,et0_fao_evapotranspiration,vapour_pressure_deficit,soil_temperature_0cm,soil_temperature_6cm,soil_moisture_0_to_1cm,soil_moisture_1_to_3cm","description":"Comma-separated hourly variables. Default: temperature_2m,precipitation,et0_fao_evapotranspiration,vapour_pressure_deficit,soil_temperature_0cm,soil_temperature_6cm,soil_moisture_0_to_1cm,soil_moisture_1_to_3cm. Any hourly variable of the Open-Meteo forecast API is accepted.","title":"Hourly"},"daily":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"temperature_2m_max,temperature_2m_min,precipitation_sum,et0_fao_evapotranspiration,shortwave_radiation_sum","description":"Comma-separated daily variables (a time zone is then required). Default: temperature_2m_max,temperature_2m_min,precipitation_sum,et0_fao_evapotranspiration,shortwave_radiation_sum.","title":"Daily"},"timezone":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"auto","description":"IANA time zone name such as 'Europe/Berlin', or 'auto' to use the location's zone; GMT when omitted.","title":"Timezone"},"forecast_days":{"anyOf":[{"maximum":16,"minimum":0,"type":"integer"},{"type":"null"}],"default":3,"description":"How many forecast days (0 to 16, default 7).","title":"Forecast Days"},"past_days":{"anyOf":[{"maximum":92,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Also include this many past days (0 to 92).","title":"Past Days"},"temperature_unit":{"anyOf":[{"enum":["celsius","fahrenheit"],"type":"string"},{"type":"null"}],"default":null,"description":"celsius (default) or fahrenheit.","title":"Temperature Unit"},"precipitation_unit":{"anyOf":[{"enum":["mm","inch"],"type":"string"},{"type":"null"}],"default":null,"description":"mm (default) or inch.","title":"Precipitation Unit"},"models":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated weather models to use instead of the automatic best match (see the Open-Meteo docs for names).","title":"Models"}},"required":["latitude","longitude"],"title":"get_agriculture_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_elevation":{"post":{"operationId":"get_elevation","summary":"Get the terrain elevation in metres (90 m Copernicus model) for one or several coordinates. Use for \"How high above sea ","description":"Get the terrain elevation in metres (90 m Copernicus model) for one or several coordinates. Use for \"How high above sea level is 46.55 N, 8.01 E\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"latitude":{"description":"Latitude(s) in decimal degrees; several values separated by commas (up to 100, matching the longitudes).","maxLength":1200,"title":"Latitude","type":"string"},"longitude":{"description":"Longitude(s) in decimal degrees, same count and order as latitude.","maxLength":1200,"title":"Longitude","type":"string"}},"required":["latitude","longitude"],"title":"get_elevationArguments","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}}}}