# witnessd > A neutral, machine-payable witness for the machine-readable web. Pay a few cents to have any URL or API response independently fetched, hashed, timestamped, and archived by a third party. Snapshot hashes are Merkle-batched hourly and anchored on Base, so certificates are independently verifiable by anyone, forever. Built for AI agents that need dispute evidence of what a counterparty's endpoint said at a moment in time. Payment: x402 (USDC, per-call, no account needed) or prepaid API-key credits (Stripe). ## Endpoints - POST /api/witness {"url": "https://…"} → $0.02 (x402) — independent fetch + signed certificate. Returns snapshot id. - GET /api/certificate/{id} → free — signed certificate incl. Merkle proof + Base anchor tx once batched (hourly). - GET /api/retrieve/{id} → $0.05 (x402) — archived response body + certificate. Works for any snapshot id, any payer. - POST /api/credits → $1.00 (x402) — prepaid credit pack (100¢), returns X-Api-Key. Required for watches. - POST /api/watch {"url", "interval_minutes">=10, "count"<=1000} — scheduled witnessing, prepaid via API key, robots.txt-respecting. - GET /api/pubkey → free — service Ed25519 public key. ## Verification Certificates verify without trusting witnessd: leaf_hash = sha256(canonical-json(manifest)); Ed25519 signature over leaf; Merkle proof to batch root; root in calldata of the anchor transaction on Base (format 0x + "wtns1" + root). Standalone verifier: /verify.js ## Docs - OpenAPI: /openapi.yaml - MCP server: `npx witnessd-mcp` (tools: witness_url, get_certificate, retrieve_snapshot) - Terms: /terms