
X402lint
io.github.arden-instance由 GitHub 帳號 arden-instance 發布v0.5.2更新於 Oct 25, 2026
Lint an HTTP endpoint's x402 402 conformance; decode X-PAYMENT blobs; inspect a facilitator.
概覽
一個本機 MCP 伺服器,讓助理檢查 HTTP 端點的 x402 付款挑戰、解碼付款資料區塊並檢視 facilitator。
- 可以做什麼
- 以未付款方式請求端點,回傳其 402 付款挑戰的通過/警告/失敗一致性報告,涵蓋傳輸格式、版本、accepts 項目、金額、位址與 EIP-712 網域欄位。解碼並分類 base64 付款標頭資料區塊,例如 payment-required、X-PAYMENT 與 payment-response。彙整 facilitator 支援的 scheme 與 network 組合,並對未知 scheme 或非 CAIP-2 網路提出警告。
- 適用情境
- 在開發、測試或審查帶有 x402 付費牆的 API 時使用,讓助理在代理執行環境付款前確認 402 挑戰格式正確,或讀取付款標頭、查看 facilitator 清單。
- 執行需求
- 以本機 stdio 程序執行;透過 pip 安裝 MCP 附加元件或以 uvx 啟動。需要 Python 3.12 或更新版本。需要能連線到被檢查的端點與 facilitator。三個 MCP 工具未宣告需要帳號或 API 金鑰。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 X402lint,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
x402lint
A conformance linter for the x402 agent-payments protocol.
Point it at an HTTP endpoint that charges for access and it tells you whether the
402 Payment Required challenge it returns is well-formed — the check an agent
runtime does before it will pay.
Install
The linter (check / decode / facilitator / survey) is pure standard
library, Python 3.12+. The pay command additionally needs an EIP-712 signer:
pip install 'x402lint[pay]'.
Commands
x402lint check <url>
Fetches <url> with no payment header, expects a 402, and checks the payment
challenge:
- status is exactly
402 - wire format — v2 (
payment-requiredbase64 header, the common case today) or v1 (x402Version: 1JSON body). Reports which. - the challenge document decodes / parses
x402Versionis an integer,erroris a human-readable stringacceptsis a non-empty array, and for every entry:- required fields present (
scheme,network, amount,asset,payTo,maxTimeoutSeconds) schemein a known set (exact,upto,batch-settlement) — unknown warnsnetworkis CAIP-2 shaped (v2) or a recognised name (v1) — unknown warns- amount is a base-10 string of a positive integer (atomic units)
asset/payToare valid0x…addresses on EVM networksexact/EVM entries carryextra.name+extra.versionfor the EIP-712 domain- v1 entries carry an absolute
resourceURL
- required fields present (
- discovery metadata (
extensions.bazaar/ v1outputSchema) — reported, not required
--json emits a machine-readable report (for CI). Exit code: 0 conformant
(warnings allowed), 1 any failure, 2 tool error.
For a POST endpoint that validates its request body before returning the 402
(most LLM gateways), pass a body with --data (implies POST; @file or -
reads a file / stdin):
x402lint decode <blob>
Pretty-prints any base64 x402 header blob — payment-required, X-PAYMENT,
payment-response — and labels what kind of document it is. - reads stdin.
x402lint facilitator [url]
Fetches GET <url>/supported and lists every (x402Version, scheme, network)
triple the facilitator can verify / settle, plus its advertised extensions.
Warns on unknown schemes or non-CAIP-2 v2 networks. url defaults to
https://x402.org/facilitator (the public testnet facilitator). --json.
x402lint survey [catalogue]
Pulls a discovery catalogue (catalogue defaults to the Coinbase CDP
.../x402/discovery/resources list), takes the --limit busiest resources by
30-day call volume, and runs check on each — a quick "state of x402
conformance" snapshot. It replays each resource's advertised bazaar input
method and example query params so the request actually reaches the paywall
(--no-hints to force a plain GET). --json.
Recurring survey results — a per-host conformance table of the busiest live x402
endpoints — are maintained in SURVEY.md, with dated snapshots in
data/.
x402lint pay <url>
Fetches the endpoint's 402, picks the first exact-scheme accepts[] entry
(or --accept-index N), and signs an EIP-3009 TransferWithAuthorization
payment offline — no transaction, no gas, just an EIP-712 signature. Prints
the X-PAYMENT header value a client would send back. The EIP-712 domain
(name/version/chainId/verifyingContract) is read from the wire
(accepts[].extra + network + asset), never hardcoded.
The private key comes from an env var (X402LINT_PRIVATE_KEY by default,
--key-env NAME to change) and is never logged. Needs the pay extra:
--json emits the payer, authorization tuple, signature, full PaymentPayload,
and header.
x402lint roundtrip <url>
pay, then resend the request with the X-PAYMENT header and report what the
server did with it. Decodes the X-PAYMENT-RESPONSE header (success,
transaction, network); falls back to the response body's error string when
the payment is rejected. Exits 0 only if the payment settled, 1 otherwise.
Needs the pay extra and a funded key for a real settlement; without funds it
reports NOT SETTLED (insufficient_funds) after exercising the full path.
--facilitator <url>
Settle directly against a facilitator's /verify + /settle rather than
re-sending to the resource server. Useful when the resource server builds its own
(CAIP-2) paymentRequirements and self-fails against a facilitator that only
accepts v1 friendly names there. x402lint translates the challenge into the v1
settle envelope (base-sepolia, maxAmountRequired, x402Version: 1) and stops
before /settle if /verify rejects the payment.
GitHub Action
Run the linter in CI so a deploy that breaks your 402 challenge fails the
build. The repo ships a composite action at its root, also listed on the
GitHub Marketplace:
The step exits non-zero (failing the job) if any endpoint returns a
non-conformant 402, annotating the run with the specific findings.
A runnable worked example lives at
.github/workflows/x402.yml in this repo — it
points the action at a known-good public endpoint on a weekly schedule. Copy it
and swap in your own URL(s).
MCP server
pip install 'x402lint[mcp]' adds an x402lint mcp subcommand (also installed
as x402lint-mcp), a Model Context Protocol
server (stdio transport) so an agent or IDE assistant can lint an x402 endpoint
without shelling out. It exposes three tools:
Protocol notes
Two wire formats exist. v2 (x402Version: 2, Linux Foundation spec) is
dominant in the wild as of 2026: the PaymentRequired document travels
base64-encoded in the payment-required response header, networks are CAIP-2
ids (eip155:8453), the amount field is amount. v1 is the legacy format:
the document is the JSON body, networks are friendly names (base), the amount
field is maxAmountRequired. x402lint handles both.
License
MIT
來源:README.md,提交 5cf89c7
工具
0版本歷史
1- v0.5.2最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分