{"openapi":"3.1.0","info":{"title":"Meteo API","version":"0.1.0","description":"Worldwide weather that answers the question: forecasts, rain timing, best time for an activity, what to wear, air quality, UV, sun and moon, marine, history, climate comparison, travel packing.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://meteo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/meteo/docs"},"termsOfService":"https://connectorbay.com/meteo/terms"},"servers":[{"url":"https://meteo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/meteo/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/current_conditions":{"post":{"operationId":"current_conditions","summary":"Right now at a place: temperature and feels-like, conditions, humidity, wind and gusts, UV, pressure, precipitation in","description":"Right now at a place: temperature and feels-like, conditions, humidity, wind and gusts, UV, pressure, precipitation in\n    the last hour, plus today's high/low, sunrise/sunset and the next few hours in brief. Use for \"what's the weather in\n    <city>\", \"how hot is it in Dubai right now\", \"is it raining in London\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"}},"title":"current_conditionsArguments","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/forecast_daily":{"post":{"operationId":"forecast_daily","summary":"Day-by-day forecast up to 16 days out: high/low (actual and feels-like), conditions, precipitation amount, chance and","description":"Day-by-day forecast up to 16 days out: high/low (actual and feels-like), conditions, precipitation amount, chance and\n    hours, snowfall, wind, UV, sunrise/sunset and daylight length, with a one-line week summary. Use for \"forecast for the\n    week\", \"will it rain this weekend\", \"what's Tokyo like next Tuesday\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"days":{"default":7,"description":"How many days (1–16).","maximum":16,"minimum":1,"title":"Days","type":"integer"}},"title":"forecast_dailyArguments","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/forecast_hourly":{"post":{"operationId":"forecast_hourly","summary":"Hour-by-hour forecast: temperature and feels-like, precipitation chance and amount, conditions, cloud, wind and gusts,","description":"Hour-by-hour forecast: temperature and feels-like, precipitation chance and amount, conditions, cloud, wind and gusts,\n    humidity, UV and daylight. Use for \"hourly for tomorrow\", \"when does it warm up\", \"what's it like at 6 pm\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"hours":{"default":24,"description":"How many hours ahead (1–72).","maximum":72,"minimum":1,"title":"Hours","type":"integer"},"start":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Local start time 'YYYY-MM-DDTHH:00' (defaults to now).","title":"Start"}},"title":"forecast_hourlyArguments","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/rain_timing":{"post":{"operationId":"rain_timing","summary":"When precipitation starts and stops: the next six hours to the quarter hour, then hourly windows with peak chance and","description":"When precipitation starts and stops: the next six hours to the quarter hour, then hourly windows with peak chance and\n    type, and a dry-window answer for \"do I have time to…\". Use for \"do I have time to walk the dog before the rain\",\n    \"when will it stop raining\", \"is there a dry window this afternoon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"hours":{"default":12,"description":"Window to examine in hours (1–48).","maximum":48,"minimum":1,"title":"Hours","type":"integer"}},"title":"rain_timingArguments","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/best_time_for":{"post":{"operationId":"best_time_for","summary":"Scores every forecast hour for an activity — temperature comfort, rain, wind, humidity, air quality, UV, daylight (or","description":"Scores every forecast hour for an activity — temperature comfort, rain, wind, humidity, air quality, UV, daylight (or\n    darkness and moon for stargazing) — and returns the best windows with reasons, the best hour per day, and what to wear\n    then. Use for \"when should I run tomorrow\", \"Saturday or Sunday for the picnic\", \"best time for photos\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"activity":{"description":"What they want to do: run, walk, dog walk, bike, hike, outdoor dining, picnic, playground, yard work, painting, car wash, photography, stargazing, beach, outdoor workout, kids soccer, grilling — or free text.","examples":["run","walk the dog","stargazing"],"title":"Activity","type":"string"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"window_hours":{"default":36,"description":"How far ahead to look (6–72 hours).","maximum":72,"minimum":6,"title":"Window Hours","type":"integer"},"earliest_hour":{"default":6,"description":"Earliest local hour to consider (0–23).","maximum":23,"minimum":0,"title":"Earliest Hour","type":"integer"},"latest_hour":{"default":21,"description":"Latest local hour to consider (1–24).","maximum":24,"minimum":1,"title":"Latest Hour","type":"integer"},"sensitive":{"default":false,"description":"Person has asthma/lung or heart disease, is a child or older adult (weights air quality and UV more).","title":"Sensitive","type":"boolean"}},"required":["activity"],"title":"best_time_forArguments","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/what_to_wear":{"post":{"operationId":"what_to_wear","summary":"What to wear for a specific time and how long they'll be out: feels-like from wind chill / heat index, rain, wind, UV","description":"What to wear for a specific time and how long they'll be out: feels-like from wind chill / heat index, rain, wind, UV\n    and air quality turned into a clothing list, plus how conditions change over the span. Use for \"what should the kids\n    wear for school\", \"do I need a jacket tonight\", \"what to pack for the walk\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"when":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Local time 'YYYY-MM-DDTHH:MM' (defaults to now).","examples":["2026-09-24T08:00"],"title":"When"},"hours_out":{"default":3,"description":"How long they'll be out (1–14 hours) so the answer covers the whole span.","maximum":14,"minimum":1,"title":"Hours Out","type":"integer"}},"title":"what_to_wearArguments","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/week_planner":{"post":{"operationId":"week_planner","summary":"The week at a glance for planning: each day's conditions, high/low, rain chance and hours, wind and UV, with the best","description":"The week at a glance for planning: each day's conditions, high/low, rain chance and hours, wind and UV, with the best\n    day for outdoor plans, the wettest day, and a per-day verdict (great / fine / indoor day). Use for \"which day this week\n    for the picnic\", \"plan my week\", \"when should we do the yard work\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"days":{"default":7,"description":"Days to plan (2–10).","maximum":10,"minimum":2,"title":"Days","type":"integer"}},"title":"week_plannerArguments","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/compare_locations":{"post":{"operationId":"compare_locations","summary":"Side-by-side weather for two to five places on a date (today by default): conditions, high/low, rain chance, wind, UV,","description":"Side-by-side weather for two to five places on a date (today by default): conditions, high/low, rain chance, wind, UV,\n    daylight, with the warmest, driest and calmest called out. Use for \"Lisbon or Barcelona this weekend\", \"which beach on\n    Saturday\", \"is it warmer in Phoenix or Miami\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"places":{"description":"2–5 places to compare, e.g. ['Lisbon', 'Barcelona', 'Nice'].","items":{"type":"string"},"maxItems":5,"minItems":2,"title":"Places","type":"array"},"day":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date as YYYY-MM-DD (today at the place when omitted).","examples":["2026-09-27"],"title":"Day"}},"required":["places"],"title":"compare_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/air_quality":{"post":{"operationId":"air_quality","summary":"Air quality now and for the next days: US AQI and European AQI with the category and EPA's guidance for everyone and for","description":"Air quality now and for the next days: US AQI and European AQI with the category and EPA's guidance for everyone and for\n    sensitive groups, PM2.5, PM10, ozone, NO2, dust, and pollen (alder, birch, grass, mugwort, olive, ragweed — Europe only),\n    plus the hour today when air is best. Use for \"is the air bad in Delhi\", \"can the kids play outside\", \"pollen today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"}},"title":"air_qualityArguments","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/uv_index":{"post":{"operationId":"uv_index","summary":"UV index hour by hour for a day with the peak, when it is 3+ (protection needed) and the WHO category, plus burn-time","description":"UV index hour by hour for a day with the peak, when it is 3+ (protection needed) and the WHO category, plus burn-time\n    guidance by skin type. Use for \"do I need sunscreen today\", \"when is the sun strongest\", \"UV in Sydney tomorrow\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"day":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date as YYYY-MM-DD (today at the place when omitted).","examples":["2026-09-27"],"title":"Day"}},"title":"uv_indexArguments","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/sun_moon":{"post":{"operationId":"sun_moon","summary":"Sunrise, sunset, day length, civil/nautical/astronomical twilight, golden and blue hours, solar noon, and the moon's","description":"Sunrise, sunset, day length, civil/nautical/astronomical twilight, golden and blue hours, solar noon, and the moon's\n    rise/set, phase and illumination for a place and date — computed locally. Use for \"what time is sunset\", \"golden hour\n    tonight\", \"is there a full moon this weekend\", \"how long are the days now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"day":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date as YYYY-MM-DD (today at the place when omitted).","examples":["2026-09-27"],"title":"Day"}},"title":"sun_moonArguments","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/marine":{"post":{"operationId":"marine","summary":"Sea conditions for a coastal place: wave height, period and direction, swell, and sea-surface temperature, hourly and","description":"Sea conditions for a coastal place: wave height, period and direction, swell, and sea-surface temperature, hourly and\n    daily, with a surf/swim/boating read. Use for \"how big are the waves at Santa Cruz\", \"sea temperature in Nice\", \"is it\n    calm enough to kayak tomorrow\". Inland places return an explanation instead of numbers.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"days":{"default":3,"description":"Days ahead (1–7).","maximum":7,"minimum":1,"title":"Days","type":"integer"}},"title":"marineArguments","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/history":{"post":{"operationId":"history","summary":"What the weather actually was on a past date or range (since 1940): daily high/low/mean, precipitation, snow, wind and","description":"What the weather actually was on a past date or range (since 1940): daily high/low/mean, precipitation, snow, wind and\n    conditions, from reanalysis. Use for \"what was the weather on our wedding day\", \"how much did it rain last week\", \"was\n    July 2024 hotter than usual in Madrid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"start":{"default":"","description":"Start date YYYY-MM-DD (1940 onward).","examples":["2024-06-15"],"title":"Start","type":"string"},"end":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"End date YYYY-MM-DD (same as start when omitted; at most 31 days).","title":"End"}},"title":"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/climate_compare":{"post":{"operationId":"climate_compare","summary":"Is this normal? Compares the forecast (or a date's) high/low and rain against the same calendar week over the past N","description":"Is this normal? Compares the forecast (or a date's) high/low and rain against the same calendar week over the past N\n    years: the typical high/low, how unusual today is (percentile), the record in the sample, and a one-line answer. Use\n    for \"is this heat normal for September\", \"is it usually this wet in Seattle in March\", \"what's Tokyo normally like in May\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"day":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date as YYYY-MM-DD (today at the place when omitted).","examples":["2026-09-27"],"title":"Day"},"years":{"default":10,"description":"How many past years to compare against (5–30).","maximum":30,"minimum":5,"title":"Years","type":"integer"}},"title":"climate_compareArguments","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/travel_pack":{"post":{"operationId":"travel_pack","summary":"A packing list for a trip from the forecast (up to 16 days out) or, further out, from the climate of those dates:","description":"A packing list for a trip from the forecast (up to 16 days out) or, further out, from the climate of those dates:\n    temperature range, rain days, UV, and the items to bring, with a day-by-day outline. Use for \"what should I pack for\n    Lisbon next week\", \"will I need a coat in Chicago in October\", \"is it rainy season in Bali then\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City, optionally with region/country: 'Paris', 'Paris, TX', 'Manchester, UK', 'Pune, India'. Or give latitude and longitude.","examples":["Paris","Pune, India","Manchester, UK"],"title":"Place"},"latitude":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}],"default":null,"description":"Latitude (−90..90), if not giving a place.","title":"Latitude"},"longitude":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}],"default":null,"description":"Longitude (−180..180), if not giving a place.","title":"Longitude"},"start":{"default":"","description":"Trip start YYYY-MM-DD.","examples":["2026-10-03"],"title":"Start","type":"string"},"nights":{"default":3,"description":"Nights (1–14).","maximum":14,"minimum":1,"title":"Nights","type":"integer"}},"title":"travel_packArguments","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}}}}