NWS Weather Forecast
Fetch public National Weather Service forecast evidence through runx HTTP.
This is a branded provider skill for the canonical weather-forecast verb. It
uses the governed HTTP front, not an ad hoc client: the receipt records the NWS
endpoint, response status, graph step receipts, and the exact authority surface.
No API key is required. The default runner fetches the actual NWS gridpoint
forecast; the locate runner discovers the gridpoint for a latitude/longitude.
What this skill does
nws-weather-forecast makes read-only calls to api.weather.gov. The locate
runner calls /points/{lat},{lon} to discover gridId, gridX, gridY, and
forecast URLs. The default forecast runner calls
/gridpoints/{office}/{grid_x},{grid_y}/forecast to fetch forecast periods. The
output is provider evidence; use weather-forecast when an agent needs to
normalize that evidence for a planning decision.
When to use this skill
- You need real public weather evidence with no credentials.
- A graph needs to prove a weather data read went through runx's governed HTTP
path.
- You have an NWS office/gridpoint and need the current public forecast.
- You have latitude and longitude in the United States and need the NWS gridpoint
before running the forecast path.
When not to use this skill
- For locations outside NWS coverage. Return
needs_input with the coverage
limitation.
- For emergency, medical, aviation, maritime, evacuation, or life-safety
decisions.
- To notify users, reschedule events, deploy changes, or mutate operations based
on weather. Those actions need their own authority gate.
- To call private networks, untrusted hosts, or non-NWS endpoints.
Procedure
- If the caller has only coordinates, run
locate with lat and lon.
- Extract
gridId, gridX, and gridY from the sealed locate output.
- Run the default
forecast runner with office, grid_x, and grid_y.
- Confirm the HTTP status is 2xx and the response contains forecast periods.
- Preserve the NWS source URL, generated timestamp, gridpoint, and receipt refs.
- If an agent needs planning prose, pass the provider evidence to
weather-forecast. Do not invent guidance inside this provider fetch.
- Return
needs_input for malformed coordinates or gridpoints; return
needs_more_evidence for NWS outages, missing periods, or stale data.
Edge cases and stop conditions
- Invalid coordinates: return
needs_input; NWS point lookup requires
decimal latitude and longitude.
- Unsupported location: return
needs_input; NWS coverage is not global.
- Provider outage or non-2xx response: return
needs_more_evidence and
preserve the HTTP status in the receipt.
- Missing forecast periods: return
needs_more_evidence; do not summarize a
forecast that is not present.
- Life-safety use: return
refused and direct the user to official weather
or emergency channels.
- Action requested from weather: stop at provider evidence and require the
downstream action skill with its own gate and receipt.
Output schema
decision: ready | needs_input | needs_more_evidence | refused
canonical_skill: runx/weather-forecast
runtime_path: http
provider: national-weather-service
provider_evidence:
endpoint: string
http_status: string
gridpoint:
office: string
grid_x: string
grid_y: string
generated_at: string
forecast_periods: array
receipt_refs: array
stop_conditions: array
Worked example
- Run
locate for 38.8894,-77.0352.
- The sealed NWS points response returns
gridId: LWX, gridX: 97,
gridY: 71, and a forecast URL.
- Run the default
forecast runner with office: LWX, grid_x: "97",
grid_y: "71".
- Use the sealed forecast JSON as
forecast_evidence for weather-forecast
when a downstream agent needs a planning packet.
Inputs
office (default runner, required): NWS office id such as LWX.
grid_x (default runner, required): NWS grid X coordinate.
grid_y (default runner, required): NWS grid Y coordinate.
lat (locate runner, required): decimal latitude for point lookup.
lon (locate runner, required): decimal longitude for point lookup.
1---2name: nws-weather-forecast3description: Fetch National Weather Service forecast evidence through the governed HTTP front, producing a sealed provider packet for downstream weather planning.4---56# NWS Weather Forecast78Fetch public National Weather Service forecast evidence through runx HTTP.910This is a branded provider skill for the canonical `weather-forecast` verb. It11uses the governed HTTP front, not an ad hoc client: the receipt records the NWS12endpoint, response status, graph step receipts, and the exact authority surface.13No API key is required. The default runner fetches the actual NWS gridpoint14forecast; the `locate` runner discovers the gridpoint for a latitude/longitude.1516## What this skill does1718`nws-weather-forecast` makes read-only calls to `api.weather.gov`. The `locate`19runner calls `/points/{lat},{lon}` to discover `gridId`, `gridX`, `gridY`, and20forecast URLs. The default `forecast` runner calls21`/gridpoints/{office}/{grid_x},{grid_y}/forecast` to fetch forecast periods. The22output is provider evidence; use `weather-forecast` when an agent needs to23normalize that evidence for a planning decision.2425## When to use this skill2627- You need real public weather evidence with no credentials.28- A graph needs to prove a weather data read went through runx's governed HTTP29 path.30- You have an NWS office/gridpoint and need the current public forecast.31- You have latitude and longitude in the United States and need the NWS gridpoint32 before running the forecast path.3334## When not to use this skill3536- For locations outside NWS coverage. Return `needs_input` with the coverage37 limitation.38- For emergency, medical, aviation, maritime, evacuation, or life-safety39 decisions.40- To notify users, reschedule events, deploy changes, or mutate operations based41 on weather. Those actions need their own authority gate.42- To call private networks, untrusted hosts, or non-NWS endpoints.4344## Procedure45461. If the caller has only coordinates, run `locate` with `lat` and `lon`.472. Extract `gridId`, `gridX`, and `gridY` from the sealed locate output.483. Run the default `forecast` runner with `office`, `grid_x`, and `grid_y`.494. Confirm the HTTP status is 2xx and the response contains forecast periods.505. Preserve the NWS source URL, generated timestamp, gridpoint, and receipt refs.516. If an agent needs planning prose, pass the provider evidence to52 `weather-forecast`. Do not invent guidance inside this provider fetch.537. Return `needs_input` for malformed coordinates or gridpoints; return54 `needs_more_evidence` for NWS outages, missing periods, or stale data.5556## Edge cases and stop conditions5758- **Invalid coordinates:** return `needs_input`; NWS point lookup requires59 decimal latitude and longitude.60- **Unsupported location:** return `needs_input`; NWS coverage is not global.61- **Provider outage or non-2xx response:** return `needs_more_evidence` and62 preserve the HTTP status in the receipt.63- **Missing forecast periods:** return `needs_more_evidence`; do not summarize a64 forecast that is not present.65- **Life-safety use:** return `refused` and direct the user to official weather66 or emergency channels.67- **Action requested from weather:** stop at provider evidence and require the68 downstream action skill with its own gate and receipt.6970## Output schema7172```yaml73decision: ready | needs_input | needs_more_evidence | refused74canonical_skill: runx/weather-forecast75runtime_path: http76provider: national-weather-service77provider_evidence:78 endpoint: string79 http_status: string80 gridpoint:81 office: string82 grid_x: string83 grid_y: string84 generated_at: string85 forecast_periods: array86receipt_refs: array87stop_conditions: array88```8990## Worked example91921. Run `locate` for `38.8894,-77.0352`.932. The sealed NWS points response returns `gridId: LWX`, `gridX: 97`,94 `gridY: 71`, and a forecast URL.953. Run the default `forecast` runner with `office: LWX`, `grid_x: "97"`,96 `grid_y: "71"`.974. Use the sealed forecast JSON as `forecast_evidence` for `weather-forecast`98 when a downstream agent needs a planning packet.99100## Inputs101102- `office` (default runner, required): NWS office id such as `LWX`.103- `grid_x` (default runner, required): NWS grid X coordinate.104- `grid_y` (default runner, required): NWS grid Y coordinate.105- `lat` (`locate` runner, required): decimal latitude for point lookup.106- `lon` (`locate` runner, required): decimal longitude for point lookup.