Price and network
$0.01 USDC per verification on Base mainnet (eip155:8453). No account.
Agent Tools · Source Claim Proof
Live · $0.01 USDC · Base mainnet
Source Claim Proof checks one public URL against one atomic factual claim. It returns supported, contradicted, or insufficient evidence, plus the source snippets that justify the result. It is not a general fact checker, search engine, or research assistant.
When to use it
When not to use it
Contract
$0.01 USDC per verification on Base mainnet (eip155:8453). No account.
url — public HTTP or HTTPS source page. claim — one atomic factual assertion, 3–500 characters.
supported, contradicted, or insufficient_evidence. Use the claim only when source_status is verified and verdict is supported.
blocked, unreachable, and unsupported stay separate. They are not contradictions.
Machine / developer
POST https://source-claim-proof.mattskowronis.workers.dev/v1/verify
Content-Type: application/json
{"url":"https://example.com/page","claim":"The advertised warranty is three years."}
Unauthenticated request returns 402 + PAYMENT-REQUIRED.
Pay 10000 atomic USDC on eip155:8453, then retry with PAYMENT-SIGNATURE.
Streamable HTTP MCP: https://source-claim-proof.mattskowronis.workers.dev/mcp.
Tool: verify_source_claim. Discovery is free. Verification is paid.
Agent Card: https://source-claim-proof.mattskowronis.workers.dev/.well-known/agent-card.json.
JSON-RPC: POST https://source-claim-proof.mattskowronis.workers.dev/a2a. Skill verify_source_claim.
const unpaid = await fetch("https://source-claim-proof.mattskowronis.workers.dev/v1/verify", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
url: sourceUrl,
claim: "The advertised warranty is three years.",
}),
});
// unpaid.status === 402
// Use only if result.source_status === "verified" && result.verdict === "supported" import json
from urllib.request import Request
VERIFY = "https://source-claim-proof.mattskowronis.workers.dev/v1/verify"
body = {"url": source_url, "claim": "The advertised warranty is three years."}
req = Request(VERIFY, data=json.dumps(body).encode(),
headers={"content-type": "application/json"}, method="POST")
# 402 is expected without an x402 payment signature. result = verify_source_claim(url, claim)
if result.source_status == "verified" and result.verdict == "supported":
use(claim)
else:
do_not_rely_on_the_claim(result.verdict, result.source_status) Machine surfaces
Need a custom agent built around a job like this? Custom AI Agents & Automation.