gate-exchange-transfer について
gate-exchange-transfer は、Gate の取引口座間で資金を移動するスキルです。実行前に送金元残高を確認し、送金案を提示して明示的な確認を求めます。
主な機能
- 01Gate の5種類の口座間送金
- 02送金前の送金元残高確認
- 03未指定時に送金先から通貨を補完
- 04送金案の提示と実行前確認
- 05残高不足や口座モードの不整合に対応
活用シーン
- 01現物口座から無期限先物口座へ USDT を移動
- 02口座間送金前に利用可能残高を確認
- 03実行前に決済通貨との不一致を解消
MCP 対応
gate-cli を使って口座残高を照会し、Gate の送金操作を呼び出します。同一 UID 内の口座間送金に限られ、メイン口座とサブ口座間の送金には対応しません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gate/ gate-skills --skill gate-exchange-transferインストール後、Claude Code で/gate-exchange-transferを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.clawhubignoreCHANGELOG.mdREADME.mdsetup.shreferences/gate-cli.mdgate-runtime-rules.mdmcp.mdscenarios.md詳細
gate-cli の解決(バイナリパス)
次の順序で gate-cli を解決します。(1) command -v gate-cli が成功し、gate-cli --version が成功すること。(2) 実行可能な場合は ${HOME}/.local/bin/gate-cli。(3) 実行可能な場合は ${HOME}/.openclaw/skills/bin/gate-cli。正規のルールは exchange-runtime-rules.md §4(または gate-runtime-rules.md §4)を参照してください。
Gate Exchange Transfer(内部振替)
一般ルール
⚠️ 停止 — 続行する前に、共有ランタイムルールを必ず読み、厳守してください。
すべてのルールを読み終えるまで、ツールを選択または呼び出さないでください。これらのルールが最優先です。
→ ./references/gate-runtime-rules.md を読んでください
- このスキルに明記されている
gate-cliコマンドのみを使用してください。 ここに記載されていないコマンドは、他のインターフェースで利用できる場合でも、これらのワークフローで実行してはなりません。
Gate 取引アカウント間で、同一 UID の内部振替を実行します。対象は 現物、分離マージン、無期限契約、受渡契約、オプションです。単一の実行エンドポイントは POST /wallet/transfers です(MCP: gate-cli cex wallet transfer create)。
対象範囲(フェーズ 1)
- 対応:内部振替のみ(同一 UID、上記のアカウント種別間)。
- 非対応:メインアカウントからサブアカウント、サブアカウントからメインアカウント、サブアカウント間。
スキルの依存関係
使用する gate-cli コマンド
照会操作(読み取り専用)
gate-cli cex delivery account bookgate-cli cex futures account bookgate-cli cex margin account bookgate-cli cex options account bookgate-cli cex spot account book
実行操作(書き込み)
gate-cli cex wallet transfer create
認証
- 対話式のファイル設定: ホスト上で
GATE_API_KEYとGATE_API_SECRETが両方とも設定されていない場合は、gate-cli config initを実行して、API キー、シークレット、プロファイル、デフォルト設定のウィザードを完了してください(gate-cli を参照)。 - 環境変数/フラグ: 認証情報がすでに指定されている場合は、
gate-cli config initは不要です。たとえば、ホスト上でGATE_API_KEYとGATE_API_SECRETの両方が設定されている場合や、対応している箇所で--api-key/--api-secretが指定されている場合です。チャットでシークレットを貼り付けるようユーザーに求めてはなりません。 - API キーが必要です:はい
- 権限: Delivery:Read、Fx:Read、Margin:Read、Options:Read、Spot:Read、Wallet:Write
- ポータル: チャット外でキーを作成またはローテーションしてください:https://www.gate.com/myaccount/profile/api-key/manage
インストール確認
- 必須:
gate-cli(見つからない場合は、このスキルディレクトリからsh ./setup.shを実行してください。GATE_CLI_SETUP_MODE=releaseは任意です)。 gate-cliを名前で呼び出す場合は、$HOME/.openclaw/skills/bin(またはsetup.shがインストールするディレクトリ)をPATHに追加してください。- 認証情報: ホストに
GATE_API_KEYとGATE_API_SECRETの両方が空でない値として設定されている場合、gate-cli config initを必須としてはなりません。これらはgate-cliの有効な設定と同等です。両方とも未設定または空の場合は、オペレーターにgate-cli config initの実行、またはスキルライブラリ内の該当するスキルでのGATE_API_KEY/GATE_API_SECRETの設定を促してください(チャットでシークレットを貼り付けるようユーザーに求めてはなりません)。 - 動作確認: 認証が必要な呼び出しを行う前に、CLI が想定どおりに動作することを確認してください(例:
gate-cli --version、またはこのスキルに記載されている読み取り専用のgate-cli cex ...コマンド)。変更を伴う操作の前に、認証情報が解決されていることを確認してください。
実行モード
references/gate-cli.md を読み、厳守してから、このスキルの振替ワークフローを実行してください。
SKILL.mdは、振替の意図のルーティングとアカウント種別の対応付けを定めます。references/gate-cli.mdは、振替の事前確認、確認ゲート、実行、台帳の検証に関する、権威あるgate-cli実行契約です。
前提条件
| 前提条件 | 満たされていない場合 |
|---|---|
| ユーザーがログイン済み | API を呼び出さず、ログインを促します(例外フロー)。 |
| アカウントモードが判明している | コンテキストから推測するか、デフォルトで従来モードとします:現物 ↔ USDT 無期限。統合/取引アカウントの高度なモードでは、取引アカウント ↔ BTC 無期限とします。 |
| 送金元の残高を確認できる | ドラフトを表示する前に、from アカウントの残高 API を呼び出します。利用できない場合は、ウェブで確認するようユーザーに促します。 |
4 つの要素
すべての内部送金は、4 つの要素で完全に指定されます。アシスタントは送金ドラフトを表示する前に、これらを特定するか推測する必要があります。
| 要素 | API パラメーター | 必須となる場合 | 備考 |
|---|---|---|---|
| 送金元 | from | 常に | spot | margin | futures | delivery | options |
| 送金先 | to | 常に | from と同じ列挙値 |
| 通貨 | currency | 常に | USDT、BTC など(プラットフォームが対応する通貨)。指定がない場合 → 送金先に基づいて自動入力(case2)。 |
| 金額 | amount | 常に | 文字列、0 より大きく、小数点以下 8 桁まで。指定がない場合 → ユーザーに確認(case8)。 |
条件付きパラメーター
- margin:
fromまたはtoがmarginの場合、currency_pairが必要です(例:BTC_USDT)。 - futures / delivery:
fromまたはtoがfuturesまたはdeliveryの場合、settle(usdt|btc)が必要です。
公開 API(フェーズ 1)
| エンドポイント | メソッド | 説明 | レート制限 |
|---|---|---|---|
/wallet/transfers | POST | 同一 UID 内の内部送金 | 80 req/10s |
ツールの対応関係
| グループ | ツール(jsonrpc: call.method) |
|---|---|
| メインアカウントの内部送金 | gate-cli cex wallet transfer create |
ケース一覧
| ケース | シナリオ | アクション |
|---|---|---|
| case1 | 4 つの要素がすべて指定されている | 送金ドラフトを表示 → 確認 → API を呼び出す → 送金結果レポート |
| case2 | 通貨が指定されていない | 送金先アカウントに基づいて通貨を自動入力 → case1 と同様 |
| case3 | 送金完了(API 成功) | 送金結果レポートを出力し、商品を提案 |
| case4 | 残高不足 | 事前確認に失敗した場合は API を呼び出さず、不足額を表示して入金または調整を提案 |
| case5 | 送金元/送金先が指定されていない、または意図が曖昧 | 不足情報のカードを表示し、API を呼び出さない |
| case6 | アカウントモードの不整合(例:取引アカウント → USDT 無期限は不可) | 説明し、代替手順を提案 |
| case7 | 通貨と送金先の不整合(例:USDT を BTC 無期限へ送金) | 自動修正するか、修正を促す → その後 case1 |
| case8 | 金額が指定されていない | 金額を尋ねる。ユーザーが回答したら case1/case2 に進む |
| case9 | ドラフトの提示後にユーザーがキャンセルまたは拒否 | 承知した旨を伝え、API を呼び出さない |
| case10 | 確認が曖昧、または古くなっている | ドラフトを再提示し、「Confirm」/「Yes」と明示的に確認するよう求め、実行しない |
| case11 | レート制限/サービスエラー | むやみに再試行せず、後で再試行するかウェブ UI を使用するよう促す |
送金ドラフト(実行前に必須)
gate-cli cex wallet transfer create を呼び出す前に、送金ドラフトを出力し、直後のユーザーのターンで明示的な確認を待ちます。
ドラフトの内容
from(アカウント名)to(アカウント名)currencyamount- 該当する場合:
settle(futures/delivery 用)、currency_pair(margin 用)
確認ルール
- 確認は1 回限りとして扱います。ユーザーが金額、通貨、または送金方向を変更した場合は、新しいドラフトを表示して再確認を求めます。
- ユーザーが明確に確認しない場合(例:「Confirm」、「Yes」、「Proceed」)、実行してはいけません(case10)。
送金結果レポート(API 呼び出し成功後)
- 成功を確認します。例:「送金が完了しました。{amount} {currency} が {to account name} に入金されました。」
- 送金先に応じて、次のステップを提案してもかまいません。例:現物 → 現物取引、USDT 無期限 → USDT 建て無期限契約など。
- 送金履歴について案内します。例:transfer/historyV2 または同等の MCP ツール。
ケースのロジックと出力
case1: 4つの要素がすべて揃っている場合
トリガー 「現物口座から無期限先物口座に100 USDTを振り替えて」/「現物からUSDT建て先物に1000 USDTを振り替えて」/「コイン建て口座から現物口座に0.5 BTCを振り替えて」
手順
from、to、currency、amountを特定し、必要に応じてsettleまたはcurrency_pairを追加します。- 事前確認:振替元の残高を取得します。残高が
amount未満の場合はcase4に進みます。 - 振替ドラフトを出力します。
- 明示的な確認を待ちます。
gate-cli cex wallet transfer createを呼び出します。- 振替結果レポート(case3)を出力します。 リクエストの対応関係
| 意図 | API パラメーター | 値 |
|---|---|---|
| 振替元口座 | from | spot | margin | futures | delivery | options |
| 振替先口座 | to | spot | margin | futures | delivery | options |
| 通貨 | currency | USDT、BTCなど |
| 金額 | amount | 文字列、0より大きい値、小数点以下最大8桁 |
| 証拠金ペア | currency_pair | from/toがmarginの場合に必須。例:BTC_USDT |
| 決済通貨 | settle | from/toがfuturesまたはdeliveryの場合に必須:usdt | btc |
case2: 通貨が指定されていない場合の自動補完
トリガー 「USDT建て口座に100を振り替えて」/「先物に500を振り替えて」/「無期限口座に1000を振り替えて」
ロジック
振替先の口座に基づいてcurrencyを設定します。
| 振替先口座 | デフォルト通貨 |
|---|---|
| USDT無期限(futures settle=usdt) | USDT |
| BTC無期限(futures settle=btc) | BTC |
| TradFi | USDT |
| Delivery | USDT |
| Options | USDT |
| Spot / margin | 文脈から推測するか、確認します |
手順
currencyを設定した後はcase1と同じです。
出力(ドラフト) 「{amount}を{to account name}に振り替える操作を検出しました。口座タイプに基づき、デフォルト通貨は{currency}です。確認してください。」
case3: 振替完了(API成功)
トリガー
ユーザーが確認し、gate-cli cex wallet transfer createが成功を返しました。
出力
- 「振替が完了しました。{amount} {currency}が{to account name}に入金されました。」
- 任意:振替先に応じた商品を提案します(spot / USDT perpetual / BTC perpetual / delivery / margin / TradFi / options)。
- 「振替履歴:transfer/historyV2」(または同等のもの)。
case4: 残高不足
トリガー 事前確認で、振替元の利用可能残高が振替金額を下回っています。
アクション 振替APIを呼び出さないでください。
出力 「{from account name}の残高が不足しています(利用可能額:{available} {currency})。金額を調整するか、先に入金してください。」
case5: from/toの指定漏れ、または意図が曖昧な場合
トリガー 「契約がまもなく清算されるので、証拠金として資金を振り替えて」/「先物の証拠金を補充して」/「口座の資金を調整する方法は?」
ロジック
- from、to、currency、amountのうち2つ以上が不足している場合は、不足情報カードを表示してユーザーに入力を求めます。
- 片方の口座だけが明確な場合のデフォルト:
- 統合/取引口座のアドバンスモード:fromのデフォルトはTrading account、toのデフォルトはBTC perpetualです。
- クラシックモード:fromのデフォルトはSpot、toのデフォルトはUSDT perpetualです。
- 4つの要素がすべて明確になるまでAPIを呼び出さないでください。
出力 「証拠金の補充をお手伝いできます。振替元口座、振替先口座、通貨(分かれば金額も)を指定してください。」
case6: 口座モードの競合
トリガー ユーザーが取引口座のアドバンスモードで、USDT perpetualへの振替を依頼しています。このモードでは、USDT perpetualへの直接振替が許可されない場合があります(振替経路が利用できません)。 出力 「現在、取引口座モードになっています。USDT perpetualへの直接振替は利用できません。代わりにBTC perpetual(コイン建て)へ振り替えるか、ウェブで口座モードを変更してください。」
case7:通貨と振替先アカウントの不一致
トリガー 「USDTをBTC無期限アカウントに振り替えて」
ロジック BTC無期限アカウントの決済通貨はBTCです。USDTとは一致しません。
- オプションA:ユーザーの意図に沿う場合は、BTCの金額に修正します。
- オプションB:BTC無期限アカウントではBTCが使われることを説明し、BTCを振り替えるか、USDTの場合はUSDT無期限アカウントを使うよう提案します。
- ユーザーが修正した下書き(例:現物からBTC建て無期限アカウントへの振替)を確認した場合は、case1と同様に進めます。
出力 「BTC無期限アカウントではBTCで決済されます。振替通貨をBTCに修正しました(または:BTC建ての金額を指定してください)。確認してください。」または「USDTの場合は、代わりにUSDT無期限アカウントを使ってください。」
case8:金額が未指定
トリガー 「USDTを現物から先物に振り替えて」/「USDTを無期限アカウントに移して」(金額なし)。 アクション 「{from}から{to}へ{currency}をいくら振り替えますか?」と尋ねます。ユーザーが金額を指定した後も通貨が未指定の場合は、通貨を解決し(case2)、その後case1と同様に進めます。
case9:ユーザーがキャンセルまたは拒否
トリガー 振替の下書きの後、ユーザーが「いいえ」/「キャンセル」/「実行しないで」/「やっぱりやめる」と言った場合。
アクション APIを呼び出さないでください。「振替をキャンセルしました。変更はありません。」と応答します。
case10:確認が曖昧、または古い
トリガー 下書きの後、ユーザーが明確な確認以外の返信をした場合(例:新たな質問、異なる金額、または長いやり取りの中での曖昧な「OK」)。 アクション 実行しないでください。振替の下書きを再提示し、「この振替を実行するには、明示的に確認してください(例:「Confirm」または「Yes」)。」と伝えます。
case11:レート制限またはサービスエラー
トリガー
APIがTOO_MANY_REQUESTSまたはサーバー/ネットワークエラーを返した場合。
アクション 同じターン内で自動的に再試行しないでください。 出力 「リクエストに失敗しました(レート制限/サービスエラー)。時間をおいて再度お試しいただくか、ウェブアプリを使って振り替えてください。」
例外フローの概要
| 例外 | 対応 | 実行をブロック |
|---|---|---|
| ログインしていない | ログインするよう促す | はい |
| 残高不足 | 不足額を表示し、入金または金額調整を提案(case4) | はい |
| 無効なアカウント経路(例:振替元/振替先が許可されていない) | 正しい設定に修正するよう案内(case5/case6) | いいえ、案内する |
| ユーザーによるキャンセル/拒否 | 応答する(case9) | はい |
| 確認がない/曖昧 | 下書きを再提示し、明示的な確認を求める(case10) | はい |
| レート制限/サービスエラー | 後で再試行するか、ウェブを利用する(case11) | はい |
| リスク管理/クォータ | 理由を明確に表示する | はい |
APIリファレンス
リクエストボディの例
{
"currency": "USDT",
"from": "spot",
"to": "futures",
"amount": "100",
"currency_pair": "",
"settle": "usdt"
}
from / to → 商品名
| API値 | 商品名 |
|---|---|
| spot | 現物 |
| margin | 分離マージン |
| futures | 無期限(settleを使用) |
| delivery | 受渡 |
| options | オプション |
settle(futures / delivery)
| settle | アカウント |
|---|---|
| usdt | USDT無期限 |
| btc | BTC無期限 |
currency_pair(margin)
fromまたはtoがmarginの場合に必須です。例:BTC_USDT。
振替履歴の照会
振替後、ユーザーが履歴を尋ねることがあります。アカウントの種類ごとに確認してください。
| アカウント | 照会ツール(MCPが提供する場合) | 備考 |
|---|---|---|
| 現物 | gate-cli cex spot account book | 通貨、時刻、上限 |
| 無期限 | gate-cli cex futures account book | settle、type=dnw |
| 受渡 | gate-cli cex delivery account book | settle、type=dnw |
| マージン | gate-cli cex margin account book | currency_pair、時刻、上限 |
| オプション | gate-cli cex options account book | MCPのドキュメントを参照 |
REST:受渡はGET /delivery/{settle}/account_book?type=dnw、無期限はGET /futures/{settle}/account_book?type=dnw、マージンはGET /margin/account_book。
エラーコード
| コード | 意味 |
|---|---|
| BALANCE_NOT_ENOUGH | 残高不足。同じ金額で再試行しないでください |
| TOO_MANY_REQUESTS | レート制限。後で再試行するよう促します(case11) |
| QUOTA_NOT_ENOUGH | クォータ超過。メッセージを表示します |
実行ルール(概要)
- エンドポイントは1つのみ:内部振替には
POST /wallet/transfers(gate-cli cex wallet transfer create)のみを使用します。フェーズ1ではメイン口座とサブ口座間の振替は行いません。 - 振替案を必ず表示します。振替元、振替先、通貨、金額を記載し、必要に応じて決済通貨/通貨ペアも含めます。
- 次のユーザーのターンで明示的な確認が必要です。確認は1回限りで、パラメーターが変更された場合は再確認を求めます。
- API を呼び出す前に残高を事前確認します。残高不足の場合はケース4に従い、呼び出しは行いません。
- 条件付きパラメーター:マージンでは
currency_pair、先物/デリバリーではsettleを指定します。 - 通貨が未指定の場合:ケース2のデフォルト表を使用します。金額が未指定の場合:ケース8に従って確認します。
- 口座モード/通貨の不一致:ケース6およびケース7に従い、実行前に解決または修正します。
- キャンセルまたは確認が曖昧な場合:ケース9/ケース10に従い、実行しません。