# AttestPage (Quoteproof) (remote · vehcdj664efetfrsolne5umanq.srv.us)

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

- Trust score: 23/100 (low)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `vehcdj664efetfrsolne5umanq.srv.us`: 23/100 (this document), [markdown](https://verifymcp.io/servers/us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp/vehcdj664efetfrsolne5umanq.md), [page](https://verifymcp.io/servers/us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp/vehcdj664efetfrsolne5umanq)

## Channel facts

- Endpoint: `https://vehcdj664efetfrsolne5umanq.srv.us/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint returned HTTP 503.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**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.

## 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.

### Claude

```bash
claude mcp add --transport http us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp 'https://vehcdj664efetfrsolne5umanq.srv.us/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp": {
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp": {
      "type": "http",
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp]
url = "https://vehcdj664efetfrsolne5umanq.srv.us/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp": {
      "type": "remote",
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp --url 'https://vehcdj664efetfrsolne5umanq.srv.us/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp:
    url: "https://vehcdj664efetfrsolne5umanq.srv.us/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp": {
      "Transport": "http",
      "Url": "https://vehcdj664efetfrsolne5umanq.srv.us/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp -t streamable-http -u 'https://vehcdj664efetfrsolne5umanq.srv.us/mcp'
```

### Other

```json
{
  "mcpServers": {
    "us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp": {
      "type": "http",
      "url": "https://vehcdj664efetfrsolne5umanq.srv.us/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-27 (score 23, −53)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: 0.47 → unverified
- [security regression] Authorization: partial → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Transport: pass → fail
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-10-26 (score 76, +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.

### 2026-10-24 (score 75, +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.

### 2026-10-22 (score 74, +1)

- [security] Tool “attestpage_verify_receipt” rewrote its description, which is the text the model reads
- [functional] New tool “attestpage_scan_reply”

### 2026-10-20 (score 73, 0)

- [security] 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
- [cosmetic] “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

### 2026-10-19 (score 73, +1)

- [security] 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
- [cosmetic] “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

### 2026-10-18 (score 72, −1)

- [security] 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
- [functional improvement] Schema quality: 374 → 303
- [functional] Destructive annotations: pass → 0
- [functional] New tool “attestpage_access_check”
- [functional] New tool “attestpage_preview_text_quote”
- [cosmetic] “attestpage_preview_document” reworded the description of “part_size”
- [cosmetic] “attestpage_verify_document” reworded the description of “part_size”

### 2026-10-17 (score 73, 0)

- [security] 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
- [cosmetic] “attestpage_verify_text_quote” reworded the description of “start”

## MCP tools (15)

### `attestpage_verify_quote` (~296 tokens)

Verify that a quote appears on a web page

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

Input parameters:

- `case_sensitive` (boolean): Default false; must be false with match "passages".
- `match` (string): 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).
- `quote` (string, required): Text to look for on the page, or with match "passages" the claim to find support for (max 1,000 characters after normalisation).
- `threshold` (number): Fuzzy similarity needed, default 0.9.
- `url` (string, required): http(s) URL of the page to check (max 2,048 characters). The whole request body is capped at 64 KB.

Output parameters:

- `advice` (string)
- `injection_flags` (array)
- `page` (object): Page verdict and evidence, including server_ip, tls and headers (the network evidence also signed into the receipt; null on an edge server).
- `receipt` (string)
- `result` (object): match, 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 […
- `tier` (string)

### `attestpage_verify_citations` (~270 tokens)

Verify up to 10 quote and URL citations in one call

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

Input parameters:

- `case_sensitive` (boolean): Default false; must be false with match "passages".
- `citations` (array, required): 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.
- `match` (string): 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…
- `threshold` (number): Fuzzy similarity needed, default 0.9.

Output parameters:

- `pages` (array): One 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_…
- `receipt` (string)
- `results` (array): One 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…
- `summary` (object): 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…
- `tier` (string)

### `attestpage_fetch` (~243 tokens)

Fetch a page, or up to 10 in one call, each with a verdict, injection flags and a signed receipt

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

Input parameters:

- `return_text` (boolean): Return up to 20,000 characters of clean text (per page). Default true; send false to leave the text out.
- `url` (string): http(s) URL to fetch (max 2,048 characters). Send url or urls, not both.
- `urls` (array): 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.

Output parameters:

- `advice` (string)
- `injection_flags` (array)
- `injection_severity` (array): One { flag, severity } per injection flag; severity is high, medium or low.
- `injection_verdict` (string): 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.
- `page` (object): 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 }.
- `receipt` (string)
- `results` (array): 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,…
- `text` (string|null)
- `tier` (string)

### `attestpage_recheck` (~466 tokens)

Re-check a page against an earlier receipt: unchanged, changed, gone or unreadable

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

Input parameters:

- `content_sha256` (string): Only with url: the page.content_sha256 from our own fetch (64 hex). Other tools hash other text.
- `history` (array): 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.
- `quote` (string): 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…
- `quotes` (array): 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…
- `receipt` (string): 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_text` (boolean): Also return up to 20,000 characters of the new clean text. Default false.
- `url` (string): Only without receipt: the http(s) URL to re-check (max 2,048 characters).

Output parameters:

- `advice` (string)
- `baseline` (object): The baseline compared against; receipt_sha256 links a chain of recheck receipts.
- `change` (string)
- `changed` (boolean|null)
- `differences` (array)
- `elapsed_seconds` (integer|null)
- `injection_flags` (array)
- `page` (object): The new fetch, as /v1/fetch gives it.
- `receipt` (string)
- `text` (string|null)
- `tier` (string)
- `timeline` (array|null): Only with history: each history receipt, then this check; changed compares clean-text hashes with the entry before.

### `attestpage_check_links` (~182 tokens)

Check up to 10 links in one call: a link verdict (ok, broken, moved, unknown) per URL, optional expected_text

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

Input parameters:

- `urls` (array, required): 1 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.

Output parameters:

- `receipt` (string)
- `results` (array): One 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…
- `tier` (string)

### `attestpage_check_packages` (~174 tokens)

Check whether up to 10 package names exist on npm, PyPI or crates, with known OSV.dev advisories

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

Input parameters:

- `packages` (array, required): 1 to 10 packages to look up. Each is { ecosystem, name, version? }; ecosystem is npm, pypi or crates.

Output parameters:

- `note` (string)
- `receipt` (string)
- `results` (array)
- `tier` (string)

### `attestpage_attest` (~236 tokens)

Sign a timestamped receipt over a SHA-256 hash

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

Input parameters:

- `idempotency_key` (string): 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…
- `note` (string): Optional note; only its SHA-256 goes in the receipt.
- `sha256` (string, required): SHA-256 (hex) of the thing being attested.

Output parameters:

- `attestation` (object)
- `receipt` (string)
- `tier` (string)

### `attestpage_scan_reply` (~290 tokens)

Scan a bot's draft reply before it is sent: pass, caution or block, with findings on links, hosts, injection phrases and unsupported prices

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

Input parameters:

- `allowed_urls` (array): 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_text` (string): 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.
- `text` (string, required): The draft reply your bot is about to send (1 to 10,000 characters). Plain text, Markdown or HTML.

Output parameters:

- `advice` (string)
- `checks` (object): Which checks ran: urls_against_allowlist and numbers_against_source are false when their inputs were not sent.
- `counts` (object)
- `findings` (array): One per problem: type, severity (high, medium, low), detail, and url/host, flag or match where it applies.
- `receipt` (string)
- `tier` (string)
- `urls` (array): Every link found in the reply: url, host, allowed (true/false, or null when neither allowed_urls nor source_text was sent).
- `verdict` (string): block: at least one high finding; caution: only medium or low ones; pass: none of the checks matched (not proof the reply is harmless).

### `attestpage_verify_document` (~442 tokens)

Check the quotes and links in a whole document, 10 per part

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

Input parameters:

- `case_sensitive` (boolean): Default false; must be false with match "passages".
- `document` (string, required): The 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).
- `format` (string): markdown (default), text (only bare URLs and [n] references are links) or html (<a href> links, <blockquote> and <q> quotes; other tags are dropped).
- `match` (string): 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_words` (integer): A quoted span with fewer words is skipped as too_short (default 4).
- `part` (integer): 0-based part to check, default 0; call POST /v1/verify/document/preview first to see how many parts there are.
- `part_size` (integer): 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.
- `threshold` (number): Fuzzy similarity needed, default 0.9.

Output parameters:

- `document_sha256` (string): SHA-256 of the document as sent (UTF-8); the same on every part.
- `extractor` (string)
- `pages` (array): One entry per distinct URL, as verify/citations.
- `pairs_total` (integer)
- `part` (integer)
- `parts` (integer)
- `receipt` (string)
- `results` (array): One 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…
- `skipped` (array): Each 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_counts` (object): Every skipped item counted by reason.
- `skipped_truncated` (integer): Skipped items left out of skipped.
- `summary` (object)
- `tier` (string)

### `attestpage_verify_quotes` (~311 tokens)

Verify up to 20 quotes on one web page in one call

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

Input parameters:

- `case_sensitive` (boolean): Default false; must be false with match "passages".
- `match` (string): 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…
- `quotes` (array, required): 1 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.
- `threshold` (number): Fuzzy similarity needed, default 0.9.
- `url` (string, required): http(s) URL of the page to check (max 2,048 characters). Fetched once for all the quotes.

Output parameters:

- `advice` (string)
- `injection_flags` (array)
- `page` (object): Page verdict and evidence, including server_ip, tls and headers (the network evidence also signed into the receipt).
- `receipt` (string)
- `results` (array): One 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,…
- `summary` (object): Counts of exact, fuzzy, none (and passages) verdicts and failed quotes.
- `tier` (string)

### `attestpage_verify_text_quote` (~517 tokens)

Verify a quote against text you already hold, with no fetch

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

Input parameters:

- `case_sensitive` (boolean): Default false; must be false with match "passages".
- `end` (integer): Optional, with start: the declared end offset, raw code points, exclusive. Give both or neither; not with match "passages".
- `match` (string): 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…
- `quote` (string, required): Text to look for in the source, or with match "passages" the claim to find support for (max 1,000 characters after normalisation).
- `start` (integer): 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…
- `text` (string, required): The 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…
- `threshold` (number): Fuzzy similarity needed, default 0.9.

Output parameters:

- `advice` (string)
- `injection_flags` (array): Prompt-injection signals found in the supplied text.
- `receipt` (string)
- `result` (object): match, 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)…
- `tier` (string)

### `attestpage_access_check` (~223 tokens)

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

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

Input parameters:

- `url` (string, required): The 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.

Output parameters:

- `content_signal` (object|null): The 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…
- `crawlers` (array): One 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_txt` (object): The 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…
- `network` (string|null): The payment network (CAIP-2 id); null on trial calls.
- `rail` (string|null): The payment rail (x402); null on trial calls.
- `robots` (object): The 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…
- `sitemaps` (array): The 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.
- `tier` (string): paid or trial.
- `url` (string)

### `attestpage_verify_receipt` (~105 tokens)

Verify an evidence receipt

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

Input parameters:

- `receipt` (string, required): The compact JWS from the "receipt" field of a response.

Output parameters:

- `kid` (string|null): Key id from the JWS header.
- `message` (string): Plain-language failure reason, only when valid is false.
- `payload` (object|null): The decoded receipt payload.
- `reason` (string): Machine-readable failure reason, only when valid is false.
- `tier` (string|null): paid, trial or sample.
- `valid` (boolean): True when the signature verifies with one of our keys and the payload matches schema v1.

### `attestpage_preview_document` (~395 tokens)

Preview a document check

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

Input parameters:

- `case_sensitive` (boolean): Default false; must be false with match "passages".
- `document` (string, required): The 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).
- `format` (string): markdown (default), text (only bare URLs and [n] references are links) or html (<a href> links, <blockquote> and <q> quotes; other tags are dropped).
- `match` (string): 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_words` (integer): A quoted span with fewer words is skipped as too_short (default 4).
- `part` (integer): 0-based part to check, default 0; call POST /v1/verify/document/preview first to see how many parts there are.
- `part_size` (integer): 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.
- `threshold` (number): Fuzzy similarity needed, default 0.9.

Output parameters:

- `document_sha256` (string): SHA-256 of the document as sent (UTF-8); the paid route signs the same value.
- `extractor` (string): The fixed extraction rules used (doc-v1).
- `hint` (string): Only when pairs_total is 0: how to write the links so they pair with their quotes.
- `limit_reached` (boolean)
- `pairs` (array): Each 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_total` (integer)
- `part_size` (integer)
- `parts` (integer): Paid calls needed to check every pair (part 0 to parts - 1).
- `price` (object)
- `skipped` (array): Each 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_counts` (object): Every skipped item counted by reason.
- `skipped_truncated` (integer): Skipped items left out of skipped.
- `units` (string): Says what the price units mean: usd is US dollars; sats is satoshis (1 sat = 1e-8 BTC).

### `attestpage_preview_text_quote` (~483 tokens)

Preview a text quote check

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

Input parameters:

- `case_sensitive` (boolean): Default false; must be false with match "passages".
- `end` (integer): Optional, with start: the declared end offset, raw code points, exclusive. Give both or neither; not with match "passages".
- `match` (string): 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…
- `quote` (string, required): Text to look for in the source, or with match "passages" the claim to find support for (max 1,000 characters after normalisation).
- `start` (integer): 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…
- `text` (string, required): The 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…
- `threshold` (number): Fuzzy similarity needed, default 0.9.

Output parameters:

- `advice` (string)
- `page_note` (string)
- `paid_route` (object): Path and price of the signed call.
- `result` (object)
- `signed` (boolean): Always false.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp/vehcdj664efetfrsolne5umanq#diagnostics

## Score history

- 2026-11-05: 23
- 2026-11-04: 23
- 2026-11-03: 23
- 2026-11-02: 23
- 2026-11-01: 23
- 2026-10-31: 23
- 2026-10-30: 23
- 2026-10-29: 23
- 2026-10-28: 23
- 2026-10-27: 23
- 2026-10-26: 76
- 2026-10-25: 75
- 2026-10-24: 75
- 2026-10-23: 74
- 2026-10-22: 74
- 2026-10-21: 73
- 2026-10-20: 73
- 2026-10-19: 73
- 2026-10-18: 72
- 2026-10-17: 73
- 2026-10-16: 73
- 2026-10-15: 72
- 2026-10-14: 72
- 2026-10-13: 72
- 2026-10-12: 71

## 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 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://vehcdj664efetfrsolne5umanq.srv.us/mcp
- Website: https://vehcdj664efetfrsolne5umanq.srv.us/docs/mcp
- Changelog RSS feed: https://verifymcp.io/servers/us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp/vehcdj664efetfrsolne5umanq.xml
- Changelog JSON feed: https://verifymcp.io/servers/us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp/vehcdj664efetfrsolne5umanq.json
- HTML version of this page: https://verifymcp.io/servers/us-srv-vehcdj664efetfrsolne5umanq-quoteproof-mcp/vehcdj664efetfrsolne5umanq
