Check an x402 endpoint before your agent pays it: challenge validity and on-chain payer evidence.
Runs on your machine from its package; the steps are below.
At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
uvx provenpaid-mcp
MCP client config
{
"mcpServers": {
"provenpaid": {
"command": "uvx",
"args": [
"provenpaid-mcp"
]
}
}
}Give your agent a pre-payment check for paid x402 endpoints. Evidence before you pay.
ProvenPaid checks an x402 endpoint before your agent relies on it: is its payment challenge valid, and do real wallets actually pay it on-chain, come back, and how concentrated are payments? This MCP server exposes that check as a tool. The first 10 checks are free, with no wallet and no setup. After that it pays automatically, about $0.01 in USDC on Base per check, from a wallet you control.
Use it once before relying on an unfamiliar endpoint, not before every call.
| Tool | Cost | What it does |
|---|---|---|
check_x402_endpoint(url) | first 10 free, then about $0.01 | Validates the endpoint's x402 challenge and reports public on-chain evidence for its receiving address: distinct payers, repeat-payer share, payer concentration, coverage. |
provenpaid_methodology() | free | How each signal is computed, what is not verified, and when a check is charged. |
provenpaid_status() | free | Free checks left, paying wallet address, network, price cap and paid checks left today. |
You are not charged when the URL is invalid or unsafe, is not an x402 endpoint, or offers no payment option in USDC on Base. Results are evidence, not a verdict: ProvenPaid does not verify service quality or that an endpoint controls its receiving address.
Requires Python 3.11+. With uv:
uvx provenpaid-mcp
or pip install provenpaid-mcp.
{
"mcpServers": {
"provenpaid": { "command": "uvx", "args": ["provenpaid-mcp"] }
}
}
On first run it creates a local identity key (~/.provenpaid-mcp/identity.key, owner-only). The key holds no funds; it only lets ProvenPaid count your 10 free checks. Only checks that return evidence count.
Add a dedicated, low-balance wallet:
{
"mcpServers": {
"provenpaid": {
"command": "uvx",
"args": ["provenpaid-mcp"],
"env": {
"PROVENPAID_WALLET_PRIVATE_KEY": "0x...",
"PROVENPAID_DAILY_LIMIT": "20"
}
}
}
}
Guardrails enforced before anything is signed:
| Setting | Default | Meaning |
|---|---|---|
PROVENPAID_MAX_PRICE_USD | 0.01 | Refuse any check priced above this (hard ceiling 0.10). |
PROVENPAID_DAILY_LIMIT | 20 | Maximum paid checks per UTC day, persisted across restarts. |
PROVENPAID_NETWORK | eip155:8453 | Pay only on this network, only in its USDC. eip155:84532 for Base Sepolia testing. |
PROVENPAID_API_URL | https://api.provenpaid.com | Must be https. |
PROVENPAID_STATE_DIR | ~/.provenpaid-mcp | Where the daily counter is kept. |
The server calls GET https://api.provenpaid.com/v1/check?url=.... The API answers HTTP 402 with x402 payment requirements; the official x402 SDK signs a single-use USDC authorization within the guardrails above and retries. Settlement happens only when the check delivers evidence. Methodology: https://api.provenpaid.com/methodology
MIT