关于 clawpay
clawpay 是面向使用 Agent Wallet 的 Agent 的 stdio MCP 服务,提供 x402 支付与钱包操作。它涵盖支付、策略、代币、执行、信任和历史记录,并采用默认拒绝的支出控制及调用方管理的签名凭据。
主要功能
- 01部署钱包并查询信息
- 02x402 报价、支付与会话
- 03支出策略与预算检查
- 04代币查询、余额与转账
- 05兑换、跨链桥接与托管
- 06身份、声誉与交易历史
适用场景
- 01付款前检查 x402 条款
- 02设置 Agent 钱包支出限额
- 03转移代币或桥接 USDC
- 04查看钱包事件与 x402 结算
MCP 相关
它以 stdio MCP 服务运行,并将 Agent Wallet SDK 功能作为工具提供。签名密钥和运营方安全策略从服务的本地环境读取。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
11收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| token_id | string | 是 | 将拥有此钱包的 NFT 代币 ID(例如,"1") |
| factory_address | string | 否 | 工厂合约地址。默认使用 FACTORY_ADDRESS 环境变量。 |
| nft_contract_address | string | 否 | NFT 合约地址。默认使用 NFT_CONTRACT_ADDRESS 环境变量。 |
详细介绍
AgentPay MCP
AgentPay MCP 是一个用于 x402 支付和钱包操作的 stdio Model Context Protocol 服务。它将 Agent Wallet SDK 函数作为 MCP 工具提供,并从本地进程环境中加载由调用方控制的签名密钥。
当前 npm 包为 agentpay-mcp v5.0.0。
无需资金即可开始
检查已安装的命令,无需加载钱包凭据:
npx -y agentpay-mcp --version
npx -y agentpay-mcp --help
使用 AgentPay Wallet Starter 验证无资金情况下允许、需要审批和被阻止的策略结果。
MCP 客户端配置
钱包工具会读取以下环境变量:
| 变量 | 钱包工具是否必需 | 含义 |
|---|---|---|
AGENT_PRIVATE_KEY | 是 | 本地热钱包签名密钥 |
AGENT_WALLET_ADDRESS | 是 | 已部署的 AgentAccountV2 地址 |
CHAIN_ID | 否 | 8453 或 84532;默认为 Base 主网 |
RPC_URL | 否 | 调用方选择的 Base RPC 端点 |
FACTORY_ADDRESS | 用于部署 | 钱包工厂地址 |
NFT_CONTRACT_ADDRESS | 用于部署 | 绑定到钱包的代币合约 |
SESSION_TTL_SECONDS | 否 | 本地会话时长,以秒为单位 |
操作员安全变量。它们仅从服务环境中读取,无法通过 MCP 更改:
| 变量 | 默认值 | 含义 |
|---|---|---|
AGENTPAY_POLICY_DAILY_LIMIT_ETH | 未设置 | 操作员 24 小时滚动限额(ETH 等值) |
AGENTPAY_POLICY_PER_TX_CAP_ETH | 未设置 | 操作员单笔交易上限(ETH 等值) |
AGENTPAY_POLICY_ALLOWED_RECIPIENTS | 未设置 | 以逗号分隔的操作员收款方允许列表 |
AGENTPAY_ALLOW_UNPOLICED_SPEND | 关闭 | 1 允许在没有操作员策略的情况下转移价值,仅依赖链上限额 |
AGENTPAY_X402_MAX_PAYMENT | 未设置 | 叠加于每次调用 x402 上限之上的 USDC 限额;设置后会拒绝非 USDC 的 x402 支付 |
AGENTPAY_STATE_DIR | 未设置 | 用于存放 fsync'd 支出意图日志的目录;锁和带键结算会在重启后保留,并自动将日志压缩至其有效状态。该目录同一时间只能由一个进程持有(spend-intents.lock)。如果日志无法读取或 fsync'd,或者另一个正在运行的进程持有该目录,则会拒绝转移价值 |
AGENTPAY_ALLOWED_PRIVATE_HOSTS | 未设置 | 以逗号分隔的主机列表,允许向其发出站请求并访问其私有地址 |
AGENTPAY_ALLOW_PRIVATE_NETWORK | 关闭 | 仅用于开发:允许访问私有目标和使用纯 http |
如果未设置至少一个 AGENTPAY_POLICY_* 变量,且未设置
AGENTPAY_ALLOW_UNPOLICED_SPEND=1,所有会转移价值的工具都会拒绝支出。
MCP 配置示例:
{
"mcpServers": {
"agentpay": {
"command": "npx",
"args": ["-y", "agentpay-mcp"],
"env": {
"AGENT_PRIVATE_KEY": "<secret-reference-or-local-key>",
"AGENT_WALLET_ADDRESS": "0x<deployed-wallet-address>",
"CHAIN_ID": "84532",
"AGENTPAY_POLICY_PER_TX_CAP_ETH": "0.01",
"AGENTPAY_POLICY_DAILY_LIMIT_ETH": "0.1",
"AGENTPAY_X402_MAX_PAYMENT": "1",
"AGENTPAY_STATE_DIR": "<writable-private-directory>"
}
}
}
}
请勿提交真实的签名密钥。如果客户端或操作系统提供了密钥管理机制,请使用该机制。先在 Base Sepolia 上开始,再使用 Base 主网。
工具分组
src/index.ts 中的工具注册表提供以下分组:
| 分组 | 示例 |
|---|---|
| 钱包 | deploy_wallet、get_wallet_info、queue_approval |
| 支付 | send_payment、x402_quote、x402_pay、x402 会话工具 |
| 策略 | set_spend_policy、check_budget、OTel 预算工具 |
| 代币 | 查询、自定义代币注册、余额和转账 |
| 执行 | Swap、USDC 跨链桥和 mutual-stake 托管 |
| 信任 | ERC-8004 身份、信誉和 UAID 验证 |
| 历史记录 | 用于钱包合约事件的 get_transaction_history |
工具架构和处理程序位于 src/tools/ 下。
安全边界
这些边界比功能列表更重要:
- 服务会将
AGENT_PRIVATE_KEY读入本地 Node.js 进程,并使用 viem 签名。请保护该进程、环境和 MCP 客户端配置。 - 支出策略默认拒绝。操作员策略来自
AGENTPAY_POLICY_*环境变量,只加载一次,且无法通过 MCP 更改或清除。若未设置该策略,除非操作员设置AGENTPAY_ALLOW_UNPOLICED_SPEND=1,否则会拒绝资金转移。 set_spend_policy只能收紧策略。每次调用都会为其作用范围添加一层;任何提高限额、移除约束或扩大允许列表的请求都会被拒绝,且先前各层会保留其滚动窗口记账。放宽策略需要操作员重启。所有策略状态仍保存在进程内,重启后会重置。x402_pay和x402_session_start要求提供max_payment_eth和pay_to。资产始终会被绑定:默认使用链上的 USDC,除非asset指定其他资产;也可以绑定network。如果 402 指定了其他收款方、资产或网络,指定了零地址,或扣款金额(本金加 0.77% 协议费)超过上限,则会在任何钱包写入操作之前拒绝该请求。AGENTPAY_X402_MAX_PAYMENT是 USDC 上限;设置后会拒绝非 USDC 付款。请先使用x402_quote查看报价条款。- 如果付款已结算,但响应未送达——响应失败,或付款请求收到任何非 2xx 状态码——则对该主机(任何路径、端口或名称写法)以及该收款方(无论位于哪个主机)的所有新 x402 付款都会被锁定,直至操作员完成核对。锁定会在调用钱包之前写入,因此即使发生崩溃也不会丢失。
- 由调用方选择的出站请求(x402、报价、会话、OTel kill 回调)使用安全传输:仅允许
https(kill 回调仅在主机位于AGENTPAY_KILL_CALLBACK_ALLOWED_HOSTS时可使用http),拒绝私有、环回、链路本地和元数据目标,只解析一次 DNS,并将套接字固定到已验证的地址,不自动重定向,响应正文上限为 2 MiB(渲染后为 1 MiB)。 send_payment、send_token、swap_tokens、bridge_usdc、create_escrow、x402_pay和x402_session_start均在支出意图中运行。相同的重试请求会重放;idempotencyKey可区分金额相同的付款;广播后结果不明时,会锁定该意图且不设定时器。除非由AGENTPAY_STATE_DIR将锁定状态写入日志,否则锁定仅在进程内有效。请使用agentpay-mcp spend-intents list和resolve <id> settled|unsettled进行核对;这属于本地 CLI,而非 MCP 工具。<id>是list为每个意图打印的 shell 安全id:句柄。settled(资金已转移)会清除锁定,并永久停用带键意图的idempotencyKey;不带键的意图没有可停用的键,因此相同的新请求会成为一笔新付款(请使用idempotencyKey确保重试安全)。unsettled(资金未转移)会清除锁定,以便重试付款。 同一时间只能有一个进程使用某个状态目录:执行resolve前请先停止服务(服务运行时,list会显示只读快照),并为每个服务指定独立的AGENTPAY_STATE_DIR。idempotencyKey不得包含控制字符、不可见格式字符或换行分隔符;打印密钥时会进行转义,使其不会在 shell 中生效。send_payment从代币注册表或代币合约获取小数位数;若token_decimals不同,则会在签名前拒绝请求。- 仅当钱包所有者直接在
AgentAccountV2上配置限额时,链上限额才会生效。应用策略不会写入这些合约限额,只有在所有者密钥与 Agent 密钥分开保存时,超限交易才会成为人工审核关卡。 get_transaction_history会读取链上钱包事件;对于未限定范围的all查询,还会列出由此服务进程发起的 x402 结算(已付款响应的最终 URL,可能因重定向而不同于 402 发布方、方法、金额、代币、收款方、交易哈希、重放次数)。这些 x402 收据表示付款已广播(已返回交易哈希),并不表示收据已确认。收据仅保存在内存中,最多保存 256 条,重启后会丢失。在区块范围查询中不会列出这些收据。这不是 MCP 请求日志:它不会记录链上操作前被拒绝的尝试或只读调用。- 运行时钱包配置目前支持 Base 主网和 Base Sepolia。不支持的链 ID 会在
src/utils/client.ts中以安全失败方式处理。 - 兑换、跨链桥、托管和付款工具可能会转移资金并消耗 Gas。请使用受限金额并配合独立的钱包限额进行测试。
详细的控制映射和已知限制请参阅
docs/security-posture.md。
从 4.x 升级
v5.0.0 是一次有破坏性变更的安全版本。升级前:
- 设置运营方策略(
AGENTPAY_POLICY_*),或明确通过AGENTPAY_ALLOW_UNPOLICED_SPEND=1选择退出;否则所有支出都会被拒绝。 - 对每次
x402_pay和x402_session_start调用传入max_payment_eth和pay_to。先使用x402_quote查看条款。 - 不要再依赖
set_spend_policy来提高或清除限额。 - 将任何
http或私有网络 x402 端点迁移到https,或通过AGENTPAY_ALLOWED_PRIVATE_HOSTS(生产环境)或AGENTPAY_ALLOW_PRIVATE_NETWORK=1(仅限开发环境)允许该端点。 - 在长期运行的服务上设置
AGENTPAY_STATE_DIR。
docs/security-remediation-2026-10.md
将每项发现对应到其修复方案和测试。
技术证明索引
该仓库通过带版本的文档保存更深入的互操作性和买方安全证据:
docs/agentpay-buyer-flow-parity.md涵盖类型化支付错误和买方流程行为。docs/paid-mcp-gateway-hardening.md涵盖默认拒绝控制和配额范围。docs/agentpay-five-tool-parity-proof.md记录五工具一致性检查。docs/agentpay-escrow-reputation-boundary.md定义托管和信誉边界。docs/paid-mcp-proxy-discovery-readiness.md记录发现就绪证据。docs/x402-chain-neutral-gateway-profile.md定义打包的链无关配置。docs/x402-dynamic-paid-mcp-manifest-drift.md记录检查过时付费工具元数据的方法。docs/mcp-registry-listing-proof.md和llms.txt提供目录元数据。docs/smithery-paid-mcp-installation.md和examples/smithery-paid-mcp-installation说明打包后的 Smithery 路径,但不声称已有实时列表。docs/paid-provider-health-proof.md定义提供方健康状况证据。docs/hosted-x402-proxy-verification.md定义托管代理预检。docs/x402-native-vs-stripe-proxy.md区分本地支出控制与托管代理计费。docs/dependency-pin-policy.md定义支付关键软件包的发布门槛。
AgentPay 将 viem 精确固定在 2.57.4。
目录比较是针对 [email protected] 进行的;本 README 顶部的软件包版本为当前发行版。
验证干净检出
npm ci
npm run build
npm run typecheck
npm test
npm run lint
npm run security
npm run smoke:clean-install
CI 工作流与定期的每日审查和修复工作流彼此独立。 定期审查失败不代表产品测试结果,修复成功也不能替代 CI。
相关仓库
- Agent Wallet SDK 提供本服务使用的钱包和策略库。
- AgentPay Wallet Starter 提供无需资金的综合入门流程。
- NVIDIA NeMo Agent Toolkit Examples PR 17 是一个独立合并的集成示例。
支持与披露
- 通过 GitHub issue 队列提交产品缺陷。
- 通过
SECURITY.md报告安全问题。 - 贡献规则见
CONTRIBUTING.md。
License
MIT. See LICENSE.
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。