{
  "x402Version": 2,
  "kind": "resource-server",
  "name": "AttestPage",
  "description": "Signed evidence about web pages for AI agents: verify a quote or up to 10 citations against the live page, fetch a page with a verdict on what came back, check links and package names, timestamp a hash. Paid per call.",
  "resources": [
    {
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/verify/quote",
      "method": "POST",
      "description": "Use when an agent is about to quote or cite a web page: send the URL and the quote in your exact words, and get back whether those words, or a close fuzzy match, are on the live page (exact, fuzzy or none), with offsets, context, page hashes and a signed receipt, all in one call, so a misquoted or made-up quote is caught before a user sees it. For a paraphrased claim, match \"passages\" returns the 3 passages sharing most of its words, scored, with offsets: evidence to judge, not a verdict (no LLM, same answer every call). PDFs are read too, on the full service (an edge server answers 501 not_on_edge, uncharged): a match or passage on a PDF also gives pdf_page and pdf_page_end, its 1-based pages. For 9 or more quotes on one page, verify/quotes costs less: one call checks up to 20.",
      "price": {
        "amount": "0.01",
        "currency": "USD",
        "asset": "USDC",
        "network": "eip155:84532",
        "scheme": "exact"
      }
    },
    {
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/verify/citations",
      "method": "POST",
      "description": "Use before giving a user an answer that cites web pages: send up to 10 quote and URL pairs, and get back for each one an exact, fuzzy or none match, score, offsets, context and the page's status, final URL and content_kind, under one signed receipt. Each page is fetched once. With match \"passages\", each paraphrased claim gets its 3 best-sharing passages, scored, as evidence to judge, not a verdict. A URL whose domain does not resolve is reported (http_error) and the batch is charged; a batch where no URL resolves gets 422 and is not charged. A cited PDF is read too, on the full service: each match or passage on it also gives pdf_page and pdf_page_end, its 1-based pages. A cited paper with a DOI also gets Crossref's title, authors, year and journal and a retracted flag (Retraction Watch data). For 1 to 9 pairs, one verify/quote call per pair costs less, without the Crossref data.",
      "price": {
        "amount": "0.10",
        "currency": "USD",
        "asset": "USDC",
        "network": "eip155:84532",
        "scheme": "exact"
      }
    },
    {
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/fetch",
      "method": "POST",
      "description": "Use when an agent needs a web page as clean text and must know what actually came back: send a URL, and get back a content_kind verdict (real, bot_wall, js_shell, paywall, http_error and others), status, final URL, title, hashes, prompt-injection flags, the clean text when return_text is set, and a signed receipt, so a bot wall, JavaScript-only shell, paywall or error page is not summarised as the real page. PDFs are read too, on the full service (an edge server answers 501 not_on_edge, uncharged): the text layer, pages separated by a form feed, and page.pdf with page_count, pages_read and truncated.",
      "price": {
        "amount": "0.002",
        "currency": "USD",
        "asset": "USDC",
        "network": "eip155:84532",
        "scheme": "exact"
      }
    },
    {
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/check/links",
      "method": "POST",
      "description": "Use when an agent is about to give a user links or citations: send up to 10 URLs, and get back for each one the status, redirect chain, final URL, content_kind, title and hash, so a dead, moved or blocked link is caught before it is shown. A URL whose domain does not resolve is reported as dead (http_error, signal outcome_dns_error) and the batch is charged; a batch where no URL resolves gets 422 and is not charged. A live PDF link is reported as content_kind pdf (not read, so no title or hash); a PDF or other file with an error status is http_error. A link redirected to another site that answers 4xx/5xx is off_site with off_site_error: true.",
      "price": {
        "amount": "0.005",
        "currency": "USD",
        "asset": "USDC",
        "network": "eip155:84532",
        "scheme": "exact"
      }
    },
    {
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/check/packages",
      "method": "POST",
      "description": "Use when an agent is about to install or recommend a package an LLM suggested: send up to 10 names, each with its registry (npm, pypi or crates), and get back whether the registry lists each name (exists true/false), latest version, description, licence, links, creation time and flags (deprecated, yanked, created_recently, name_differs), under one signed receipt, so a made-up package name is caught before install. It says whether the registry lists the name; it is not a security verdict. A batch where every lookup fails gets 502 and is not charged.",
      "price": {
        "amount": "0.005",
        "currency": "USD",
        "asset": "USDC",
        "network": "eip155:84532",
        "scheme": "exact"
      }
    },
    {
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/attest",
      "method": "POST",
      "description": "Use when an agent needs to show later that a file, answer or record existed unchanged at a point in time: send its sha256, and get back a signed, timestamped receipt over it; a later altered copy no longer matches. Optional note; with an idempotency_key (x402 payments only), a retry gets the same receipt and is not a new record.",
      "price": {
        "amount": "0.002",
        "currency": "USD",
        "asset": "USDC",
        "network": "eip155:84532",
        "scheme": "exact"
      }
    },
    {
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/verify/document",
      "method": "POST",
      "description": "Use before sending a finished answer or report that quotes web pages: send the document as written, and get back every quote with its link, found by fixed rules and checked on the live page: exact, fuzzy or none, score, offsets in your document and on the page, and each page's status, final URL and content_kind, under one signed receipt. Up to 10 quote and link pairs per call; a longer document is checked in parts, and the free preview (POST /v1/verify/document/preview) lists the pairs and the price first. With match \"passages\", each sentence that carries a link is a claim and gets its best-matching passages as evidence. For a part of 1 to 9 pairs, one verify/quote call per pair costs less; the free preview lists each pair and its part.",
      "price": {
        "amount": "0.10",
        "currency": "USD",
        "asset": "USDC",
        "network": "eip155:84532",
        "scheme": "exact"
      }
    },
    {
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/verify/quotes",
      "method": "POST",
      "description": "Use when an agent is about to quote one web page several times: send the URL and up to 20 quotes in your exact words, and get back for each one whether it, or a close fuzzy match, is on the live page (exact, fuzzy or none), with offsets and context, plus the page's verdict and hashes, under one signed receipt. The page is fetched once and the call has one price for 1 to 20 quotes, so from 9 quotes up it costs less than one verify/quote call per quote. With match \"passages\", each paraphrased claim gets the 3 passages sharing most of its words, scored, as evidence to judge, not a verdict. Full service only (an edge server answers 501 not_on_edge, uncharged). A PDF is read too: each match or passage on it also gives pdf_page and pdf_page_end, its 1-based pages.",
      "price": {
        "amount": "0.08",
        "currency": "USD",
        "asset": "USDC",
        "network": "eip155:84532",
        "scheme": "exact"
      }
    }
  ],
  "attestation": {
    "type": "none"
  },
  "docs": "https://vehcdj664efetfrsolne5umanq.srv.us/docs",
  "openapi": "https://vehcdj664efetfrsolne5umanq.srv.us/openapi.json",
  "updated": "2026-10-10T00:00:00Z"
}
