Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

AttestPage (Quoteproof)

REMOTE · VEHCDJ664EFETFRSOLNE5UMANQ.SRV.US

Use before citing a page, sharing links or installing a suggested package. Signed receipts.

0 this week 23 Trust /100

Last scanned (21 hours ago)

Scores higher than 8% of remote servers

Reachable. Last reached 4 Nov 2026.

Category Search and Retrieval

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security57
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Tool Safety0
  • Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Capabilities0
  • Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified

Unverified: 5 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 27 Oct 26 −53
    • Endpoint reachability: reachable → not serving MCP ▼ security
    • Stability: 0.47 → unverified ▼ security
    • Authorization: partial → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Transport: pass → fail ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • First check of Schema quality: unverified functional
  • 26 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

  • 24 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

  • 22 Oct 26 +1
    • Tool “attestpage_verify_receipt” rewrote its description, which is the text the model reads security
    • New tool “attestpage_scan_reply” functional
  • 20 Oct 26 0
    • Tool “attestpage_access_check” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_citations” rewrote its description, which is the text the model reads security
    • “attestpage_preview_text_quote” reworded the description of “start” cosmetic
    • “attestpage_verify_quote” reworded the description of “url” cosmetic
    • “attestpage_verify_text_quote” reworded the description of “start” cosmetic
    • Tool “attestpage_access_check” changed its title: Judge one page URL against its site's robots.txt for each AI crawler → Judge one page URL against its site's robots.txt for each AI crawler: allowed, the deciding line, reason and crawl_delay; plus sitemaps, content_signal and llms_txt cosmetic
  • 19 Oct 26 +1
    • Tool “attestpage_access_check” rewrote its description, which is the text the model reads security
    • Tool “attestpage_preview_text_quote” rewrote its description, which is the text the model reads security
    • Tool “attestpage_recheck” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_document” rewrote its description, which is the text the model reads security
    • “attestpage_access_check” reworded the description of “url” cosmetic
    • “attestpage_check_packages” reworded the description of “packages” cosmetic
    • “attestpage_fetch” reworded the description of “return_text” cosmetic
    • “attestpage_preview_document” reworded the description of “document” cosmetic
    • “attestpage_preview_text_quote” reworded the description of “text” cosmetic
    • “attestpage_verify_document” reworded the description of “document” cosmetic
    • “attestpage_verify_text_quote” reworded the description of “text” cosmetic
    • Tool “attestpage_check_packages” changed its title: Check whether up to 10 package names exist on npm, PyPI or crates.io, with known OSV.dev advisories → Check whether up to 10 package names exist on npm, PyPI or crates, with known OSV.dev advisories cosmetic
  • 18 Oct 26 −1
    • Tool “attestpage_attest” rewrote its description, which is the text the model reads security
    • Tool “attestpage_check_links” rewrote its description, which is the text the model reads security
    • Tool “attestpage_check_packages” rewrote its description, which is the text the model reads security
    • Tool “attestpage_fetch” rewrote its description, which is the text the model reads security
    • Tool “attestpage_recheck” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_citations” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_document” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_quote” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_quotes” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_text_quote” rewrote its description, which is the text the model reads security
    • Schema quality: 374 → 303 ▲ functional
    • Destructive annotations: pass → 0 functional
    • New tool “attestpage_access_check” functional
    • New tool “attestpage_preview_text_quote” functional
    • “attestpage_preview_document” reworded the description of “part_size” cosmetic
    • “attestpage_verify_document” reworded the description of “part_size” cosmetic
  • 17 Oct 26 0
    • Tool “attestpage_attest” rewrote its description, which is the text the model reads security
    • Tool “attestpage_check_links” rewrote its description, which is the text the model reads security
    • Tool “attestpage_check_packages” rewrote its description, which is the text the model reads security
    • Tool “attestpage_fetch” rewrote its description, which is the text the model reads security
    • Tool “attestpage_recheck” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_citations” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_document” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_quote” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_quotes” rewrote its description, which is the text the model reads security
    • Tool “attestpage_verify_text_quote” rewrote its description, which is the text the model reads security
    • “attestpage_verify_text_quote” reworded the description of “start” cosmetic
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Probed https://vehcdj664efetfrsolne5umanq.srv.us/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=srv.us CN=YR1,O=Let's Encrypt,C=US 6 Oct 2026 4 Jan 2027 RSA 2048 SHA256-RSA 69555d97984e19493cfbf22ef13ff51324a
SANs: *.gh.srv.us, *.gl.srv.us, *.srv.us, srv.us
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of vehcdj664efetfrsolne5umanq.srv.us. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
us. present 59017 8 Verified
srv.us. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Inconclusive

We could not reach the endpoint well enough to judge its authorisation posture.

Result Inconclusive
HTTP status 503

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://vehcdj664efetfrsolne5umanq.srv.us/mcp HTTP error 503
http (plaintext) http://vehcdj664efetfrsolne5umanq.srv.us/mcp HTTPS enforced 301 https://vehcdj664efetfrsolne5umanq.srv.us/mcp
MCP tools · 15 exposed · ~4,633 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
attestpage_access_check ~223

Judges one page URL against its site's robots.txt for GPTBot, ClaudeBot, PerplexityBot, Google-Extended and CCBot: allowed or not, with the deciding line, the per-crawler reason and Crawl-delay; plus the site's Sitemap URLs, content_signal and llms_txt (whether /llms.txt is served). US$0.002 per call; POST url. Costs US$0.002 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/llms.txt

NameTypeReqDescription
urlstringyesThe http(s) page URL to judge (max 2,048 characters). Only its site's /robots.txt and /llms.txt are read; the page is not fetched.
NameTypeReqDescription
content_signalobject|nullyesThe Content-Signal line of the robots.txt (contentsignals.org): { search, ai_input, ai_train }, each yes, no or null when the file does not name that signal. Read file-wide, first value per signal wi…
crawlersarrayyesOne verdict per crawler: crawler, allowed, user_agent (the lowercase User-agent token used, * when only the wildcard group applies, null when no group applies), deciding_line ({ line, text } of the w…
llms_txtobjectyesThe site's /llms.txt: url, http_status (null when it could not be read) and served (true for a 2xx). Reported only: a missing or unreadable /llms.txt never refuses the call or changes a crawler verdi…
networkstring|null–The payment network (CAIP-2 id); null on trial calls.
railstring|null–The payment rail (x402); null on trial calls.
robotsobjectyesThe robots.txt that was read: url, http_status, served (true for a 2xx) and truncated (true when the file was longer than the 500 KB this check parses, so only its start was judged). A robots.txt tha…
sitemapsarrayyesThe absolute http(s) URLs of the Sitemap lines in the robots.txt, in file order, without repeats (at most 100). Empty when the file is not served (2xx) or declares none.
tierstring–paid or trial.
urlstringyes–
{"url":"https://www.iana.org/help/example-domains"}
attestpage_attest ~236

Signs a timestamped receipt for a file's sha256, proving it existed unchanged then. US$0.002 per call; POST the hash. Costs US$0.002 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/attest

NameTypeReqDescription
idempotency_keystring–Optional, x402 payments only (keys are scoped to the paying address; trial and L402 calls get 400). Retries with the same key and sha256 get the same attestation (the receipt names that call own paym…
notestring–Optional note; only its SHA-256 goes in the receipt.
sha256stringyesSHA-256 (hex) of the thing being attested.
NameTypeReqDescription
attestationobjectyes–
receiptstringyes–
tierstring––
{"note":"example note: replace me","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}
attestpage_check_links ~182

Checks up to 10 URLs: ok, broken, moved or unknown for each, with final URL and title. US$0.005 per call; POST URLs. Costs US$0.005 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/check-links

NameTypeReqDescription
urlsarrayyes1 to 10 items, each an http(s) URL string or { "url", "expected_text" }. Dead domains are reported as results; if none resolves, 422 and no charge.
NameTypeReqDescription
receiptstringyes–
resultsarrayyesOne entry per URL, each with a link verdict (ok, broken, moved or unknown; per URL, signed into the receipt), server_ip, tls and headers (network evidence also signed into the receipt; null on an edg…
tierstring––
{"urls":["https://www.iana.org/help/example-domains","https://www.iana.org/domains/reserved"]}
attestpage_check_packages ~174

Checks up to 10 npm, PyPI or crates names: listed, version, licence, OSV.dev advisories. US$0.005 per call; POST names. Costs US$0.005 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/check-packages

NameTypeReqDescription
packagesarrayyes1 to 10 packages to look up. Each is { ecosystem, name, version? }; ecosystem is npm, pypi or crates.
NameTypeReqDescription
notestringyes–
receiptstringyes–
resultsarrayyes–
tierstring––
{"packages":[{"ecosystem":"npm","name":"left-pad"},{"ecosystem":"pypi","name":"requests"},{"ecosystem":"crates","name":"serde"}]}
attestpage_fetch ~243

Returns a web page as clean text, with title, hashes and a signed receipt. US$0.002 per URL; POST up to 10 URLs. Costs US$0.002 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/fetch

NameTypeReqDescription
return_textboolean–Return up to 20,000 characters of clean text (per page). Default true; send false to leave the text out.
urlstring–http(s) URL to fetch (max 2,048 characters). Send url or urls, not both.
urlsarray–Instead of url: 1 to 10 distinct http(s) URLs in one call, priced per URL (the route price × the count). The answer is results[], one per URL, each with its own receipt.
NameTypeReqDescription
advicestring––
injection_flagsarray––
injection_severityarray–One { flag, severity } per injection flag; severity is high, medium or low.
injection_verdictstring–From injection_flags: block if any high-severity flag, caution if any other flag, pass if none of our patterns matched. Flag list: /docs/detection.
pageobject–Page verdict and evidence, including server_ip, tls and headers (the network evidence also signed into the receipt; null on an edge server); on a PDF also pdf { page_count, pages_read, truncated }.
receiptstring––
resultsarray–With urls only (then page, text and receipt are inside each entry): one entry per URL in order, { url, page, text, text_chars, text_truncated, injection_flags, injection_verdict, injection_severity,…
textstring|null––
tierstring––
{"return_text":true,"urls":["https://www.iana.org/help/example-domains"]}
attestpage_preview_document ~395

Use before paying for POST /v1/verify/document: send the same body, 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. Free. Free. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-document

NameTypeReqDescription
case_sensitiveboolean–Default false; must be false with match "passages".
documentstringyesThe answer or report as written, 1 character to 60000 bytes (UTF-8), and the whole request body is capped at 256 KB. Its quotes and their links are found by fixed rules (extractor doc-v1).
formatstring–markdown (default), text (only bare URLs and [n] references are links) or html (<a href> links, <blockquote> and <q> quotes; other tags are dropped).
matchstring–For every pair: 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 (…
min_wordsinteger–A quoted span with fewer words is skipped as too_short (default 4).
partinteger–0-based part to check, default 0; call POST /v1/verify/document/preview first to see how many parts there are.
part_sizeinteger–Pairs per part, default 10. A free trial call takes at most the size in extensions.trial.info.max_batch_items of the 402 offer.
thresholdnumber–Fuzzy similarity needed, default 0.9.
NameTypeReqDescription
document_sha256stringyesSHA-256 of the document as sent (UTF-8); the paid route signs the same value.
extractorstringyesThe fixed extraction rules used (doc-v1).
hintstring–Only when pairs_total is 0: how to write the links so they pair with their quotes.
limit_reachedboolean––
pairsarrayyesEach pair: pair, part, quote, url, doc_start/doc_end (code points in the document); doc_spans when the pair appears more than once (the first 20), with doc_spans_truncated counting the rest.
pairs_totalintegeryes–
part_sizeinteger––
partsintegeryesPaid calls needed to check every pair (part 0 to parts - 1).
priceobjectyes–
skippedarrayyesEach skipped item with its reason: no_url, bad_url, blocked_target (a local or private host), too_short, too_long or beyond_limit. The first 100 only.
skipped_countsobject–Every skipped item counted by reason.
skipped_truncatedinteger–Skipped items left out of skipped.
unitsstring–Says what the price units mean: usd is US dollars; sats is satoshis (1 sat = 1e-8 BTC).
{"document":"WHO says \"Air pollution kills an estimated seven million people every year\" ([WHO](https://www.who.int/health-topics/air-pollution)).\n\n\u003e These domains may be used as illustrative examples in documents\n\u003e — [IANA](https://www.iana.org/help/example-domains)","format":"markdown","match":"fuzzy","part":0}
attestpage_preview_text_quote ~483

Send the same body as POST /v1/verify/text-quote (start and end are ignored) and get back exact, fuzzy or none, the score and the occurrences. Free, 30 a day per IP address. The answer is not signed and has no offsets or receipt; the paid route returns those. Free. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-text-quote

NameTypeReqDescription
case_sensitiveboolean–Default false; must be false with match "passages".
endinteger–Optional, with start: the declared end offset, raw code points, exclusive. Give both or neither; not with match "passages".
matchstring–exact; fuzzy (default), which also accepts small differences; or passages, for a paraphrased claim: the 3 passages of the text that share most of its words, scored, as evidence for you to judge (not…
quotestringyesText to look for in the source, or with match "passages" the claim to find support for (max 1,000 characters after normalisation).
startinteger–Optional, with end: the declared start offset of the quote in text, raw code points, 0-based. Only that slice is matched (max 1,000 code points), so the answer is whether the text at these offsets sa…
textstringyesThe source text you already hold, as sent (max 50,000 characters, and the whole request body is capped at 256 KB of UTF-8, so 50,000 characters of 4-byte text fit; no fetch, no normalising before has…
thresholdnumber–Fuzzy similarity needed, default 0.9.
NameTypeReqDescription
advicestring––
page_notestring––
paid_routeobject–Path and price of the signed call.
resultobjectyes–
signedbooleanyesAlways false.
{"case_sensitive":false,"match":"fuzzy","quote":"refunds are paid within 14 days","text":"Refunds are paid within 14 days of purchase, to the card that was used."}
attestpage_recheck ~466

Reports if a page changed since a receipt: unchanged, changed, gone, unreadable. US$0.003 per call; POST receipt, or url with content_sha256 (not both). Costs US$0.003 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/recheck

NameTypeReqDescription
content_sha256string–Only with url: the page.content_sha256 from our own fetch (64 hex). Other tools hash other text.
historyarray–Optional: up to 10 earlier receipts of this service for the same url, oldest first (fetch, verify/quote or recheck; paid or trial). Adds a timeline. Not stored.
quotestring–Only with a verify/quote receipt in exact or fuzzy mode: the quote exactly as it was sent to verify/quote. Must match the one the receipt signed. We re-test it on the live page and answer quote.verdi…
quotesarray–Only with a verify/quotes receipt in exact or fuzzy mode: all of its quotes, exactly as sent to verify/quotes, in the same order. Each must match the one the receipt signed. We re-test each on the li…
receiptstring–Compact JWS receipt from an earlier /v1/fetch, /v1/verify/quote, /v1/verify/quotes or /v1/recheck call of this service (paid or trial; not a sample). Max 160 KB.
return_textboolean–Also return up to 20,000 characters of the new clean text. Default false.
urlstring–Only without receipt: the http(s) URL to re-check (max 2,048 characters).
NameTypeReqDescription
advicestring––
baselineobjectyesThe baseline compared against; receipt_sha256 links a chain of recheck receipts.
changestringyes–
changedboolean|nullyes–
differencesarrayyes–
elapsed_secondsinteger|null––
injection_flagsarray––
pageobjectyesThe new fetch, as /v1/fetch gives it.
receiptstringyes–
textstring|null––
tierstring––
timelinearray|null–Only with history: each history receipt, then this check; changed compares clean-text hashes with the entry before.
{"content_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","return_text":false,"url":"https://www.iana.org/help/example-domains"}
attestpage_scan_reply ~290

Scans a bot's draft reply before sending: pass, caution or block, with findings on links, lookalike hosts, injection and prices. US$0.003 per call; POST text. Costs US$0.003 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/scan-reply

NameTypeReqDescription
allowed_urlsarray–Optional: up to 50 URLs or bare hosts the bot may link to. A link is allowed when its host is one of these or a subdomain of one (paths are not compared). With allowed_urls, a link outside them is a…
source_textstring–Optional: the text the bot was given to answer from (max 40,000 characters). Links whose host is not in it, and price or discount numbers not in it, are findings. The request body is capped at 64 KB.
textstringyesThe draft reply your bot is about to send (1 to 10,000 characters). Plain text, Markdown or HTML.
NameTypeReqDescription
advicestring––
checksobject–Which checks ran: urls_against_allowlist and numbers_against_source are false when their inputs were not sent.
countsobject––
findingsarrayyesOne per problem: type, severity (high, medium, low), detail, and url/host, flag or match where it applies.
receiptstringyes–
tierstring––
urlsarray–Every link found in the reply: url, host, allowed (true/false, or null when neither allowed_urls nor source_text was sent).
verdictstringyesblock: at least one high finding; caution: only medium or low ones; pass: none of the checks matched (not proof the reply is harmless).
{"allowed_urls":["https://shop.example.net"],"source_text":"Refund approved: $25, back to the original card in 5 to 7 days. Order page: https://shop.example.net/orders","text":"Your refund of $25 is on its way. Track it at https://shop.example.net/orders or confirm your card at https://shop-example.net.verify-account.io/login."}
attestpage_verify_citations ~270

Checks up to 10 quote and URL pairs on live pages: exact, fuzzy or none, one receipt. US$0.10 per call; POST citations. Costs US$0.10 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-citations

NameTypeReqDescription
case_sensitiveboolean–Default false; must be false with match "passages".
citationsarrayyes1 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.
matchstring–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 jud…
thresholdnumber–Fuzzy similarity needed, default 0.9.
NameTypeReqDescription
pagesarrayyesOne entry per distinct URL: page verdict and evidence, including server_ip, tls and headers (also signed into the receipt). A page with a DOI also has crossref: { doi, doi_source, status (found, not_…
receiptstringyes–
resultsarrayyesOne entry per citation, in request order: the match verdict (with match "passages": passages [{ start, end, score, text, missing, flags }] and scorer), or error (match_too_costly) for that citation a…
summaryobject–Counts of exact, fuzzy, none (and passages) verdicts, failed citations, retracted: citations whose page DOI Crossref marks retracted, and doi_unchecked: citations whose page DOI lookup was skipped (b…
tierstring––
{"citations":[{"quote":"These domains may be used as illustrative examples in documents","url":"https://www.iana.org/help/example-domains"},{"quote":"IANA-managed Reserved Domains","url":"https://www.iana.org/domains/reserved"}],"match":"fuzzy"}
attestpage_verify_document ~442

Checks one part of a document's quotes on live pages. US$0.10 per part of up to 10 pairs; POST document and part. Costs US$0.10 per part of 10 pairs in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-document

NameTypeReqDescription
case_sensitiveboolean–Default false; must be false with match "passages".
documentstringyesThe answer or report as written, 1 character to 60000 bytes (UTF-8), and the whole request body is capped at 256 KB. Its quotes and their links are found by fixed rules (extractor doc-v1).
formatstring–markdown (default), text (only bare URLs and [n] references are links) or html (<a href> links, <blockquote> and <q> quotes; other tags are dropped).
matchstring–For every pair: 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 (…
min_wordsinteger–A quoted span with fewer words is skipped as too_short (default 4).
partinteger–0-based part to check, default 0; call POST /v1/verify/document/preview first to see how many parts there are.
part_sizeinteger–Pairs per part, default 10. A free trial call takes at most the size in extensions.trial.info.max_batch_items of the 402 offer.
thresholdnumber–Fuzzy similarity needed, default 0.9.
NameTypeReqDescription
document_sha256stringyesSHA-256 of the document as sent (UTF-8); the same on every part.
extractorstringyes–
pagesarrayyesOne entry per distinct URL, as verify/citations.
pairs_totalinteger––
partintegeryes–
partsintegeryes–
receiptstringyes–
resultsarrayyesOne entry per pair of this part: pair, quote, url, doc_start/doc_end (code points in the document; doc_spans when the pair appears more than once, the first 20, with doc_spans_truncated counting the…
skippedarrayyesEach skipped item with its reason: no_url, bad_url, blocked_target (a local or private host), too_short, too_long or beyond_limit. The first 100 only.
skipped_countsobject–Every skipped item counted by reason.
skipped_truncatedinteger–Skipped items left out of skipped.
summaryobject––
tierstring––
{"document":"WHO says \"Air pollution kills an estimated seven million people every year\" ([WHO](https://www.who.int/health-topics/air-pollution)).\n\n\u003e These domains may be used as illustrative examples in documents\n\u003e — [IANA](https://www.iana.org/help/example-domains)","format":"markdown","match":"fuzzy","part":0}
attestpage_verify_quote ~296

Checks a quote on its live page: exact, fuzzy or none, offsets and a signed receipt. US$0.01 per call; POST url, quote. Costs US$0.01 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-quote

NameTypeReqDescription
case_sensitiveboolean–Default false; must be false with match "passages".
matchstring–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).
quotestringyesText to look for on the page, or with match "passages" the claim to find support for (max 1,000 characters after normalisation).
thresholdnumber–Fuzzy similarity needed, default 0.9.
urlstringyeshttp(s) URL of the page to check (max 2,048 characters). The whole request body is capped at 64 KB.
NameTypeReqDescription
advicestring––
injection_flagsarray––
pageobjectyesPage verdict and evidence, including server_ip, tls and headers (the network evidence also signed into the receipt; null on an edge server).
receiptstringyes–
resultobjectyesmatch, score, start, end, context, occurrences, normalised_sha256; on a none, nearest (the closest span: start, end, text, score, diff; charged like any answer); with match "passages" also passages […
tierstring––
{"case_sensitive":false,"match":"fuzzy","quote":"These domains may be used as illustrative examples in documents","url":"https://www.iana.org/help/example-domains"}
attestpage_verify_quotes ~311

Checks up to 20 quotes on one page: exact, fuzzy or none, offsets, signed receipt. US$0.02 per call; POST url, quotes. Costs US$0.02 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-quotes

NameTypeReqDescription
case_sensitiveboolean–Default false; must be false with match "passages".
matchstring–For every quote: 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…
quotesarrayyes1 to 20 quotes to look for on that page, or with match "passages" claims to find support for (each max 1,000 characters after normalisation). One price for the call however many.
thresholdnumber–Fuzzy similarity needed, default 0.9.
urlstringyeshttp(s) URL of the page to check (max 2,048 characters). Fetched once for all the quotes.
NameTypeReqDescription
advicestring––
injection_flagsarray––
pageobjectyesPage verdict and evidence, including server_ip, tls and headers (the network evidence also signed into the receipt).
receiptstringyes–
resultsarrayyesOne entry per quote, in request order, each the verify/quote result: match, score, start, end, context, occurrences, normalised_sha256; with match "passages" also passages [{ start, end, score, text,…
summaryobject–Counts of exact, fuzzy, none (and passages) verdicts and failed quotes.
tierstring––
{"match":"fuzzy","quotes":["These domains may be used as illustrative examples in documents","without prior coordination with us"],"url":"https://www.iana.org/help/example-domains"}
attestpage_verify_receipt ~105

Use when you are handed a QuoteProof evidence receipt and need to check it before relying on it: verifies the compact JWS against this service's published keys and returns its payload, so a forged or altered receipt is caught. Free. Free. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/receipt-verify

NameTypeReqDescription
receiptstringyesThe compact JWS from the "receipt" field of a response.
NameTypeReqDescription
kidstring|null–Key id from the JWS header.
messagestring–Plain-language failure reason, only when valid is false.
payloadobject|null–The decoded receipt payload.
reasonstring–Machine-readable failure reason, only when valid is false.
tierstring|null–paid, trial or sample.
validbooleanyesTrue when the signature verifies with one of our keys and the payload matches schema v1.
{"receipt":"eyJhbGciOiJFZERTQSIs…"}
attestpage_verify_text_quote ~517

Checks a quote word for word against text you hold: exact, fuzzy or none, offsets. US$0.005 per call; POST text, quote. Costs US$0.005 per call in USDC via x402 (Base), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://vehcdj664efetfrsolne5umanq.srv.us/docs/verify-text-quote

NameTypeReqDescription
case_sensitiveboolean–Default false; must be false with match "passages".
endinteger–Optional, with start: the declared end offset, raw code points, exclusive. Give both or neither; not with match "passages".
matchstring–exact; fuzzy (default), which also accepts small differences; or passages, for a paraphrased claim: the 3 passages of the text that share most of its words, scored, as evidence for you to judge (not…
quotestringyesText to look for in the source, or with match "passages" the claim to find support for (max 1,000 characters after normalisation).
startinteger–Optional, with end: the declared start offset of the quote in text, raw code points, 0-based. Only that slice is matched (max 1,000 code points), so the answer is whether the text at these offsets sa…
textstringyesThe source text you already hold, as sent (max 50,000 characters, and the whole request body is capped at 256 KB of UTF-8, so 50,000 characters of 4-byte text fit; no fetch, no normalising before has…
thresholdnumber–Fuzzy similarity needed, default 0.9.
NameTypeReqDescription
advicestring––
injection_flagsarray–Prompt-injection signals found in the supplied text.
receiptstringyes–
resultobjectyesmatch, score, occurrences; in search mode start, end (into the normalised text), context and normalised_sha256; with start and end, declared { start, end, slice_sha256, slice_matches } (raw offsets)…
tierstring––
{"case_sensitive":false,"match":"fuzzy","quote":"refunds are paid within 14 days","text":"Refunds are paid within 14 days of purchase, to the card that was used."}
Install

How do I install the AttestPage (Quoteproof) MCP server?

AttestPage (Quoteproof) is a hosted endpoint at https://vehcdj664efetfrsolne5umanq.srv.us/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · vehcdj664efetfrsolne5umanq.srv.us

# add to Claude Code
claude mcp add --transport http us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp 'https://vehcdj664efetfrsolne5umanq.srv.us/mcp'
Common questions

What is the AttestPage (Quoteproof) MCP server?

AttestPage (Quoteproof) is an MCP server listed in the public MCP registry as us.srv.vehcdj664efetfrsolne5umanq/quoteproof-mcp. Use before citing a page, sharing links or installing a suggested package. Signed receipts. This page covers its hosted endpoint (https://vehcdj664efetfrsolne5umanq.srv.us/mcp).

Is the AttestPage (Quoteproof) MCP server safe to use?

AttestPage (Quoteproof) scores 23 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the AttestPage (Quoteproof) MCP server expose?

AttestPage (Quoteproof) exposes 15 tools: attestpage_verify_quote, attestpage_verify_citations, attestpage_fetch, attestpage_recheck, attestpage_check_links, and 10 more. Their descriptions and schemas cost roughly 4,633 tokens of context every time the server is loaded.

Does the AttestPage (Quoteproof) MCP server require authentication?

Its publisher declares no required credentials for AttestPage (Quoteproof). We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

Is the AttestPage (Quoteproof) MCP server still maintained?

AttestPage (Quoteproof) is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.