ProvenPaid

Check an x402 endpoint before your agent pays it: challenge validity and on-chain payer evidence.

OtherPythonv0.2.0

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 and pays for it 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.

Tools

ToolCostWhat it does
check_x402_endpoint(url)about $0.01Validates 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()freeHow each signal is computed, what is not verified, and when a check is charged.
provenpaid_status()freePaying 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.

Install

Requires Python 3.11+. With uv:

uvx provenpaid-mcp

or pip install provenpaid-mcp.

Claude Desktop / Claude Code / Cursor

{
  "mcpServers": {
    "provenpaid": {
      "command": "uvx",
      "args": ["provenpaid-mcp"],
      "env": {
        "PROVENPAID_WALLET_PRIVATE_KEY": "0x...",
        "PROVENPAID_DAILY_LIMIT": "20"
      }
    }
  }
}

Wallet safety

  • Use a dedicated wallet holding only a few dollars of USDC on Base. Never use a wallet with meaningful funds.
  • The key stays on your machine, in memory only. It is never logged, returned by a tool, or sent anywhere; only signed payment authorizations leave the process.
  • No ETH is needed: the payment facilitator pays network fees.

Guardrails enforced before anything is signed:

SettingDefaultMeaning
PROVENPAID_MAX_PRICE_USD0.01Refuse any check priced above this (hard ceiling 0.10).
PROVENPAID_DAILY_LIMIT20Maximum paid checks per UTC day, persisted across restarts.
PROVENPAID_NETWORKeip155:8453Pay only on this network, only in its USDC. eip155:84532 for Base Sepolia testing.
PROVENPAID_API_URLhttps://api.provenpaid.comMust be https.
PROVENPAID_STATE_DIR~/.provenpaid-mcpWhere the daily counter is kept.

How it works

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

License

MIT

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
uvx provenpaid-mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "com-provenpaid-mcp": {
      "command": "uvx",
      "args": [
        "provenpaid-mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

provenpaid-mcppypi

Compatible MCP Clients

ProvenPaid works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More