ton-xstocks について
ton-xstocksは、DEXアグリゲーターを介してTON上のトークン化株式を取引するスキルです。売買をUSDT経由に限定し、トークン検索から取引のシミュレーション、確認までを扱います。
主な機能
- 01xStocks APIでTONトークンアドレスを検索
- 02売買をUSDT経由で実行
- 03取引をシミュレーションし残高変化を確認
- 04承認後に送信しステータスを確認
活用シーン
- 01株式シンボルからTONトークンを検索
- 02残高不足時にTONをUSDTへ交換
- 03USDTでxStockを購入、またはUSDTへ売却
MCP 対応
TON MCPツールでJetton情報と残高の取得、見積もり、取引のシミュレーションと送信、ステータス確認を行う手順を示します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ton-org/ skills --skill ton-xstocksインストール後、Claude Code で/ton-xstocksを入力して読み込まれたか確認します。
詳細
TON 上的 xStocks(購入/売却)
裏付け資産のある xStocks は、TON 上のジェットンです。公開 xStocks API から ジェットンマスター を解決し、実際の Omniston の動作から得られたルーティング設定を使って、ton-swap と同じ 見積もり → 実行 のフローを使用します。
重要:機能するスワップペアは USDT のみです。
Omniston は、TON → xStock および xStock → TON のルートでは一貫して 見積もりを返しません。
xStock の購入と売却は、すべて USDT を経由する必要があります。ユーザーの USDT が不足している場合は、先に TON で USDT を購入してください(以下の「USDT の事前入金」を参照)。
主要なアドレス
| トークン | ジェットンマスター |
|---|---|
| USDT(TON) | EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs |
xStock の TON ジェットンマスターを解決する
-
シンボルで検索(例:
TSLAx):curlで取得します(WebFetch は使用しないでください。xStocks API は標準外のユーザーエージェントに対して 403 を返します)。curl -s "https://api.xstocks.fi/api/v2/public/assets/{symbol}"(本番環境のベース URL:
https://api.xstocks.fi/api/v2— xStocks API を参照してください)。 -
JSON 内で、
networkが"Ton"のdeployments[]を探します。そのオブジェクトのaddressを、MCP のジェットンマスター(fromToken/toToken)として使用します。 -
任意:
curl -s "https://api.xstocks.fi/api/v2/public/assets"を実行すると、同じdeployments構造を持つすべてのアセットを取得できます。 -
スワップ前に、
--jettonAddress <jetton_master>を指定してget_jetton_infoを呼び出し、名前/シンボル/小数桁数を確認します。
MCP ツール
| アクション | ツール |
|---|---|
| USDT の事前入金 | get_jetton_balance(USDT)→ get_swap_quote(TON → USDT)→ emulate_transaction → send_raw_transaction |
| xStock の購入 | get_swap_quote(USDT → xStock)→ emulate_transaction → send_raw_transaction |
| xStock の売却 | get_jetton_balance(xStock)→ get_swap_quote(xStock → USDT)→ emulate_transaction → send_raw_transaction |
| 確認 | get_jetton_info、get_transaction_status、get_jetton_balance |
get_swap_quote の金額には、人が読み取れる形式の文字列を使用します(get_jetton_info で確認したジェットンの小数桁数に従ってください)。
CLI 引数名(正確な名前)
| ツール | 引数 | CLI フラグ |
|---|---|---|
get_jetton_info | jettonAddress | --jettonAddress |
get_jetton_balance | jettonAddress | --jettonAddress |
get_swap_quote | fromToken | --fromToken(ネイティブ TON には "TON"、トークンにはジェットンマスターアドレスを使用) |
get_swap_quote | toToken | --toToken |
get_swap_quote | amount | --amount(人が読み取れる形式) |
get_swap_quote | slippageBps | --slippageBps(デフォルトは 100 = 1%) |
emulate_transaction | messages | --messages(見積もりの transaction.messages に含まれる JSON 配列) |
send_raw_transaction | messages | --messages(同じ JSON 配列) |
get_transaction_status | normalizedHash | --normalizedHash |
USDT の事前入金(必要な場合に自動実行)
xStock の取引を行う前に、ユーザーの USDT 残高を確認します。
- USDT のマスターアドレスを指定して
get_jetton_balanceを呼び出し、比較にはamountフィールドを使用します。 amountが予定している購入に必要な金額を下回る場合: a. 不足分を計算します(価格変動に備えて少額の余裕を含めます)。 b.fromToken="TON"(アドレスではなく文字列そのもの)、toToken= USDT のマスター、amount= 不足分としてget_swap_quoteを呼び出します。 c. ユーザーに確認します:「約 X USDT が必要ですが、現在 Y しかありません。先に Z TON を X USDT にスワップしますか?」 d. 承認されたら、send_raw_transactionを実行し、completedになるまでget_transaction_statusをポーリングします。 e. xStock の購入に進む前に、USDT 残高を再確認します。
購入ワークフロー
- xStock シンボルに対応する Ton ジェットンマスターを解決します(上記 API)。
- USDT 残高を確認し、不足している場合は USDT の事前入金を実行します。
get_swap_quote:fromToken= USDT マスター、toToken= xStock マスター、amount= 使用する USDT の額、slippageBps= 100(1%)。- 見積もりの
transaction.messagesを使ってemulate_transactionを実行し、送信前に予想される残高の変化を確認します。 - ユーザーに fromAmount、toAmount、minReceived、expiresAt、エミュレーション結果を提示し、ルーターメッセージのフォワード TON(ガス)について説明します。
- 一度確認を取ってから、返された
transaction.messagesを使ってsend_raw_transactionを実行します。 normalizedHashを使ってget_transaction_statusをポーリングし、completedまたはfailedになるまで確認します。
TON → xStock を直接実行しないでください。 見積もりは返されません。必ず USDT を経由してください。
売却ワークフロー(「全額売却」または固定額)
- xStock マスターに対して
get_jetton_balanceを実行し、返されたamountフィールドを使います(すでに人が読める小数文字列です。例:"12.5")。他の場所で生の整数が必要な場合に限り、amountRawを使います。 - 手動で変換せず、
amountをget_swap_quoteのamountパラメーターにそのまま渡します。 get_swap_quote:fromToken= xStock マスター、toToken= USDT マスター。- 見積もりの
transaction.messagesを使ってemulate_transactionを実行し、予想される残高の変化を確認します。 - 見積もりの詳細とエミュレーション結果をユーザーに提示してから、確認を取ります。
send_raw_transactionを実行し、その後completedまたはfailedになるまでget_transaction_statusをポーリングします。
xStock → TON を直接実行しないでください。 必ず USDT に売却してください。
取引後の確認
- 購入直後に残高が 0 と表示された場合は、数秒待ってから再照会します。インデクサーの反映が遅れることがあります。
- 売却後、USDT 残高が想定どおりに増加したことを確認します。
Omniston の注意点
- 「見積もりを取得できません」 — その数量またはタイミングではルートがありません。少し待ってから再試行するか、数量やスリッページを少し調整してください。TON ペアに切り替えても解決しないため、切り替えないでください。
- WebSocket エラー(例:見積もりの確認応答)がまれに発生します。その場合は
get_swap_quoteを再試行してください。 - 見積もりには有効期限があります。ユーザーが確認するまでに時間がかかった場合は、実行前に新しい見積もりを取得してください。
関連項目
- 実行と確認のルール:
ton-swapスキル。 - ウォレットへの入金とステータスのポーリング:
ton-balanceスキル。 - DEX 外での発行/償還:xStocks の製品ドキュメント/ダッシュボード — MCP スワップだけでは対応していません。