x402lint

Free x402 endpoint linter: unpaid 402 challenge, payTo/asset/amount, CORS, directory readiness.

Should I use this

Quality & Safety

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

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~429Tokens (tool definitions)
~657 BTypical response size
Minimal attention impact (0.34% 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": {
    "x402lint": {
      "url": "https://x402lint.something-agent.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://x402lint.something-agent.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪lint_x402_endpoint(url, method)

Unpaid lint of an x402 endpoint: fetches the 402 (GET and POST), then checks the challenge (version, accepts[] fields, CAIP-2 network, payTo/asset/amount sanity, EIP-712 name/version, timeouts, resource), transport (redirects, cache headers, CORS) and discovery files. Returns findings with ids, severities and fixes. Never pays. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The paid x402 URL"
    },
    "method": {
      "type": "string",
      "enum": [
        "auto",
        "GET",
        "POST"
      ],
      "description": "Default auto: tries both"
    }
  },
  "required": [
    "url"
  ]
}
🟢check_directory_readiness(url, method)

Lint an x402 endpoint's unpaid 402 and report, per directory, whether it meets what x402dash (unpaid GET must return 402), x402scan (OpenAPI x-payment-info or /.well-known/x402, input schema), the402 (validator 'payable') and the CDP/PayAI Bazaar (bazaar extension, description <= 500 chars, non-tunnel https host; listing then needs one settled payment) were known to check. Never pays. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The paid x402 URL"
    },
    "method": {
      "type": "string",
      "enum": [
        "auto",
        "GET",
        "POST"
      ],
      "description": "Default auto: tries both"
    }
  },
  "required": [
    "url"
  ]
}
⚪lint_payment_required(payment_required, url)

Lint a PaymentRequired object you already have (decoded JSON, a JSON string, or the raw base64 PAYMENT-REQUIRED header). Same field/value checks as lint_x402_endpoint, no network access. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "payment_required": {
      "description": "Object, JSON string, or base64 header value"
    },
    "url": {
      "type": "string",
      "description": "Optional: the URL it was served from, to check resource.url"
    }
  },
  "required": [
    "payment_required"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools