x402-doctor.onrender.com

https://x402-doctor.onrender.com/api/v1/diagnose

Shares a payout wallet with 30 other endpoints — its adoption is attributed from that shared wallet's traffic, not earned exclusively.

Why is my x402 endpoint broken? Diagnose and debug an x402 payment endpoint (or MCP server) when payments fail: checks the 402 challenge, accepts[] (network, payTo, amount, asset), resource URL, Solana settlement readiness, which wallets and agents can pay, Bazaar/OpenAPI discovery and the browser paywall. Returns every check with a fix hint. Read-only: never pays.

60
reliability

Reliability & health

Uptime and response time from our own unpaid probes, plus the reliability score built from them.

Uptime

100.0% avg
0% 50% 100% Tue 2 AMThu 7 AMSat 11 AMMon 10 PM

Response time

p50 99ms · p95 265ms
0ms 400ms 800ms Tue 2 AMThu 7 AMSat 11 AMMon 10 PM
Data table
Reliability history per time bucket over the last 7 days (hourly).
Bucket Uptime Probes Response time
9/29/2026, 2:00:00 AM 100% 1 230ms
9/29/2026, 4:00:00 AM 100% 1 95ms
9/29/2026, 6:00:00 AM 100% 1 78ms
9/29/2026, 8:00:00 AM 100% 1 78ms
9/29/2026, 10:00:00 AM 100% 1 95ms
9/29/2026, 12:00:00 PM 100% 1 101ms
9/29/2026, 2:00:00 PM 100% 1 97ms
9/29/2026, 4:00:00 PM 100% 1 98ms
9/29/2026, 6:00:00 PM 100% 1 79ms
9/29/2026, 8:00:00 PM 100% 1 79ms
9/29/2026, 10:00:00 PM 100% 1 77ms
9/30/2026, 1:00:00 AM 100% 1 87ms
9/30/2026, 3:00:00 AM 100% 1 225ms
9/30/2026, 5:00:00 AM 100% 1 75ms
9/30/2026, 7:00:00 AM 100% 1 99ms
9/30/2026, 9:00:00 AM 100% 1 74ms
9/30/2026, 11:00:00 AM 100% 1 78ms
9/30/2026, 1:00:00 PM 100% 1 75ms
9/30/2026, 3:00:00 PM 100% 1 84ms
9/30/2026, 5:00:00 PM 100% 1 76ms
9/30/2026, 7:00:00 PM 100% 1 189ms
9/30/2026, 9:00:00 PM 100% 1 206ms
9/30/2026, 11:00:00 PM 100% 1 76ms
10/1/2026, 1:00:00 AM 100% 1 104ms
10/1/2026, 3:00:00 AM 100% 1 99ms
10/1/2026, 5:00:00 AM 100% 1 74ms
10/1/2026, 7:00:00 AM 100% 1 771ms
10/1/2026, 9:00:00 AM 100% 1 73ms
10/1/2026, 11:00:00 AM 100% 1 76ms
10/1/2026, 1:00:00 PM 100% 1 192ms
10/1/2026, 3:00:00 PM 100% 1 81ms
10/1/2026, 5:00:00 PM 100% 1 212ms
10/1/2026, 7:00:00 PM 100% 1 253ms
10/1/2026, 9:00:00 PM 100% 1 73ms
10/1/2026, 11:00:00 PM 100% 1 197ms
10/2/2026, 1:00:00 AM 100% 1 212ms
10/2/2026, 3:00:00 AM 100% 1 83ms
10/2/2026, 5:00:00 AM 100% 1 103ms
10/2/2026, 7:00:00 AM 100% 1 75ms
10/2/2026, 9:00:00 AM 100% 1 73ms
10/2/2026, 11:00:00 AM 100% 1 78ms
10/2/2026, 1:00:00 PM 100% 1 206ms
10/2/2026, 3:00:00 PM 100% 1 109ms
10/2/2026, 5:00:00 PM 100% 1 249ms
10/2/2026, 7:00:00 PM 100% 1 75ms
10/2/2026, 9:00:00 PM 100% 1 98ms
10/2/2026, 11:00:00 PM 100% 1 190ms
10/3/2026, 12:00:00 AM 100% 1 76ms
10/3/2026, 1:00:00 AM 100% 1 223ms
10/3/2026, 3:00:00 AM 100% 1 99ms
10/3/2026, 5:00:00 AM 100% 1 98ms
10/3/2026, 7:00:00 AM 100% 1 313ms
10/3/2026, 9:00:00 AM 100% 1 109ms
10/3/2026, 11:00:00 AM 100% 1 107ms
10/3/2026, 1:00:00 PM 100% 1 265ms
10/3/2026, 3:00:00 PM 100% 1 111ms
10/3/2026, 5:00:00 PM 100% 1 216ms
10/3/2026, 7:00:00 PM 100% 1 108ms
10/3/2026, 9:00:00 PM 100% 1 214ms
10/3/2026, 11:00:00 PM 100% 1 219ms
10/4/2026, 1:00:00 AM 100% 1 73ms
10/4/2026, 2:00:00 AM 100% 1 215ms
10/4/2026, 4:00:00 AM 100% 1 75ms
10/4/2026, 6:00:00 AM 100% 1 98ms
10/4/2026, 8:00:00 AM 100% 1 94ms
10/4/2026, 1:00:00 PM 100% 1 78ms
10/4/2026, 3:00:00 PM 100% 1 199ms
10/4/2026, 5:00:00 PM 100% 1 197ms
10/4/2026, 7:00:00 PM 100% 1 83ms
10/4/2026, 9:00:00 PM 100% 1 263ms
10/5/2026, 2:00:00 AM 100% 1 101ms
10/5/2026, 7:00:00 AM 100% 1 238ms
10/5/2026, 9:00:00 AM 100% 1 96ms
10/5/2026, 11:00:00 AM 100% 1 222ms
10/5/2026, 1:00:00 PM 100% 1 81ms
10/5/2026, 2:00:00 PM 100% 1 294ms
10/5/2026, 4:00:00 PM 100% 1 101ms
10/5/2026, 6:00:00 PM 100% 1 99ms
10/5/2026, 8:00:00 PM 100% 1 355ms
10/5/2026, 10:00:00 PM 100% 1 264ms
60
Composite reliability — the weighted average of the dimensions below, on a 0–100 scale.
Availability
100

How often it was reachable when we probed it (weight 35%).

Latency
100

How quickly it answers when it is up — fast scores high (weight 20%).

Security
100

Whether it serves over working TLS / https (weight 15%).

Transparency
61

Whether the operator disclosed what it does — description, schema, identity (weight 15%).

Activity
3

Observed on-chain payments to this endpoint's wallet — transactions, volume, and distinct paying wallets over the last month (weight 15%; not yet measured when we have not seen its wallet settle).

Confidence 100% — how much probe evidence backs this score. A thin history is flagged, not hidden.

See the scoring methodology for exactly how each number is computed.

Payment

Currencies
USDC
Networks
base, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
Facilitator
unknown
SDK
x402-express

Operator

Company
inferred — unknown
Jurisdiction
—
Registrar
Amazon Registrar, Inc.
Domain registered
2015-03-28
Hosting network
RS-1125
Hosting country
—

Operator context is derived from public RDAP/TLS records and unverified. Company and country are only available for endpoints that publish them (an OV/EV TLS certificate or a non-redacted domain record); most endpoints are CDN-fronted and disclose neither.

On-chain activity (base)

139
payments (30d)
5.4
USD volume (30d)
13
paying wallets (30d)

Payments per day

last payment 10/5/2026
0 20 40 Sep 21Sep 26Sep 30Oct 5
Data table
Settled payments per day.
Day Payments Volume (USD) Paying wallets
9/21/2026 1 0.1 1
9/22/2026 3 0.06 2
9/23/2026 2 0.01 1
9/24/2026 8 0.48 2
9/25/2026 8 0.92 3
9/26/2026 37 1 1
9/27/2026 15 1.05 2
9/28/2026 14 0.66 3
9/29/2026 16 0.18 4
9/30/2026 5 0.01 2
10/1/2026 3 0.07 1
10/2/2026 2 0.01 1
10/3/2026 1 0 1
10/4/2026 20 0.84 2
10/5/2026 4 0.01 2

This payout wallet is shared: figures cover all 31 endpoints paid at it, since payments cannot be attributed to one of them. Only payments settled on chains and facilitators we index.

Linked by wallet — likely same operator

On-chain agent identity and the x402 endpoint that shares its settlement wallet.

Response schema
{
  "properties": {
    "challenge": {
      "type": [
        "object",
        "null"
      ]
    },
    "checks": {
      "items": {
        "properties": {
          "group": {
            "enum": [
              "challenge",
              "accepts",
              "resource",
              "settlement",
              "wallets",
              "discovery",
              "browser"
            ],
            "type": "string"
          },
          "hint": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "status": {
            "enum": [
              "pass",
              "warn",
              "fail",
              "info",
              "skip"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "message"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "method": {
      "enum": [
        "GET",
        "POST",
        null
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "overall": {
      "enum": [
        "pass",
        "warn",
        "fail"
      ],
      "type": "string"
    },
    "receipt": {
      "description": "Signature over this whole answer (without receipt.signature), so the verdict can be verified later: EIP-191 personal_sign over canonical JSON (sorted keys, compact, ASCII-escaped). Signer addresses: /.well-known/x402-doctor-signer.json; free check: POST /api/v1/verify.",
      "properties": {
        "algorithm": {
          "enum": [
            "eip191-canonical-json-v1"
          ],
          "type": "string"
        },
        "cert": {
          "description": "The payout wallet's certificate for this signing key: personal_sign by authority over 'fizzl receipt signer\\nservice: <service>\\nsigner: <signer>\\nvalid_from: <date>'. Pin the payout wallet and a rotated key still verifies.",
          "properties": {
            "authority": {
              "type": "string"
            },
            "service": {
              "type": "string"
            },
            "signature": {
              "type": "string"
            },
            "signer": {
              "type": "string"
            },
            "valid_from": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "input_sha256": {
          "description": "sha256 of canonical JSON {route, input}: your query parameters as strings",
          "type": "string"
        },
        "payment": {
          "description": "The payment behind this answer, from your x402 payment payload. EVM: payer + EIP-3009 nonce; find the settlement as AuthorizationUsed(payer, nonce) on the asset contract. Solana: payer + sha256 of the signed transaction you sent.",
          "properties": {
            "amount": {
              "type": "string"
            },
            "asset": {
              "type": "string"
            },
            "network": {
              "type": "string"
            },
            "nonce": {
              "type": "string"
            },
            "pay_to": {
              "type": "string"
            },
            "payer": {
              "type": "string"
            },
            "proof": {
              "enum": [
                "eip3009",
                "svm-transaction"
              ],
              "type": "string"
            },
            "transaction_sha256": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "request_id": {
          "type": "string"
        },
        "route": {
          "type": "string"
        },
        "signature": {
          "type": "string"
        },
        "signed_at": {
          "type": "string"
        },
        "signer": {
          "type": "string"
        }
      },
      "required": [
        "request_id",
        "route",
        "input_sha256",
        "signed_at",
        "signer",
        "algorithm",
        "signature"
      ],
      "type": "object"
    },
    "url": {
      "type": "string"
    },
    "wallets": {
      "description": "Which wallets can pay: per wallet, the networks where payment works (yes) and where it fails, with the reason (no).",
      "items": {
        "properties": {
          "agent": {
            "type": "boolean"
          },
          "no": {
            "items": {
              "properties": {
                "network": {
                  "type": "string"
                },
                "reason": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "wallet": {
            "type": "string"
          },
          "yes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "url",
    "overall",
    "checks"
  ],
  "type": "object"
}