OpenMeteo Weather
Fetch current weather and forecasts via the free Open-Meteo API. No API key required. Supports any location worldwide.
CLI: bash {baseDir}/scripts/weather.sh [options]
Quick reference
# Current weather (city name alone is enough)
bash {baseDir}/scripts/weather.sh --current --city=Berlin
bash {baseDir}/scripts/weather.sh --current --city=London
# Exact coordinates for precision if available
bash {baseDir}/scripts/weather.sh --current --lat=48.8566 --lon=2.3522
# Disambiguate with --country (any format: code, full name, partial)
bash {baseDir}/scripts/weather.sh --current --city=Portland --country=US
# Forecast (daily + hourly)
bash {baseDir}/scripts/weather.sh --forecast-days=3 --city=Paris
# Both current + forecast
bash {baseDir}/scripts/weather.sh --current --forecast-days=2 --city=Rome
# Custom params — fetch only precipitation data
bash {baseDir}/scripts/weather.sh --forecast-days=2 --city=Vienna \
--hourly-params=precipitation,precipitation_probability,weather_code
Options
Location (required — pick one):
--city=NAME — city name; auto-geocoded, usually sufficient on its own
--country=… — optional country hint, any format works (GB, France, Ger). Only needed to disambiguate (e.g. Portland US vs UK). Do not look up the "correct" code — pass whatever you have or omit entirely.
--lat=FLOAT --lon=FLOAT — direct coordinates, skips geocoding
Mode (at least one required):
--current — fetch current conditions
--forecast — fetch hourly + daily forecast
--forecast-days=N — forecast length 1–16 days (default: 7; implies --forecast)
Param overrides (comma-separated variable names):
--current-params=… — override current weather variables
--hourly-params=… — override hourly forecast variables
--daily-params=… — override daily forecast variables
Output:
--human — emoji-rich formatted output for humans (default is porcelain, optimized for agents)
Rules
- Default output is porcelain (compact, for agents). Never pass
--porcelain — it's the default; saves tokens.
- When the user asks about weather without specifying a location, check USER.md for their city/country.
- Present results as a natural-language summary — do not paste raw CLI output to the user.
- WMO weather codes are resolved to text labels automatically (e.g. "Slight rain", "Overcast").
- Use
--forecast-days=1 or --forecast-days=2 when the user only asks about today/tomorrow — don't waste tokens on a full 7-day fetch.
- For targeted questions (e.g. "when will the rain stop?"), override params via
--hourly-params or --daily-params to fetch only what's needed.
Available API variables
Override defaults via --current-params, --hourly-params, --daily-params.
Current & hourly variables
temperature_2m (default) — air temperature at 2m, °C
apparent_temperature (default) — feels-like temperature, °C
relative_humidity_2m (default) — relative humidity at 2m, %
precipitation (default) — total precipitation (rain + showers + snow), mm
precipitation_probability (default, hourly only) — probability of precipitation, %
weather_code (default) — weather condition, auto-resolved to text in output
wind_speed_10m (default) — wind speed at 10m, km/h
wind_gusts_10m — wind gust speed at 10m, km/h
wind_direction_10m — wind direction, °
cloud_cover (default, current only) — total cloud cover, %
is_day (default, current only) — daytime flag, 0/1
pressure_msl — sea-level atmospheric pressure, hPa
surface_pressure — surface pressure, hPa
visibility — visibility distance, m
rain — rain only (no showers/snow), mm
showers — shower rain only, mm
snowfall — snowfall amount, cm
snow_depth — snow depth on the ground, m
dew_point_2m — dew point temperature at 2m, °C
uv_index (hourly only) — UV index
Daily variables
temperature_2m_max (default) — daily max temperature, °C
temperature_2m_min (default) — daily min temperature, °C
precipitation_sum (default) — total daily precipitation, mm
precipitation_probability_max (default) — max precipitation probability, %
weather_code (default) — dominant weather condition for the day
wind_speed_10m_max (default) — max wind speed, km/h
wind_gusts_10m_max — max wind gust speed, km/h
wind_direction_10m_dominant — dominant wind direction, °
sunrise — sunrise time, ISO 8601
sunset — sunset time, ISO 8601
daylight_duration — daylight duration, seconds
sunshine_duration — sunshine duration, seconds
precipitation_hours — hours with precipitation
rain_sum — total daily rain, mm
showers_sum — total daily showers, mm
snowfall_sum — total daily snowfall, cm
uv_index_max — max UV index
apparent_temperature_max — daily max feels-like, °C
apparent_temperature_min — daily min feels-like, °C
Conversational examples
User: "What's the weather like?"
- Location not specified → get city/country from USER.md.
- Wants a general overview → use
--current.
bash {baseDir}/scripts/weather.sh --current --city=Berlin
- Summarize conditions naturally: "Clear sky, -12°C (feels like -17°C), wind 9 km/h."
User: "When will the rain stop?"
- Needs hourly precipitation timeline → use
--forecast-days=2 with only rain-related params.
bash {baseDir}/scripts/weather.sh --forecast-days=2 --city=Berlin \
--hourly-params=precipitation,precipitation_probability,weather_code
- Scan the hourly output, find when precipitation drops to 0 and weather_code changes to non-rain. Answer concisely: "Rain should stop around 14:00 today."
User: "Do I need an umbrella?"
- Same approach as rain — check upcoming hours for precipitation.
bash {baseDir}/scripts/weather.sh --forecast-days=1 --city=Berlin \
--hourly-params=precipitation,precipitation_probability,weather_code
- Analyze output and give a yes/no answer with reasoning: "Yes — 70% chance of rain between 11:00 and 15:00, up to 2mm."
User: "What's the weather this weekend in Rome?"
- Specific city + specific days → use
--forecast with --daily-params only.
- Calculate the right
--forecast-days to cover the weekend, then pick Saturday/Sunday from the daily output.
bash {baseDir}/scripts/weather.sh --forecast-days=7 --city=Rome \
--daily-params=temperature_2m_max,temperature_2m_min,weather_code,precipitation_sum,precipitation_probability_max
- Present only Saturday and Sunday from the output: "Saturday: 14°/8°C, partly cloudy. Sunday: 16°/9°C, clear sky."
User: "What's the temperature outside?"
- Only wants temperature → use
--current with narrowed params.
bash {baseDir}/scripts/weather.sh --current --city=Berlin \
--current-params=temperature_2m,apparent_temperature
- Short answer: "-5°C, feels like -9°C."
1---2name: openmeteo-weather3description: Get current weather, hourly and daily forecasts for any city or coordinates worldwide. Use when the user asks about weather, temperature, rain, snow, wind, sunrise/sunset, UV, humidity, pressure, or wants to know if they need an umbrella.4---5
6# OpenMeteo Weather
7
8Fetch current weather and forecasts via the free Open-Meteo API. No API key required. Supports any location worldwide.
9
10CLI: `bash {baseDir}/scripts/weather.sh [options]`
11
12## Quick reference
13
14```
15# Current weather (city name alone is enough)
16bash {baseDir}/scripts/weather.sh --current --city=Berlin
17bash {baseDir}/scripts/weather.sh --current --city=London
18
19# Exact coordinates for precision if available
20bash {baseDir}/scripts/weather.sh --current --lat=48.8566 --lon=2.3522
21
22# Disambiguate with --country (any format: code, full name, partial)
23bash {baseDir}/scripts/weather.sh --current --city=Portland --country=US
24
25# Forecast (daily + hourly)
26bash {baseDir}/scripts/weather.sh --forecast-days=3 --city=Paris
27
28# Both current + forecast
29bash {baseDir}/scripts/weather.sh --current --forecast-days=2 --city=Rome
30
31# Custom params — fetch only precipitation data
32bash {baseDir}/scripts/weather.sh --forecast-days=2 --city=Vienna \
33 --hourly-params=precipitation,precipitation_probability,weather_code
34```
35
36## Options
37
38**Location (required — pick one):**
39- `--city=NAME` — city name; auto-geocoded, usually sufficient on its own
40- `--country=…` — optional country hint, any format works (`GB`, `France`, `Ger`). Only needed to disambiguate (e.g. Portland US vs UK). Do not look up the "correct" code — pass whatever you have or omit entirely.
41- `--lat=FLOAT --lon=FLOAT` — direct coordinates, skips geocoding
42
43**Mode (at least one required):**
44- `--current` — fetch current conditions
45- `--forecast` — fetch hourly + daily forecast
46- `--forecast-days=N` — forecast length 1–16 days (default: 7; implies `--forecast`)
47
48**Param overrides (comma-separated variable names):**
49- `--current-params=…` — override current weather variables
50- `--hourly-params=…` — override hourly forecast variables
51- `--daily-params=…` — override daily forecast variables
52
53**Output:**
54- `--human` — emoji-rich formatted output for humans (default is porcelain, optimized for agents)
55
56## Rules
57
581. Default output is porcelain (compact, for agents). Never pass `--porcelain` — it's the default; saves tokens.
592. When the user asks about weather without specifying a location, check **USER.md** for their city/country.
603. Present results as a natural-language summary — do not paste raw CLI output to the user.
614. WMO weather codes are resolved to text labels automatically (e.g. "Slight rain", "Overcast").
625. Use `--forecast-days=1` or `--forecast-days=2` when the user only asks about today/tomorrow — don't waste tokens on a full 7-day fetch.
636. For targeted questions (e.g. "when will the rain stop?"), override params via `--hourly-params` or `--daily-params` to fetch only what's needed.
64
65## Available API variables
66
67Override defaults via `--current-params`, `--hourly-params`, `--daily-params`.
68
69### Current & hourly variables
70
71- `temperature_2m` (default) — air temperature at 2m, °C
72- `apparent_temperature` (default) — feels-like temperature, °C
73- `relative_humidity_2m` (default) — relative humidity at 2m, %
74- `precipitation` (default) — total precipitation (rain + showers + snow), mm
75- `precipitation_probability` (default, hourly only) — probability of precipitation, %
76- `weather_code` (default) — weather condition, auto-resolved to text in output
77- `wind_speed_10m` (default) — wind speed at 10m, km/h
78- `wind_gusts_10m` — wind gust speed at 10m, km/h
79- `wind_direction_10m` — wind direction, °
80- `cloud_cover` (default, current only) — total cloud cover, %
81- `is_day` (default, current only) — daytime flag, 0/1
82- `pressure_msl` — sea-level atmospheric pressure, hPa
83- `surface_pressure` — surface pressure, hPa
84- `visibility` — visibility distance, m
85- `rain` — rain only (no showers/snow), mm
86- `showers` — shower rain only, mm
87- `snowfall` — snowfall amount, cm
88- `snow_depth` — snow depth on the ground, m
89- `dew_point_2m` — dew point temperature at 2m, °C
90- `uv_index` (hourly only) — UV index
91
92### Daily variables
93
94- `temperature_2m_max` (default) — daily max temperature, °C
95- `temperature_2m_min` (default) — daily min temperature, °C
96- `precipitation_sum` (default) — total daily precipitation, mm
97- `precipitation_probability_max` (default) — max precipitation probability, %
98- `weather_code` (default) — dominant weather condition for the day
99- `wind_speed_10m_max` (default) — max wind speed, km/h
100- `wind_gusts_10m_max` — max wind gust speed, km/h
101- `wind_direction_10m_dominant` — dominant wind direction, °
102- `sunrise` — sunrise time, ISO 8601
103- `sunset` — sunset time, ISO 8601
104- `daylight_duration` — daylight duration, seconds
105- `sunshine_duration` — sunshine duration, seconds
106- `precipitation_hours` — hours with precipitation
107- `rain_sum` — total daily rain, mm
108- `showers_sum` — total daily showers, mm
109- `snowfall_sum` — total daily snowfall, cm
110- `uv_index_max` — max UV index
111- `apparent_temperature_max` — daily max feels-like, °C
112- `apparent_temperature_min` — daily min feels-like, °C
113
114## Conversational examples
115
116**User:** "What's the weather like?"
117- Location not specified → get city/country from USER.md.
118- Wants a general overview → use `--current`.
119```
120bash {baseDir}/scripts/weather.sh --current --city=Berlin
121```
122- Summarize conditions naturally: "Clear sky, -12°C (feels like -17°C), wind 9 km/h."
123
124**User:** "When will the rain stop?"
125- Needs hourly precipitation timeline → use `--forecast-days=2` with only rain-related params.
126```
127bash {baseDir}/scripts/weather.sh --forecast-days=2 --city=Berlin \
128 --hourly-params=precipitation,precipitation_probability,weather_code
129```
130- Scan the hourly output, find when precipitation drops to 0 and weather_code changes to non-rain. Answer concisely: "Rain should stop around 14:00 today."
131
132**User:** "Do I need an umbrella?"
133- Same approach as rain — check upcoming hours for precipitation.
134```
135bash {baseDir}/scripts/weather.sh --forecast-days=1 --city=Berlin \
136 --hourly-params=precipitation,precipitation_probability,weather_code
137```
138- Analyze output and give a yes/no answer with reasoning: "Yes — 70% chance of rain between 11:00 and 15:00, up to 2mm."
139
140**User:** "What's the weather this weekend in Rome?"
141- Specific city + specific days → use `--forecast` with `--daily-params` only.
142- Calculate the right `--forecast-days` to cover the weekend, then pick Saturday/Sunday from the daily output.
143```
144bash {baseDir}/scripts/weather.sh --forecast-days=7 --city=Rome \
145 --daily-params=temperature_2m_max,temperature_2m_min,weather_code,precipitation_sum,precipitation_probability_max
146```
147- Present only Saturday and Sunday from the output: "Saturday: 14°/8°C, partly cloudy. Sunday: 16°/9°C, clear sky."
148
149**User:** "What's the temperature outside?"
150- Only wants temperature → use `--current` with narrowed params.
151```
152bash {baseDir}/scripts/weather.sh --current --city=Berlin \
153 --current-params=temperature_2m,apparent_temperature
154```
155- Short answer: "-5°C, feels like -9°C."