X402 Scan Mcp

io.github.forgemeshlabsPublished by GitHub account forgemeshlabsv0.1.9Updated Nov 3, 2026

x402 Endpoint Scanner — a free local health probe for x402 paid endpoints as an MCP server.

The publisher's own server: scan.mx Email Diagnostics

Overview

AI-generated overview

Local MCP server that probes x402 paid endpoints and grades whether agents can discover, parse and pay their 402 challenge.

What you can do
  • Probe a single x402 endpoint for HTTP 402 status, PAYMENT-REQUIRED envelope validity, required accepts[] fields, MPP dual-stack support and free-content leaks, with an A–F grade and plain-English findings
  • Batch-scan up to 10 URLs sequentially with a one-line health summary and per-item errors
  • Fetch ForgeMesh catalog stats and the headline numbers of the August 2026 x402 Bazaar health census
When to use it
Useful when you publish or maintain x402-paid API routes and want to check that payment-aware agents can actually discover and pay them, or when auditing a short list of endpoints before listing them in an agent catalog.
Requirements
Node.js 20 or newer; runs locally over stdio, typically via npx. No API keys, accounts or environment variables are declared. Outbound network access to the endpoints you scan, and to ForgeMesh's public stats endpoint for census_stats.
Before you install
It makes outbound HTTP requests to any URL you give it, so only scan hosts you trust; SSRF guards restrict schemes, ports and private or metadata addresses, and redirects are not followed. No payment is ever sent and no PAYMENT-SIGNATURE is supplied. The README notes that a public HTTP deployment would need authentication, rate limiting and an egress policy.

Installation

In SourceWeft

  1. Open X402 Scan Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

x402-scan-mcp — the free x402 Endpoint Scanner

Is your paid endpoint actually payable by agents?

Shipping a 402 Payment Required response is not the same as shipping a correct one. A missing field in accepts[], a malformed Base64 envelope, or content that leaks for free when the payment gate is misconfigured all look fine in a browser and invisibly cost you every agent that would have paid.

x402-scan-mcp is the free, open-source x402 Endpoint Scanner — an MCP server that probes one or more x402 endpoints and reports whether an agent can actually discover, parse, and pay for them. The npm package is @forgemeshlabs/x402-scan-mcp.

No payment is ever sent. The scanner never supplies a PAYMENT-SIGNATURE, so it cannot authorize or settle a transaction — it only inspects the shape of the 402 challenge.

=== x402 Endpoint Scan: https://library.forgemesh.io/business-management ===Reachable: true  HTTP: 402  Method: GET  (184ms)402: true  Envelope: header  Valid: true  MPP: trueGrade: AFindings:  - Valid x402 envelope is advertised over both the classic PAYMENT-REQUIRED header    and MPP's WWW-Authenticate: Payment header — maximally discoverable across agent    payment stacks.

What it checks

  • HTTP 402 status — does the route actually return 402 Payment Required, or does it 200/404/500 and go unnoticed by payment-aware agents?
  • PAYMENT-REQUIRED envelope — is the header present, Base64-decodable, valid JSON, with a numeric x402Version and a non-empty accepts[]? Falls back to checking the response body for an x402Version field on endpoints that put the envelope there instead.
  • Required payment fields — does every entry in accepts[] carry scheme, network, asset, payTo, and amount?
  • MPP dual-stack — is the endpoint also discoverable via the WWW-Authenticate: Payment header, the MPP discovery path some agent stacks use instead of the classic header?
  • Free-content leaks — does the route serve real content with a 200 when it should be gated behind 402?

Every result is graded A (valid envelope + MPP dual-stack), B (valid envelope, classic header only), C (402 but the envelope is missing or malformed), or F (not 402, unreachable, or serving paid content for free) — plus plain-English findings[] explaining what an agent sees and why it costs you traffic.

Install

Requires Node.js ≥ 20. Published on npm as @forgemeshlabs/x402-scan-mcp — no clone or build needed.

bash
npm install -g @forgemeshlabs/x402-scan-mcp

Or skip the install entirely and run it with npx (recommended for MCP clients):

bash
npx -y @forgemeshlabs/x402-scan-mcp

Claude Code

bash
claude mcp add x402-scan -- npx -y @forgemeshlabs/x402-scan-mcp

Claude Desktop / Cursor / Windsurf (any MCP client)

json
{  "mcpServers": {    "x402-scan": {      "command": "npx",      "args": ["-y", "@forgemeshlabs/x402-scan-mcp"]    }  }}

Development (from source)

Only needed if you're hacking on the scanner itself:

bash
git clone https://github.com/forgemeshlabs/x402-scan-mcpcd x402-scan-mcpnpm install && npm run buildclaude mcp add x402-scan -- node /path/to/x402-scan-mcp/dist/index.js

Tools

ToolWhat it does
scan_endpointProbe one x402 endpoint — HTTP status, envelope source/validity, accepts[] summary, MPP dual-stack, A-F grade, findings
scan_batchRun scan_endpoint over up to 10 URLs, sequentially, plus a one-line summary like 7/10 healthy, 2 dead, 1 broken envelope
census_statsLive ForgeMesh catalog stats plus the static August 2026 x402 Bazaar health census headline numbers

Try it: "Scan my x402 route for a valid 402 challenge" · "Batch-scan these 5 endpoints and tell me which ones are broken" · "What did the August 2026 x402 health census find?"

CLI smoke test (from a source checkout)

bash
npm run smoke -- https://your-endpoint.example.com

Beyond the free local scan

This MCP server is local-only and free: it never leaves your machine except to call the endpoint you point it at (and, for census_stats, ForgeMesh's own public stats endpoint). If you want more:

  • Hosted, paid, server-side scan — POST https://x402.forgemesh.io/x402-endpoint-scan, $0.05 via x402. Useful when you want the probe to originate from a different network than yours, or you're calling it from an agent that already pays x402 for other tools.
  • Browser tool — forgemesh.io/scan for a one-off scan with no MCP client or wallet needed.
  • $5 full report with fixes — a deeper audit with ready-to-paste fixes for every failing check, at forgemesh.io/scan.

The August 2026 x402 Bazaar health census

census_stats bundles the headline numbers from ForgeMesh's own sweep of the x402 Bazaar catalog: 1,225 sellers probed, 74% healthy, 206 dead, 40 serving paid content for free, and only 15% MPP dual-stack. Full writeup: forgemesh.io/blog/x402-bazaar-health-census-august-2026.

Security

This scanner makes outbound requests to URLs you give it, so it is built to resist SSRF abuse:

  • Scheme allow-list — only http/https; file:, ftp:, gopher:, data: etc. are rejected.
  • Port allow-list — only 80, 443, 8080, and 8443. Any other explicit port is refused before any DNS lookup or network call.
  • Local-hostname rejection — localhost, *.localhost, *.local, and *.internal are refused by name, before DNS resolution runs.
  • Private-target blocking — after DNS resolution, requests to loopback, private (RFC 1918), link-local, CGNAT, reserved, multicast, and the cloud metadata address (169.254.169.254) are refused. IPv6 loopback/ULA/link-local and IPv4-mapped forms are covered too. If a hostname resolves to any private address, the scan is refused.
  • Pinned-IP transport — the request dials the exact public IP that was validated, while TLS still verifies the original hostname. This closes the validate-then-connect DNS rebinding window.
  • No redirect following — a 3xx response is reported as-is (status + Location, if any); the scanner never chases it. This matches how a strict agent client behaves and keeps the request count predictable.
  • Bounded — at most 2 requests per scan_endpoint call (one GET, plus one POST retry only on 405), forgemesh-scan-mcp/0.1 UA, 8s timeout, 64KB body cap.
  • Tested hardening — npm test covers unsafe URL rejection, private IP ranges, port allow-listing, and endpoint-scan grading against a local fixture server.

Deployment: stdio (local, per-user) is the safe default. A public HTTP deployment is a network-egress tool and must add authentication, per-client rate limiting, request logging, and an egress policy before exposure.

License

MIT — free for everyone. If the scanner found a broken 402, the fix is usually a one-line envelope correction.

Source: README.md at commit bd8604d

Tools

3

scan_endpoint

Scan one x402 endpoint for a well-formed 402 challenge

Free, local, no-payment health probe for one x402 endpoint. GETs the URL (retries once as POST with {} on a 405), then checks: is the response HTTP 402; does it carry a valid PAYMENT-REQUIRED envelope (Base64 JSON with numeric x402Version and a non-empty accepts[] where every entry has scheme/network/asset/payTo/amount), falling back to checking the body for an x402Version field; and does it also advertise MPP dual-stack via WWW-Authenticate: Payment. Grades A (valid envelope + MPP dual-stack), B (valid envelope only), C (402 but the envelope is missing or malformed), or F (not 402, unreachable, or serving paid content for free). Never sends a PAYMENT-SIGNATURE and cannot spend funds — this only inspects the challenge shape. Refuses non-http(s) URLs, localhost/.internal/.local hosts, private/reserved IPs, and ports outside 80/443/8080/8443; never follows redirects; caps the response body at 64KB; makes at most 2 requests.

Parametersurlrequired

scan_batch

Scan up to 10 x402 endpoints at once

Runs scan_endpoint sequentially over a list of URLs (max 10) and returns each full result plus a one-line summary, e.g. '7/10 healthy, 2 dead, 1 broken envelope'. One bad URL never aborts the batch — its error is reported per-item instead. Same no-spend, SSRF-guarded probe as scan_endpoint applied to every URL.

Parametersurlsrequired

census_stats

x402 Bazaar health census stats

Fetches the latest ForgeMesh catalog stats (best-effort, 5s timeout, no input required) alongside the static headline numbers from the August 2026 x402 Bazaar health census: 1,225 sellers probed, 74% healthy, 206 dead, 40 serving paid content for free, and 15% MPP dual-stack. Source: https://forgemesh.io/blog/x402-bazaar-health-census-august-2026

Takes no parameters.

Version history

4
  1. v0.1.9LatestNov 3, 2026
  2. v0.1.8Oct 25, 2026
  3. v0.1.5Oct 8, 2026
  4. v0.1.2Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Scan integrations