agentfeed-mezo
人工智能代理支付 AgentFeed 在Mezo的比特币支持的稳定币MUSD的电话中。
AgentFeed是一个实时的,为代理付费的加密数据API:清算,资金,价格,索拉纳交易前检查和语言任务,83条付费路线,MCP服务器和elizaOS插件,已经解决了真正的USDC。这个回购是允许购买相同数据的网关 穆德在梅佐:代理签署一个EIP-2612许可,网关将其在链上结算并支付gas,数据在同一个HTTP调用中返回。
- 网关: https://mezo.ochinimus.app (Mezo测试网,区块链31611)
- 已结清的付费电话: 67个电话,1.26百万美元,每一笔交易就上 级别的探险家. 完整的列表如下
evidence/paid-calls.csv,生活在/payments.csv. - 第二部分,访问和分发:代理不需要账户,不需要API密钥,不需要gas,只需要MUSD。
$ curl -i https://mezo.ochinimus.app/api/sol-price
HTTP/2 402
payment-required: eyJ4NDAyVmVyc2lvbiI6Mi... (base64 JSON: MUSD, eip155:31611, 0.01 MUSD, treasury, nonce)
五分钟后判断
步骤1到步骤3不需要钱包。
- 参见402挑战。
curl -s https://mezo.ochinimus.app/api/sol-price | head -40. 它将令牌命名为MUSD0x118917a4...Ac503),网络(eip155:31611)、魏价、财政部和hmac绑定的nonce。 - 看看真正的定居点。 开放
/stats和/payments.csv,然后单击任意transfer_tx_url. 资源管理器显示transferFrom从网关的结算者从代理钱包移动0.01到0.05 MUSD到库,以及匹配permit事务。 - 看一下舱单。
/.well-known/x402列出了8条票价为MUSD的路线。 - 你自己去拜访 (约3分钟,需要一个Mezo测试网钱包):
客户端打印状态、延迟、答案和资源管理器链接。git clone https://github.com/seekdaseek/agentfeed-mezo && cd agentfeed-mezo && npm install # 1. testnet BTC to your address: https://faucet.test.mezo.org (0.05 BTC) # 2. mint testnet MUSD by opening a trove on Mezo Borrow (about 0.042 BTC in, 1850 MUSD out): AGENT_PRIVATE_KEY=0x... TARGET_ICR_PCT=165 node scripts/fund-musd.mjs --send # 3. pay for data: AGENT_PRIVATE_KEY=0x... node src/client.js sol-price AGENT_PRIVATE_KEY=0x... node src/client.js liquidations limit=5 symbol=SOL AGENT_PRIVATE_KEY=0x... node src/client.js summarize url=https://mezo.org--scheme transfer用普通的MUSD转账支付,而不是许可证。 - 运行测试:
npm test(62次测试,不需要网络)。 - 对链条重新检查证据:
node scripts/verify-evidence.mjs从Mezo测试网读取公共分类账的每一行(接收状态,MUSD)Transfer从付款人到财政部,金额)和印刷品verifiedOnChain还有财政收支。
它是如何工作的
agent gateway (mezo.ochinimus.app) Mezo testnet AgentFeed
| GET /api/liquidations | | |
|------------------------------->| | |
| 402 + PAYMENT-REQUIRED | | |
|<-------------------------------| MUSD, 0.02, treasury, spender, nonce | |
| read nonces(agent) -------------------------------------------------------->| |
| sign Permit(agent -> settler, 0.02 MUSD, deadline) (off-chain, no gas) | |
| GET + PAYMENT-SIGNATURE | | |
|------------------------------->| verify: network, token, payTo, nonce, sig, | |
| | balance, eth_call permit() -------->| |
| | GET /api/liquidations (prepaid key) ---------------------------> |
| |<-------------------------------------------------- data ---------|
| | permit() + transferFrom(agent -> treasury) ->| (gateway pays gas) |
| 200 + data + explorer link | | |
|<-------------------------------| | |
顺序很重要:网关获取数据 之前 它解决了,所以如果AgentFeed关闭,代理永远不会收费,可以用相同的签名付款(upstream_unavailable, charged:false). 在一个好的回答之后失败的解决方案保留了数据。
为什么允许,而不是x402“确切”
x402挣值管理的都 exact 方案使用EIP-3009 transferWithAuthorization. MUSD不实现它。已检查部署的测试网令牌 0x118917a40FAF1CD7a13dB0Ef56C86De7973Ac503 (OpenZeppelin ERC20Permit, "Mezo USD",版本 "1"(18位小数):字节码有 permit 和 nonces 选择器和none transferWithAuthorization, receiveWithAuthorization, authorizationState. 所以网关在同一个402上定义了两种方案:
| 计划 | 代理 | 由 | 如何验证 |
|---|---|---|---|
permit (默认) | 签署EIP-2612 Permit(owner, settler, price, nonce, deadline) | 网关 | 签名从活域和链上nonce恢复,平衡读取, permit() 模拟与 eth_call,然后 permit + transferFrom 从设置键 |
transfer | 发送一个普通的MUSD transfer 对库,表示tx哈希加上签名的索赔 | 代理 | 接收成功,有足够的确认,比挑战更新,有MUSD Transfer 事件至少将价格发送到库中,并且索赔签名恢复到该转账的发送方(因此没有人可以索赔其他人的转账) |
Permit是默认值,因为它为代理提供了一次无gas的调用:代理唯一必须保持的是MUSD。
重放和滥用保护
每笔付款都被记录在sqlite中,并在第二次使用时被拒绝,在所有这些密钥下:签名哈希 (owner, permit nonce) 对,挑战nonce,和每个结算tx哈希(因此结算许可证) transferFrom 不能被重新呈现为 transfer 付款)。保留是原子性的,重新启动后仍然有效。现在的挑战是 issuedAt.expiresAt.random.hmac,一条路线,一个价格,在300年到期,许可证的截止日期可能不会超过它。每个所有者地址一次只有一个许可证在运行。拒绝超额付款,因此不会留下任何津贴。失败的付款永远不会调用AgentFeed。
路线
| 路线 | 每次呼叫的费用 | 什么 |
|---|---|---|
/api/sol-price | 0.01 | 溶胶/美元现货 |
/api/btc-price | 0.01 | BTC /美元现货 |
/api/liq-pulse | 0.01 | 现在清算的是什么 |
/api/funding-pulse | 0.01 | 最极端的犯罪资助率 |
/api/liquidations | 0.02 | 实况清算磁带(symbol, scope, limit, min_usd) |
/api/market-snapshot | 0.02 | 一次通话即可了解市场行情 |
/api/trade-context | 0.03 | 价格,资金和清算在一个呼叫 |
/api/summarize | 0.05 | 语言任务:总结 ?url= |
在转移呼叫之前,删除未知查询参数。 HEAD, POST 其余的都被拒绝了405,所以没有自由动词。
地址(Mezo测试网,链31611)
| 地址 | |
|---|---|
| 令牌相对应国家 | 0x118917a40FAF1CD7a13dB0Ef56C86De7973Ac503 |
| 库务署(接受国防开支) | 0xf01d65DBd1B946C48b7dB1f0A02AaBd021c89227 |
| 定居者(持证消费,付油钱) | 0xaB7323cB6aaB188D7Dca697496534BA6C95ddbC2 |
| Demo代理钱包 | 0x9691FedC701cD8bbDF4D0b06Dd7C9ABf2e9037B4 |
| Mezo Borrow(用于制造测试网MUSD) | 0xCdF7028ceAB81fA0C6971208e83fa7872994beE5 |
令牌地址来源: solidity/artifacts/deployments/matsnet/MUSD.json 在 mezo-org musd。这个 mainnet 和 ethereum 该repo列表中的部署文件夹 0xdD468A1DDc392dcdbEf6db6e34E89AA338F9F186和一个名为“Mezo USD / MUSD”的合同,18位小数,相同 permit 选择器,在基础主网上的那个地址的答案(由 eth_getCode 和 eth_call 反对 mainnet.base.org). 下面是第二波的目标。
支付交易样本
| 路线 | 计划 | MUSD | 解决(transferFrom /转移) | 允许tx |
|---|---|---|---|---|
liquidations | 许可证 | 0.02 | 0xeb5a798a…01972d | 0xe1c3029d…935ce6 |
summarize | 许可证 | 0.05 | 0xa5326990…590264 | 0xc7feba69…3b1c14 |
trade-context | 许可证 | 0.03 | 0xa7bfc89e…db27d0 | 0xf8a292bf…d9fdfd |
funding-pulse | 转移 | 0.01 | 0xf05aa01b…00de4e | 没有,代理人付了汽油费 |
那么,演示代理是如何获得其MUSD:水龙头BTC的呢 openTrove 在Mezo Borrow (0.042 BTC抵押品,ICR为165%,卖出1850万美元),同样的流量 scripts/fund-musd.mjs 自动化。
对于座席:客户端和MCP工具
什么都不安装:MCP客户端可以直接从npm运行服务器(在官方MCP注册表中列出为 io.github.seekdaseek/agentfeed-mezo):
{ "mcpServers": { "agentfeed-mezo": { "command": "npx", "args": ["-y", "@seekdaseek/agentfeed-mezo"],
"env": { "NETWORK": "base", "AGENT_PRIVATE_KEY": "0x...", "MAX_PRICE_MUSD": "0.10" } } } }
NETWORK 是 mezo-testnet (默认,测试MUSD), base 或者 mezo-mainnet (真正的)相对应国家。使用专用钱包,带有少量的MUSD余额:服务器每次呼叫签署一个许可证,并拒绝上述任何价格 MAX_PRICE_MUSD. 没有 AGENT_PRIVATE_KEY 服务器仍然启动并 list_routes (免费)。
工具: list_routes 和 call_route { route, params?, scheme? },它以MUSD支付并返回结算的数据和资源管理器链接。 node scripts/mcp-smoke.mjs 通过工作室从克隆驱动相同的服务器。
从克隆中,命令行客户端在没有MCP的情况下执行相同的操作:
AGENT_PRIVATE_KEY=0x... NETWORK=base node src/client.js <route> [key=value ...] [--scheme permit|transfer] [--n 5] [--pretty]
src/client.js 拒绝为另一个网络或令牌或以上的网络或令牌签名质疑 MAX_PRICE_MUSD 0.10(默认)。已注册的代理应该使用默认值 permit 方案,可阅读 GET /agents/<address> 首先是剩余预算。
它如何扩展AgentFeed
AgentFeed (x402.ochinimus.app, 83付费路线,MCP服务器上的官方注册表,elizaOS插件 @seekdaseek/plugin-agentfeed)已经在Solana, Base, Polygon, Arbitrum和Arc上使用了USDC,但这些轨道中的每一个都依赖于EIP-3009或SPL传输。MUSD是一种不同类型的令牌:ERC-20加上EIP-2612许可。这条通道增加了那条铁轨 无需接触生产服务器:它是一个独立的服务,从AgentFeed购买预付API密钥(价格的一半),并以1到5美分的价格在MUSD转售。中没有 /opt/agentfeed 已重新启动或编辑。
经营自己的公司
npm install && npm test
cat > .env <<'EOF2'
TREASURY_ADDRESS=0x... # receives the MUSD
SETTLER_PRIVATE_KEY=0x... # permit spender; needs a little testnet BTC for gas
CHALLENGE_SECRET=<random hex> # HMAC key for challenge nonces
UPSTREAM_KEY=afk_... # an AgentFeed prepaid key (x402.ochinimus.app/keys)
PUBLIC_URL=http://localhost:3034
EOF2
chmod 600 .env && npm start
可选: PORT, HOST, MEZO_RPC_URL, MUSD_ADDRESS, UPSTREAM_URL, DB_PATH, CHALLENGE_TTL_SEC, CONFIRMATIONS, DAILY_UPSTREAM_CAP (默认值 src/config.js). 作为PM2部署在这里 agentfeed-mezo 在它自己的Cloudflare隧道后面的3034端口。
测试
npm test 使用Node的内置运行器运行62个测试。52在假的链适配器和假的AgentFeed上运行真实的网关代码,具有真实的EIP-712和EIP-191签名;10开始 src/mcp.js 使用MCP SDK客户端对环回假网关(工具注释, list_routes, call_route 拒绝更高的价格 MAX_PRICE_MUSD错误的令牌或网络、不可达的网关、错误的参数以及任何工具输入模式中没有数组类型)。它们涵盖了两个方案的快乐路径,重播(相同的许可证,相同的挑战,相同的tx哈希,结算tx重新表示为转移),付款不足,付款过多,错误的令牌,错误的链(网络字段和为另一个链id签名的许可证),错误的收件人,错误的支出者,过期的许可证nonce,其他人的签名,过期的nonce,另一条路由的nonce, RPC down, AgentFeed down(清洁502,付款人未收费,恢复后相同的付款工作),结算失败,并发双重支出。mock只在这里使用;以上的付费通话证据都不是模拟的。
地位和诚实的界限
- 在代理付款后,有一笔付款被拒绝了:第一笔
transferscheme调用命中未索引收据的Mezo RPC节点并获得tx_not_found. 0.01百万美元作为无与伦比的灰尘留在宝库中(evidence/unclaimed.md). 网关现在重新尝试丢失的收据大约8秒,客户端重新尝试拒绝相同的付款;6transfer之后的呼叫都成功了。 - 来自多个节点的公共Mezo RPC应答和相同的接收可以在一次调用中读取为空,而在下一次调用中出现(已测量)。因此,门户网站的读者很少会拒绝一笔丰厚的报酬;拒绝从不把钱放在眼里
permit计划。 - Testnet。Mezo测试网上的MUSD没有美元价值;关键是,完整的支付路径与真正的合同和链背道而驰。
- 用于结算的燃气由网关的结算密钥支付,资金来自水龙头。在主网上,该费用必须在通话中定价或预先支付费用,参见第二波。
- 每个代理地址一张飞行许可证。需要并行调用的代理使用多个地址或
transfer计划。 - 网关使用一个预付密钥和每日上限调用AgentFeed (
DAILY_UPSTREAM_CAP(默认为5000次)。
第二波计划
- Mezo主机MUSD。 相同的代码与主网链id, RPC和token地址从Mezo文档;增加每个电话的煤气附加费。
- MUSD在基地。 MUSD已经在Base上进行交易,因此在Base上生活的代理可以在没有桥接的情况下付款。在402中添加Base网络
accepts,以及针对基本池的只读价格检查。 - 一个电报机器人,充值并为代理商花费100万美元。 一个人以MUSD为机器人持有的预算提供资金,设置每天的上限,机器人为其代理签署许可,因此交易机器人或eliza代理无需持有密钥即可获得数据。这是轨道2的分布面。
- 一、
permit基于每个座席的花费限额(一次签名,多次呼叫),以取消一次飞行限制。
已知的报告
- 萨德,GHSA-mrhx-c7xc-m3w5 (high):当没有长度限制的数组模式验证大量失败元素时耗尽内存;影响
< 4.6.6,在4.6.6补丁。这个repo是在zod 3.25.76上,它在2026年10月29日被依赖项扫描标记(扫描列出没有补丁版本;GitHub咨询数据库和npm auditDo list 4.6.6)。现在取决于 萨德4.6.7,当前版本,带有@modelcontextprotocol/sdk1.32.2(对等体范围为^3.25 || ^4.0)。npm audit --omit=dev报告0个漏洞和所有62个测试通过zod4.6.7。 - 与版本无关,从这个repo的输入无法访问易受攻击的路径:没有MCP工具输入模式包含数组(
list_routes需要什么;call_route接受一个字符串、一个可选的字符串到字符串记录和一个enum;test/mcp.test.js断言没有array,items或者prefixItems在JSON模式中),并且MCP服务器在用户自己的代理上通过studio本地运行。门户(src/server.js)不导入zold或MCP SDK;它解析自己的标头和查询字符串。 - 未验证:zod副本仍安装在网关中
node_modulesVPS上的值为3.25.76。没有网关代码导入它(从源代码读取,而不是在运行时测试),因此它被保留原样,而不是重新部署。
许可证
麻省理工学院,看到 许可证.