pons-mcp
ponscli
一个非官方的命令行界面,用于 Robinhood Chain(链 ID 4663)上的 Pons 启动板,专为开发者和代理构建。与 Pons 或 Robinhood 无关;它读取公共链上的公共合约。
默认只读。 CLI 运行时永远不会接触私钥。签名是显式选择加入的,因此代理不会意外花费。
处处结构化输出。 每个命令都支持
--json,当 stdout 不是终端时自动启用。错误也是结构化的,并带有稳定的退出码。协议值从链上读取。 费用、税收窗口和批准的配对代币列表都是实时查询的,绝不硬编码。链上值与合约源码不同。
两级 RPC。 免费端点在 Tier 1 中轮询;付费端点在 Tier 2 中,仅在 Tier 1 完全耗尽后才使用。没有付费凭据时,批量工作会降级,而不是将中断变成账单。
两个二进制文件。
pons供人使用,pons-mcp供模型使用,基于同一核心,因此代理获得的价格与 CLI 打印的价格一致。
安装
npm install -g ponscli
pons --version或者无需安装任何东西。包名是 ponscli,二进制文件是
pons,所以 npx 必须指定要运行哪一个:
npx -p ponscli pons info 0x44D6…20f4两个 Node 版本很重要,而且它们不是同一个版本。 CLI 运行在
20.11 或更高版本上,CI 每次推送时都会通过在该确切版本上安装打包的 tarball 来检查。构建需要 20.19 或更高版本,因为 linter 的依赖树要求如此。从克隆中,npm install 在安装过程中构建,npm run dev -- <command> 从源码运行。
Related MCP server: r0x-os
快速开始
读取不需要密钥、钱包或配置。
pons info 0x44D6…20f4 # price, reserves, graduation phase, live snipe tax
pons pairs # every quote asset a launch may be priced in
pons watch 0x44D6…20f4 # follow one launch's trades as they happen
pons tx 0x2e8d…f58e # receipt, decoded logs, and why a failure failed
pons doctor # probe every RPC endpoint with real calls交易需要密钥。除非你明确要求,否则不会签署任何内容。
pons wallet create # generate a key into an encrypted keystore
pons buy 0x44D6…20f4 0.05 # price it, simulate it, print it. Nothing is sent
pons buy 0x44D6…20f4 0.05 --dry-run # the same, said explicitly
pons buy 0x44D6…20f4 0.05 --confirm # sign and broadcast
pons sell 0x44D6…20f4 50% --slippage 200管道输出时一切都是机器可读的,这是默认行为:
pons info 0x44D6…20f4 | jq .graduation命令
完整参考,包括每个命令涉及的合约:docs/commands.md。
读取,无需密钥
| 价格、供应量、毕业进度、费用、实时狙击税 |
| 批准的报价资产,按 Pons 客户端 渲染的顺序排列 |
| 曲线交易、回购和毕业,带游标跟踪 |
| 收据、解码日志,以及失败背后的回滚原因 |
交易,需要 RPC 和密钥
| 在代币交易的任何场所买入 |
| 在相同场所卖出 |
| 完成已筹集阈值的曲线。任何人都可以调用此命令 |
启动
| 创建代币。默认 V2 |
费用
| 托管中持有的 V2 创建者或协议费用 |
| 锁定器持有的 V1 仓位费用 |
| V2 回购金库 |
钱包和设置
| 密钥管理 |
| 持仓 |
| 花费 |
| 配置,以及每个值的来源 |
| 端点健康,使用 CLI 实际进行的调用探测 |
两代
Pons 通过两个工厂启动了代币,两者都受支持。你无需指定是哪一个:两个注册表都会被询问,答案会决定之后的一切。
V1 | V2 | |
场所 | 从第一个区块开始的 Uniswap V3 池 | 债券曲线,毕业到 Uniswap V4 |
报价资产 | WETH | ETH,或 23 个批准的代币之一 |
开盘保护 | 钱包和交易上限,持续两个区块 | 狙击税,99% 在三秒内衰减 |
流动性 | 永久锁定;只有其费用可以取出 | 毕业时注入池中 |
费用 |
|
|
新启动 | 已关闭 | 开放 |
V1 的工厂已退役。 launchEnabled() 自 2026-08-12 起为 false,设置它的交易是工厂最后发出的事件;此后没有地址被列入白名单,因此 pons launch --generation v1 在构建任何内容之前拒绝。其代币是另一回事。数千个仍持有流动性,一个四十池样本在不到六天内看到 223 次交换,这就是为什么完全支持读取和交易它们。
交易
每个写入操作首先构建一个 Plan:它将发送什么、发送给谁、期望返回什么,以及值得警告什么。同一个 Plan 被模拟和签名,因此三者不会偏离。
模式 | 发生什么 |
(无标志) | 构建计划,使用余额覆盖对实时状态进行模拟,并打印两者。不签名也不发送 |
| 相同的工作,明确要求:payload 中的 |
| 发出 calldata 和 value 供他人签名。唯一不模拟的模式 |
| 签名并广播 |
四个值得了解的行为:
场所不是你必须做出的选择。 启动记录说明了代币在哪里交易。
--route curve|v4|v3覆盖该答案,而不是搜索一个。接受时下限是固定的。 计划在广播前立即从实时状态重建,你接受的下限被带入重建,而不是从新价格重新计算。交易不能低于你批准的界限签名,如果价格已超过它,则不会发送任何内容。
在阈值处卖出曲线会被重定向,而不是失败。 曲线一旦筹集足够就停止交易,
pons graduate <token>是任何人都可以调用的。V1 卖出会为你解包。 V1 池持有 WETH 而不是 ETH,因此卖出会将收益留在路由器并在同一交易中解包。以明显方式卖出会有效并给你 WETH。
启动
pons launch --name "My Token" --symbol MINE --desc "..." # plan it and simulate it. Nothing is sent
pons launch --name "My Token" --symbol MINE --dry-run # the same, said explicitly
pons launch --name "My Token" --symbol MINE \
--pair USDG --creator-tax 250 --dev-buy 100 --confirm # launch, quoted in USDG启动是这里唯一无法撤销的事情。在构建交易之前,命令会打印你承诺的全部内容:代币将落地的地址、供应量、毕业地点、费用分配,以及狙击税将做什么。它还会在本地检查工厂会在链上拒绝的所有内容。
地址在发送前已知。 两代都使用你选择的盐通过 CREATE2 部署,因此
pons launch提前打印代币和曲线地址,并拒绝已被占用的盐。--salt接受原始 32 字节值,因此挖矿的虚荣地址有效。条款被固定。
previewLaunchEconomics返回一个摘要,涵盖供应量、曲线费用、池的费用层级和协议的费用分配,它随启动一起传递。如果协议所有者在你的交易进行中更改其中任何一项,启动会回滚,而不是悄悄重新定价。--dev-buy是原子的,而且必须如此。 V2 工厂要求恰好是启动费用,不多不少,因此开盘买入不能随行;买入通过启动板自己的路由器在同一交易中进行。没有它的启动在这条链上两个区块内就被买光了。--buyback花费你,而不是持有者。 金库完全由你自己的费用份额资助,并在五年内释放,与协议分成。它不是持有者分配,计划将其作为警告而不是脚注说明。
pons pairs 列出启动可能定价的资产:原生 ETH 加上二十三个批准的代币,它们是代币化股票、两个指数基金和一个稳定币。它们按 Pons 创建页面 渲染的顺序返回,因此两者逐行一致。
安全
默认只读。 没有
--confirm的命令不会签署任何内容。四种执行模式中有三种不花费任何费用,除--unsigned外,每一种都首先针对已部署的合约验证调用,而账户不持有资金。密钥库是 scrypt + AES-256-GCM,仅所有者可写。密码来自隐藏提示或
PONS_PASSWORD;要导入的密钥来自PONS_PRIVATE_KEY。两者都不是标志。 参数在进程表中可见并进入 shell 历史。没有接受其中任何一个的标志,
pons config list在人们可能寻找的地方说明了这一点。凭据永远不会到达日志行。 付费端点在其 URL 中携带密钥,错误消息嵌入 URL,因此 URL 在抛出的错误中被掩码,而不仅仅是在格式化输出中。
MCP 服务器无法签名。 它从不加载密钥库,也从不广播。参见
docs/agents.md。原生转账使用固定的 100,000 gas 限制签名。 Nitro 从交易自身的限制中收取 L1 发布成本,而
eth_estimateGas不会说明这一点;在 21,000 时,当 L1 便宜时转账有效,当不便宜时间歇性失败。
发现可能让人损失资金的问题?请私下报告。SECURITY.md 说明了如何报告、范围是什么,以及设计保证什么。
配置
值通过阶梯解析:标志 > 环境 > 配置文件 > 默认值。pons config list 会打印解析后的值及其来源层级,因此一个令人意外的设置只需一条命令即可解释。
配置文件是位于 $XDG_CONFIG_HOME/ponscli/config.json 的扁平 JSON(回退到 ~/.config/ponscli/config.json),仅所有者可写。
Key | Environment | Default |
|
| 未设置。优先尝试你自己的节点 |
|
| 官方和 nodeflare 公共端点 |
|
| 未设置,这会禁用付费层级 |
|
|
|
|
|
|
|
|
|
|
| 空 |
|
| 当 stdout 不是 TTY 时开启 |
|
|
|
|
|
|
|
| 未设置 |
|
|
|
PONS_PASSWORD 和 PONS_PRIVATE_KEY 从环境变量中读取,但故意不是配置键:两者都不应出现在 config list 打印的文件中,也不应出现在用户粘贴到问题报告中的内容里。
架构
完整文档,包含每个决策及其背后的测量,位于 docs/architecture/ponscli.md。简要概述:
src/core/ business logic, framework-free
src/commands/ thin CLI wiring
src/mcp/ the MCP server, also thin
src/chain/ the RPC waterfall
src/abi/ generated and committed两个前端都是 src/core/ 的壳。这就是为什么 pons-mcp 是包装器而不是第二个实现。
请求如何路由
第 1 层是对免费端点的轮询;第 2 层是付费端点,仅在尝试过所有第 1 层候选之后才会访问。每条规则都来自针对该链自身端点的测量,而不是通用的重试策略。日常最重要的规则如下:
回滚是答案,不是失败。 它会直接返回给你,而不是在每个端点上重试,然后升级到付费层级。
速率限制会将端点暂停 30 秒,而不是一小时。 免费端点是令牌桶;长时间暂停比限流本身损失更多的可用性。
写入从不轮询。 从一个节点获取的 nonce 广播到另一个节点会导致
nonce too low,因此交易固定使用单个端点。eth_chainId不是健康检查。 某个公共端点响应它比其他端点都快,但随后拒绝eth_call。pons doctor正是因为这个原因才使用真实调用进行探测。
ABI
src/abi/ 是生成并提交的,因此 CLI 可以离线工作,接口变更会显示为可审查的差异。
npm run abi:fetch # regenerate from Sourcify, falling back to Blockscout
npm run abi:check # fail if the committed files have drifted每个文件都记录了其 ABI 的来源以及匹配是如何证明的。由于合约不同,有四种来源类别:
class | example | how it is proven |
在其地址上已验证 |
| Sourcify 自身的字节码匹配 |
在每个链上部署相同 | Permit2 | 在 Base 上验证;每个选择器都存在于 Robinhood 的字节码中 |
每次启动部署一次,未在任何地方验证 | V2 曲线和代币 | 从工厂的已验证标准 JSON 输入编译,与其不可变部分之外的实时实例逐字节匹配 |
多次部署,部分已验证 | V3 池、V1 的代币 | 一个已验证实例,通过与第二个独立选择的实例对比证明其通用性 |
有一个文件是手写的:erc20Errors.ts,包含第三方报价资产回滚时的错误。报价资产是别人的代币,没有单一的 ABI 覆盖二十三个已批准的代币,如果没有这些,USDG 启动时最常见的失败会打印为四个无法解释的字节。
面向代理
完整指南:docs/agents.md。
pons-mcp 作为第二个二进制文件随此包一起发布,并调用与 CLI 相同的 core/。
// claude_desktop_config.json, .mcp.json, or your client's equivalent
{
"mcpServers": {
"pons": { "command": "pons-mcp" }
}
}六个工具:pons_info、pons_pairs、pons_plan_buy、pons_plan_sell、pons_transaction、pons_endpoints。
服务器无法签名,也没有任何标志可以使其签名。 它读取链并构建未签名的交易;由人来发送。这就是整个安全模型,也是为什么服务器可以安全地留在模型旁边运行:一个困惑的代理最坏的情况是给你报一个糟糕的价格,而不是花你的钱。
答案以基本单位返回,因为模型可以对 50000000000000000 进行精确算术,而不能对 0.05 进行。
对于改为调用 CLI 的代理,当 stdout 不是终端时,--json 已经是默认值,并且参数错误会携带失败命令的用法行,以便调用者自行纠正:
{
"ok": false,
"error": {
"code": "USAGE",
"message": "missing required argument 'token'",
"hint": "run 'pons info --help'",
"details": { "command": "info", "usage": "pons info [options] <token>" }
}
}代理式编码
此仓库自带代理配置。CLAUDE.md 是项目简介,AGENTS.md 符号链接到它,供 Codex、Cursor、Copilot 等使用。
| 拒绝任何包含私钥或内联密码的命令行 |
| 当 |
| 运行此项目门禁的检查,并解释每个失败在此处的含义 |
测试
npm run typecheck
npm run lint
npm test
npm run build测试套件完全离线。每个测试都针对 test/fakeChain.ts 驱动真实的命令表面,这是一个地址 + ABI + 函数 → 结果的表,也服务于 Multicall3 和 eth_getLogs,因此所测试的是与实时路径相同的解码和聚合。
有两项检查会访问网络,并且故意不包含在 npm test 中:
npm run test:sequence # prove multi-block sequences against live mainnet state
npm run abi:check # fail if a committed ABI has drifted from its verified source序列,无需本地节点
模拟只能证明一个调用对一个区块。它无法证明批准生效后下一个区块中的卖出会成功,也无法证明启动确认后一个区块后其创建的曲线可购买。这些是用户会遇到的失败。
Robinhood Chain 支持 eth_simulateV1,它针对实时主网状态运行多个区块的多个调用,状态在所有调用之间传递。npm run test:sequence 使用它来证明六个序列,包括启动的整个生命周期:创建、交易、超过毕业阈值,并播种到 Uniswap V4 池。无需本地节点,无需 Foundry,不花费任何东西。
每个序列都带有一个必须失败的对照。如果没有对照,状态覆盖可能正在完成序列看似证明的工作。
故意花费真实资金
scripts/mainnet-e2e.sh 启动一个代币,购买它,卖出它,并在主网上领取费用,真实执行。序列由上述检查免费覆盖,因此这增加的是模拟无法做到的一件事:真实交易,由真实密钥签名,被真实内存池接受,并有真实收据可解码。除非你明确要求,否则它是关闭的,每次交易前都会询问,并且绝不能在任何 CI 中运行。
PONS_E2E=i-understand ./scripts/mainnet-e2e.sh退出码
脚本和代理可以根据结果进行分支,而无需解析文本。
Code | Meaning |
| 成功 |
| 未分类的失败 |
| 用法:错误的标志、参数或命令 |
| 配置缺失、格式错误或矛盾 |
| 所有 RPC 端点均失败 |
| 链已响应,但响应是回滚 |
| 密钥库缺失、密码错误或拒绝签名 |
| 用户拒绝了确认 |
| 账户无法支付所请求的费用 |
在 --json 模式下,失败会将 {"ok": false, "error": {...}} 写入 stderr,绝不写入 stdout,因此管道只携带结果。
贡献
请参阅 CONTRIBUTING.md,以及 SECURITY.md 了解不应公开的问题。简而言之:运行上述四项检查,将新行为保留在 src/core/ 中,并在写下任何关于协议的声明之前,先针对主网进行验证。合约源码在几个关键地方已经过时。
关于
使用 TypeScript 在 viem 上从头编写。没有从任何仓库复制源码:命令表面源自 chainstacklabs/pumpfun-cli 的行为映射,RPC 策略则来自针对该链自身端点的测量。
Pons 本身位于 ponsfamily.com:用于启动和探索的 Web 客户端,其分析和文档。此 CLI 不属于它,未获得其认可,并且与任何人都可以访问的相同公共合约交互。
许可证
MIT。请参阅 LICENSE。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables agents to query live Robinhood Chain data including tokens, wallets, Chainlink feeds, heat scores, and tracking error on tokenized equities, all read-only without API keys.413MIT
- AlicenseAqualityCmaintenanceEnables AI agents to interact with Robinhood Chain via USDG payments, offering tools for balance, pricing, trading, and more.1863MIT
- AlicenseNot gradedqualityCmaintenanceEnables agents to scan tokens for honeypots, check safe launches, and build launch transactions on Robinhood Chain via the Model Context Protocol.MIT
- AlicenseNot gradedqualityCmaintenanceProvides live, read-only access to Robinhood Chain and Lox Corp data, enabling AI agents to query chain stats, token launches, agent details, and more.101MIT
Related MCP Connectors
Token swaps and honeypot/rug checks for AI agents on 8 chains, paid per-call in USDC via x402.
Agentic Finance: 500+ tools for AI agents over x402 or MPP, free via PoW, or prepaid card credits
63 pay-per-call tools for agents: vision, text, data, web, blockchain. USDC on Base via x402.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mesutgulecen/ponscli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server