# AttestPage > Signed evidence about web pages for AI agents, paid per call with x402. Check whether a quote appears on a page or check all the citations in an answer at once, fetch a page with a verdict on what came back, check links, check that package names exist on npm, PyPI or crates.io, or timestamp a hash. Every answer carries an Ed25519-signed receipt you can check offline. A receipt records what our fetcher saw at a given time; it does not show that a statement is correct. Prices are per call in US dollars, paid in USDC with x402 v2 on Base Sepolia (a test network). Bad requests are refused before payment and never charged. Every page below is also served as HTML at the same URL without `.md`. A free trial is on: send the header `quoteproof-trial: 1` with a paid route and no payment, and the call runs without charge, 5 calls per IP address per UTC day and 200 a day across all callers. Trial receipts have tier "trial" and payment null. Over the limit you get 429 trial_exhausted with Retry-After. A trial call to verify/citations, verify/quotes or check/links covers at most 3 citations, quotes or URLs; a larger batch is not run as a trial but answered with the normal 402 offer, `details.reason` trial_too_large. ## Paid endpoints - [POST /v1/verify/quote](https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-quote.md): US$0.01. Use when you are about to quote or cite a page. Checks your exact words against the page and returns offsets and page hashes, signed, in one call. Does this quote appear on this page? exact, fuzzy or none, with offsets, context, page verdict and receipt; or, for a paraphrased claim, the 3 passages that share most of its words (evidence to judge, not a verdict). For 9 or more quotes on one page, verify/quotes costs less. - [POST /v1/verify/quotes](https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-quotes.md): US$0.08 per batch of up to 20 quotes on one page. Use when you are about to quote one page several times. The verify/quote verdict for each quote, the page fetched once, under one receipt; one price for 1 to 20 quotes, so from 9 quotes up it costs less than one verify/quote call each. A call where every quote fails answers 422, not charged, under the same per-IP limit as verify/citations. - [POST /v1/verify/citations](https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-citations.md): US$0.10 per batch of up to 10 quote and URL pairs. Use before giving an answer that cites web pages. The verify/quote verdict for each citation and the verdict on each page, each page fetched once, under one receipt. For 1 to 9 pairs, one verify/quote call per pair costs less. A batch where every citation fails answers 422, not charged; each IP address gets 6 of those a minute, then 429 `rate_limited` (`details.reason` `uncharged_failures`) with `Retry-After`. - [POST /v1/verify/document](https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-document.md): US$0.10 per part of up to 10 quote and link pairs. Use before sending a finished answer or report that quotes web pages. Send it as written; its quotes and their links are found and checked on the live pages, with offsets in your document and on each page. For a part of 1 to 9 pairs, one verify/quote call per pair costs less. Free preview at POST /v1/verify/document/preview (pairs, doc_spans/doc_spans_truncated for repeats, skipped with skipped_truncated and skipped_counts by reason, parts, price). - [POST /v1/fetch](https://vehcdj664efetfrsolne5umanq.srv.us/docs/fetch.md): US$0.002. Use when you need a page as clean text and must know what came back. Fetch a URL and get content_kind (real, bot_wall, js_shell, paywall, http_error and others), status, final URL, title, hashes, injection flags and optional clean text. - [POST /v1/check/links](https://vehcdj664efetfrsolne5umanq.srv.us/docs/check-links.md): US$0.005 per batch of up to 10 URLs. Use before giving a user links or citations. Status, redirects, final URL, content_kind and hash per URL. - [POST /v1/check/packages](https://vehcdj664efetfrsolne5umanq.srv.us/docs/check-packages.md): US$0.005 per batch of up to 10 package names on npm, PyPI or crates.io. Use before installing or recommending a package an LLM suggested. Whether the registry lists each name, latest version, description, licence, links and flags. Says whether the registry lists the name, nothing more: not a security verdict. - [POST /v1/attest](https://vehcdj664efetfrsolne5umanq.srv.us/docs/attest.md): US$0.002. Use when you need to show later that a file, answer or record existed unchanged. Signed, timestamped receipt over a SHA-256 you supply. ## Free - [POST /v1/receipt/verify](https://vehcdj664efetfrsolne5umanq.srv.us/docs/receipt-verify.md): check a receipt against our published keys. - [GET /v1/sample/{quote,citations,document,fetch,links,packages,attest,quotes}](https://vehcdj664efetfrsolne5umanq.srv.us/docs/samples.md): each paid route run on fixed demo data, signed with the sample key. Try these first; `/v1/sample/quote?match=passages` shows match "passages" on a paraphrased claim. In openapi.json each paid operation names its sample in `x-402.sample`. - [Receipt demo](https://vehcdj664efetfrsolne5umanq.srv.us/docs/receipt-demo.md): a signed receipt end to end with free calls: sample, verify, a changed receipt failing, offline check, then the free trial on a real route. - [Demo: one paid call and its signed receipt](https://vehcdj664efetfrsolne5umanq.srv.us/demo.md): one `POST /v1/verify/quote` call recorded in full: the request, the 402 offer, the paid retry with x402, the answer and its receipt, and how to check the receipt signature with Node.js. - [Verify a receipt offline](https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-offline.md): a single-file Node.js checker and the JWKS. - [MCP server](https://vehcdj664efetfrsolne5umanq.srv.us/docs/mcp.md): `quoteproof-mcp`, a stdio MCP server with one tool per route. It pays with x402 from your own key or uses the free trial. Install it from [the download list](https://vehcdj664efetfrsolne5umanq.srv.us/dl/index.json). - Remote MCP endpoint: `POST https://vehcdj664efetfrsolne5umanq.srv.us/mcp` (streamable HTTP, JSON answers, no session). The same tools; pay per call by putting an x402 payment payload in `_meta["x402/payment"]`, otherwise paid tools use the free trial and then return the payment requirements. Server card: [/mcp/server-card](https://vehcdj664efetfrsolne5umanq.srv.us/mcp/server-card). See [MCP server](https://vehcdj664efetfrsolne5umanq.srv.us/docs/mcp.md). - [Agent Skill](https://vehcdj664efetfrsolne5umanq.srv.us/docs/skill.md): `attestpage-check-sources`, a SKILL.md that tells an agent when to check a source and how to read the verdict. Index with digests: [/.well-known/agent-skills/index.json](https://vehcdj664efetfrsolne5umanq.srv.us/.well-known/agent-skills/index.json). ## How to use it - [Docs index](https://vehcdj664efetfrsolne5umanq.srv.us/docs/index.md): all pages. - [Payments](https://vehcdj664efetfrsolne5umanq.srv.us/docs/payments.md): the 402 flow, headers, network and when you are charged. - [Example recipes](https://vehcdj664efetfrsolne5umanq.srv.us/docs/recipes.md): LangChain, LlamaIndex, OpenAI Agents SDK and Claude Agent SDK agents that check a source before citing it, on the free trial or paying with x402. - [More examples](https://vehcdj664efetfrsolne5umanq.srv.us/docs/examples/index.md): runnable recipes with a route and price table: [LangChain](https://vehcdj664efetfrsolne5umanq.srv.us/docs/examples/langchain.md), [OpenAI Agents SDK](https://vehcdj664efetfrsolne5umanq.srv.us/docs/examples/openai-agents-sdk.md), [Claude Agent SDK with the stdio MCP server](https://vehcdj664efetfrsolne5umanq.srv.us/docs/examples/claude-agent-sdk.md) and [one x402 payment step by step with plain `fetch`](https://vehcdj664efetfrsolne5umanq.srv.us/docs/examples/fetch-x402.md). Their clients ask for the price once the day's trial is used up. - [How it works](https://vehcdj664efetfrsolne5umanq.srv.us/docs/how-it-works.md): what the fetcher does, content_kind values and receipt fields (including the site's IP, TLS certificate and key headers). - [Limits](https://vehcdj664efetfrsolne5umanq.srv.us/docs/limits.md): size caps, timeouts, rate limits and what the fetcher does not do. - [Errors](https://vehcdj664efetfrsolne5umanq.srv.us/docs/errors.md): every error code and whether it was charged. - [Status](https://vehcdj664efetfrsolne5umanq.srv.us/status.md): current state of each route and uptime for 24 hours, 7 days and 30 days. JSON: [/status.json](https://vehcdj664efetfrsolne5umanq.srv.us/status.json). ## Answers - [How to verify a quote an LLM cites](https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-a-quote-an-llm-cites.md): fetch the cited page and match the quote, allowing for small differences, with a page verdict and a signed receipt. - [How to check a quote an LLM cites, step by step with curl](https://vehcdj664efetfrsolne5umanq.srv.us/guides/verify-llm-quote.md): the free sample, the 402 offer, one check on the trial or with x402, how to read the answer, how to check the receipt and the same call as an MCP tool. - [How to get a signed receipt of a web page](https://vehcdj664efetfrsolne5umanq.srv.us/docs/signed-receipt-of-a-web-page.md): what a receipt records about one fetch and how to check it offline. - [How to get a signed receipt of a web page, step by step with curl](https://vehcdj664efetfrsolne5umanq.srv.us/guides/signed-page-receipt.md): the free sample, the 402 offer, one receipt on the trial or with x402, how to check it and match the page text to its hash, and the same call as an MCP tool. - [How to check links before citing them](https://vehcdj664efetfrsolne5umanq.srv.us/docs/check-links-before-citing.md): dead, moved, unreadable and invented links, checked 10 at a time. - [How to check links before citing them, step by step with curl](https://vehcdj664efetfrsolne5umanq.srv.us/guides/check-links-before-citing.md): the free sample, the 402 offer, one batch on the trial or with x402, how to read each result, how to check the cited words, how to check the receipt and the same call as an MCP tool. - [How to check a package name an LLM suggested before installing it](https://vehcdj664efetfrsolne5umanq.srv.us/docs/check-package-names-before-install.md): invented package names on npm, PyPI and crates.io, caught before install, 10 at a time. - [How to tell a bot wall from the real page](https://vehcdj664efetfrsolne5umanq.srv.us/docs/tell-a-bot-wall-from-the-real-page.md): bot challenges, JavaScript shells, paywalls and redirects that return 200 but are not the page. ## Machine-readable - [OpenAPI 3.1](https://vehcdj664efetfrsolne5umanq.srv.us/openapi.json) - [Prices](https://vehcdj664efetfrsolne5umanq.srv.us/pricing.json) - [x402 discovery](https://vehcdj664efetfrsolne5umanq.srv.us/.well-known/x402) - [API catalog (RFC 9727)](https://vehcdj664efetfrsolne5umanq.srv.us/.well-known/api-catalog) - [Agent Skills index](https://vehcdj664efetfrsolne5umanq.srv.us/.well-known/agent-skills/index.json) - [MCP server card (SEP-2127)](https://vehcdj664efetfrsolne5umanq.srv.us/mcp/server-card) - [AI Catalog](https://vehcdj664efetfrsolne5umanq.srv.us/.well-known/ai-catalog.json) - [Receipt signing keys (JWKS)](https://vehcdj664efetfrsolne5umanq.srv.us/.well-known/jwks.json) - [All docs in one file](https://vehcdj664efetfrsolne5umanq.srv.us/llms-full.txt) ## About - [Home](https://vehcdj664efetfrsolne5umanq.srv.us/index.md) - [Our fetcher and how to opt out](https://vehcdj664efetfrsolne5umanq.srv.us/bot.md) - [Terms](https://vehcdj664efetfrsolne5umanq.srv.us/terms.md) - [Privacy](https://vehcdj664efetfrsolne5umanq.srv.us/privacy.md)