x402 Doctor

Diagnose x402 seller endpoints: what is wrong with your 402 challenge, and how to fix it.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
70%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~304Tokens (tool definitions)
~365 BTypical response size
Minimal attention impact (0.24% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "x402-doctor": {
      "url": "https://x402-doctor.tsharpe.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://x402-doctor.tsharpe.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢probe_x402_endpoint(url)

Probe an x402 seller endpoint and report what it observes about it. Performs the handshake a paying client would: GET with no X-PAYMENT header, then checks the 402 challenge against 16 rules. Every finding says whether the rule comes from the x402 spec or from an observed facilitator rejection. Reports status "healthy" (nothing to report), "advisories" (only warn/info findings — the endpoint works), "defects_found" (at least one error-severity finding), "not_x402" or "unreachable".

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The endpoint to probe, http(s) only. Private and loopback addresses are refused."
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}
🟢explain_defect(id)

Full explanation of one rule by id — what it checks, why it matters, how to fix it, and where the rule came from. Use when you want the reasoning without re-probing.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢list_checks

The whole rule table. Knowing what was NOT checked is part of knowing what a clean result means.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools