Get current weather and forecasts for any location (no API key required)
Provides current weather conditions and forecasts using free services – no API keys needed.
| Tool | Purpose |
|------|---------|
| http | GET requests to wttr.in and Open-Meteo (no auth_provider needed) |
| device | get_location → current GPS coordinates (latitude, longitude) |
{
"action": "get_location"
}
Returns GPS coordinates, e.g. GPS: 51.5074, -0.1278 (Accuracy: 12m).
Use latitude/longitude directly with Open-Meteo, or as {LAT},{LON} with wttr.in.
Lightweight, human-readable weather data via wttr.in.
{
"method": "GET",
"url": "https://wttr.in/{LOCATION}?format=%l:+%c+%t+%h+%w",
"response_format": "text"
}
Returns e.g. London: ⛅️ +8°C 71% ↙5km/h
Format codes: %c condition · %t temperature · %h humidity · %w wind · %l location · %m moon phase
IMPORTANT: wttr.in is a weather service only. NEVER use wttr.in for reverse geocoding or location lookups. The
%lformat code only works with city names, not coordinates. To resolve coordinates to a city name, always use Nominatim (see below).
{
"method": "GET",
"url": "https://wttr.in/{LOCATION}?format=3",
"response_format": "text"
}
Returns e.g. London: ⛅️ +8°C
{
"method": "GET",
"url": "https://wttr.in/{LOCATION}?T",
"response_format": "text"
}
{
"method": "GET",
"url": "https://wttr.in/{LOCATION}?1&T",
"response_format": "text"
}
{
"method": "GET",
"url": "https://wttr.in/{LOCATION}?0&T",
"response_format": "text"
}
+: New+York, San+FranciscoJFK, CDG, LHR&m for metric (default) or &u for USCS/FahrenheitMünchen, ZürichUse when wttr.in is unavailable or when you need structured JSON data. Free, no API key. Docs: https://open-meteo.com/en/docs
{
"method": "GET",
"url": "https://api.open-meteo.com/v1/forecast?latitude={LAT}&longitude={LON}¤t_weather=true"
}
Returns JSON with current_weather.temperature, current_weather.windspeed, current_weather.weathercode.
Use the Open-Meteo geocoding API first:
{
"method": "GET",
"url": "https://geocoding-api.open-meteo.com/v1/search?name={CITY}&count=1"
}
Returns results[0].latitude and results[0].longitude.
If you only have coordinates (e.g. from GPS or Open-Meteo) and need the place name, use the Nominatim reverse geocoding API (free, no API key):
{
"method": "GET",
"url": "https://nominatim.openstreetmap.org/reverse?lat={LAT}&lon={LON}&format=json&accept-language=en",
"headers": { "User-Agent": "SannaBot/1.0" }
}
Returns JSON with address.city (or address.town / address.village for smaller places) and display_name (full human-readable address).
Use this when:
device → get_location gives GPS coords and you want to greet with "The weather in {city}…"With city name:
latitude and longitudeweathercode (0 = clear, 1–3 = cloudy, 45–48 = fog, 51–55 = drizzle, 61–65 = rain, 71–75 = snow, 95 = thunderstorm)Without city name (current location):
device → get_location → get latitude and longitude directlyweathercodedevice → get_location → returns e.g. 51.5074, -0.1278https://nominatim.openstreetmap.org/reverse?lat=51.5074&lon=-0.1278&format=json&accept-language=en → use address.city for the responsehttp → GET https://wttr.in/51.5074,-0.1278?format=%c+%t+%h+%w with response_format: "text" (note: no %l – use the city name from Nominatim instead)http → GET https://wttr.in/London?format=%l:+%c+%t+%h+%w with response_format: "text"http → GET https://wttr.in/Paris?T with response_format: "text"http → GET https://wttr.in/London?1&T with response_format: "text"http → GET https://wttr.in/New+York?format=%t with response_format: "text"device → get_location, then query wttr.in with coordinateswttr.in/Tokyo?format=%l:+%c+%t+%h+%wwttr.in/Paris?Twttr.in/{LOCATION}?1&T, check for rainwttr.in/Sydney?format=%twttr.in/?format=%mresponse_format: "text" for wttr.in (it returns plain text, not JSON)device → get_location to get GPS coordinates and query with thoseCategory:weather