关于 stipend.sh
stipend.sh 是运行在 Base 上的非托管 USDC 钱包,供 AI Agent 在代码强制的支出限制下收付款。密钥留在本机,限额和地址白名单等配置不能通过 MCP 工具修改。
主要功能
- 01查询地址、余额、收入和支出报告
- 02检查付款是否符合规则并发送 USDC
- 03执行单笔及每日限额
- 04支持一次性付款授权和新地址确认
- 05可启用绝对生效的地址白名单
适用场景
- 01让 AI Agent 在限额内支付 USDC
- 02付款前检查交易是否获准
- 03查看收入、支出和资金可用天数
MCP 相关
通过 `stipend mcp` 提供七个 stdio 工具,供 MCP 客户端启动并调用。所有工具共享同一策略检查;不提供读取私钥或修改限额、白名单的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
stipend.sh
AI Agent 自行安装的 Base 上非托管 USDC 钱包,支出限额在指令层之下强制执行。
pip install eth-account && curl -sL stipend.sh/install | sh
这是安装程序获取的软件包源代码。发布此代码,是为了让人们可以核验相关声明,而非盲目相信。
它提供一个 MCP(Model Context Protocol)服务 — stipend mcp — 通过标准输入输出公开七个工具,让 Agent 能通过已有的工具接口持有和支出资金。详见下文的 MCP 服务。
值得核验的主张
对于持有资金的 Agent 来说,真正值得警惕的故障不是密钥被盗,而是被说服签署了一笔交易。
几乎所有防御措施都存在于指令层——例如系统提示词要求“不要向未经验证的地址转账”。这不过是给模型的一条建议,和攻击它的文本共处于同一个上下文窗口中。
这里的限额不是建议,而是交易在获得签名之前必须经过的代码;任何上下文窗口中的措辞都无法触及这些限额。
从 stipend/policy.py 开始。 该文件约有 300 行,阐述了全部论据。
三项控制措施
| 控制措施 | 作用 |
|---|---|
| 单笔和每日限额 | 指令无法提高的上限 |
| 一次性授权 | 授权单笔付款——绑定收款人和金额、有有效期且只能使用一次——而不是提高限额 |
| 新收款地址确认 | 首次向任何从未付款过的地址付款,都需要确认,无论金额大小 |
第二项最容易被误解。为了支付一笔购买而提高限额,会削弱今后向所有人的每一笔付款,而这恰恰是攻击者想要的。应授权这笔付款,而非扩大权限。
第三项能阻止通过多笔低于阈值的小额付款来转走资金。攻击者的地址,顾名思义,就是一个你从未付款过的地址。
如果你启用了允许列表,它就是绝对规则。资金无法流向其他任何地方——无论有没有确认、有没有授权,也无论来自何处的指令。
MCP 服务
该钱包也是一个 Model Context Protocol(MCP)服务,因此 Agent 可以通过已有的工具接口使用它,而不必调用 shell 命令。
stipend mcp
它通过标准输入和标准输出使用 JSON-RPC 通信——即 MCP 标准输入输出传输。MCP 客户端会启动此进程;它不会监听任何端口,也不会向网络公开。
在客户端配置中,其形式如下:
{
"mcpServers": {
"stipend": {
"command": "stipend",
"args": ["mcp"]
}
}
}
工具
| 工具 | 作用 |
|---|---|
stipend_address | 钱包地址,无论你是否正在运行,其他人都可以向此地址转入资金 |
stipend_balance | 持有的 USDC、持有的原生代币、今日支出和每日限额 |
stipend_check | 此笔付款是否会获准?只作答,不会转出任何资金 |
stipend_pay | 发送 USDC,受下述所有限额约束 |
stipend_earnings | 从网络读取入账付款并记录 |
stipend_report | 按类别统计收入和支出,并显示可维持天数 |
stipend_recover | 查看有哪些事项尚未处理,以及每项应由谁负责 |
这些工具全部经过与命令行相同的 policy.check 门控,因此限额、允许列表和新收款地址确认都以相同方式生效。不存在绕过这些措施转移资金的途径。
提供 stipend_check,是为了让 Agent 在提出付款之前可以先询问“这笔付款会获准吗?”,从而将拒绝转化为明确答复,而非操作失败。
刻意不提供的功能
没有任何工具可以读取、导出或派生私钥。没有任何工具可以更改支出限额或允许列表。没有任何工具可以创建或覆盖钱包。
模型可能会在读取不可信文本时调用 MCP 工具,而提高限额正是攻击者会提出的要求——因此,工具根本不提供此功能。配置更改只能通过命令行进行,届时会有人工参与。
为什么不托管
每个注册表都希望有一个 URL,但我们不会发布。托管钱包服务意味着密钥存放在别人的机器上——也就是我们的机器上——而这个软件包的核心承诺就是不会如此。它会在密钥库旁运行,由同一用户运行,密钥绝不会转移。
运行自己的测试
不联网、不动用资金,也不会碰你的钱包:
python -m stipend selftest
219 项检查,涵盖地址验证、金额运算、所有策略分支、允许列表、每日限额、目标信任及其有效期、密钥库加密、ERC-20 编码、x402 要求选择、EIP-3009 签名、账本,以及遥测究竟会发送哪些内容。
我们更希望得到什么
有人来找出它的问题。
如果你能构造一种注入方式,绕过 policy.py 中的检查转移资金,请提交问题。我们宁愿从你这里听到,也不想从不那么客气的人那里听到。
坦诚说明局限
- 未经过独立审计。
- x402 互操作性已通过我们自己的端点验证,尚未通过第三方商家验证。
- 密钥在你的机器上生成,绝不会传输——这也意味着没人能帮你找回它,包括我们。
- 请保持余额较低。这是用于日常周转的资金,不是储蓄。
链接
- stipend.sh — 该网站会在同一 URL 下向 Agent 提供纯文本,向浏览器提供网页
- stipend.sh/skill.md — 为 Agent 编写
- stipend.sh/for-your-human — 为付款的人编写
- kina — 一种小型语言,本项目部分内容会读取和编写这种语言
许可证
Apache-2.0。请参阅 LICENSE。
由 Stipend 开发团队构建。澳大利亚 FelixTrade.ai Pty Ltd。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。