| current_date_and_timeA | Get the current weekday and Swiss local time.
Call this first when the question is relative, such as "tomorrow" or "tonight", because
the forecast tools take a real date rather than an offset. The time is written the way
the tools read it, ISO 8601 without an offset, so it can be sent back to them as it is.
Returns:
str: For example "Today is Wednesday, 2026-09-23T13:02 (Swiss time)".
|
| forecast_dailyA | Get the whole-day forecast for a place, for one day or several days in a row: the
cheapest way to answer "how is the weather" for a day, the weekend or the week.
Each day covers a Swiss calendar day, 00:00 to 24:00 local time. The minimum and maximum
are the lowest and highest hourly mean temperature of that day, and the weather words
describe the daytime. Always use this for the rain of a whole day.
Args:
location (str): Place name: a town, village, city district, lake or peak (e.g., "Zurich").
start_date (str): The first Swiss calendar day in ISO 8601, e.g. "2026-09-23". Today or up to 8 days ahead.
days (int): How many days in a row, from 1 to 9. Default 1.
Returns:
dict: The place, the forecast point used, one row per day and the model run; the
field names give the units. In 8 of 10 possible outcomes, the day's rain lies
between its 10th and 90th percentile. A value is None when MeteoSwiss does not
publish it for that forecast point.
Examples:
forecast_daily("Zurich", "2026-09-23")
forecast_daily("Lugano", "2026-09-26", 2) # a weekend
|
| forecast_hourlyA | Get the weather hour by hour for a place: temperature with its likely range, chance
of rain and the weather in words.
Use this for one hour, such as "how warm is it at 15:00", or part of a day, such as "how
is the afternoon" or "when is the best time for a walk". Without end it returns the one
hour starting at start. Each row covers the hour from its "from" to its "to": the
temperature is the mean of that hour, while the rain chance and the weather cover the 3
hours up to "to", as MeteoSwiss publishes them only per 3 hours. For whole days or
periods longer than a day use forecast_daily, which answers in far fewer rows, and for
rain amounts forecast_rain.
Args:
location (str): Place name: a town, village, city district, lake or peak (e.g., "Zurich").
start (str): Swiss local time as a full hour in ISO 8601 without offset, e.g. "2026-09-23T15:00". Today or up to 8 days ahead.
end (str): Optional. Swiss local time as a full hour in ISO 8601 without offset, after start.
Returns:
dict: The place, the forecast point used, one row per hour and the model run; the
field names give the units. In 8 of 10 possible outcomes, the temperature lies
between its 10th and 90th percentile.
Examples:
forecast_hourly("Zurich", "2026-09-23T15:00") # one hour
forecast_hourly("Zurich", "2026-09-23T12:00", "2026-09-23T18:00") # the afternoon
|
| forecast_rainA | Get when and how much it may rain at a place, in 3-hour blocks over a period.
Use this for "will it rain this afternoon", "do I need an umbrella" or "when does the
rain stop". Each block gives the chance of rain, the median rainfall of the 3 hours, and
how much the wettest hour of the block may bring (its 90th percentile). The median is
often 0 when showers are possible, so read the chance and the "up to" amount as well.
A period up to the end of the forecast ends with its last full 3-hour block.
Args:
location (str): Place name: a town, village, city district, lake or peak (e.g., "Zurich").
start (str): Swiss local time the period starts, as a full hour in ISO 8601 without offset, e.g. "2026-09-23T12:00". Today or up to 8 days ahead.
end (str): Swiss local time the period ends, as a full hour in ISO 8601 without offset, after start.
Returns:
dict: The place, the forecast point used, one row per 3-hour block and the model
run; the field names give the units.
Examples:
forecast_rain("Zurich", "2026-09-23T12:00", "2026-09-24T00:00")
forecast_rain("Lugano", "2026-09-24T06:00", "2026-09-24T18:00")
|
| forecast_sunshineA | Get the sunshine hours for a place over a period.
MeteoSwiss publishes sunshine as minutes per hour, which are added up over the period
and reported as hours.
Args:
location (str): Place name: a town, village, city district, lake or peak (e.g., "Zurich").
start (str): Swiss local time the period starts, as a full hour in ISO 8601 without offset, e.g. "2026-09-23T06:00". Today or up to 8 days ahead.
end (str): Swiss local time the period ends, as a full hour in ISO 8601 without offset, e.g. "2026-09-23T18:00".
Returns:
dict: The sunshine in hours, the place, the forecast point used, the period and the
model run.
Examples:
forecast_sunshine("Zurich", "2026-09-23T00:00", "2026-09-24T00:00") # the whole day
forecast_sunshine("Zurich", "2026-09-23T12:00", "2026-09-23T18:00") # the afternoon
|
| forecast_windA | Get the wind at a place at a specific time: mean speed, strongest gust and direction.
The speed is the mean over the hour up to that time, and the gust the strongest
one-second gust in that hour, which is what makes wind hazardous. The gust's 90th
percentile is a cautious high estimate of that strongest gust: in 9 of 10 possible
outcomes the gust stays below it, and in 1 of 10 it is stronger, so it is not the
highest gust possible. The direction is where the wind blows from, in degrees clockwise
from north (0 is a north wind, 180 a south wind) and as a compass point.
Args:
location (str): Place name: a town, village, city district, lake or peak (e.g., "Zurich").
when (str): Swiss local time as a full hour in ISO 8601 without offset, e.g. "2026-09-23T14:00". Today or up to 8 days ahead.
Returns:
dict: The wind, the place, the forecast point used, the time it is valid for and the
model run; the field names give the units.
Examples:
forecast_wind("Zurich", "2026-09-23T14:00")
forecast_wind("Titlis", "2026-09-24T12:00")
|
| forecast_cloud_coverA | Get how cloudy it is at a place at a specific time.
MeteoSwiss publishes low, medium and high cloud separately, and they overlap, so the
total is an estimate that assumes the layers are independent. All three layers are
returned as well, which tells low fog apart from thin high cloud.
When a number is not needed, forecast_hourly answers "how cloudy" in plain words.
Args:
location (str): Place name: a town, village, city district, lake or peak (e.g., "Zurich").
when (str): Swiss local time as a full hour in ISO 8601 without offset, e.g. "2026-09-23T14:00". Today or up to 8 days ahead.
Returns:
dict: The total cloud cover and its low, medium and high layers in percent, the
place, the forecast point used, the time it is valid for and the model run.
Examples:
forecast_cloud_cover("Zurich", "2026-09-23T14:00")
forecast_cloud_cover("Locarno", "2026-09-24T09:00")
|
| forecast_freezing_levelA | Get the height of the 0 degree line at a place at a specific time.
This is the height where the air is at 0 degrees. Snow usually reaches somewhat below it,
so it answers questions about snow in the mountains, such as how high a ski area has to be.
Args:
location (str): Place name: a town, village, city district, lake or peak (e.g., "Zurich").
when (str): Swiss local time as a full hour in ISO 8601 without offset, e.g. "2026-09-23T14:00". Today or up to 8 days ahead.
Returns:
dict: The freezing level in metres above sea level, the place, the forecast point
used, the time it is valid for and the model run.
Examples:
forecast_freezing_level("Zermatt", "2026-09-23T14:00")
forecast_freezing_level("Arosa", "2026-09-25T06:00")
|
| current_conditionsA | Get the latest measurements of a MeteoSwiss station near the location.
These are the measurements of that station, not of the location itself. The station is
the one with the smallest distance plus 20 times the height gap, so it can be several
kilometres away and hundreds of metres higher or lower than the location. Always start
the answer with the data_from sentence, which names the station, its distance and its
height difference, and then give the values as the station's measurements. MeteoSwiss
publishes new values about every 10 minutes.
Temperature, humidity, dew point and pressure are measured at measured_at. Rain,
sunshine, wind speed, the strongest gust and the wind direction cover the 10 minutes up
to it. The temperature and pressure changes compare measured_at with 3 hours before it,
negative when the value fell. The rain and sunshine of the last hour are the totals of
its six 10-minute values, and the strongest gust of the last hour is the highest of them.
For later today or the coming days use forecast_hourly or forecast_daily.
Args:
location (str): Place name: a town, village, city district, lake or peak (e.g., "Zurich").
Returns:
dict: The place, the station with its distance and height difference, the time of the
measurements and the measured values; the field names give the units. A value is
None when the station does not measure it, and a change or a last-hour value is
None when the station has not published all the measurements it needs, such as
shortly after midnight UTC.
Examples:
current_conditions("Zurich")
current_conditions("Braunwald")
|
| current_extremesA | Get where in Switzerland it is warmest, coldest, windiest, wettest or sunniest now.
This compares the latest measurements of about 160 MeteoSwiss stations. They are the
values of stations, not of towns, and not a forecast. A high mountain station is
colder and windier than the valleys, so name the altitude with a station. MeteoSwiss
publishes new values about every 10 minutes.
The warmest, coldest and windiest stations are ranked by the temperature and by the
strongest gust. For the sunniest and the wettest the answer counts stations: a station
is sunny when the sun shone for at least 5 of the last 10 minutes, and rainy when it
measured rain in the last 10 minutes. The counts are given for Switzerland and for
each canton, as the number of sunny or rainy stations out of the stations that measure
it. Always give both numbers, because a canton with one station says little. A canton
with 0 sunny or rainy stations has none. A canton that is not listed has no station
that measures it. Liechtenstein is listed like a canton. At night no station is sunny.
Args:
extreme (str): One of "warmest", "coldest", "windiest", "wettest" or "sunniest".
Returns:
dict: The time of the measurements and the first 5 stations, or for the sunniest and
the wettest the counts in all and for each canton, the highest share first; the
field names give the units. The wettest also lists the first 5 rainy stations.
A station that does not measure the value is left out everywhere.
Examples:
current_extremes("warmest")
current_extremes("sunniest")
|