withX402Client / mcpay connect --evm is a real wallet-bearing 402 loop. The published client currently:
- Treats an MCP tool error as payable only when
_meta["x402/error"].accepts is present.
- Signs with
createPaymentHeader (default x402 version 1) using req.maxAmountRequired.
- Retries the same MCP
callTool, attaching _meta["x402/payment"].
- Defaults the CLI EVM network to
base-sepolia (--evm-network base is documented for mainnet).
I work on zFinia (https://zfinia.com). This is not a request to list us on mcpay.tech/register, wrap us in the MCPay proxy, endorse the product, or buy anything.
If you want an independent Base mainnet seller to regression-test that client against a host that is not an MCPay-proxied MCP, this origin is live:
- MCP (challenge-handoff only, never a wallet):
https://api.zfinia.com/mcp
- Cheapest paid HTTP resource:
POST https://api.zfinia.com/x402/v1/accessibility-contrast-calculator
- Exact USDC on
eip155:8453, amount 1000 atomic ($0.001)
- Catalog: https://api.zfinia.com/.well-known/x402.json
Unpaid MCP tools/call for accessibility_contrast_calculator with
{"foreground":"#000000","background":"#ffffff","large_text":false}
returns isError: true plus:
structuredContent.code = PAYMENT_REQUIRED
retry_unchanged: false
resourceIdentity = the HTTP POST above
_meta["x402/payment-required"] (not _meta["x402/error"]) with x402Version: 2 and accepts[].amount (not maxAmountRequired)
- Instructions: pay from an external buyer wallet, then retry the paid HTTP resource outside MCP
CLI shape that matches the live network (wallet still required on the caller):
npx mcpay connect -u "https://api.zfinia.com/mcp" --evm "$EVM_PRIVATE_KEY" --evm-network base --max-atomic 1000
After independent HTTP settlement and retry, black-on-white paid JSON includes contrast_ratio: 21. An unpaid HTTP POST to the same URL returns HTTP 402 with a PAYMENT-REQUIRED header.
If the useful outcome is “MCPay client should ignore this host until v2 amount / x402/payment-required / HTTP-retry is supported,” that is a valid close. Reply here or to support@zfinia.com if you want the 402 terms in a different shape for withX402Client.
withX402Client/mcpay connect --evmis a real wallet-bearing 402 loop. The published client currently:_meta["x402/error"].acceptsis present.createPaymentHeader(default x402 version 1) usingreq.maxAmountRequired.callTool, attaching_meta["x402/payment"].base-sepolia(--evm-network baseis documented for mainnet).I work on zFinia (https://zfinia.com). This is not a request to list us on mcpay.tech/register, wrap us in the MCPay proxy, endorse the product, or buy anything.
If you want an independent Base mainnet seller to regression-test that client against a host that is not an MCPay-proxied MCP, this origin is live:
https://api.zfinia.com/mcpPOST https://api.zfinia.com/x402/v1/accessibility-contrast-calculatoreip155:8453, amount1000atomic ($0.001)Unpaid MCP
tools/callforaccessibility_contrast_calculatorwith{"foreground":"#000000","background":"#ffffff","large_text":false}returns
isError: trueplus:structuredContent.code = PAYMENT_REQUIREDretry_unchanged: falseresourceIdentity= the HTTP POST above_meta["x402/payment-required"](not_meta["x402/error"]) withx402Version: 2andaccepts[].amount(notmaxAmountRequired)CLI shape that matches the live network (wallet still required on the caller):
After independent HTTP settlement and retry, black-on-white paid JSON includes
contrast_ratio: 21. An unpaid HTTP POST to the same URL returns HTTP 402 with aPAYMENT-REQUIREDheader.If the useful outcome is “MCPay client should ignore this host until v2
amount/x402/payment-required/ HTTP-retry is supported,” that is a valid close. Reply here or to support@zfinia.com if you want the 402 terms in a different shape forwithX402Client.