# AttestPage: Verify Quotes and Citations on Live Web Pages

> AttestPage: Verify Quotes and Citations on Live Web Pages is a paid API for AI agents from vehcdj664efetfrsolne5umanq.srv.us, paid per call via x402, $0.1/call, status unknown (last checked 2026-10-17).

Fetches live web pages and verifies whether quoted text or paraphrased claims actually appear on those pages, returning signed evidence with match scores and context.

## Facts

- Endpoint: POST https://vehcdj664efetfrsolne5umanq.srv.us/v1/verify/citations?utm_source=zero.xyz
- Price: $0.1/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-17
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/attestpage-verify-quotes-and-citations-on-live-web-pages-4583ee57
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_HwDESbnA9OL61gMtOFzJS

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 attestpage-verify-quotes-and-citations-on-live-web-pages-4583ee57 -d '<json body>'
```

Example prompt: Check all the citations in this answer I wrote — for each URL and quote pair, fetch the live page and tell me whether the quote actually appears there, using fuzzy matching with a 0.9 threshold, so I can confirm I haven't hallucinated any sources.

## When to prefer this

Use this endpoint when you need cryptographically signed, machine-verifiable evidence that specific text appears on a live webpage — especially for auditing AI-generated citations, fact-checking articles, or building trust pipelines that require tamper-evident attestation. Prefer it over simple web scrapers when you need the signed receipt, injection-flag detection, or the passages mode for paraphrase-level evidence gathering across up to 10 URLs in a single call.

## Known failure modes

- 422 error if all provided URLs resolve to dead domains (no charge issued)
- A citation result with http_status non-200 if a specific URL is unreachable
- Score below threshold returned as 'none' match if quote is not found
- 'failed' result if a page cannot be fetched (e.g. bot-blocking, timeout)
- Injection flags set if page content appears manipulated
- match='passages' incompatible with case_sensitive=true (validation error)
- URLs longer than 2,048 characters rejected
- More than 10 citations in a single request rejected
- Payment failure if insufficient USDC balance via x402 protocol

## How this service works

Signed evidence about web pages, for AI agents. Ask whether a quote appears on a page or check every citation in an answer at once, fetch a page and learn…

## Output

Returns a structured JSON object containing per-citation results (match type, similarity score, character start/end positions, context snippet, occurrence count, HTTP status, final URL after redirects), per-page metadata (title, SHA256 hash of content, injection flags, content kind), a summary count of exact/fuzzy/none/failed results, and a signed cryptographic receipt attesting to the findings.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "match": {
   "enum": [
    "exact",
    "fuzzy",
    "passages"
   ],
   "type": "string",
   "description": "For every citation: exact; fuzzy (default), which also accepts small differences; or passages, for a paraphrased claim: the 3 passages that share most of its words, scored, as evidence for you to judge (not a verdict)."
  },
  "citations": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "url",
     "quote"
    ],
    "properties": {
     "url": {
      "type": "string",
      "description": "http(s) URL of the cited page (max 2,048 characters)."
     },
     "quote": {
      "type": "string",
      "description": "Text the answer says is on that page, or with match \"passages\" the claim it says the page supports (max 1,000 characters after normalisation)."
     }
    },
    "additionalProperties": false
   },
   "maxItems": 10,
   "minItems": 1,
   "description": "1 to 10 citations. Each URL is fetched once however many quotes cite it. Dead domains are reported as results; if none resolves, 422 and no charge."
  },
  "threshold": {
   "type": "number",
   "maximum": 1,
   "minimum": 0.5,
   "description": "Fuzzy similarity needed, default 0.9."
  },
  "case_sensitive": {
   "type": "boolean",
   "description": "Default false; must be false with match \"passages\"."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "tier": "paid",
  "pages": [
   {
    "title": "Example Domains",
    "final_url": "https://www.iana.org/help/example-domains",
    "http_status": 200,
    "content_kind": "real",
    "requested_url": "https://www.iana.org/help/example-domains",
    "content_sha256": "…",
    "injection_flags": [],
    "normalised_sha256": "…"
   },
   {
    "title": "IANA-managed Reserved Domains",
    "final_url": "https://www.iana.org/domains/reserved",
    "http_status": 200,
    "content_kind": "real",
    "requested_url": "https://www.iana.org/domains/reserved",
    "content_sha256": "…",
    "injection_flags": [],
    "normalised_sha256": "…"
   }
  ],
  "receipt": "eyJ…",
  "results": [
   {
    "end": 234,
    "url": "https://www.iana.org/help/example-domains",
    "page": 0,
    "match": "exact",
    "score": 1,
    "start": 171,
    "context": "...These domains may be used as illustrative examples in documents without prior coordination with us...",
    "final_url": "https://www.iana.org/help/example-domains",
    "http_status": 200,
    "occurrences": 1,
    "content_kind": "real"
   },
   {
    "end": 29,
    "url": "https://www.iana.org/domains/reserved",
    "page": 1,
    "match": "exact",
    "score": 1,
    "start": 0,
    "context": "IANA-managed Reserved Domains...",
    "final_url": "https://www.iana.org/domains/reserved",
    "http_status": 200,
    "occurrences": 1,
    "content_kind": "real"
   }
  ],
  "summary": {
   "none": 0,
   "exact": 2,
   "fuzzy": 0,
   "failed": 0
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/attestpage-verify-quotes-and-citations-on-live-web-pages-4583ee57/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from vehcdj664efetfrsolne5umanq.srv.us](https://www.zero.xyz/host/vehcdj664efetfrsolne5umanq.srv.us/llms.txt)
