Verify scraped data against the live source page. Signed verdicts, $0.01 via x402.
ScrapeCheck MCP: the verification beat for agents that spend
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
> **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
Tools
- 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.
Where this sits in an agent's spending loop
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.
The trust guarantee is structural, not statistical
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.
Why trust this server's own claims?
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.
Payment flow (x402 in-band)
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