# Foundry NWS Forecast Baseline Change

> Foundry NWS Forecast Baseline Change is a paid API for AI agents from foundry-par007-machine-revenue-mainnet.inference-chip-index.workers.dev, paid per call via x402, $0.012/call, status unknown (last checked 2026-09-14).

Compares a user-supplied baseline NWS forecast against the current live NWS forecast for a given time window, returning period-by-period change status and changed fields.

## Facts

- Endpoint: POST https://foundry-par007-machine-revenue-mainnet.inference-chip-index.workers.dev/v2/official/nws-forecast-baseline-change
- Price: $0.012/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/foundry-nws-forecast-baseline-change-7569efdf
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_tMwkjReZC5zymLA78nfz-

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability foundry-nws-forecast-baseline-change-7569efdf -d '<json body>'
```

Example prompt: Compare this baseline NWS forecast I saved yesterday against the current official forecast for the window from 2026-09-07T00:00:00Z to 2026-09-07T12:00:00Z — my baseline has temperature 20°C, wind 5 mph N, forecast 'Clear' — and tell me which fields changed.

## When to prefer this

Use this endpoint when you have a previously retrieved NWS forecast snapshot and need to detect what, if anything, has changed in the official NWS forecast since then. It is purpose-built for change detection and diff reporting rather than raw forecast retrieval, making it ideal for alerting pipelines, event planning confirmation checks, or any workflow that requires auditable before/after comparison of official weather data with source provenance.

## Known failure modes

- Baseline periods with different boundaries than current NWS periods are returned as UNKNOWN rather than CHANGED
- Missing or null temperature values prevent numeric comparison and may result in incomplete change detection
- Requests for time windows outside NWS coverage return empty or incomplete period sets
- Malformed datetime strings (not matching ISO 8601 with timezone) cause input validation errors
- Wind speed and forecast text are compared literally so minor formatting differences may appear as changes

## How this service works

Pay-per-request evidence and data tools: CSV validation and reconciliation, DNS/email configuration evidence, and bounded official weather, earthquake, vehicle, company and study records. Exact USDC prices, explicit JSON contracts and source provenance. No mailbox, ownership, medical or safety guarantees.

## Output

A JSON object listing each forecast period in the requested window with a status of CHANGED or UNKNOWN, the current and previous period values side by side, a list of changed_fields (e.g. 'temperature', 'windSpeed'), source attribution from NOAA/NWS, whether current coverage is complete, and stated limitations about what the comparison can and cannot guarantee.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "end": {
   "type": "string",
   "format": "date-time",
   "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
  },
  "start": {
   "type": "string",
   "format": "date-time",
   "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
  },
  "baseline": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "startTime",
     "endTime",
     "temperature",
     "temperatureUnit",
     "windSpeed",
     "windDirection",
     "shortForecast"
    ],
    "properties": {
     "endTime": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
     },
     "startTime": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
     },
     "windSpeed": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 100
       },
       {
        "type": "null"
       }
      ]
     },
     "temperature": {
      "anyOf": [
       {
        "type": "number",
        "maximum": 150,
        "minimum": -150
       },
       {
        "type": "null"
       }
      ]
     },
     "shortForecast": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 500
       },
       {
        "type": "null"
       }
      ]
     },
     "windDirection": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 100
  
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "route": "nws-forecast-baseline-change",
  "result": {
   "source": {
    "url": "https://api.weather.gov",
    "terms_url": "https://www.weather.gov/disclaimer",
    "updated_at": null,
    "attribution": "NOAA / National Weather Service; normalized by Foundry; no endorsement",
    "retrieved_at": "2026-09-06T00:00:00Z",
    "cache_age_seconds": 0
   },
   "periods": [
    {
     "end": "2026-09-07T12:00:00Z",
     "start": "2026-09-07T00:00:00Z",
     "status": "CHANGED",
     "current": {
      "endTime": "2026-09-07T12:00:00Z",
      "startTime": "2026-09-07T00:00:00Z",
      "windSpeed": "5 mph",
      "temperature": 23,
      "shortForecast": "Clear",
      "windDirection": "N",
      "temperatureUnit": "C"
     },
     "previous": {
      "endTime": "2026-09-07T12:00:00Z",
      "startTime": "2026-09-07T00:00:00Z",
      "windSpeed": "5 mph",
      "temperature": 20,
      "shortForecast": "Clear",
      "windDirection": "N",
      "temperatureUnit": "C"
     },
     "changed_fields": [
      "temperature"
     ],
     "unknown_fields": []
    }
   ],
   "limitations": [
    "Compares only identical complete source period boundaries. Shifted or missing baseline periods remain UNKNOWN.",
    "Temperature compares in Celsius; wind and forecast text compare literally. Text change is not a quantified weather change.",
    "Current retrieval is not historical coverage, a safety recommendation or an emergency service."
   ],
   "requested_window": {
    "end": "2026-09-07T12:00:00Z",
    "start": "2026-09-07T00:00:00Z"
   },
   "current_coverage_complete": true
  },
  "observed_at": "2026-09-06T00:00:00Z"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/foundry-nws-forecast-baseline-change-7569efdf/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from foundry-par007-machine-revenue-mainnet.inference-chip-index.workers.dev](https://www.zero.xyz/host/foundry-par007-machine-revenue-mainnet.inference-chip-index.workers.dev/llms.txt)
