{"openapi":"3.1.0","info":{"title":"Tempest Weather (BYOK) API","version":"0.1.0","description":"Tempest Weather (BYOK) lets an AI assistant read your own Tempest Weather data through the Tempest Weather API with a key you supply (Tempest personal access token). Read-only: 5 tools (list_stations, get_station, get_latest_station_observation, get_device_observations, get_station_forecast). 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-tempest-weather.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-tempest-weather/docs"},"termsOfService":"https://connectorbay.com/byok-tempest-weather/terms"},"servers":[{"url":"https://byok-tempest-weather.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-tempest-weather/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/list_stations":{"post":{"operationId":"list_stations","summary":"List the Tempest stations the token owner can access with station id, name, elevation and the ids of the devices at each","description":"List the Tempest stations the token owner can access with station id, name, elevation and the ids of the devices at each station. Use for \"Which Tempest stations and devices do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_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_station":{"post":{"operationId":"get_station","summary":"Get one Tempest station: name, elevation and the devices attached to it. Use for \"What devices are attached to my Tempes","description":"Get one Tempest station: name, elevation and the devices attached to it. Use for \"What devices are attached to my Tempest station 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"station_id":{"description":"Numeric Tempest station id (list_stations returns it as station_id).","maximum":2147483647,"minimum":1,"title":"Station Id","type":"integer"}},"required":["station_id"],"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/get_latest_station_observation":{"post":{"operationId":"get_latest_station_observation","summary":"Get the latest observation of a station: station units, timezone and one record with air temperature, pressure, humidity","description":"Get the latest observation of a station: station units, timezone and one record with air temperature, pressure, humidity, wind, rain, UV, solar radiation, lightning and derived values such as feels-like and dew point. Use for \"What is the temperature, wind and rain at my Tempest station right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"station_id":{"description":"Numeric Tempest station id (list_stations returns it as station_id).","maximum":2147483647,"minimum":1,"title":"Station Id","type":"integer"}},"required":["station_id"],"title":"get_latest_station_observationArguments","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_device_observations":{"post":{"operationId":"get_device_observations","summary":"Get observations of one device: the latest one, a whole UTC day (day_offset) or a time range (time_start and time_end, a","description":"Get observations of one device: the latest one, a whole UTC day (day_offset) or a time range (time_start and time_end, at one-minute resolution when five days or less). Each observation is a list of numbers in the order the Tempest API reference gives for the device type. Use for \"Show yesterday's observations from my Tempest device\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"Numeric id of a device (hub, AIR, SKY or Tempest) at the station; list_stations shows it in station_items.","maximum":2147483647,"minimum":1,"title":"Device Id","type":"integer"},"day_offset":{"anyOf":[{"maximum":30,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Whole UTC day to return: 0 is today, 1 is yesterday and so on.","title":"Day Offset"},"time_start":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Range start as epoch seconds UTC; send together with time_end.","title":"Time Start"},"time_end":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Range end as epoch seconds UTC; send together with time_start.","title":"Time End"}},"required":["device_id"],"title":"get_device_observationsArguments","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_station_forecast":{"post":{"operationId":"get_station_forecast","summary":"Get the forecast for a station: current conditions plus daily and hourly forecast, in the chosen units. Use for \"What is","description":"Get the forecast for a station: current conditions plus daily and hourly forecast, in the chosen units. Use for \"What is the forecast for my Tempest station for the next days, in Fahrenheit and mph\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"station_id":{"description":"Numeric Tempest station id.","maximum":2147483647,"minimum":1,"title":"Station Id","type":"integer"},"units_temp":{"anyOf":[{"enum":["c","f"],"type":"string"},{"type":"null"}],"default":"c","description":"Temperature unit: c (default) or f.","title":"Units Temp"},"units_wind":{"anyOf":[{"enum":["mph","kph","kts","mps","bft","lfm"],"type":"string"},{"type":"null"}],"default":"mps","description":"Wind unit: mps (default), mph, kph, kts, bft or lfm.","title":"Units Wind"},"units_pressure":{"anyOf":[{"enum":["mb","inhg","mmhg","hpa"],"type":"string"},{"type":"null"}],"default":"mb","description":"Pressure unit: mb (default), inhg, mmhg or hpa.","title":"Units Pressure"},"units_precip":{"anyOf":[{"enum":["mm","cm","in"],"type":"string"},{"type":"null"}],"default":"mm","description":"Rain unit: mm (default), cm or in.","title":"Units Precip"},"units_distance":{"anyOf":[{"enum":["km","mi"],"type":"string"},{"type":"null"}],"default":"km","description":"Distance unit: km (default) or mi.","title":"Units Distance"}},"required":["station_id"],"title":"get_station_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}}}}