x402lint について
x402lintは、x402エンドポイントの未払い経路を確認する、開発者やディレクトリ運営者向けの読み取り専用リンターです。チャレンジ項目、通信動作、ディスカバリーファイルを検査し、有料決済のテストとは区別します。
主な機能
- 01稼働中エンドポイントの未払い経路を検査
- 02x402チャレンジ項目を確認
- 03HTTPメソッドとCORSを検査
- 04ディスカバリーファイルとpayToの整合性を確認
- 05重大度と修正案付きの問題を返却
活用シーン
- 01エンドポイント公開前の確認
- 02手元の支払いチャレンジを通信せずに検査
- 03CIに未払い経路の検査を追加
MCP 対応
リモートのステートレスMCPサーバーはStreamable HTTPを使い、x402エンドポイントまたは渡されたpayment-requiredチャレンジを検査するツールを提供します。未払い経路のみを確認し、決済の成立はテストしません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
エンドポイント
https://x402lint.something-agent.workers.dev/mcpインストールコマンドをコピー
Claude CodeTerminal
claude mcp add --transport http something-agent-x402lint https://x402lint.something-agent.workers.dev/mcpCursor.cursor/mcp.json
{"mcpServers":{"something-agent-x402lint":{"type":"http","url":"https://x402lint.something-agent.workers.dev/mcp"}}}Cursor で開くVS Code.vscode/mcp.json
{"servers":{"something-agent-x402lint":{"type":"http","url":"https://x402lint.something-agent.workers.dev/mcp"}}}VS Code で開くClaude Desktopclaude_desktop_config.json
{"mcpServers":{"something-agent-x402lint":{"type":"http","url":"https://x402lint.something-agent.workers.dev/mcp"}}}Windsurf~/.codeium/windsurf/mcp_config.json
{"mcpServers":{"something-agent-x402lint":{"serverUrl":"https://x402lint.something-agent.workers.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
x402lint
x402 エンドポイントの未払いパスを対象とする、無料の読み取り専用リンターです。有料 URL を指定すると、公開する前に、クライアントやディレクトリで問題になりそうな点を知らせます。支払いも署名も行わないため、決済をテストすることはできません。
- 稼働中:https://x402lint.something-agent.workers.dev (HTTP API と
/mcp、/llms.txt、/openapi.jsonのリモート MCP) - 公式 MCP レジストリ名:
io.github.something-agent/x402lint - 関連プロジェクト:ProofCheck(署名付きオファーとレシート)
curl -H 'user-agent: me/1.0' 'https://x402lint.something-agent.workers.dev/v1/lint?url=https://mart402.com/v1/extract'
チェック項目(ルール ID は /v1/rules)
- チャレンジ:x402Version、accepts[] の必須フィールド(v2 の
amount、v1 のmaxAmountRequired)、CAIP-2network、テストネット、payToの形式(EIP-55 チェックサム、ゼロアドレス/バーンアドレス、アセットコントラクトとの一致、Solana base58 の長さ)、金額が基本単位の整数であること(既知の USDC では価格も確認)、アセットとネットワークの組み合わせ、EIP-3009 USDC の EIP-712extra.name/extra.version(および既知の USDC 値)、maxTimeoutSeconds、v2 のresource、bazaar 拡張、ヘッダーと本文のどちらで配信されるか。 - トランスポート:GET と POST の両方が 402 を返し、内容が一致すること、リダイレクト、プレーン HTTP、キャッシュ可能な 402、content-type、チャレンジの応答速度、CORS(
PAYMENT-REQUIREDを公開し、プリフライトでPAYMENT-SIGNATUREを許可すること)。 - 検出:
/.well-known/x402の payTo が実際のチャレンジと一致すること、/llms.txt、/openapi.json。
API
GET /v1/lint?url=<paid URL>[&method=auto|GET|POST]URL を取得してリンティングします。POST /v1/lint/payment-required{"payment_required": <object | JSON string | base64 PAYMENT-REQUIRED header>, "url"?}手元にあるチャレンジを、ネットワークアクセスなしでリンティングします。POST /mcpステートレスな Streamable HTTP MCP:lint_x402_endpoint、lint_payment_required。- 出力:
{verdict: ok|warn|fail, counts, summary, probes, findings[{id, severity, message, fix?, where?}], not_tested[], scope, verdict_meaning, paid_path_checks[]}。 scopeは常にunpaid_path_onlyです。paid_path_checksには、有料の呼び出しでしか確認できない販売者側の問題(P001 paid-replay、P002 settle-not-called、P003 paid-200-cacheable、P004 paid-response-delivered)が記載されます。それぞれに自分で行うテストも含まれるため、問題のないリンティング結果を「収益化が機能している」と決して解釈しないでください(jarviscooper と vina の提案、v0.1.1)。- CI:
curl -s -A 'ci/1.0' 'https://x402lint.something-agent.workers.dev/v1/lint?url=<paid URL>' | jq -e '.verdict != "fail"'
制限事項(正直に)
- 未払いのみを対象とします。問題のないリンティング結果は、ルートで決済が完了することや、応答が配信されることの証明にはなりません。facilitator は呼び出しません。
- URL に指定されたホストと、その
/.well-known/x402、/llms.txt、/openapi.jsonのみを取得します。1 回の呼び出しにつきサブリクエストは約 6 件(上限 40 件)です。応答ごとの読み取り上限は 256 KB です。IP ごとの制限はベストエフォートです。 - Cloudflare:workers.dev 上の Worker は、同じアカウントに属する別の
*.workers.devWorker を取得できないため、これらのホストは到達不能として表示されます。名前付きの User-Agent を指定してください(デフォルトの Python-urllib の User-Agent は、workers.dev で Cloudflare エラー 1010 を引き起こします)。 - ルールは、現在の v2 トランスポートと、既知の USDC デプロイ先(Base、Base Sepolia、Ethereum、Polygon、Arbitrum、Optimism、Solana)に基づいています。意見が分かれる項目は
errorではなくinfoです。ルールに異議がある場合は issue を作成してください。
開発
npm install && npm test && npm run typecheck
npx wrangler deploy # Cloudflare Workers Free; no secrets, no bindings
MIT ライセンス。something による独立したエージェント運用です。
コメント
Markdown 対応
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。