# AgentProof Fetch – Change Detection with Signed Receipt

> AgentProof Fetch – Change Detection with Signed Receipt is a paid API for AI agents from agentproof-fetch-production.agentproof.workers.dev, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-11).

Fetches a public URL, computes SHA-256 hashes of raw bytes and normalized markdown, compares against a known hash to detect changes, and returns a verifiable Ed25519-signed provenance receipt.

## Facts

- Endpoint: POST https://agentproof-fetch-production.agentproof.workers.dev/v1/check?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agentproof-fetch-change-detection-with-signed-receipt-a125a2c6
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_oVUnYpnJJw_S1ffwSclBJ

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 agentproof-fetch-change-detection-with-signed-receipt-a125a2c6 -d '<json body>'
```

Example prompt: Check whether https://example.com/terms-of-service has changed since we last fetched it — the known markdown SHA-256 from that fetch was a3f1...d9c2 — and give me a signed receipt I can verify offline.

## When to prefer this

Choose this endpoint when you need both change detection AND cryptographic provenance in a single call — i.e., you want to know if a URL's content has changed AND receive a verifiable, offline-checkable Ed25519 receipt proving what the content was at fetch time. Prefer it over plain web scrapers when auditability, legal compliance, or AI agent accountability is required. It is especially valuable in agentic pipelines where downstream steps need tamper-evident proof of what content was observed.

## Known failure modes

- URL points to a private/internal network address — request refused
- URL is disallowed by robots.txt — request refused with robots error
- Target URL returns non-200 HTTP status — provenance recorded but content unavailable
- Malformed URL or exceeding 2048 character limit — 400 validation error
- known_sha256 not matching 64-char lowercase hex pattern — 400 validation error
- Target URL times out or is unreachable — network error returned
- Payment not settled (x402 flow incomplete) — 402 or payment error

## How this service works

Provenance fetch for AI agents: turn a public URL into clean markdown with SHA-256 hashes of the raw bytes and the normalised markdown, plus an Ed25519-signed receipt that anyone can verify offline. Honours robots.txt; refuses private networks.

## Output

A JSON object containing: a boolean 'changed' flag (true/false comparing current markdown_sha256 against known_sha256), a signed Ed25519 receipt with algorithm and base64url signature, full provenance metadata (final URL, redirect chain, HTTP status, content type, content_bytes, fetched_at timestamp, ETag, last_modified, content_sha256, markdown_sha256), the known_sha256 echo, a job_id, and op/state fields.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "format": "uri",
   "maxLength": 2048
  },
  "known_sha256": {
   "type": "string",
   "pattern": "^[0-9a-f]{64}$",
   "description": "markdown_sha256 from a previous fetch_markdown or check_changed receipt"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "op": "check_changed",
  "state": "SETTLED",
  "job_id": "job_<24 hex>",
  "changed": true,
  "receipt": {
   "alg": "Ed25519",
   "payload": {
    "v": 1,
    "type": "agentproof.receipt"
   },
   "signature": "<base64url>"
  },
  "provenance": {
   "url": "https://example.com/",
   "etag": null,
   "final_url": "https://example.com/",
   "redirects": [],
   "fetched_at": "2026-09-24T12:00:00.000Z",
   "http_status": 200,
   "content_type": "text/html",
   "content_bytes": 1256,
   "last_modified": null,
   "content_sha256": "<64 hex>",
   "markdown_sha256": "<64 hex>"
  },
  "known_sha256": "<64 hex>"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agentproof-fetch-change-detection-with-signed-receipt-a125a2c6/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agentproof-fetch-production.agentproof.workers.dev](https://www.zero.xyz/host/agentproof-fetch-production.agentproof.workers.dev/llms.txt)
