Skip to main content
Glama

ponscli

CI npm node license

開発者とエージェントの両方のために作られた、Robinhood Chain(チェーンID 4663)上のPonsローンチパッドのための非公式コマンドラインインターフェースです。PonsやRobinhoodとは提携しておらず、公開チェーン上の公開コントラクトを読み取るだけです。

  • デフォルトで読み取り専用。 CLIは秘密鍵を一切扱わずに動作します。署名は明示的なオプトインなので、エージェントが誤って送金してしまうことはありません。

  • どこでも構造化された出力。 すべてのコマンドで--jsonが使え、stdoutがターミナルでない場合は自動的に有効になります。エラーも構造化され、終了コードは安定しています。

  • プロトコルの値はチェーンから読み取られます。 手数料、税ウィンドウ、承認済みペアトークン一覧はライブで照会され、ハードコードされることはありません。オンチェーンの値はコントラクトのソースとは異なります。

  • 2段階のRPC。 無料エンドポイントはTier 1でラウンドロビン方式で使用され、有料エンドポイントはTier 2にあり、Tier 1を完全に使い果たした後にのみ到達します。有料の認証情報がない場合、バルク処理は障害を請求書に変えるのではなく、劣化するだけです。

  • 2つのバイナリ。 同じコアの上で、人間向けのpons、モデル向けのpons-mcp。そのため、エージェントが提示される価格はCLIが表示する価格と同じです。

インストール

npm install -g ponscli
pons --version

または、何もインストールせずに使うこともできます。パッケージ名はponscliで、バイナリ名は ponsなので、npxにどちらを実行するかを指定する必要があります:

npx -p ponscli pons info 0x44D6…20f4

重要なNodeバージョンは2つあり、それらは同じものではありません。 CLIが実行されるのは 20.11以上で、CIはプッシュのたびにパッケージ化されたtarballをその正確なバージョンにインストールして確認します。ビルドには20.19以上が必要です。リンターの依存ツリーがそれを要求するからです。クローンからは、npm installがインストールの一環としてビルドを行い、npm run dev -- <command>でソースから実行します。

Related MCP server: pons-hoodly MCP Server

クイックスタート

読み取りにはキーもウォレットも設定も必要ありません。

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 info <token>

価格、供給量、卒業の進捗、手数料、ライブのスナイプ税

pons pairs

承認済みクオート資産。Ponsクライアントが表示する順序

pons watch <token>

カーブ取引、買い戻し、卒業をカーソルで追跡

pons tx <hash>

レシート、デコードされたログ、失敗の原因となったリバート理由

取引、RPCとキーが必要

pons buy <token> <amount>

トークンが取引されている会場で購入

pons sell <token> <amount|50%|all>

同じ会場で売却

pons graduate <token>

閾値に達したカーブを完了させる。これは誰でも呼び出せます

ローンチ

pons launch --name X --symbol Y

トークンを作成。デフォルトはV2

手数料

pons claim

エスクローに保持されているV2作成者またはプロトコル手数料

pons collect <token>

ロッカーが保持しているV1ポジション手数料

pons vault show|release <token>

V2買い戻しボールト

ウォレットとセットアップ

pons wallet create|import|show|export

キー管理

pons wallet balance|track|untrack

保有資産

pons wallet transfer|sweep

送金

pons config list|get|set|unset|path

設定、および各値の取得元

pons doctor

エンドポイントの健全性。CLIが実際に行う呼び出しでプローブします

2つの世代

Ponsは2つのファクトリーを通じてトークンをローンチしており、両方に対応しています。どちらを指しているかを指定する必要はありません。両方のレジストリに問い合わせ、その回答が以降のすべてを決定します。

V1

V2

取引会場

最初のブロックからのUniswap V3プール

Uniswap V4に卒業するボンディングカーブ

クオート資産

WETH

ETH、または承認された23のトークンのいずれか

開始時保護

2ブロックの間、ウォレットとトランザクションの上限

スナイプ税。99%が3秒かけて減衰

流動性

永久にロック。出ていくのは手数料のみ

卒業時にプールへシードされる

手数料

pons collect

pons claim

新規ローンチ

終了

オープン

V1のファクトリーは廃止されています。 launchEnabled()は2026-08-12以来falseであり、それを設定したトランザクションが、ファクトリーが最後に発したものです。それ以降、いかなるアドレスもホワイトリストに登録されたことはないため、pons launch --generation v1は何かを構築する前に拒否します。そのトークンはまた別の話です。数千のトークンが依然として流動性を保持しており、40プールのサンプルでは6日足らずで223件のスワップが見られました。そのため、それらの読み取りと取引は完全にサポートされています。

取引

すべての書き込み操作は、最初にPlanを構築します。何を誰に送信するか、何を返してもらうことを期待するか、何について警告する価値があるか。その同じPlanがシミュレーションされ、署名されるため、この3つが乖離することはありません。

モード

動作

(no flag)

プランを構築し、残高オーバーライド付きでライブ状態に対してシミュレーションし、両方を出力します。署名も送信も行われません

--dry-run

同じ作業を明示的に要求したもの: ペイロード内の"mode": "dry-run"で、何も送信されなかったというリマインダーはありません

--unsigned

他の誰かが署名するためのcalldataとvalueを出力します。シミュレーションをしない唯一のモード

--confirm

署名してブロードキャスト

知っておくべき4つの動作:

  • 取引会場は自分で選ぶ必要はありません。 ローンチレコードがトークンの取引場所を示します。--route curve|v4|v3は会場を探すのではなく、その回答を上書きします。

  • 受け入れた時点で下限は固定されます。 プランはブロードキャスト直前のライブ状態から再構築され、受け入れた下限は新しい価格から再計算されるのではなく、再構築に引き継がれます。承認した下限を下回る取引は署名できず、価格がそれを超えて動いた場合は何も送信されません。

  • 閾値に達したカーブへの売却は失敗ではなくリダイレクトされます。 カーブは十分に調達されると取引を停止し、pons graduate <token>は誰でも呼び出せるコールです。

  • V1の売却は自動的にラップ解除されます。 V1プールはETHではなくWETHを保持するため、売却はその収益をルーターに残し、同じトランザクションでラップ解除します。当然の方法で売却しても機能し、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

ローンチは、ここで唯一やり直しの効かない操作です。トランザクションを構築する前に、コマンドはあなたがコミットする内容の全体を出力します。トークンが配置されるアドレス、供給量、卒業先、手数料の配分、スナイプ税の動作です。また、ファクトリーがオンチェーンで拒否するであろうすべてをローカルでチェックします。

  • 送信前にアドレスがわかります。 両世代とも、自分で選んだsaltからCREATE2でデプロイされるため、pons launchはトークンとカーブのアドレスを事前に出力し、すでに使われているsaltを拒否します。--saltは生の32バイト値を受け付けるので、採掘されたバニティアドレスも機能します。

  • 条件は固定されます。 previewLaunchEconomicsは、供給量、カーブ手数料、プールの手数料ティア、プロトコルの手数料配分を網羅するダイジェストを返し、それはローンチとともに送られます。トランザクションの実行中にプロトコルオーナーがこれらのいずれかを変更した場合、ローンチは静かに価格を変更するのではなくリバートします。

  • --dev-buyはアトミックであり、そうでなければなりません。 V2ファクトリーは正確にローンチ手数料のみを要求し、それ以上は要求しないため、開始時の購入をそれに便乗させることはできません。代わりに、購入は同じトランザクション内でローンチパッド自身のルーターを通じて行われます。これなしのローンチは、このチェーンでは2ブロック以内に買い占められたことがあります。

  • --buybackは保有者ではなくあなたにコストがかかります。 ボールトは完全にあなた自身の手数料分から資金調達され、5年間かけてプロトコルと分割で解放されます。これは保有者への分配ではなく、プランはそれを脚注ではなく警告として明示します。

pons pairsは、ローンチの価格設定に使用できる資産を一覧表示します。ネイティブETHに加えて、承認された23のトークン(トークン化された株式、2つのインデックスファンド、1つのステーブルコイン)です。これらはPons作成ページが表示する順序で返されるため、両者は行ごとに一致します。

セキュリティ

  • デフォルトは読み取り専用。 --confirmなしで何かに署名するコマンドはありません。4つの実行モードのうち3つはコストがかからず、--unsignedを除くすべてが、アカウントに資金を保有せずに、デプロイ済みコントラクトに対してコールを最初に検証します。

  • キーストアはscrypt + AES-256-GCMで、オーナーのみが読み書きできます。パスワードは非表示のプロンプトまたはPONS_PASSWORDから、インポートするキーはPONS_PRIVATE_KEYから取得します。

  • どちらもフラグにはなりません。 引数はプロセステーブルに表示され、シェルの履歴に残ります。どちらかを受け取るフラグは存在せず、`

資金を失う可能性がある何かを見つけましたか? プライベートに報告してください。SECURITY.md に、その方法、対象範囲、設計上の保証が記載されています。

設定

値は、フラグ > 環境変数 > 設定ファイル > デフォルト の順序で解決されます。pons config list は、解決された値と、それがどの段階から来たかを併せて表示するため、想定外の設定でも、1コマンドで説明が得られます。

設定ファイルは、$XDG_CONFIG_HOME/ponscli/config.json にあるフラットなJSONです(~/.config/ponscli/config.json にフォールバックします)。所有者のみが書き込めます。

キー

環境変数

デフォルト

rpc.url

PONS_RPC_URL

未設定。自分のノードが最初に試される

rpc.endpoints

PONS_RPC_ENDPOINTS

公式および nodeflare の公開エンドポイント

rpc.alchemyKey

PONS_ALCHEMY_KEY

未設定。この場合、有料ティアは無効になる

rpc.tier

PONS_RPC_TIER

auto

rpc.timeoutMs

PONS_RPC_TIMEOUT_MS

10000

wallet.keystore

PONS_KEYSTORE

<config dir>/keystore.json

wallet.tracked

PONS_WALLET_TRACKED

空

output.json

PONS_JSON

stdoutがTTYでない場合はオン

output.color

PONS_COLOR

auto(NO_COLOR を尊重)

trade.slippageBps

PONS_SLIPPAGE_BPS

100(1%)

trade.priorityFeeGwei

PONS_PRIORITY_FEE_GWEI

未設定

cache.dir

PONS_CACHE_DIR

<cache dir>/ponscli

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 を2つ目の実装ではなくラッパーにしている理由です。

リクエストのルーティング方法

Tier 1 は無料エンドポイントのラウンドロビンです。Tier 2 は、Tier 1 の候補がすべて試された後にのみ到達する有料エンドポイントです。すべてのルールは、汎用のリトライポリシーからではなく、このチェーン自身のエンドポイントに対する測定から来ています。日常的に最も重要なルールは次のとおりです:

  • リバートは失敗ではなく回答です。 すべてのエンドポイントで再試行されてから有料ティアにエスカレーションされるのではなく、直接あなたに返されます。

  • レート制限は、エンドポイントを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の出所と、マッチがどのように証明されたかが記録されています。コントラクトがそれぞれ異なるため、来歴クラスは4つあります。

クラス

例

証明方法

アドレスで検証済み

PonsV2LaunchFactory

Sourcify自身によるバイトコード照合

すべてのチェーンに同一にデプロイ済み

Permit2

Baseで検証済み。すべてのセレクタがRobinhoodのバイトコードに存在

ローンチごとに1回デプロイされ、どこでも検証されていない

V2カーブとトークン

ファクトリの検証済み standard-JSON 入力からコンパイルし、イミュータブル以外の部分を実際のインスタンスとバイト単位で照合

複数回デプロイされ、一部で検証済み

V3プール、V1のトークン

検証済みの1インスタンスが、独立に選ばれた別のインスタンスに対して一般性を証明済み

手書きで書かれているファイルが1つあります: erc20Errors.ts です。これは、第三者クォートアセットがリバートする際のエラーを保持しています。クォートアセットは他人のトークンであり、承認済みの23種類すべてをカバーする単一のABIは存在しません。これらがないと、USDGローンチで最もありふれた失敗が、説明のつかない4バイトとして表示されます。

エージェント向け

完全なガイド: docs/agents.md

pons-mcp は、このパッケージに2つ目のバイナリとして同梱されており、CLIと同じ core/ を呼び出します。

// claude_desktop_config.json, .mcp.json, or your client's equivalent
{
  "mcpServers": {
    "pons": { "command": "pons-mcp" }
  }
}

6つのツール: 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 はプロジェクトの概要であり、Codex、Cursor、Copilotなどのために AGENTS.md がそれへのシンボリックリンクとして用意されています。

.claude/hooks/block-secrets.sh

秘密鍵またはインラインパスワードを含むコマンドラインを拒否します

.claude/hooks/warn-broadcast.sh

--confirm または pons launch が実際のお金を使おうとしているときに、声に出して警告します

.claude/skills/verify/

このプロジェクトのゲートとなるチェックを実行し、各失敗の意味をここで説明します

テスト

npm run typecheck
npm run lint
npm test
npm run build

テストスイートは完全にオフラインです。すべてのテストは、実際のコマンドサーフェスを test/fakeChain.ts に対して駆動します。test/fakeChain.ts は address + ABI + function → result のテーブルで、Multicall3 と eth_getLogs も提供するため、テストされるのはライブパスが使うのと同じデコードと集約です。

2つのチェックはネットワークに到達し、意図的に 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

ローカルノードなしのシーケンス

シミュレーションは、1つのブロックに対する1つの呼び出しを証明します。承認がブロックに取り込まれ、次のブロックでの売却が成功することを証明することはできません。また、ローンチが確定し、そこで作成されたカーブが1ブロック後に購入可能になることを証明することもできません。そうした失敗こそ、ユーザーに届くものです。

Robinhood Chain は eth_simulateV1 に応答します。これは、ライブのメインネット状態に対して、複数の呼び出しを複数のブロックにわたり、すべてのブロックに状態を引き継ぎながら実行します。npm run test:sequence はこれを使用して6つのシーケンスを証明します。それにはローンチの全ライフサイクル、つまり作成され、取引され、卒業しきい値を超え、Uniswap V4 プールにシードされることが含まれます。ローカルノードもFoundryも不要で、何も費やされません。

すべてのシーケンスには、必ず失敗するコントロールが含まれています。それがなければ、シーケンスが証明しているように見える作業を、ステートオーバーライドが実際に行っている可能性があります。

意図的に実際のお金を使う

scripts/mainnet-e2e.sh は、トークンをローンチし、それを購入し、売却し、メインネット上で手数料を受け取ります。実際にやります。シーケンスは上記のチェックでカバーされるため、これが追加するのはシミュレーションにはできない唯一のもの、すなわち実際のキーで署名され、実際のメンプールに受け入れられ、デコードすべき実際のレシートを伴う実際のトランザクションです。このスクリプトは明示的に指定しない限りオフになっており、すべてのトランザクションの前に確認を求め、CIで実行してはなりません。

PONS_E2E=i-understand ./scripts/mainnet-e2e.sh

終了コード

スクリプトとエージェントは、散文を解析することなく結果に基づいて分岐できます。

コード

意味

0

成功

1

分類不能な失敗

2

使用方法: 不正なフラグ、引数、またはコマンド

3

設定が欠落している、形式が正しくない、または矛盾している

4

すべてのRPCエンドポイントが失敗した

5

チェーンは応答したが、その応答はリバートだった

6

キーストアがない、パスワードが間違っている、または署名が拒否された

7

ユーザーが確認を拒否した

8

アカウントが要求された支払いを行えない

--json モードでは、失敗は {"ok": false, "error": {...}} を stderr に書き出します。stdoutには決して書き出さないため、パイプは結果のみを運びます。

コントリビューション

CONTRIBUTING.md を参照してください。公開イシューにすべきでないものについては SECURITY.md を参照してください。短く言うと: 上記の4つのチェックを実行し、新しい動作は src/core/ に置き、プロトコルに関する主張は書き留める前にメインネットで検証してください。コントラクトのソースは、重要ないくつかの箇所で古くなっています。

概要

viem 上でTypeScriptでゼロから書かれています。どのリポジトリからもソースはコピーされていません: コマンドサーフェスは chainstacklabs/pumpfun-cli の挙動マップから、RPCポリシーはこのチェーン自身のエンドポイントに対する測定から導出されています。

Pons自体 は ponsfamily.com にあります: ローンチと探索のためのWebクライアント、そのアナリティクス、そしてドキュメントです。このCLIはその一部ではなく、その承認も受けておらず、他の誰でも利用できる同じ公開コントラクトにアクセスします。

ライセンス

MIT。 LICENSE を参照してください。

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Enables AI agents to interact with Robinhood Chain via USDG payments, offering tools for balance, pricing, trading, and more.
    18
    53
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with the pons token launchpad on Robinhood Chain for token discovery, verification, price tracking, and trading with built-in safety controls and user approval.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to manage their own wallet and interact with Twofold's dual-yield liquidity protocol on Robinhood Chain, including swaps, pool deposits and withdrawals, staking, and reward claims.
    38 npm
    MIT