mcpField
P
presign-guard wallet

presign-guard wallet

远程服务
wallet.fizzl.eu金融数据01 天前更新

关于 presign-guard wallet

presign-guard wallet 是面向 AI Agent 的 MCP 钱包服务,可在设定预算内支付 x402、MPP API 费用并发送代币。它通过签名检查、超限审批和付款响应检查控制风险。

主要功能

  1. 01按交易和每日预算限制支出
  2. 02支付 x402 与 MPP API 费用
  3. 03发送 USDC、ETH、POL 和 BNB
  4. 04签名前检查交易与地址风险
  5. 05超限时通过 Telegram 或仪表板审批
  6. 06检查付费 API 响应中的注入内容

适用场景

  1. 01让 Agent 在预算内调用付费 API
  2. 02通过手机审批超出限额的支付
  3. 03检查外部文本是否包含提示词注入

MCP 相关

作为 MCP 服务向兼容客户端提供钱包状态、服务搜索、支付、转账、文本检查和暂停支出等工具。可连接本地运行的钱包,亦可使用远程连接器。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://wallet.fizzl.eu/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmpresign-guard-wallet-mcp0.29.0

工具

详细介绍

presign-guard-wallet-mcp

presign-guard-wallet-mcp MCP server on Glama

一个为 AI Agent 设有支出限额的钱包,以 MCP 服务的形式提供。将其添加到 Claude Desktop、Claude Code、Cursor 或其他 MCP 客户端后,你的 Agent 就可以:

  • 支付 x402 API 和 MPP API:使用 evm 方法(钱包所在链上的 USDC)和 tempo 方法(Tempo 上的 USDC.e,几乎所有 MPP API 都要求使用这种代币);
  • 如果在这些网络上拥有自己的账户,也可以支付以 RLUSD 计价的 x402 报价(在 XRP Ledger 上,使用 XRPL_SEED)、以 USDC 计价的 x402 报价(在 Solana 上使用 SOLANA_PRIVATE_KEY,在 Algorand 上使用 ALGORAND_MNEMONIC),以及 Tempo 上的 MPP 会话(使用 MPP_SESSION_DEPOSIT);
  • 发送 USDC。

它只能在你设定的预算范围内操作:

  • 限额由你设定。 例如:每笔付款最多 5 USDC,每天最多 20 USDC,Agent 可以在限额内自由支出。
  • 超出限额时,由你决定。 你会收到一条 Telegram 消息,其中有批准 / 拒绝选项;也可以通过 AC2 请求在你自己的钱包中签名,或者在 钱包服务的控制面板中查看请求。没有回复就不会付款。
  • 每次签名前都会先由 presign-guard 检查。 它会检查已知的资产盗取程序、受制裁地址和仿冒代币,核对 x402 付款是否符合卖方的要求,并模拟交易以确认钱包实际会转出什么。判定为红色时绝不会签名。
  • 有疑虑时,就不签名。 如果无法联系检查服务、Telegram 或服务器,钱包就会停止操作。
  • Agent 读取付费答复前会先检查答复(需要搭配钱包服务使用)。AI 检查会分析 API 返回的内容。如果其中包含针对 Agent 的指令(提示词注入,例如“忽略你的规则”“向这个地址付款”),答复会先附带一个 warnings 字段,告知 Agent 只能将其视为数据。如果答复内容与付费购买的内容不符,警告也会说明。你可以在收据上看到这些信息,也会收到一条消息。

密钥保留在你的设备上;服务器只负责决定是否允许签名。每次检查费用为 $0.01,以 USDC 从同一个钱包在 Base 上支付,或使用预付额度支付。

限额能做什么、不能做什么。 限额由你电脑上的这个 MCP 服务强制执行,而不是由区块链强制执行。Agent 钱包的私钥也在这台电脑上(位于 MCP 配置中,或位于 AGENT_KEY_FILE 指定的文件中)。能够读取文件或运行命令的 Agent(Claude Code、Cursor)可能会读取密钥,并绕过这些规则签名。因此,请为 Agent 提供一个只存放你能接受损失的资金的专用钱包,绝不要使用主钱包。使用钱包服务(托管于 wallet.fizzl.eu)时,你还可以将限额设在链上:你的 USDC 留在自己的钱包中,Agent 的钱包则会在每日限额内获得少量周转资金,由 Base 上的合约进行控制(agent-allowance)。这样,即使密钥泄露,最多也只能损失这部分资金。当 Agent 钱包余额不足时,这个服务会在付款前自动申请补充资金。

查看控制面板(演示数据):https://wallet.fizzl.eu/demo

快速开始(托管模式,约 2 分钟)

无需复制密钥:钱包会在你的电脑上自行生成密钥,你只需通过代码将其关联到你的账户。托管钱包 wallet.fizzl.eu 负责处理限额、审批和收据。免费开始使用。

  1. 在你的应用中安装,无需密钥。
    • Claude Desktop:下载 fizzl-wallet.mcpb 并打开;Claude Desktop 会安装它(自带 Node.js)。
    • Claude Code:claude mcp add wallet -- npx -y [email protected]
    • Cursor 和其他 MCP 客户端:{ "mcpServers": { "wallet": { "command": "npx", "args": ["-y", "[email protected]"] } } }
  2. 询问你的 Agent: “我的钱包状态如何?” 它会自行创建钱包(密钥会保存在 ~/.fizzl/agent-key 中,仅你可读取,绝不会发送到任何地方),并回复一个链接和一个 10 分钟内有效的代码。
  3. 打开链接,使用电子邮件、通行密钥、Xaman 或你的钱包登录 wallet.fizzl.eu, 然后输入代码。 为 Agent 命名。钱包会自动为钱包服务获取密钥;无需重启。
  4. 向 Agent 的钱包存入几美元的 USDC(仪表板上有相应按钮)。大多数调用的费用不超过 1 美分。然后询问类似 “找一个天气 API 并获取阿姆斯特丹的天气预报” 这样的问题。它会找到付费 API,在你的限额内付款,并向你显示收据。

然后在仪表板上连接 Telegram,以便在金额超过限额时通过手机审批;再点击 测试我的设置,查看还有哪些设置尚未完成。

更想自己粘贴密钥?在仪表板中,依次选择 Agents → Add agent,即可查看已填入密钥、适用于你应用的设置。更想自己运行所有内容?请参阅下方的设置。

在 ChatGPT、网页版或手机上的 Claude,或 Grok 中使用

这些应用无法运行本地 MCP 服务,因此会改用远程连接器:添加自定义连接器,URL 为 https://wallet.fizzl.eu/mcp,然后登录你的 Fizzl 钱包。应用随后可以搜索付费 API 并发起付款请求,但不会自行付款:每笔付款都需要等待你在自己的钱包中签名(Base 或 Solana 上的 USDC,或 Xaman 中的 RLUSD)。各应用的操作步骤:https://wallet.fizzl.eu/connector

工具

工具功能
wallet_status地址、余额、限额、今日剩余额度,以及审批机制
find_services在公开的 x402 目录(Coinbase 的 x402 Bazaar)中搜索此钱包可支付的付费 API(在其链上使用 USDC,且价格不超过上限),并按匹配度从高到低排序。使用钱包服务时,服务会按含义搜索,优先列出 x402 Doctor 观察到连续多日有收款记录的卖家,并展示每个结果的交易记录。如果其中有卖家的费用为 $0.01 或更低,则会将 Fizzl Buy 作为额外选项列在首位($0.02,Fizzl 自有服务):一次调用即可选择卖家、付款并检查回复
pay_x402调用返回 402 Payment Required 的 API,使用 USDC 付款并返回响应(每次调用都有价格上限)。支持 x402,以及通过 evm 方法使用钱包所在链上的 USDC 支付的 MPP (Machine Payments Protocol) 费用:使用相同的 EIP-3009 签名,由 presign-guard 检查并计入你的限额。在 Tempo 上(方法 tempo),钱包会从自身在该网络上的地址发送 USDC.e transferWithMemo,并交出交易哈希;presign-guard 不覆盖 Tempo,因此 guard-wallet 会检查这是否正是该笔转账,并将其计入你的 USDC 限额。当 API 提供多种方式时,顺序为:x402、MPP evm、Tempo
send_usdc向某个地址发送 USDC
send_native向某个地址发送 ETH / POL / BNB
check_text在根据 Agent 未编写的文本采取行动之前(例如网页、电子邮件、工具结果、API 回复或另一个 Agent 的消息),检查其中是否存在提示词注入陷阱。presign-guard 的检查会给出绿色、橙色或红色结果。判定免费(文本最多 8,000 个字符,每小时 10 次);detailed: true 会从钱包支付 $0.01(计入你的限额),以获取原因代码和概率
pause_spending发现异常时,Agent 会自行停止;在你重启或恢复之前,不会签名

**不会重复付款。**已签名的 x402 付款(EIP-3009 授权)在过期前都可以由卖家收取,即使 API 返回错误或再次提出付款要求(可能还会使用另一个 payTo)。因此,当付费调用未能正常返回时,钱包会向链上的 USDC 查询该笔付款是否已收取(authorizationState),并在结果中说明(charge,并先显示警告)。在第一笔付款被使用或过期之前,以及付款已收取但未收到回复后的 1 小时内,系统会拒绝向同一端点再次付款,因此重试不会导致重复付款。

钱包只会为这些工具所需的操作签名:付款签名和转账。无论卖家、网页或提示词如何要求,它都不会签署 EIP-7702 授权(将钱包的代码交给合约,而“sweeper”清空钱包就是通过这种方式实现的)。

设置

  1. 为 Agent 单独创建一个钱包。 只放入它可以花费的资金:少量 Base 上的 USDC,以及少量 ETH 用于支付 Gas(如果它要发送转账)。切勿使用你的主钱包。
  2. 可选:通过手机审批。
    • 使用 @BotFather 创建一个机器人,并向它发送 /start。
    • 从 @userinfobot 获取你的聊天 ID。
  3. 将它添加到 MCP 客户端。 对于 Claude Desktop:依次打开“设置” → “开发者” → “编辑配置”,即可打开 claude_desktop_config.json(Mac 上位于 ~/Library/Application Support/Claude/,Windows 上位于 %APPDATA%\Claude\)。将以下内容放入其中:
{
  "mcpServers": {
    "wallet": {
      "command": "npx",
      "args": ["-y", "[email protected]"],
      "env": {
        "AGENT_KEY": "0x…the agent wallet's private key…",
        "LIMIT_USDC_PER_TX": "5",
        "LIMIT_USDC_PER_DAY": "20",
        "TELEGRAM_BOT_TOKEN": "123456:ABC…",
        "TELEGRAM_CHAT_ID": "123456789"
      }
    }
  }
}

不想把密钥放在该文件中?将密钥放入只有你能读取的文件中,并设置 "AGENT_KEY_FILE": "/full/path/to/that/file",以替代 AGENT_KEY。

对于 Claude Code,密钥会在提示时输入到文件中(不会显示,也不会出现在 shell 历史记录或 Claude 的配置中):

mkdir -p ~/.fizzl && (umask 077; printf 'Agent wallet key: '; stty -echo; read -r k; stty echo; echo; printf '%s\n' "$k" > ~/.fizzl/agent-key)
claude mcp add wallet -e AGENT_KEY_FILE=$HOME/.fizzl/agent-key -e LIMIT_USDC_PER_TX=5 -e LIMIT_USDC_PER_DAY=20 -- npx -y [email protected]

固定版本(@0.29.0),如上所示:如果不指定版本,npx -y 会在每次启动时获取最新版本,而该代码可以读取密钥。发布版本通过 GitHub Actions 发布,并带有 npm provenance;npm audit signatures 会对此进行验证。

然后向你的 Agent 提出请求,例如:“检查我的钱包,然后获取 https://ichimoku-signal.fizzl.eu/signal/BTC-USDT 上的 BTC 信号”。

或者让它自行查找服务:“找一个价格低于 $0.10 的比特币趋势信号付费 API,并购买一次”。Agent 会使用 find_services 搜索 x402 目录,选择一项服务,并使用 pay_x402 在你的限额内付款。

所有 Agent 共用一个预算

运行 钱包服务,并在其控制面板上创建一个 Agent 密钥。它提供:

  • 所有 Agent 共用一条价格规则和一个每日预算;
  • 在控制面板和 Telegram 上审批;
  • 活动日志。

然后使用以下变量替代 LIMIT_* 和 TELEGRAM_*:

"env": {
  "AGENT_KEY": "0x…",
  "WALLET_SERVER_URL": "https://your-wallet-server.example",
  "WALLET_SERVER_KEY": "awk_…"
}

配置

变量
AGENT_KEYAgent 自有钱包的私钥(64 个十六进制字符,可带或不带 0x)。如果未设置,钱包会通过代码关联:它会自行生成密钥,每个工具都会返回一个代码,供你在钱包服务的控制面板中输入
AGENT_KEY_FILE用于替代 AGENT_KEY:存放密钥的文件路径(支持 ~/),这样密钥既不会出现在客户端配置中,也不会留在 shell 历史记录中。请确保只有你能读取此文件(chmod 600);否则服务端会发出警告。XRPL_SEED_FILE、ALGORAND_MNEMONIC_FILE 和 SOLANA_PRIVATE_KEY_FILE 也同样适用
LIMIT_USDC_PER_TX、LIMIT_USDC_PER_DAYUSDC 限额(付款和转账合并计算)。必须设置限额或使用钱包服务
LIMIT_NATIVE_PER_TX、LIMIT_NATIVE_PER_DAY原生币限额;如果未设置,发送原生币需要审批
ALLOW_LIST可选:仅允许向这些收款方、支出方和合约操作,使用逗号分隔(0x、XRPL r… 或 Algorand 地址,逐一检查);向其他对象付款或签名需要你的审批,就像超过限额的金额一样。使用钱包服务时,请在那里设置允许列表
TELEGRAM_BOT_TOKEN、TELEGRAM_CHAT_ID通过 Telegram 进行审批;如果未设置这些变量(或 AC2),任何超过限额的操作都会被拒绝
AC2_OWNER用于替代 Telegram:通过 AC2 使用你自己的钱包签名进行审批(Algorand Foundation 为 Agent 向所有者请求审批而设的协议)。填写你的 Algorand 地址:只有该地址的签名才能批准,且签名后的审批会与付款一同保存。需要在同一台计算机上运行 AC2 服务(ac2-cli),并与你的钱包配对(ac2 pair);如果服务未运行,任何超过限额的操作都不会签名。AC2_APPROVALS=on 会改用已配对钱包的地址。如果服务的 socket 不在 ~/.ac2/ac2d.sock,请设置 AC2_DAEMON_SOCKET
WALLET_SERVER_URL、WALLET_SERVER_KEY使用钱包服务替代上述设置
FIZZL_DIR未设置 AGENT_KEY 时:钱包存放 agent-key 和(关联后)wallet-server.json 的位置(默认为 ~/.fizzl)。如果在一台计算机上运行多个 Agent,请为每个 Agent 使用单独的目录
LINKINGoff:未设置 AGENT_KEY 时,不通过代码关联;服务端会以设置模式启动(列出其工具,并说明如何为每个工具添加密钥)
CHAINbase(默认)、ethereum、optimism、arbitrum、polygon 或 bsc
MAX_PAYMENT_USD单次 pay_x402 调用可产生的最高费用(默认为 1);这是限额之外的额外上限
X402_DISCOVERY_URLx402 目录,find_services 会在其中搜索(默认为 Coinbase 的 Bazaar discovery API)
PRESIGN_CREDIT_KEY使用预付额度支付 $0.01 的检查费用(pgc_…)
MANDATE / MANDATE_FILE可选:所有者签署的支出授权(x402 authority 草案),格式为 JSON { mandate, alg: "Ed25519", sig },或指向该授权的文件路径。之后,x402 付款会在此授权下进行(nonce 会携带其绑定信息),presign-guard 会拒绝任何超出授权范围的付款(超过 perPayment 或 cap、收款方或代币不同、已过期)。wallet_status 会显示此授权。使用钱包服务且未设置 MANDATE 时,会使用所有者在控制面板中为此 Agent 设置的授权(从服务端获取;服务端也会保存累计金额)
RPC_URL你为该链使用的 RPC
TEMPO设置为 off 可禁止在 Tempo 上付款(默认开启:MPP tempo 费用使用 Tempo 上的 USDC.e 支付,来自同一地址;请在该地址存入一些 USDC.e,它也会支付约 $0.001 的费用)
TEMPO_CHAIN4217(Tempo,默认)或 42431(Moderato 测试网,使用 pathUSD 付款)
TEMPO_RPC_URL你自己的 Tempo RPC(默认为 https://rpc.tempo.xyz)
XRPL_SEED可选:Agent 自有 XRP Ledger 账户的种子(s…,单独账户,仅存入允许其支出的资金)。启用后,可在 XRP Ledger 上使用 RLUSD 支付 x402 报价,包括通过 t54 的 facilitator(XRPL AI Hub)进行支付。只会支付 Ripple 发行的 RLUSD,绝不会支付 XRP;此类付款计入 USDC 限额,每笔 Payment 都会先由 presign-guard 检查;如果某个 API 同时提供两种付款方式,会优先使用你链上的 USDC。账户需要有 RLUSD 信任线、RLUSD,以及少量用于支付费用的 XRP。授权模式下不会使用
SOLANA_PRIVATE_KEY可选:Agent 自有 Solana 账户(以 base58 编码的密钥,如钱包导出格式,或 solana-keygen 文件中的字节数组;单独账户,仅存入允许其支出的资金)。启用后,可在 Solana 上使用 USDC 支付 x402 报价:只会对 Agent 向卖方转账 USDC 的交易签名(无需 SOL,因为卖方的 facilitator 会支付网络费用);签名前,presign-guard 会检查交易(指令和模拟结果);此类付款计入 USDC 限额。如果某个 API 同时提供两种付款方式,会优先使用你链上的 USDC。授权模式下不会使用。需要 presign-guard-wallet 0.16+
SOLANA_NETWORKmainnet(默认)或 devnet
SOLANA_RPC_URL你自己的 Solana RPC(默认为公共 mainnet 或 devnet 节点)
ALGORAND_MNEMONIC可选:Agent 自有 Algorand 账户(25 个单词的助记词;单独账户,仅存入允许其支出的资金)。启用后,可在 Algorand 上使用 USDC 支付 x402 报价:只会对 Agent 向卖方转账 USDC 的交易签名(绝不使用 ALGO,也不会执行关闭或重新设钥操作);卖方的 facilitator 会支付网络费用;此类付款计入 USDC 限额。如果某个 API 同时提供两种付款方式,会优先使用你链上的 USDC。账户必须已选择加入 USDC(ASA 31566704)。授权模式下不会使用。需要 presign-guard-wallet 0.12+
ALGORAND_NETWORKmainnet(默认)或 testnet
ALGORAND_ALGOD_URL你自己的 algod 节点(默认为 AlgoNode 的免费节点)
MPP_SESSION_DEPOSIT可选:启用在 Tempo 上支付 MPP 会话(例如 presign-guard):首次调用某项服务时,会使用此存款金额(USDC.e)开通支付通道,之后每次调用都使用签名凭证,不会为每次调用单独发起交易;存款用完后,会按相同金额补充。每笔存款在签名时计入 USDC 限额;凭证只能支出已存入的金额。只要 API 提供会话,就会使用此功能。close_sessions 会关闭通道并退回未花完的存款。需要 presign-guard-wallet 0.11+
MPP_SESSION_FILE保存重启后仍需保留的未关闭通道的位置(默认为 ~/.presign-guard-wallet/mpp-sessions.json)
XRPL_NETWORKmainnet(默认)或 testnet
XRPL_WS_URL你自己的 XRPL 节点(默认为 wss://xrplcluster.com)
AGENT_LABELTelegram 和 AC2 审批请求中显示的名称(默认为 mcp-agent)
一个 Telegram 机器人一次只能服务一个正在运行的服务,并且不能设置 webhook。要让一个机器人运行多个 Agent,请使用钱包服务。
使用代码关联

如果没有 AGENT_KEY(或 AGENT_KEY_FILE),钱包会自行完成设置:

  1. 首次调用工具时,钱包会在 ~/.fizzl/agent-key(或 FIZZL_DIR)中生成 Agent 钱包密钥,该密钥只有你可以读取。如果那里已有密钥,则会使用现有密钥。
  2. 钱包会仅凭该钱包的地址向钱包服务(WALLET_SERVER_URL,默认为 https://wallet.fizzl.eu)申请代码。输入代码之前,每个工具都会返回关联链接和代码。
  3. 登录控制面板后,输入代码并为 Agent 命名。系统会自动填入 Agent 的地址。
  4. 钱包会使用只有它持有的秘密令牌进行轮询,只向钱包服务获取一次密钥,将其保存在密钥旁边的 wallet-server.json 中,之后无需重启即可正常工作。下次启动时,它会读取这两个文件。

没有该令牌,单凭代码毫无用处;代码和令牌的有效期都为 10 分钟。要在控制面板中移除 Agent,或将其关联到另一个账户?删除 wallet-server.json,然后再次查询钱包状态。

收据

每笔付款都会附带付款用途:pay_x402 的 URL,以及 Agent 提供的 reason(如果有)。使用钱包服务时,这些信息会显示在每笔付款的收据上,还包括:

  • 金额和收款方;
  • presign-guard 的签名判定;
  • 批准记录;
  • x402 结算信息;
  • Agent 收到的返回内容:API 的响应(最多 16,000 个字符),以纯文本形式显示在收据上。

Telegram 批准请求也会说明付款用途。请在演示中查看收据:点击“Purchases”下方的购买记录。

拒绝操作时

工具会返回 Agent 可读取并转告你的错误。例如:

  • Not done (over_limit): 8 USDC is over the limit of 5 per transaction (denied by the owner);
  • Not done (red): not signed: red (known_drainer)。
  • Not done (orange): not signed: orange (SIMULATION_FAILS):模拟显示交易会失败,因此不会发送。

另有提供

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。