Verify scraped data against the live source page. Signed verdicts, $0.01 via x402.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Scrapecheck.
verify_web_field$0.01 β Full verification: value present on the re-fetched live page, served live, and an independent LLM judge confirms it answers what was asked. Positive verdict: `pass`.
verify_presence$0.002 β Presence only β does **NOT** confirm the value answers the question. Positive verdict: `present`, never `pass`.
get_verifier_infofree β The trust artifact: public key, benchmark summary, scope, endpoints.
Here for the offline verifier? It's in this repo:
tools/verify-verdict.mjsβ one file, no dependencies, verifies any ScrapeCheck verdict with no network access. How to use it β
Agents now find a provider, pay through x402, receive data, and act on
it. Nothing in that flow asks whether the data is true. This server adds
the missing beat. Before your agent acts on a value it fetched or paid
for, it sends the source URL, the value, and what was asked; ScrapeCheck
re-fetches the page from its own infrastructure and returns an
ed25519-signed verdict: pass, fail, or unverifiable. Never a
guess, and anything unconfirmed is unverifiable, never pass.
One line to install, and the agent pays per check through the same x402 rail it already spends on: no API key, no signup, a free allowance before payment is required, and every verdict verifiable offline against our published key.
Want to see a verdict before installing anything? One free check runs in the browser at scrapecheck.fly.dev.
All four integration lanes (MCP, x402-native, Apify, plain HTTP), each with a tested snippet: scrapecheck.fly.dev/integrations
Endpoint: https://scrapecheck-mcp.fly.dev/mcp (streamable HTTP)
Payment: x402 in-band (USDC on Base) β no API key, no signup. A free
allowance per client identity is served before payment is required.
Check us yourself β the three things you can attack: verify any verdict offline Β· live run stats, misses included Β· the benchmark and its limits
verify_web_field β $0.01 β Full verification: value present on the re-fetched live page, served live, and an independent LLM judge confirms it answers what was asked. Positive verdict: pass.verify_presence β $0.002 β Presence only β does NOT confirm the value answers the question. Positive verdict: present, never pass.get_verifier_info β free β The trust artifact: public key, benchmark summary, scope, endpoints.The payment rail answers who paid what, on whose authority. The receipt is perfect, and the receipt holds no evidence about the data. This tool is the step between receiving and acting: one call per value your agent is about to trust, priced in the same cents the data itself cost.
A claim is never certified unless ScrapeCheck independently re-fetches the
page and finds the claimed value there itself β and the judge's vote is
mechanically voided if its restatement of the claim doesn't match what was
actually claimed. Absence cannot pass, and substitution cannot pass. Anything
unconfirmed β a skipped check, a failed fetch, a judge that errors β
returns unverifiable, never pass.
Corroborated by benchmark (full verification only): 0 false passes across 67 frozen labeled cases (26 held out from all calibration, including adversarial traps where the claimed value appears on the page as the wrong thing), and 0 false passes across 21 live-web cases including 9 adversarial traps. Small-N corroboration of the structural guards β not a population accuracy claim.
Because you don't have to. Every verdict is ed25519-signed over canonical
sorted-key JSON of all fields except signature; the public key is served
at /pubkey and in-band via
get_verifier_info; and every verdict carries an engine digest identifying
exactly which prompt+calibration produced it. Verify offline β no need to
trust the transport, the storefront, or us.
Live, unfiltered run stats β misses included: scrapecheck.fly.dev/stats. A verifier that only shows its passes isn't showing anything.
Standard @x402/mcp v2 flow: an unpaid call past the free allowance returns
a PaymentRequired challenge in the tool result; pay with any x402 v2
client (e.g. wrapMCPClientWithPaymentFromConfig from @x402/mcp with an
EVM signer) and the retried call returns the verdict plus the on-chain
settlement in _meta["x402/payment-response"]. A refused or failed payment
never yields a verdict, and a verdict that fails to produce never settles β
you are charged only for completed work.
structuredContent on the wire
(and byte-identical as JSON in content[0].text). Note: @x402/mcp's
paying-client convenience result forwards content only β parse
content[0].text there, or read structuredContent with a plain MCP
client.{ url, claim, asked } β claim is an object of
field values, e.g. {"price": "Β£51.77", "in_stock": true}.unverifiable β never a false fail, never a false pass.https://scrapecheck.fly.dev/verify) and as the
Scrape QA Apify actor for
batch dataset verification. One engine, one signing key, one durable log.This repo ships a zero-dependency verifier β check any ScrapeCheck verdict without trusting us, the transport, or this server:
Omit --pubkey to fetch the current key from
/pubkey; pass it (an ed25519:β¦
string or a saved /pubkey response) to verify fully offline.
examples/verdict.json is a real production verdict
β alter any field and verification fails. A verdict is valid iff its ed25519
signature verifies over the canonical (recursively key-sorted) JSON of every
field except signature. MIT licensed β vendor the ~40 relevant lines into
your own pipeline freely.
New verdicts carry three additional signed fields. key_id names which key
in the /pubkey archive signed the verdict; it is advisory β the signature
either verifies against a published key or it doesn't β and a mismatch
between the claim and the verifying key is surfaced as a warning.
verifier_url is the canonical origin for /pubkey and /verdicts lookups;
it is a pointer home, never a trust root β a verifier must not fetch keys
from a URL the document itself supplies, so ours pins the known origin and
uses the embedded value only for display and mismatch warnings.
source_hash is the SHA-256 of the normalized page text the verdict
actually judged, a fingerprint of the page state at refetched_at. Hash
equality is meaningful between verdicts carrying the same engine digest;
across digests it is best-effort only, and today it is comparable
verdict-to-verdict rather than independently recomputable. Verdicts issued
before these fields existed verify exactly as before.
On 6 August 2026 the ed25519 signing key was treated as exposed: an operator error placed a credentials file into an external chat channel. Under our own doctrine β a key that has touched an untrusted channel is compromised whether or not anyone used it β the key was rotated the same day.
No verdict was affected. Signatures cover the verdict payload, so verdicts
issued before the rotation are unchanged and still verify against the retired
key, which is published permanently as k1 at
/pubkey. Verdicts issued afterwards are
signed with k2. The offline verifier tries every published key and reports
which one matched.
If you hold a verdict signed by k1, confirm it. A valid signature from a
retired key proves that key signed the verdict β not that we issued it, because
anyone holding the exposed private key can sign anything, including a forgery
that reuses a real verdict_id. So we publish an issuance record:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/scrapecheck)<a href="https://allmcps.com/mcp/scrapecheck"><img src="https://allmcps.com/api/badge/scrapecheck?style=directory" alt="Scrapecheck on AllMCPs" /></a>