# AgentProof Fetch

> AgentProof Fetch is a paid API for AI agents from agentproof-fetch-production.agentproof.workers.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-10).

Fetches a public URL, converts it to clean markdown, and returns SHA-256 content hashes plus a verifiable Ed25519-signed provenance receipt.

## Facts

- Endpoint: POST https://agentproof-fetch-production.agentproof.workers.dev/v1/fetch?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agentproof-fetch-522ecf62
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap__bJoWo_ZTodd3BV1gzcZS

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-522ecf62 -d '<json body>'
```

Example prompt: Fetch the contents of https://example.com/press-release and give me clean markdown along with a cryptographic receipt I can use to prove offline exactly what the page said and that the bytes haven't been tampered with.

## When to prefer this

Choose this endpoint when you need not just web content, but cryptographic proof of what that content was at a specific moment — for audit trails, fact-checking pipelines, legal evidence capture, AI agent grounding with verifiable citations, or any workflow where a downstream party needs to independently verify the retrieved content without trusting the fetching agent. Prefer it over plain web scrapers or markdown converters when provenance, integrity hashes, or offline verifiability are required.

## Known failure modes

- URL points to a private/internal network address — refused for security
- robots.txt disallows fetching — request refused with an appropriate error
- URL is unreachable or returns a non-200 HTTP status — error with the actual HTTP status code returned
- URL exceeds 2048 characters — rejected by input validation
- max_chars out of range (below 500 or above 200000) — rejected
- Payment not settled via x402 protocol — request not processed
- URL scheme is not http or https — rejected
- Target server returns extremely slow response — timeout 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: the markdown text of the fetched page (truncated to max_chars if needed), a provenance block with the final URL, HTTP status, content type, byte count, redirects, fetch timestamp, SHA-256 hash of raw content bytes, and SHA-256 hash of normalized markdown, plus an Ed25519-signed receipt object (with algorithm, payload including job_id and receipt type, and base64url signature) that can be verified offline. Also includes whether the output was truncated and the page title.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "format": "uri",
   "maxLength": 2048,
   "description": "Public http(s) URL to fetch"
  },
  "max_chars": {
   "type": "integer",
   "default": 100000,
   "maximum": 200000,
   "minimum": 500,
   "description": "Truncate the markdown to this many characters"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "op": "fetch_markdown",
  "state": "SETTLED",
  "title": "Example Domain",
  "job_id": "job_<24 hex>",
  "receipt": {
   "alg": "Ed25519",
   "payload": {
    "v": 1,
    "type": "agentproof.receipt",
    "job_id": "job_<24 hex>"
   },
   "signature": "<base64url>"
  },
  "markdown": "# Example Domain\n\nThis domain is for use in documentation examples...",
  "truncated": false,
  "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>"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agentproof-fetch-522ecf62/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)
