Files
discord_bot/specs/SPEC-016-weather.md

1.5 KiB

SPEC-016 — Weather tool (get_weather)

Both personas talk about weather (the sea over the skerries, rain on patch day) but had to guess it. get_weather grounds that in the free MET Norway Locationforecast API (api.met.no, User-Agent required, no key). Locations are host-configured coordinates — the model picks by name, it never supplies raw URLs, so there is no SSRF surface (one fixed API host).

WEA-01 — Tool offered only when configured (coverage: test)

The chat call's tools include get_weather only when enable-weather is true AND weather-locations (a list of [name, lat, lon] entries) is non-empty. Otherwise it is absent.

WEA-02 — Compact sanitized forecast (coverage: test)

The tool reduces the MET compact timeseries to: the named location, current conditions (temperature °C, wind m/s, symbol), and a small set of forecast points (next hours / tomorrow) with temperature, symbol and precipitation. Location names pass sanitize_external_text; numbers are numbers. Nothing else from the API response reaches the prompt.

WEA-03 — Location matched by name, defaults to first (coverage: test)

The location argument matches configured entries case-insensitively by substring; no or unknown location = the first configured entry. Coordinates never come from the model.

WEA-04 — Errors return, never raise; calls are metered (coverage: test)

API/network failures return an {error} dict (the responder keeps running). Each call counts against a per-user daily cap (weather-daily-per-user, default 30) like the other tools.