# 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). A request with a body that fails validation is refused before payment and never charged; a POST with an empty body gets the 402 offer, so the price can be read. Every page below is also served as HTML at the same URL without `.md`. To pay after a 402, read the offer from the `PAYMENT-REQUIRED` header, sign it with your wallet, and send the same request again with the signed payment in the `PAYMENT-SIGNATURE` header; the paid answer carries `PAYMENT-RESPONSE`. Which route: you have a URL and a quote, use verify/quote; you already hold the text, use verify/text-quote; several quotes from one page, use verify/quotes. The live offer is `eip155:84532`, Base Sepolia (a test network): payments use free test USDC from a faucet, and no real money moves. Install the client first: `npm install @x402/fetch @x402/evm viem`. Get test USDC first (test mode only: Base Sepolia, `eip155:84532`, free; skip it on the live offer, which is real money): 1. Make a wallet key: 0x followed by 64 hex characters (a 32-byte private key). In Node: `import { generatePrivateKey } from 'viem/accounts'; console.log(generatePrivateKey())`. Put it in `ATTESTPAGE_X402_KEY`. 2. Get its address with `privateKeyToAccount(key).address` (the example below prints it). 3. Ask the Base Sepolia faucet: POST `{"address": ""}` as JSON to `https://api.run402.com/faucet/v1`; one drip per wallet and IP every 24 hours, no key or account needed. If it answers 429, wait for the limit to reset (about 24 hours) or fund the wallet address with Base Sepolia test USDC from another source (for example the Circle faucet at faucet.circle.com, or ask your operator). One drip is 0.25 USDC, enough for 25 calls at 0.01 USDC (US$0.01) each. 4. Then pay with the example below. No ETH is needed; the facilitator pays the gas. Example with an x402 v2 client (installed above; save as an `.mjs` file for top-level await), paying one check on Base Sepolia (a test network): ```js import { wrapFetchWithPayment, x402Client } from '@x402/fetch'; import { registerExactEvmScheme } from '@x402/evm/exact/client'; import { privateKeyToAccount } from 'viem/accounts'; // ATTESTPAGE_X402_KEY: 0x + 64 hex characters, funded with USDC (steps 1-3) before this runs const account = privateKeyToAccount(process.env.ATTESTPAGE_X402_KEY); console.log('wallet address', account.address); const client = new x402Client(); registerExactEvmScheme(client, { signer: account }); const payingFetch = wrapFetchWithPayment(fetch, client); const res = await payingFetch('https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/v1/verify/quote', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ url: 'https://www.iana.org/help/example-domains', quote: 'These domains may be used as illustrative examples in documents' }), }); console.log(res.status, res.headers.get('PAYMENT-RESPONSE')); const body = await res.json(); if (res.status === 200) { console.log(body.result ?? body); } else { // not a payment problem when the status is not 402: 400 is a bad request (never charged), 429 slow down, 5xx try again later console.error('not paid or refused', res.status, body); } ``` There is no free trial at the moment; use the free samples instead. ## Paid endpoints - [POST /v1/verify/quote](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-quote.md): Body fields: `url` (required), `quote` (required), `match`, `case_sensitive`, `threshold`. US$0.01. Use when you are about to quote or cite a web page as the source of a claim: send the URL and the quote word for word, and get back exact, fuzzy or none, offsets, context, page verdict, an additive `evidence` field (the matched passage and a one-line reason) and a signed receipt, so a misquote is caught before a user sees it. A fact check of the claim against its source. For a paraphrased claim, the 3 passages that share most of its words are evidence to judge, not a verdict. For 3 or more quotes on one page, verify/quotes costs less. PDFs are read too, on the full service (edge: 501 not_on_edge, uncharged), with pdf_page and pdf_page_end. - [POST /v1/verify/quotes](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-quotes.md): Body fields: `url` (required), `quotes` (required; max 20 items), `match`, `case_sensitive`, `threshold`. US$0.02 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 3 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/text-quote](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-text-quote.md): Body fields: `text` (required), `quote` (required), `start`, `end`, `match`, `case_sensitive`, `threshold`. US$0.005. Use when you already hold the source text (a file you read, a tool result) and are about to quote it. Send the text and the quote, get exact, fuzzy or none and a signed receipt; nothing is fetched. Declared offsets (start and end) check one slice of the text; declared offsets are raw, result offsets are into the normalised text. The receipt attests the hash and the match, not where the text came from. - [POST /v1/verify/text-quote/preview](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-text-quote.md): free, 30 a day per IP address. Send the same body as POST /v1/verify/text-quote and get back exact, fuzzy or none, the score and the number of matches. Use when you want the label before paying. Not signed: no offsets, no receipt. - [POST /v1/verify/citations](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-citations.md): Body fields: `citations` (required; max 10 items), `match`, `case_sensitive`, `threshold`. US$0.10 per batch of up to 10 quote and URL pairs. Use before giving an answer that cites web pages. A fact check of each cited claim against its source: 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://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-document.md): Body fields: `document` (required), `format`, `match`, `case_sensitive`, `threshold`, `min_words`, `part_size`, `part`. 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). The check response lists skipped the same way; too_short means a quote with fewer words than min_words, which is skipped and not checked. - [POST /v1/fetch](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/fetch.md): Body fields: `url`, `urls` (max 10 items), `return_text`. US$0.002 per URL. Use when you need a web page as clean text, or to notarize one. Send a URL and get `page.content_kind` (real, bot_wall, js_shell, paywall, http_error and others), `page.http_status`, `page.final_url`, `page.title`, hashes, optional clean text and `injection_flags` (prompt-injection patterns found in the text), with a signed receipt as provenance: evidence of what the page said at that time. `page.content_kind` is our verdict on what the server sent: real (readable text), bot_wall (a named challenge page), js_shell (no text until scripts run), paywall, or an error kind. A soft block served with status 200 is caught only by known wording, so it can read as real. content_sha256 covers the full text: keep the receipt, and a changed hash on a later call means the page changed. The receipt is signed; check it free at /v1/receipt/verify. A URL whose host name does not resolve gets 422 `host_not_found` before payment, not charged. Example response, one line: `{"page":{"final_url":"https://www.iana.org/help/example-domains","http_status":200,"content_kind":"real","title":"Example Domains","content_sha256":"…"},"receipt":"eyJ…"}`. Send `urls` for up to 10 pages in one call, priced per URL, each with its own receipt. PDFs too, on the full service (edge: 501, uncharged): page.pdf with page_count, pages_read and truncated. - [POST /v1/recheck](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/recheck.md): Body fields: `receipt`, `url`, `content_sha256`, `return_text`, `history` (max 10 items), `quote`, `quotes` (max 20 items). US$0.003. Use when you rely on a web page you read earlier and need change detection: send an earlier receipt or URL with its content_sha256, and get back unchanged, changed, gone or unreadable with the fields that differ, and a signed receipt naming both hashes. With `quote` (the quote of a verify/quote receipt, sent word for word), `quote.verdict` says still_exact, now_exact, now_fuzzy, now_missing or unchecked. Nothing is stored and nothing calls you back: re-check as often as you like (daily for 30 days is about US$0.09). - [POST /v1/check/links](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/check-links.md): Body fields: `urls` (required; max 10 items). US$0.005 per batch of up to 10 URLs. Use when you are about to give a user links or citations: send up to 10 URLs, and get back the status, redirect chain, final URL, title and hash of each, so a dead, moved or blocked link is caught first. Each URL gets a link verdict: ok, broken, moved or unknown. An optional expected_text per URL is matched on the page and reported; it does not change the verdict. - [POST /v1/check/packages](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/check-packages.md): Body fields: `packages` (required; max 10 items). US$0.005 per batch of up to 10 package names on npm, PyPI or crates.io. Use when you are about to install or recommend a package an LLM suggested: send each name with its ecosystem (npm, pypi or crates), and get back whether each is listed, its latest version, licence and known OSV.dev advisories (vulnerabilities, malware) under one signed receipt, so a made-up or known-bad package is caught before install. No advisory listed does not mean no flaws: not a security verdict. - [POST /v1/attest](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/attest.md): Body fields: `sha256` (required), `note`, `idempotency_key`. 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: provenance, evidence that the content existed at that time. ## Free - [POST /v1/receipt/verify](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/receipt-verify.md): check a receipt against our published keys, free. Receipts are signed by iss https://still-rapids-9yt7.here.now (JWKS at /.well-known/jwks.json), not the origin; this is the free check. A paid answer's body has `receipt_id` and the receipt names the settled `payment.tx`. - [GET /v1/sample/{quote,citations,document,fetch,links,packages,attest,quotes,recheck,textquote}](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/samples.md): each paid route run on fixed demo data, signed with the example 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://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/receipt-demo.md): a signed receipt end to end with free calls: sample, verify, a changed receipt failing, offline check. - [Demo: one paid call and its signed receipt](https://s2h6qt73jtzlgbgnnfacln2poq.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://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-offline.md): a single-file Node.js checker and the JWKS. - [MCP server](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/mcp.md): `quoteproof-mcp`, a stdio MCP server with one tool per route. It pays with x402 from your own key. Install it from [the download list](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/dl/index.json). - Remote MCP endpoint: `POST https://s2h6qt73jtzlgbgnnfacln2poq.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 return the payment requirements. Server card: [/mcp/server-card](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/mcp/server-card). See [MCP server](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/mcp.md). - [Agent Skill](https://s2h6qt73jtzlgbgnnfacln2poq.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://s2h6qt73jtzlgbgnnfacln2poq.srv.us/.well-known/agent-skills/index.json). - [POST /v1/verify/document/preview](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-document.md): free. Send the same body as POST /v1/verify/document and get back the quote and link pairs it would check, what was skipped and why, the number of parts and the exact price. Nothing is fetched, signed or charged; call it before paying. ## How to use it - [Docs index](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/index.md): all pages. - [Paid routes at a glance](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/demo.md#paid-routes-at-a-glance): a curl example for every paid route. - [Payments](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/payments.md): the 402 flow, headers, network and when you are charged. A charge without a delivered result (result_lost) is refunded by hand in USDC, no time limit. - [Quickstart](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/quickstart.md): from discovery to your first paid call, step by step, with prices from pricing.json. - [Worked examples](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/worked-examples.md): one paid call per route, from the request and the 402 offer to the signed receipt, with prices from pricing.json. - [Example recipes](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/recipes.md): LangChain, LlamaIndex, OpenAI Agents SDK and Claude Agent SDK agents that check a source before citing it, paying with x402. - [More examples](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/examples/index.md): runnable recipes with a route and price table: [LangChain](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/examples/langchain.md), [OpenAI Agents SDK](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/examples/openai-agents-sdk.md), [LlamaIndex.TS](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/examples/llamaindex.md), [Vercel AI SDK](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/examples/vercel-ai-sdk.md), [Claude Agent SDK with the stdio MCP server](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/examples/claude-agent-sdk.md), [one x402 payment step by step with plain `fetch`](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/examples/fetch-x402.md) and [one x402 payment step by step in Python](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/examples/python-x402.md). Their clients ask for the price once the day's trial is used up. - Checking several quotes on one page with `POST /v1/verify/quotes` (US$0.02 per call): [OpenAI Agents SDK](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/examples/openai-agents.md) and [Claude Agent SDK](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/examples/claude-agent-sdk.md), through the MCP server or over HTTP with x402, and [LangChain](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/examples/langchain.md) and [LlamaIndex](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/examples/llamaindex.md) in Python over HTTP with x402, [Vercel AI SDK](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/examples/vercel-ai-sdk.md) in JavaScript over HTTP with x402, [CrewAI](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/examples/crewai.md) and [Pydantic AI](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/examples/pydantic-ai.md) in Python over HTTP with x402, and [Mastra](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/examples/mastra.md) in JavaScript over HTTP with x402. - Quickstarts for any client: [curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/examples/curl.md) (one x402 payment) and [an MCP client](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/examples/mcp.md) (the `quoteproof-mcp` server, one tool per route). - [How it works](https://s2h6qt73jtzlgbgnnfacln2poq.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://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/limits.md): size caps, timeouts, rate limits and what the fetcher does not do. - [Errors](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/errors.md): every error code and whether it was charged. - [Status](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/status.md): current state of each route and uptime for 24 hours, 7 days and 30 days. JSON: [/status.json](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/status.json). ## Answers - [Guides](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides.md): every step-by-step guide in one list, with what each one checks, its price and how to use it. - [How to verify a quote an LLM cites](https://s2h6qt73jtzlgbgnnfacln2poq.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://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/verify-llm-quote.md): the free sample, the 402 offer, one check with x402, how to read the answer, how to check the receipt and the same call as an MCP tool. - [How to check every quote in a draft before publishing, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/verify-document-before-publishing.md): the free preview, the 402 offer, one part paid with x402, how to read the summary and each result, and how to check the receipt. - [How to check the quotes in a draft one source at a time before publishing, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/check-quotes-before-publishing.md): the recipe for grouping quotes by URL, the price from the 402 offer, one quote or one page of up to 20 quotes with x402, how to read the verdict and page kind, and how to keep the receipt. - [How to check every quote in a Markdown document from a CI job before merge, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/check-documents-in-ci.md): the free preview, the 402 offer, one part per paid call, the rule that fails a build on a quote missing from a readable page, a shell script for the CI step, and the same call as an MCP tool. - [How to get a signed receipt of a web page](https://s2h6qt73jtzlgbgnnfacln2poq.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://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/signed-page-receipt.md): the free sample, the 402 offer, one receipt 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://s2h6qt73jtzlgbgnnfacln2poq.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://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/check-links-before-citing.md): the free sample, the 402 offer, one batch 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 packages before installing them, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/check-packages-before-installing.md): the free sample, the 402 offer, one batch of up to 10 names, how to read exists, the latest version and advisories, how to check the receipt and the same call as an MCP tool. - [How to check a package's licence before installing it, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/check-package-licences-before-installing.md): the free sample, the 402 offer, what the license field holds for npm, PyPI and crates.io, how to sort names by an allow list, how to treat a null licence, and the same call as an MCP tool. - [How to check whether a web page has changed since you read it, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/recheck-page-for-changes.md): the free sample, the 402 offer, one recheck from a receipt or a URL and hash, how to read unchanged, changed, gone and unreadable, how to chain receipts and the same call as an MCP tool. - [How to check a signed receipt before you rely on it, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/check-a-receipt-before-relying-on-it.md): free; get a sample receipt, check it, see what an altered one returns, read the payload and the same call as an MCP tool. - [How to check the citations at the end of an answer before you send it, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/verify-citations-before-answering.md): the free sample, the 402 offer, one batch of up to 10 quote and URL pairs, how to read exact, fuzzy and none beside content_kind, and the same call over MCP. - [How to check many quotes against one page in a single call, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/check-many-quotes-on-one-page.md): the free sample, the 402 offer, up to 20 quotes on one URL at one price, how to read exact, fuzzy and none, and the same call over MCP. - [How to check a quote against text you already hold, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/use-attestpage-text-quote.md): the free sample, the 402 offer, one check of a quote against text you send with no fetch, how to read exact, fuzzy and none, declared offsets, how to check the receipt and the same call as an MCP tool. - [How to turn a web page into clean text for an agent, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/read-web-page-as-clean-text.md): the free sample, the 402 offer, one page as clean text with x402, how to read content_kind and injection_flags, how to check the receipt and the same call as an MCP tool. - [How to fetch a web page as clean text from code, with an x402 client](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/fetch-a-page-with-an-x402-client.md): the free sample, the 402 offer, a Node script that pays one page with x402 and checks the offer first, how to read content_kind and injection_flags, the receipt and the same call as an MCP tool. - [How to get a signed timestamp that shows a file did not change, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/attest-a-file-hash.md): the free sample, the 402 offer, one attestation of a SHA-256, how to read the answer, a retry with idempotency_key, checking the file later and the same call as an MCP tool. - [How to use AttestPage tools from an MCP client, step by step with curl](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/guides/use-attestpage-tools-in-mcp.md): the tool names and prices, the remote endpoint, listing the tools, the 402 offer for a tool call and where the x402 payment goes. - [How to check a package name an LLM suggested before installing it](https://s2h6qt73jtzlgbgnnfacln2poq.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://s2h6qt73jtzlgbgnnfacln2poq.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://s2h6qt73jtzlgbgnnfacln2poq.srv.us/openapi.json) - [Prices](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/pricing.json) - [x402 discovery](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/.well-known/x402) - [Well-known index](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/.well-known/) - [API catalog (RFC 9727)](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/.well-known/api-catalog) - [Agent Skills index](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/.well-known/agent-skills/index.json) - [MCP server card (SEP-2127)](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/mcp/server-card) - [AI Catalog](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/.well-known/ai-catalog.json) - [Receipt signing keys (JWKS)](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/.well-known/jwks.json) - [All docs in one file](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/llms-full.txt) ## About - [Home](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/index.md) - [Our fetcher and how to opt out](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/bot.md) - [Terms](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/terms.md) - [Privacy](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/privacy.md)