# Forest Web – Detect Changes in Static Page

> Forest Web – Detect Changes in Static Page is a paid API for AI agents from http--forest-gas-station-mainnet--lcjl27p8lmjs.code.run, paid per call via x402, $0.004/call, status unknown (last checked 2026-10-12).

Detects bounded, deterministic changes across a static HTML page by comparing multi-dimensional SHA-256 hashes (HTTP identity, metadata, JSON-LD, links, forms, robots) against a previously captured baseline.

## Facts

- Endpoint: POST https://http--forest-gas-station-mainnet--lcjl27p8lmjs.code.run/site/changed-since?utm_source=zero.xyz
- Price: $0.004/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/forest-web-detect-changes-in-static-page-229658c8
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_0MNHvTzmTiEJ0Hzvdihvg

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 forest-web-detect-changes-in-static-page-229658c8 -d '<json body>'
```

Example prompt: Check if https://example.com/about has materially changed since my last scan — compare it against the previous full hash sha256:4a3bc1...def9 and also check dimensions for HTTP, page, structured data, downloads, forms, and robots individually.

## When to prefer this

Use this endpoint when you need lightweight, deterministic, privacy-safe change detection on a static HTML page without storing full snapshots. It is ideal for monitoring pages where you already have a previous hash baseline and want to know precisely which dimension (metadata, links, forms, JSON-LD, robots) changed, rather than extracting full content. Prefer this over full-extraction endpoints when bandwidth or cost matters and you only need a changed/unchanged signal with dimension-level granularity.

## Known failure modes

- Invalid or inaccessible URL returns an error
- Malformed previous_hash pattern (not sha256:[64 hex chars]) causes a validation rejection
- Page requires JavaScript rendering — result will reflect static HTML only, dynamic content not captured
- robots.txt fetch may fail silently if not present, affecting robots dimension hash
- Payment not included or invalid returns HTTP 402

## How this service works

Detect bounded changes across one static page surface using one HTML fetch plus at most one robots.txt fetch. Forest hashes HTTP identity, page metadata, normalized JSON-LD, downloadable links, form schema and robots context without storing snapshots, rendering JavaScript or submitting anything. Base mainnet USDC

## Output

Returns a change detection result indicating whether the page has materially changed since the previous hash was recorded, along with dimension-level comparisons (HTTP identity, page metadata, normalized JSON-LD, downloadable links, form schema, and robots context) — without storing snapshots, executing JavaScript, or submitting any forms.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "pattern": "^https?://",
   "maxLength": 2048,
   "minLength": 1,
   "description": "Public HTTP(S) URL to inspect, resolve, or compare."
  },
  "user_agent": {
   "type": "string",
   "maxLength": 128,
   "minLength": 1,
   "description": "Public user agent value used to scope this lookup."
  },
  "previous_hash": {
   "type": "string",
   "pattern": "^sha256:[a-fA-F0-9]{64}$",
   "description": "Earlier result hash used to detect a material change."
  },
  "previous_dimensions": {
   "type": "object",
   "required": [
    "http",
    "page",
    "structured",
    "downloads",
    "forms",
    "robots"
   ],
   "properties": {
    "http": {
     "type": "string",
     "pattern": "^sha256:[a-fA-F0-9]{64}$",
     "description": "Earlier result hash used to detect a material change."
    },
    "page": {
     "type": "string",
     "pattern": "^sha256:[a-fA-F0-9]{64}$",
     "description": "Earlier result hash used to detect a material change."
    },
    "forms": {
     "type": "string",
     "pattern": "^sha256:[a-fA-F0-9]{64}$",
     "description": "Earlier result hash used to detect a material change."
    },
    "robots": {
     "type": "string",
     "pattern": "^sha256:[a-fA-F0-9]{64}$",
     "description": "Earlier result hash used to detect a material change."
    },
    "downloads": {
     "type": "string",
     "pattern": "^sha256:[a-fA-F0-9]{64}$",
     "description": "Earlier result hash used to detect a material change."
    },
    "structured": {
     "type": "string",
     "pattern": "^sha256:[a-fA-F0-9]{64}$",
     "description": "Earlier result hash used to detect a material change."
    }
   },
   "description": "Public previous dimensions value used to scope this lookup.",
   "additionalProperties": false
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/forest-web-detect-changes-in-static-page-229658c8/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from http--forest-gas-station-mainnet--lcjl27p8lmjs.code.run](https://www.zero.xyz/host/http--forest-gas-station-mainnet--lcjl27p8lmjs.code.run/llms.txt)
