mcpField
T
ton-xstocks

ton-xstocks

github.com/ton-orgその他10110 回インストール25 週間前に更新
リポジトリ

ton-xstocks について

ton-xstocksは、DEXアグリゲーターを介してTON上のトークン化株式を取引するスキルです。売買をUSDT経由に限定し、トークン検索から取引のシミュレーション、確認までを扱います。

主な機能

  1. 01xStocks APIでTONトークンアドレスを検索
  2. 02売買をUSDT経由で実行
  3. 03取引をシミュレーションし残高変化を確認
  4. 04承認後に送信しステータスを確認

活用シーン

  1. 01株式シンボルからTONトークンを検索
  2. 02残高不足時にTONをUSDTへ交換
  3. 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 ジェットンマスターを解決する

  1. シンボルで検索(例: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 を参照してください)。

  2. JSON 内で、network が "Ton" の deployments[] を探します。そのオブジェクトの address を、MCP のジェットンマスター(fromToken / toToken)として使用します。

  3. 任意:curl -s "https://api.xstocks.fi/api/v2/public/assets" を実行すると、同じ deployments 構造を持つすべてのアセットを取得できます。

  4. スワップ前に、--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_infojettonAddress--jettonAddress
get_jetton_balancejettonAddress--jettonAddress
get_swap_quotefromToken--fromToken(ネイティブ TON には "TON"、トークンにはジェットンマスターアドレスを使用)
get_swap_quotetoToken--toToken
get_swap_quoteamount--amount(人が読み取れる形式)
get_swap_quoteslippageBps--slippageBps(デフォルトは 100 = 1%)
emulate_transactionmessages--messages(見積もりの transaction.messages に含まれる JSON 配列)
send_raw_transactionmessages--messages(同じ JSON 配列)
get_transaction_statusnormalizedHash--normalizedHash

USDT の事前入金(必要な場合に自動実行)

xStock の取引を行う前に、ユーザーの USDT 残高を確認します。

  1. USDT のマスターアドレスを指定して get_jetton_balance を呼び出し、比較には amount フィールドを使用します。
  2. 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 残高を再確認します。

購入ワークフロー

  1. xStock シンボルに対応する Ton ジェットンマスターを解決します(上記 API)。
  2. USDT 残高を確認し、不足している場合は USDT の事前入金を実行します。
  3. get_swap_quote:fromToken = USDT マスター、toToken = xStock マスター、amount = 使用する USDT の額、slippageBps = 100(1%)。
  4. 見積もりの transaction.messages を使って emulate_transaction を実行し、送信前に予想される残高の変化を確認します。
  5. ユーザーに fromAmount、toAmount、minReceived、expiresAt、エミュレーション結果を提示し、ルーターメッセージのフォワード TON(ガス)について説明します。
  6. 一度確認を取ってから、返された transaction.messages を使って send_raw_transaction を実行します。
  7. normalizedHash を使って get_transaction_status をポーリングし、completed または failed になるまで確認します。

TON → xStock を直接実行しないでください。 見積もりは返されません。必ず USDT を経由してください。

売却ワークフロー(「全額売却」または固定額)

  1. xStock マスターに対して get_jetton_balance を実行し、返された amount フィールドを使います(すでに人が読める小数文字列です。例:"12.5")。他の場所で生の整数が必要な場合に限り、amountRaw を使います。
  2. 手動で変換せず、amount を get_swap_quote の amount パラメーターにそのまま渡します。
  3. get_swap_quote:fromToken = xStock マスター、toToken = USDT マスター。
  4. 見積もりの transaction.messages を使って emulate_transaction を実行し、予想される残高の変化を確認します。
  5. 見積もりの詳細とエミュレーション結果をユーザーに提示してから、確認を取ります。
  6. 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 スワップだけでは対応していません。

コメント