jupiter について
jupiterは、Solana上のトークン取引を支援するエージェントスキルです。価格確認、スワップの見積もりと実行に加え、指値注文の作成・確認・キャンセルに対応します。
主な機能
- 01トークンの米ドル価格確認
- 02スワップ見積もりや取引データの取得
- 03指値注文の作成
- 04注文の確認とキャンセル
活用シーン
- 01Solanaトークンの価格確認
- 02スワップ前の受取数量の見積もり
- 03目標価格での指値注文
- 04未約定注文の確認とキャンセル
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ starchild-ai-agent/ official-skills --skill jupiterインストール後、Claude Code で/jupiterを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
__init__.py_trade_report.pyexports.pyscripts/jupiter_ops.py詳細
Jupiter — Solana DEX アグリゲーター
Jupiter は、最良の価格を得るためにすべての Solana DEX(Raydium、Orca、Phoenix など)をまたいでスワップをルーティングします。
⛽ ガスとコスト — まずこれを読んでください
- ガスは常にウォレットの SOL 残高から支払われます。 Solana ではガスのスポンサーシップはありません。
wallet_sol_transferは Jupiter では動作しません — これは SOL 送金専用です。- スワップの手数料は約 0.0002~0.001 SOL です(優先手数料 + 新しいトークンアカウントのレントデポジット)。
- リミット注文の作成には約 0.002 SOL かかります(オンチェーンアカウントのレント)。
- 操作の前に必ず
wallet_sol_balance()を呼び出して、SOL > 0.01 であることを確認してください。
⛔ 厳守事項
- 必ず
ultra/v1/orderを使用してください —swap/v1/quote+swap/v1/swapは使用しないでください(非推奨) jupiter_swapにウォレットの pubkey を渡すのは実行する意図がある場合のみ — 省略するとクォートのみの結果(トランザクションなし)が返りますが、これは価格確認には正しい動作です- 数値の
makingAmount/takingAmountを絶対に渡さないでください — 文字列でなければ API が ZodError 400 を返します - リミット注文に
/ultra/v1/executeを絶対に使用しないでください — リミット注文は必ずjupiter_broadcast_tx()(Solana RPC)を経由する必要があります - スワップやリミット注文を実行する前に、必ずユーザーの確認を省略しないでください
- スワップ後は必ず
wallet_sol_balance()を呼び出して、残高が変化したことを確認してください - DCA には絶対に言及しないでください — lite-api はこれをサポートしていません
前提条件 — ウォレットポリシー
オンチェーン操作の前に、wallet スキルをロードし、標準のワイルドカード Solana ポリシー(キーのエクスポートを拒否 + * を許可)を提案してください。
主要トークンアドレス(Solana)
| トークン | Mint アドレス | 小数点以下桁数 |
|---|---|---|
| SOL | So11111111111111111111111111111111111111112 | 9 |
| USDC | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v | 6 |
| USDT | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB | 6 |
| JUP | JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN | 6 |
| BONK | DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 | 5 |
| WIF | EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm | 6 |
| JTO | jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL | 6(9 ではありません) |
リストにないトークンの場合:ユーザーに Mint アドレスを直接尋ねてください — トークン検索 API は非推奨です。
利用可能なツール(exports.py より)
| ツール | 機能 |
|---|---|
jupiter_price(token) | 任意のトークンの USD 価格 |
jupiter_swap(in, out, amount, wallet?) | クォートのみ(ウォレットなし)またはクォート + トランザクション(ウォレット指定時) |
jupiter_execute_swap(signed_tx, request_id, in_mint?, out_mint?) | /ultra/v1/execute 経由でスワップをブロードキャスト ← スワップ専用 |
jupiter_broadcast_tx(signed_tx) | Solana RPC 経由でブロードキャスト ← リミット注文 + キャンセル |
jupiter_limit_create(in, out, making, taking, maker) | リミット注文を作成 |
jupiter_limit_orders(wallet, history=False) | 未約定または過去の注文を一覧表示 |
jupiter_limit_cancel(order_pubkey, maker) | 未約定の注文をキャンセル |
スワップのワークフロー(エンドツーエンド)
1. quote = jupiter_swap("SOL", "USDC", 0.01, wallet_pubkey)
└─ returns: in_amount, out_amount, in_usd, out_usd, transaction, request_id
2. Show user: amount in/out, USD values, price_impact_pct — wait for confirm
3. signed = wallet_sol_sign_transaction(quote["transaction"])
4. result = jupiter_execute_swap(signed["signed_transaction"], quote["request_id"])
└─ returns: status ("Success"), signature, in_amount, out_amount
5. wallet_sol_balance() ← verify balances changed
重要なポイント:
jupiter_execute_swap→ POST/ultra/v1/execute— Ultra スワップ専用- ウォレットの pubkey が欠落または無効な場合、
transactionはnullになります — 有効なウォレットでステップ 1 を再試行してください - スワップはアトミックです:失敗した場合、何も差し引かれません(ガス手数料を除く)
リミット注文のワークフロー(エンドツーエンド)
1. order = jupiter_limit_create(
input_token="SOL", # selling
output_token="USDC", # buying
making_amount=0.06, # 0.06 SOL to sell
taking_amount=3.0, # want at least 3 USDC (sets target price)
maker=wallet_pubkey
)
└─ returns: order_pubkey, transaction, implied_price, next_step
2. Show user: implied price, amounts — wait for confirm
3. signed = wallet_sol_sign_transaction(order["transaction"])
⚠️ Sign and broadcast within ~90 seconds — blockhash expires.
4. result = jupiter_broadcast_tx(signed["signed_transaction"])
└─ returns: {"success": True, "signature": "..."} or {"success": False, "error": "..."}
⚠️ Use jupiter_broadcast_tx, NOT jupiter_execute_swap — different endpoints!
5. jupiter_limit_orders(wallet_pubkey) ← confirm order_pubkey appears
Note: if order fills instantly (implied price ≤ market), check orderHistory instead
重要なポイント:
- 最小注文サイズ:約 5 USD — それより小さいと
{"error": "Order size must be at least 5 USD"}が返ります - あなたの提示価格が有利(市場価格以下)な場合、キーパーが即座に注文を約定することがあります
- API レスポンスの
orderKeyフィールドが注文の pubkey です(publicKeyではありません) - openOrders の
makingAmount/takingAmountはすでに人間が読める形式(例:"0.06")であり、生の lamports ではありません expiredAtとfeeBpsは、使用しない場合は完全に省略する必要があります(null や 0 を渡さないでください)
注文キャンセルのワークフロー
1. orders = jupiter_limit_orders(wallet_pubkey)
2. Pick order_pubkey from orders["orders"][n]["order_pubkey"]
3. cancel = jupiter_limit_cancel(order_pubkey, wallet_pubkey)
4. signed = wallet_sol_sign_transaction(cancel["transaction"])
5. jupiter_broadcast_tx(signed["signed_transaction"])
ツールルーティング — IF/THEN
IF "price" / "how much is X" → jupiter_price(token)
IF "quote" / "how much can I get" → jupiter_swap(in, out, amount) [wallet omitted = quote-only, no tx]
IF "swap" / "exchange" / "convert" → jupiter_swap(in, out, amount, wallet) → confirm → sign → jupiter_execute_swap(in_mint, out_mint)
IF "limit order" / "buy when price hits" → jupiter_limit_create → sign → jupiter_broadcast_tx
IF "my orders" / "open orders" → jupiter_limit_orders(wallet)
IF "cancel order" → jupiter_limit_orders → jupiter_limit_cancel → sign → jupiter_broadcast_tx
IF token not in KNOWN_TOKENS → ask user for mint address
少数ショット例
JUP-01 — 「SOL の価格は?」
jupiter_price("SOL")
# -> {"price_usd": 84.2, ...}
JUP-01b — 「0.5 SOL で USDC はいくらになりますか?」(クォートのみ、取引なし)
jupiter_swap("SOL", "USDC", 0.5) # wallet_pubkey omitted
# -> {quote_only: True, in_amount: "0.50", out_amount: "42.10",
# in_usd: "42.1", transaction: None}
# Stop here — show user the rate, no signing needed.
JUP-02 — 「0.01 SOL を USDC にスワップ」
quote = jupiter_swap("SOL", "USDC", 0.01, wallet_pubkey)
# → show: 0.01 SOL → ~0.84 USDC, impact <0.01%
signed = wallet_sol_sign_transaction(quote["transaction"])
result = jupiter_execute_swap(
signed["signed_transaction"],
quote["request_id"],
in_mint=quote["in_mint"],
out_mint=quote["out_mint"],
)
# → {"status": "Success", "signature": "yUKn...", "in_amount_fmt": "0.01", "out_amount_fmt": "0.84"}
wallet_sol_balance()
JUP-03 — 「リミット設定:USDC 価格が $50/SOL に達したら 0.06 SOL を売却」
# makingAmount=0.06 SOL, takingAmount=3 USDC (= 0.06 * 50)
order = jupiter_limit_create("SOL", "USDC", 0.06, 3.0, wallet_pubkey)
# → implied_price: "1 USDC = 0.0200 SOL" (i.e. $50/SOL)
signed = wallet_sol_sign_transaction(order["transaction"]) # do this immediately!
result = jupiter_broadcast_tx(signed["signed_transaction"])
# → {"success": True, "signature": "53bp..."}
jupiter_limit_orders(wallet_pubkey) # or check history if filled instantly
JUP-04 — 「未約定の注文」
jupiter_limit_orders(wallet_pubkey)
# → {"count": 1, "orders": [{"order_pubkey": "...", "making_amount": "0.06", ...}]}
JUP-05 — 「注文をキャンセル」
orders = jupiter_limit_orders(wallet_pubkey)
pubkey = orders["orders"][0]["order_pubkey"]
cancel = jupiter_limit_cancel(pubkey, wallet_pubkey)
signed = wallet_sol_sign_transaction(cancel["transaction"])
jupiter_broadcast_tx(signed["signed_transaction"])
コメント
Markdown 対応