MCP · stdio · free gate

Put the gate inside the bot.

One MCP server gives Claude Desktop, Cursor, OpenCode, or any agent the free preflight gate plus five paid on-chain checks. The free gate answers with a receipt; the paid checks settle per call over x402.

Official MCP Registry: active npm: verify402-mcp v1.0.3 Free gate · no wallet

The tool surface

One gate, five deep questions.

The gate is free because it has to run before every signature. The paid tools answer the questions that need a measurement at a pinned block.

ToolPriceQuestionWhat comes back
preflight_gatefreeShould I sign this payment or transaction?PASS / CAUTION / BLOCK, typed reasons, checked / notChecked, and a short-lived receipt
verify_arbitrage$0.05Is this cross-venue arbitrage real, right now?Verdict + evidence + no_edge when there is none
check_token_safety$0.10Is this token safe to buy?TRUST / CAUTION / AVOID, live contract facts, liquidity, a sell probe
get_best_route$0.03What would the chain actually pay?Every quoted venue at one pinned block, best first
verify_quote_fairness$0.05Is this quote someone gave me honest?fair / overpaying / too_good_to_be_true, with the chain book
get_trade_depth$0.05How big can I trade before the round trip eats me?Per-size impact, round-trip cost, and the largest size under your tolerance

Paid calls are USDC over x402. The bridge signs the payment only — it never signs or sends a trade — and it only pays a 402 from the configured server, on an allowlisted network, to the verify402 payee.

Install

Start with the free gate. Add the wallet later.

Published to the public npm registry and the official Model Context Protocol Registry. Run directly with npx without cloning or building.

Mode 1 · no key

Free gate only.

Omit EVM_PRIVATE_KEY. The server registers only preflight_gate, logs free preflight_gate only, and nothing can be charged. This is the safest way to try it.

Mode 2 · paid tools

A dedicated hot wallet.

Add a wallet with USDC on the payment network. MAX_PAYMENT_USD caps one payment at signature time; MAX_DAILY_USD caps the UTC day. Never use a main wallet.

Run via npx · no wallet required

npx -y verify402-mcp --help

Official MCP Registry & npm Distribution

Published on npm as verify402-mcp (version 1.0.3) and listed on the official Model Context Protocol Registry as io.github.a32116150-ctrl/verify402-mcp. Machine agents can also fetch the machine-readable service manifest and OpenAPI 3.1 specification.

Client · Claude Desktop / Cursor

Paste one server block.

Claude Desktop uses claude_desktop_config.json; Cursor uses .cursor/mcp.json. This block is free-only. For paid tools, add EVM_PRIVATE_KEY, MAX_PAYMENT_USD and optionally MAX_DAILY_USD to env.

Free-only config

{
  "mcpServers": {
    "verify402": {
      "command": "npx",
      "args": [
        "-y",
        "verify402-mcp"
      ],
      "env": {
        "VERIFY402_URL": "https://verify402.onrender.com"
      }
    }
  }
}

Client · OpenCode V2

Servers live under mcp.servers.

Put this in opencode.jsonc or the global ~/.config/opencode/opencode.jsonc. For paid tools, use "EVM_PRIVATE_KEY": "{env:EVM_PRIVATE_KEY}" and export the key in the environment that starts OpenCode — do not write it into the file.

opencode.jsonc · free-only

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "servers": {
      "verify402": {
        "type": "local",
        "command": [
          "npx",
          "-y",
          "verify402-mcp"
        ],
        "environment": {
          "VERIFY402_URL": "https://verify402.onrender.com"
        }
      }
    }
  }
}

V2 uses mcp.servers and disabled; there is no enabled field. The server name prefixes its tools in OpenCode.

Alternative install options

If you prefer a pinned release tarball: npx -y --package=https://github.com/a32116150-ctrl/verify402/releases/download/mcp-v1.0.3/verify402-mcp-1.0.3.tgz verify402-mcp. From source: git clone https://github.com/a32116150-ctrl/verify402, then cd verify402/mcp-bridge && npm ci.

The honesty boundary

What it catches — and what it does not.

It checksIt does not
A swapped payee, a lookalike asset, a wrong amount, a bad network, an expired authorizationWhether the recipient is a scammer or a sanctioned address
Decoded calldata: transfers, approvals, permits, common V2/V3 swaps; unlimited approvals and spendersContract audits, proxy upgrades, owner privileges, or a token's intent
Contract bytecode, swap deadline, minimum output, output recipient, and an eth_call simulation from your walletFull balance-delta / state-change simulation; MEV and sandwich protection
The x402 payment itself: price, network, asset, payee, facilitator, before the caller signsCounterparty identity, tool metadata, hidden instructions in tool output, or off-chain promises: “the seller will deliver after you pay”
Receipt integrity: HMAC, intent hash, pinned block, expiryThe agent ignoring the tool, or a signer that does not verify the receipt

A PASS means the left column passed at that block. It is not a guarantee that a token is safe, a trade will profit, or a counterparty will deliver. It is not a counterparty audit and does not scan tool descriptions or responses for prompt injection. It catches a class of measurable signing mistakes — not every scam.

Enforcement, not advice

The MCP tool is advisory: it cannot stop an agent that ignores the answer. Use the reference executor to verify the receipt and refuse to call the signer without it. The full request shape is in /docs#preflight.

Why a package

Because a clone is friction.

An MCP server is only in the path if installing it is one line. npx runs a versioned package on first use, your client config stays small, and updates are a version bump — not a git pull. The package is distribution, not another endpoint.

01

Add the server

One block in Claude, Cursor, or OpenCode. No build, no clone, no submodule.

02

Call the gate

Free, no wallet. The agent gets PASS / CAUTION / BLOCK and a receipt bound to the intent and block.

03

Add paid depth

When the agent needs a measurement, the same server pays per call over x402. No subscription.

Install from the public npm registry with npx -y verify402-mcp@latest; the versioned GitHub release tarball above is an optional fallback. Package name: verify402-mcp. License: Apache-2.0 — keep the copyright notice, license, and NOTICE file when redistributing. Source: mcp-bridge.