{"openapi":"3.1.0","info":{"title":"Meteomatics (BYOK) API","version":"0.1.0","description":"Meteomatics (BYOK) lets an AI assistant read your own Meteomatics data through the Meteomatics API with a key you supply (API username). Read-only: 8 tools (get_current_weather, get_weather_time_series, get_weather_at_time, get_postal_code_weather, list_recent_earthquakes, list_flood_alerts, list_lightning_strikes, get_account_usage). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-meteomatics.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-meteomatics/docs"},"termsOfService":"https://connectorbay.com/byok-meteomatics/terms"},"servers":[{"url":"https://byok-meteomatics.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-meteomatics/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":"Current values of one or more weather parameters at a latitude and longitude. Answers are JSON time series: data[].param","description":"Current values of one or more weather parameters at a latitude and longitude. Answers are JSON time series: data[].parameter, coordinates[].lat/lon and dates[] with date and value. Use for \"What is the temperature right now at 47.4245, 9.3767\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"parameters":{"description":"Weather parameter(s) with unit, for example 't_2m:C' (temperature at 2 m in Celsius), 'precip_1h:mm', 'wind_speed_10m:ms', 'relative_humidity_2m:p'; several separated by commas. See the Meteomatics available-parameters list.","maxLength":200,"title":"Parameters","type":"string"},"lat":{"description":"Latitude in decimal degrees.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees.","maximum":180,"minimum":-180,"title":"Lon","type":"number"},"source":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Model or data source, for example mix (default blend), ecmwf-ifs, ncep-gfs, dwd-icon-eu, ecmwf-era5.","title":"Source"}},"required":["parameters","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_weather_time_series":{"post":{"operationId":"get_weather_time_series","summary":"A time series of weather parameters at a point: from a start time for a duration at a step, for example two days hourly.","description":"A time series of weather parameters at a point: from a start time for a duration at a step, for example two days hourly. Past dates give history, future dates give forecast. Answers are JSON time series: data[].parameter, coordinates[].lat/lon and dates[] with date and value. Use for \"Give me the hourly temperature forecast for the next 2 days at 47.4245, 9.3767\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start":{"description":"Start as ISO 8601 UTC time, for example 2026-10-17T00:00:00Z.","maxLength":30,"title":"Start","type":"string"},"duration":{"description":"Length of the series as an ISO 8601 period, for example P2D (two days) or PT12H.","maxLength":12,"title":"Duration","type":"string"},"resolution":{"description":"Step between values as an ISO 8601 period, for example PT1H (hourly) or PT15M.","maxLength":12,"title":"Resolution","type":"string"},"parameters":{"description":"Weather parameter(s) with unit, for example 't_2m:C' (temperature at 2 m in Celsius), 'precip_1h:mm', 'wind_speed_10m:ms', 'relative_humidity_2m:p'; several separated by commas. See the Meteomatics available-parameters list.","maxLength":200,"title":"Parameters","type":"string"},"lat":{"description":"Latitude in decimal degrees.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees.","maximum":180,"minimum":-180,"title":"Lon","type":"number"},"source":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Model or data source, for example mix (default blend), ecmwf-ifs, ncep-gfs, dwd-icon-eu, ecmwf-era5.","title":"Source"},"on_invalid":{"anyOf":[{"enum":["fail","fill_with_invalid"],"type":"string"},{"type":"null"}],"default":null,"description":"What to do when data is missing: fail (error) or fill_with_invalid (use -999).","title":"On Invalid"}},"required":["start","duration","resolution","parameters","lat","lon"],"title":"get_weather_time_seriesArguments","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_at_time":{"post":{"operationId":"get_weather_at_time","summary":"Weather parameters at a point for one date and time (past, present or future). Answers are JSON time series: data[].para","description":"Weather parameters at a point for one date and time (past, present or future). Answers are JSON time series: data[].parameter, coordinates[].lat/lon and dates[] with date and value. Use for \"What was the temperature at 47.4245, 9.3767 on 2026-07-01 at noon UTC\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"datetime":{"description":"Time as ISO 8601 UTC, for example 2026-07-01T12:00:00Z, or 'now'.","maxLength":30,"title":"Datetime","type":"string"},"parameters":{"description":"Weather parameter(s) with unit, for example 't_2m:C' (temperature at 2 m in Celsius), 'precip_1h:mm', 'wind_speed_10m:ms', 'relative_humidity_2m:p'; several separated by commas. See the Meteomatics available-parameters list.","maxLength":200,"title":"Parameters","type":"string"},"lat":{"description":"Latitude in decimal degrees.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees.","maximum":180,"minimum":-180,"title":"Lon","type":"number"},"source":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Model or data source, for example mix (default blend), ecmwf-ifs, ncep-gfs, dwd-icon-eu, ecmwf-era5.","title":"Source"}},"required":["datetime","parameters","lat","lon"],"title":"get_weather_at_timeArguments","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_postal_code_weather":{"post":{"operationId":"get_postal_code_weather","summary":"Current weather parameters for a postal code, written with country prefix, for example postal_DE10117 or postal_CH9014; ","description":"Current weather parameters for a postal code, written with country prefix, for example postal_DE10117 or postal_CH9014; join several with a plus sign. Answers are JSON time series: data[].parameter, coordinates[].lat/lon and dates[] with date and value. Use for \"What is the temperature now in Berlin postal code 10117\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"parameters":{"description":"Weather parameter(s) with unit, for example 't_2m:C' (temperature at 2 m in Celsius), 'precip_1h:mm', 'wind_speed_10m:ms', 'relative_humidity_2m:p'; several separated by commas. See the Meteomatics available-parameters list.","maxLength":200,"title":"Parameters","type":"string"},"zip_code":{"description":"Postal code as postal_<country><code>, for example 'postal_DE10117'; several joined with '+'.","maxLength":100,"title":"Zip Code","type":"string"},"source":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Model or data source, for example mix (default blend), ecmwf-ifs, ncep-gfs, dwd-icon-eu, ecmwf-era5.","title":"Source"}},"required":["parameters","zip_code"],"title":"get_postal_code_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/list_recent_earthquakes":{"post":{"operationId":"list_recent_earthquakes","summary":"Recent earthquakes as GeoJSON features with magnitude, depth, source and issue time. Defaults to the last 24 hours world","description":"Recent earthquakes as GeoJSON features with magnitude, depth, source and issue time. Defaults to the last 24 hours worldwide. Use for \"Which earthquakes happened in the last day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"time_range":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time range, for example 2026-10-15T00:00:00ZP1D (default: the last 24 hours).","title":"Time Range"},"bbox":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Bounding box as 'min_lon,min_lat,max_lon,max_lat', for example '-10.0,49.0,2.0,61.0'. Default: the whole world.","title":"Bbox"}},"title":"list_recent_earthquakesArguments","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_flood_alerts":{"post":{"operationId":"list_flood_alerts","summary":"Active flood alerts worldwide or inside a bounding box, with the alert provider and properties; flood area geometry only","description":"Active flood alerts worldwide or inside a bounding box, with the alert provider and properties; flood area geometry only on request. Use for \"Are there flood alerts in the Alps right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"datetime":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time to query (default: now).","title":"Datetime"},"bbox":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Bounding box as 'min_lon,min_lat,max_lon,max_lat', for example '-10.0,49.0,2.0,61.0'. Default: the whole world.","title":"Bbox"},"source":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Alert provider to query (default: all).","title":"Source"},"with_area_geometry":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include the flood area geometry (large).","title":"With Area Geometry"}},"title":"list_flood_alertsArguments","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_lightning_strikes":{"post":{"operationId":"list_lightning_strikes","summary":"Lightning strokes inside a bounding box and time range: stroke time, latitude, longitude, current in kA and type. Use fo","description":"Lightning strokes inside a bounding box and time range: stroke time, latitude, longitude, current in kA and type. Use for \"Where did lightning strike in the Austrian Alps on 2026-08-15\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"time_range":{"description":"ISO 8601 time range, for example 2026-08-15T00:00:00ZP1D.","maxLength":60,"title":"Time Range","type":"string"},"bounding_box":{"description":"Two opposite corners written as 'lat,lon_lat,lon', for example '47.0,10.0_45.0,15.0'.","maxLength":60,"title":"Bounding Box","type":"string"},"format":{"const":"json","description":"Output format; keep json.","title":"Format","type":"string"}},"required":["time_range","bounding_box","format"],"title":"list_lightning_strikesArguments","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_account_usage":{"post":{"operationId":"get_account_usage","summary":"Show how many queries the account has used and its limits (JSON usage statistics). Use for \"How many Meteomatics queries","description":"Show how many queries the account has used and its limits (JSON usage statistics). Use for \"How many Meteomatics queries have I used\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_account_usageArguments","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}}}}