{"openapi":"3.1.0","info":{"title":"Tomorrow.io (BYOK) API","version":"0.1.0","description":"Tomorrow.io (BYOK) lets an AI assistant read your own Tomorrow.io data through the Tomorrow.io API with a key you supply (API key). Read-only: 6 tools (get_realtime_weather, get_weather_forecast, get_recent_history, get_custom_timeline, list_saved_locations, get_weather_events). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-tomorrowio.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-tomorrowio/docs"},"termsOfService":"https://connectorbay.com/byok-tomorrowio/terms"},"servers":[{"url":"https://byok-tomorrowio.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-tomorrowio/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_realtime_weather":{"post":{"operationId":"get_realtime_weather","summary":"Get the current weather at a location: temperature, feels-like, humidity, wind speed, gust and direction, cloud cover, v","description":"Get the current weather at a location: temperature, feels-like, humidity, wind speed, gust and direction, cloud cover, visibility, pressure, UV index, precipitation probability and a numeric weather code. Use for \"What is the weather like right now in Boston\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Place to look up: decimal 'latitude, longitude' such as '42.3478, -71.0466', a city name such as 'new york', a US zip with country code such as '10001 US', or a UK postcode such as 'SW1'.","maxLength":100,"title":"Location","type":"string"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":"metric","description":"Unit system: metric (Celsius, metres per second, millimetres) or imperial (Fahrenheit, miles per hour, inches).","title":"Units"}},"required":["location"],"title":"get_realtime_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_forecast":{"post":{"operationId":"get_weather_forecast","summary":"Get the forecast at a location: hourly for the next 120 hours (timesteps 1h) or daily for the next 5 days (1d), with tem","description":"Get the forecast at a location: hourly for the next 120 hours (timesteps 1h) or daily for the next 5 days (1d), with temperature, wind, precipitation, cloud, UV and weather code values per step. Minute-by-minute needs a premium plan. Use for \"What is the daily forecast for the next 5 days in London\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Place to look up: decimal 'latitude, longitude' such as '42.3478, -71.0466', a city name such as 'new york', a US zip with country code such as '10001 US', or a UK postcode such as 'SW1'.","maxLength":100,"title":"Location","type":"string"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":"metric","description":"Unit system: metric (Celsius, metres per second, millimetres) or imperial (Fahrenheit, miles per hour, inches).","title":"Units"},"timesteps":{"anyOf":[{"enum":["1h","1d"],"type":"string"},{"type":"null"}],"default":"1d","description":"Forecast resolution: 1h for hourly or 1d for daily.","title":"Timesteps"}},"required":["location"],"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_recent_history":{"post":{"operationId":"get_recent_history","summary":"Get the past weather at a location: hourly values for the last 24 hours (1h) or the daily summary of the last day (1d). ","description":"Get the past weather at a location: hourly values for the last 24 hours (1h) or the daily summary of the last day (1d). Use for \"What was the hourly weather in Austin over the last 24 hours\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Place to look up: decimal 'latitude, longitude' such as '42.3478, -71.0466', a city name such as 'new york', a US zip with country code such as '10001 US', or a UK postcode such as 'SW1'.","maxLength":100,"title":"Location","type":"string"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":"metric","description":"Unit system: metric (Celsius, metres per second, millimetres) or imperial (Fahrenheit, miles per hour, inches).","title":"Units"},"timesteps":{"anyOf":[{"enum":["1h","1d"],"type":"string"},{"type":"null"}],"default":"1h","description":"History resolution: 1h for hourly or 1d for daily.","title":"Timesteps"}},"required":["location"],"title":"get_recent_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_custom_timeline":{"post":{"operationId":"get_custom_timeline","summary":"Get a time series of chosen data layers (for example temperature, humidity, windSpeed, precipitationIntensity, uvIndex, ","description":"Get a time series of chosen data layers (for example temperature, humidity, windSpeed, precipitationIntensity, uvIndex, cloudCover) for a point between a start and end time, at a step from 1m to 1d. Use for \"Show hourly temperature and humidity in Boston for the next 12 hours\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Place as 'latitude, longitude' such as '42.3478, -71.0466' or a saved location ID.","maxLength":100,"title":"Location","type":"string"},"field_1":{"description":"First data layer name, for example temperature, humidity, windSpeed, precipitationIntensity, cloudCover, uvIndex, visibility.","maxLength":60,"title":"Field 1","type":"string"},"field_2":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Optional second data layer name.","title":"Field 2"},"field_3":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Optional third data layer name.","title":"Field 3"},"field_4":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Optional fourth data layer name.","title":"Field 4"},"timestep":{"anyOf":[{"enum":["1m","5m","15m","30m","1h","1d","current"],"type":"string"},{"type":"null"}],"default":"1h","description":"Step size: 1m, 5m, 15m, 30m, 1h, 1d or current.","title":"Timestep"},"start_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"now","description":"Start: now, nowPlus2h, nowMinus1d (m, h or d units) or an ISO 8601 time.","title":"Start Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"nowPlus6h","description":"End in the same formats as start_time (default nowPlus6h).","title":"End Time"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":"metric","description":"metric or imperial.","title":"Units"},"timezone":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"IANA timezone for the answer times such as 'America/New_York', or 'auto' for the location's zone.","title":"Timezone"}},"required":["location","field_1"],"title":"get_custom_timelineArguments","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_saved_locations":{"post":{"operationId":"list_saved_locations","summary":"List the locations saved in the key owner's Tomorrow.io account with id, name and coordinates. Use for \"Which locations ","description":"List the locations saved in the key owner's Tomorrow.io account with id, name and coordinates. Use for \"Which locations have I saved in Tomorrow.io\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_saved_locationsArguments","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_events":{"post":{"operationId":"get_weather_events","summary":"Get active or forecast weather events (insights) of one category near a location, with start and end time, severity, cer","description":"Get active or forecast weather events (insights) of one category near a location, with start and end time, severity, certainty and urgency. Use for \"Are there any wind events forecast near Boston\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location":{"description":"Saved location ID or 'latitude, longitude' such as '42.3478, -71.0466'.","maxLength":100,"title":"Location","type":"string"},"insights":{"description":"One pre-defined insight category, for example air, fires, wind, winter, thunderstorms, floods, temperature, tropical, marine, fog or tornado.","maxLength":40,"title":"Insights","type":"string"},"buffer":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":1,"description":"Search radius around the location in kilometres (default 1).","title":"Buffer"}},"required":["location","insights"],"title":"get_weather_eventsArguments","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}}}}