当 API、数据源或 MCP 工具向你的智能体返回 402 Payment Required 时,MetaMask Agent Wallet 可以使用 USDC 完成支付,无需注册,也不涉及 API 密钥。智能体会读取服务器的报价,向你展示资产、金额、网络和收款方,并在你批准后签署一次性支付授权。私钥始终保留在钱包中。签名请求也会经过钱包服务的威胁扫描。
免责声明:本指南仅供教育用途,不构成财务建议或招揽,也不面向英国受众。由 AI 智能体发起的加密货币支付存在风险,并不适合所有用户。
这是一份通过 Agent Wallet 使用 x402 支付的操作指南。如需了解 x402 是什么、402 握手如何运作以及由谁负责协议治理,请参阅什么是 x402。若开发者想在自己的应用中构建基于委托的 x402 支付,请先查看 Smart Accounts Kit x402 指南。如果尚未设置 Agent Wallet,请先阅读快速入门。
为什么智能体按调用付费,而不是持有 API 密钥
付费 API 通常意味着需要一个账户和一个长期有效的 API 密钥。对于 AI 智能体来说,这个密钥必须存放在智能体能够读取的地方,因此很容易成为攻击目标。在 2026 年 2 月 5 日发布的研究中,Snyk 扫描了 ClawHub 市场上的 3,984 个技能,发现其中 283 个(约 7.1%)会将 API 密钥、密码或银行卡号传入模型的上下文窗口,或写入明文记忆文件,而提示词注入可以将这些信息再次提取出来。
x402 消除了这种长期存在的密钥。智能体按每次请求付费,使用的是针对特定收款方、金额精确且仅在短时间内有效的签名授权。借助 Agent Wallet,该签名由钱包服务通过 mm wallet sign-typed-data 生成,因此智能体无需接触私钥或 API 密钥。每个授权都带有随机 nonce,因此不可能被重复结算。关于 x402 为智能体商业带来哪些变化(包括向其他智能体出售服务的智能体),我们将在后续文章中进行更全面的探讨。
x402 功能详解
x402 支持以 Python 辅助脚本的形式内置于 metamask-agent-wallet 技能中,而不是 mm 子命令。当请求返回 402 时,你的智能体会调用它。通常你只需用日常语言提出要求(例如“从这个 URL 获取高级数据,如果返回 402 就付款”),智能体就会为你执行这些步骤。
步骤 | 命令(由智能体运行) | 作用 | 是否花费资金 |
检查 HTTP 402 | x402_pay.py inspect
| 读取服务器的报价:资产、金额、网络、收款方、资源 | 否 |
支付 HTTP 402 | x402_pay.py pay --confirm
| 签署授权,重试请求,返回结算哈希和响应内容 | 是 |
检查付费 MCP 工具 | x402_pay.py mcp-inspect --challenge
| 读取付费 MCP 工具返回的支付质询 | 否 |
为付费 MCP 工具签名 | x402_pay.py mcp-sign --challenge --confirm
| 签署授权,并输出用于重试工具调用的 payload | 是 |
在多个报价之间选择 | --asset 或 --network
| 当服务器提供多个选项时,选择其中一个 | 不适用 |
支付非 GET 端点 | --method POST --data ''
| 附带支付信息重放同一请求 | 不适用 |
完整参考请见 x402 支付指南和该技能的 x402 参考文档。
了解了这一流程后,以下是通过 Agent Wallet 进行 x402 支付的 9 个小贴士。
1. 在服务要求的网络上充入 USDC
服务器决定接受哪些资产和网络。智能体只能支付服务器提供的选项。
Agent Wallet 仅支持支付 EVM 报价,且网络需包含在 mm chains list 的列表中。余额按链分别计算,因此以太坊上的 USDC 无法支付 Base 上的报价。如果你在其他链上持有 USDC,也可以让智能体将资金转移到所需的链上。支付本身是无 Gas 的链下授权,由服务的 facilitator 在链上完成结算,因此你的钱包无需持有原生代币来支付这笔交易的网络费用。
2. 付款前先检查报价
inspect 只读取 402 响应,不会签名或花费资金。它会返回资产、便于阅读的金额、网络、payTo 收款方以及资源。该技能会指示智能体向你展示这些详情,并在运行 pay 之前等待你的批准,而且如果没有 --confirm,pay 会拒绝运行。
在签名之前,会先执行若干检查。资源 URL 必须以 https:// 开头。脚本不会跟随重定向,因此跨主机重定向无法将付款转移到你未选择的服务器。金额必须是以代币最小单位表示的正整数,收款方和资产必须是有效地址。对于 exact 方案,签名金额等于报价金额,而不是服务器可以收取的上限。
3. 将每笔支付都需确认设为默认设置
Agent Wallet skill 可以指示 agent 在每次 x402 支付前,默认先与你确认资产、金额、网络、收款方和资源。确认过程发生在你与 agent 的对话中,与 2FA 相互独立;只有当请求被标记或超出你的策略范围时,钱包服务才会触发 2FA。
这适合在一次会话中购买研究报告、少量数据拉取或礼品卡的 agent。但如果是每隔几秒就调用一次付费端点的循环,则不太适合,因为每次调用都要等你确认。在多个步骤中收费的多步购买,则会在每一步都向你确认。
4. 了解 Guard Mode 对 x402 支付会检查什么
在服务器钱包模式下,每个签名请求都会发送到钱包服务,由其在签名前进行威胁扫描。被标记的请求会暂停在 AWAITING_MFA 状态,直到你批准。x402 授权带有由服务器设定的较短有效期。如果 Guard Mode 因 2FA 而暂停签名,而你在有效期结束后才批准,该授权会在未使用的情况下过期。请让 agent 重新运行 pay,它会获取新的 402 并对新的值签名。批准请求会发送到你登录方式对应的位置:使用 Google 或邮箱登录时为邮件链接,使用二维码登录时为 MetaMask Mobile 中的通知菜单。
滚动 24 小时流出限额在这里的运作方式有所不同。流出策略会统计代币转账、兑换和存款,而截至 2026 年 10 月 27 日,该策略说明 Permit2 等签名不计入流出额度的计算。x402 授权属于签名,因此 24 小时限额并不是 x402 支出的可靠上限。确认步骤依赖 agent 遵循该 skill,而真正的硬性上限是付款钱包中的代币余额。限制风险敞口的一种方法是使用单独的钱包,只为付费 API 调用充值。mm wallet create 和 mm wallet select 可用于管理多个钱包。
5. 当服务器提供多个选项时,请选择其一
当 402 在多个受支持的网络或资产上列出相同的 scheme 时,脚本会报出“multiple eligible options”错误并停止,而不会替你选择。例如,同时在 Base 和 Monad 上接受 USDC 的服务就可能触发该错误。请使用 --network(例如 Base 对应 eip155:8453)或携带代币合约的 --asset 重新运行。告诉 agent 你为哪个网络充了值,它就能在第一次尝试时传入该参数。
6. 确认该报价是 Agent Wallet 可以签名的
该辅助脚本在 EVM 网络上使用 EIP-3009 transferWithAuthorization 对 exact scheme 签名,支持 x402 协议 v1 和 v2。当遇到以下情况时,它会返回明确的错误,并且不会签名:
报价 | 被拒绝的原因 |
仅支持 Permit2 资产转移方式 | 该辅助脚本只签署 EIP-3009 |
upto 或其他 scheme
| 仅支持 exact |
Solana 或其他非 EVM 网络 | 仅支持 mm chains list 中的 EVM 网络 |
缺少 EIP-712 domain 的 name 和 version | 该辅助脚本不会猜测签名 domain |
不属于标准 x402 challenge 的 402 | 先付款再发送哈希的方案不属于 x402 |
如果服务对同一资产同时提供 Permit2 和 EIP-3009,则会使用 EIP-3009 选项。故障排查页面列出了每一种错误。
7. 不要盲目重新运行支付
该脚本不会保留过往支付的记录。EIP-3009 nonce 可防止同一份已签名的授权被重复结算,但每次新的 pay 运行都会创建一笔新的支付。如果 pay 返回“payment not accepted”,请在重试前检查结算输出,以及授权有效期是否已过期。对同一资源再运行一次就是再收一次费,x402 指南也提醒调用方要防范重复调用。
8. 也可以为 MCP 工具和 POST 端点付费
x402 并不局限于 GET 请求。传入 --method 和 --data,辅助脚本就会在附上支付信息的同时重放相同的请求体,因此付费的 POST(例如 AI 聊天补全端点)就像付费下载一样可以正常使用。
付费 MCP 工具使用 x402 v2 的 MCP 传输方式。未付费的工具调用会返回一个携带支付 challenge 的错误结果。agent 会运行 mcp-inspect 向你展示报价,在你批准后运行 mcp-sign --confirm,然后将已签名的 payload 放在 _meta["x402/payment"] 中重试工具调用。该脚本只负责签名,不会处理 MCP 通信,因此由 agent 自己的 MCP 会话来发送重试。如果重试时又返回了新的 challenge,说明支付没有结算,agent 会向你报告,而不是再次签名。
agent 通过 x402 购买什么
其中一种用途是付费数据:交易 agent 可以在行动前拉取信号或研究开发资料,再交给兑换或永续合约来执行。以下是几项接受 x402 的服务,详情来自其各自文档,截至 2026 年 10 月 27 日:
服务 | agent 可以购买的内容 | x402 定价 | 支付网络 |
Nansen | 链上分析:钱包画像、代币筛选器、Smart Money 资金流向 | 每次调用 0.01 美元(基础),0.05 美元(高级和 Smart Money) | Base、Monad 上的 USDC(仅限 x402 v2) |
Messari | 市场数据、网络指标、融资、新闻、信号、代币解锁、Messari AI | 每次请求 0.00–1.00 美元,视端点而定 | Base 上的 USDC |
Bitrefill | 覆盖 180 多个国家和地区的礼品卡、手机充值和 eSIM | 商品价格 | 通过 x402 支付 USDC,同时支持其他支付方式 |
每项服务都有各自的报价格式,因此请先让智能体运行 inspect,确认该报价是 Agent Wallet 可以签名的类型(技巧 6)。例如,Nansen 的 x402 端点接受 POST 请求,且仅支持 x402 v2。示例请求:“获取 Nansen 上以太坊的 Smart Money 净流量。如果返回 402,请告诉我费用,并在我确认后再支付。”如需发现更多 x402 服务,x402scan 是 x402 生态系统的浏览器。
Agent Wallet 在 x402 方面不支持的功能
通过转出限额来限制 x402 支出。目前,转出策略在计算 24 小时额度时不包含签名。
为每个 x402 报价签名。仅支持 Permit2 的报价、upto 报价以及非 EVM 报价都会被拒绝。
防止重复支付。目前还没有支付记录账本。重新运行 pay 会再次支付。
通过 x402 进行销售。该辅助工具仅支持买方。若要为其他智能体托管付费端点,需要另行设置。
作为 mm 命令运行。它是技能中的一个 Python 3 脚本,始终输出 JSON,因此 --toon 和 --format 不适用。
可以。只要安装了 metamask-agent-wallet skill 并且有 Python 3 环境,agent 就会检测 402 响应、向你展示报价,并在你批准后通过 mm wallet sign-typed-data 签署 EIP-3009 支付授权。它适用于 HTTP 端点,也适用于付费 MCP 工具。
这并不是用于支付本身。钱包会签署一份链下授权,由服务的 facilitator 提交链上结算。你需要在服务指定的网络上持有足够数量的所需代币(通常是 USDC)。
截至 2026 年 10 月 27 日,转出政策规定,Permit2 等签名不计入转出额度的计算,而 x402 授权属于签名。钱包服务仍会对签名请求进行威胁扫描,并且该 skill 会让 agent 在每笔付款前向你确认。
你可以通过这种方式配置 Agent Wallet。默认情况下,该 skill 会指示 agent 在每次 x402 支付时先征得你的确认。
如果授权在等待 2FA 期间已过期,请重新运行 pay 以签署新的值。如果服务器拒绝了该付款,请在重试之前检查结算输出,因为每次运行 pay 都会产生一笔新的付款。
Agent Wallet 适用于您自己运行的 AI agent,让它通过 mm CLI 和 skill 使用自己的钱包进行支付。Smart Accounts Kit 则适用于希望借助 ERC-7710 delegation(包括定期预算)在自有应用中构建 x402 支付功能的开发者。