crypto-com-app について
crypto-com-appは、Crypto.comの口座照会、コイン検索、取引手順を扱うエージェントスキルです。TypeScriptスクリプトでAPIを呼び出し、構造化JSONを解析します。取引実行にはユーザー確認の手順があります。
主な機能
- 01法定通貨と暗号資産の残高確認
- 02コイン検索とページ送り
- 03見積もり取得と取引確認
- 04現金入金ネットワークと詳細の確認
- 05確認を伴う出金注文の作成
活用シーン
- 01口座残高の確認
- 02キーワードや市場条件によるコイン検索
- 03暗号資産取引の見積もりと確認
- 04法定通貨の入金・出金方法の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ crypto-com/ crypto-agent-trading --skill crypto-com-appインストール後、Claude Code で/crypto-com-appを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
_meta.jsonreferences/errors.mdscripts/account.tscoins.tsfiat.tstrade.tsscripts/lib/api.tsoutput.ts詳細
スキル:crypto-com-app
エージェントの機能要件
このスキルを使用するには、エージェントプラットフォームが以下の機能に対応している必要があります。必須の機能がプラットフォームにない場合、このスキルは動作しません。
| 機能 | 必須 | 詳細 |
|---|---|---|
| シェルコマンドの実行 | はい | npx tsx ./scripts/... を実行し、標準出力を取得できる必要があります |
| 環境変数 | はい | シェル環境から CDC_API_KEY と CDC_API_SECRET を読み取れる必要があります |
| JSON の解析 | はい | スクリプトの標準出力から構造化された JSON を解析し、フィールドを抽出できる必要があります |
| 複数ターンの会話 | はい | 取引では、複数のユーザーターンにわたる見積もり → 確認のフローを使用します |
| 永続メモリ | いいえ | confirmation_required の設定に使用します。未対応の場合、取引は常に確認を求める設定にしてください |
| 経過時間の把握 | いいえ | 見積もりの有効期限(countdown フィールド)の確認に使用します。未対応の場合は常に確認を試み、invalid_quotation エラーを適切に処理してください |
重要:このスキルの動作方法
すべての API 操作には、必ず TypeScript スクリプトを使用してください。curl、fetch、その他の HTTP メソッドで API を直接呼び出してはいけません。
スクリプトはリクエストの署名、エラー処理、レスポンスの整形を行います。スクリプトを介さずに呼び出すと:
- リクエストは失敗します(HMAC 署名がありません)
- レスポンスはフィルタリングも構造化もされません
すべてのユーザーリクエストについて、以下から該当するコマンドを見つけ、npx tsx 経由で実行してください。JSON 出力を読み取り、それに基づいて対応してください。
設定
- BASE_URL:
https://wapi.crypto.com - CDC_API_KEY:
{{env.CDC_API_KEY}} - CDC_API_SECRET:
{{env.CDC_API_SECRET}} - CONFIRMATION_REQUIRED:
{{memory.confirmation_required}}(デフォルト:true) - SKILL_DIR:この
SKILL.mdファイルがあるディレクトリです。このファイルを読み込んだパスから特定してください(例:/home/user/skills/crypto-com-app/SKILL.mdを読み込んだ場合、SKILL_DIRは/home/user/skills/crypto-com-appです)。
環境設定
-
使用前に、
CDC_API_KEYとCDC_API_SECRETの両方を環境変数として設定する必要があります。 -
スクリプトを実行する前に必ず、以下を実行して両方の変数が設定されているか確認してください:
echo "CDC_API_KEY=${CDC_API_KEY:+set}" "CDC_API_SECRET=${CDC_API_SECRET:+set}"どちらかの出力が
setではなく空の場合、ユーザーに次のように案内してください:"API 認証情報が設定されていません。続行するには、ターミナルで設定してください:
export CDC_API_KEY="your-api-key" export CDC_API_SECRET="your-api-secret"API キーは https://help.crypto.com/en/articles/13843786-api-key-management で生成できます。 設定が完了したらお知らせください。"
その後、ユーザーから確認があるまで停止して待機してから再試行してください。
-
スクリプトが
MISSING_ENVエラーを返した場合も同様に扱い、変数を設定するようユーザーに案内して待機してください。
スクリプトコマンド
すべての API 操作は、必ずこれらのスクリプト経由で行ってください。 スクリプトは署名、実行、フィルタリング、エラーの整形を処理します。シェルから適切なコマンドを実行し、JSON 出力を解析してください。
前提条件: npx tsx(Node.js 18 以降が必要です。tsx は npx によって自動的に取得されます)。
重要: 以下のスクリプトパスでは、このスキルのルートディレクトリを表すプレースホルダーとして $SKILL_DIR を使用しています。この SKILL.md ファイルを読み込んだパスから特定するか、スキルのディレクトリに cd してパスに ./scripts/... を使用してください。どちらの方法でも構いません。
アカウントコマンド
# Filtered non-zero balances (scope: fiat | crypto | all)
npx tsx $SKILL_DIR/scripts/account.ts balances [fiat|crypto|all]
# Single token balance lookup
npx tsx $SKILL_DIR/scripts/account.ts balance <SYMBOL>
# Weekly trading limit
npx tsx $SKILL_DIR/scripts/account.ts trading-limit
# Find funded source wallets for a trade type
npx tsx $SKILL_DIR/scripts/account.ts resolve-source <purchase|sale|exchange>
# Kill switch — revoke API key
npx tsx $SKILL_DIR/scripts/account.ts revoke-key
取引コマンド
取引は2段階のフローに従います。最初に見積もりを取得し、その後注文を確定します。
# Step 1 — Get quotation (type: purchase | sale | exchange)
npx tsx $SKILL_DIR/scripts/trade.ts quote <type> '<json-params>'
# Returns: {"ok": true, "data": {"id": "<quotation-id>", "from_amount": {...}, "to_amount": {...}, "countdown": 15, ...}}
# Step 2 — Confirm order: pass the data.id from Step 1 as <quotation-id>
npx tsx $SKILL_DIR/scripts/trade.ts confirm <type> <quotation-id>
# View recent transactions
npx tsx $SKILL_DIR/scripts/trade.ts history
ユーザーの意図を取引タイプに対応させる方法:
| ユーザーの発言 | 取引タイプ | From | To |
|---|---|---|---|
| "Buy CRO with 100 USD" | purchase | USD(法定通貨) | CRO(暗号資産) |
| "Sell 0.1 BTC" | sale | BTC(暗号資産) | USD(法定通貨) |
| "Swap 0.1 BTC to ETH" | exchange | BTC(暗号資産) | ETH(暗号資産) |
取引タイプごとの見積もり用 JSON パラメーター:
| Type | JSON fields |
|---|---|
| purchase | {"from_currency":"USD","to_currency":"CRO","from_amount":"100"} または代わりに to_amount を使用 |
| sale | {"from_currency":"BTC","to_currency":"USD","from_amount":"0.1","fixed_side":"from"} |
| exchange | {"from_currency":"BTC","to_currency":"ETH","from_amount":"0.1","side":"buy"} |
例 — "Buy CRO with 100 USD":
- 実行:
npx tsx $SKILL_DIR/scripts/trade.ts quote purchase '{"from_currency":"USD","to_currency":"CRO","from_amount":"100"}' - レスポンスから
data.id、data.from_amount、data.to_amount、data.countdownを読み取ります。 - 確認が必要な場合(デフォルト): ユーザーに「確認してください:100 USD で X CRO です。{countdown} 秒間有効です。続行するには「YES」と返信してください」と尋ねます。
- ユーザーが制限時間内に YES と答えた場合:
npx tsx $SKILL_DIR/scripts/trade.ts confirm purchase <data.id>
- ユーザーが制限時間内に YES と答えた場合:
- 確認がオプトアウトされている場合(
memory.confirmation_requiredがfalse): 確認を求めず、すぐにnpx tsx $SKILL_DIR/scripts/trade.ts confirm purchase <data.id>を実行します。
オプトイン/オプトアウト: ユーザーは「確認を求めないで」と言うと取引を自動実行でき、「確認を必須にして」と言うと確認プロンプトを再度有効にできます。以下のセクション 3 を参照してください。
コイン検索コマンド
# Search coins
npx tsx $SKILL_DIR/scripts/coins.ts search '{"keyword":"BTC","sort_by":"rank","sort_direction":"asc","native_currency":"USD","page_size":10}'
必須の JSON パラメーター:
| Parameter | Type | Allowed values |
|---|---|---|
sort_by | string | rank、market_cap、alphabetical、volume、performance |
sort_direction | string | asc、desc |
native_currency | string | 大文字の通貨コード(例:USD) |
keyword | string | 検索文字列。1~100 文字。コイン名とシンボルのみが一致対象です |
page_size | integer | 1 ページあたりの結果数 |
任意: page_token — 次のページを取得するための不透明なトークンです(以下のページネーションを参照)。
ページネーション: レスポンスには、has_more(ブール値)と next_page_token(文字列)を含む pagination オブジェクトがあります。has_more が true の場合、次のページを取得するリクエストで next_page_token を page_token として渡します。
コインごとの主なレスポンスフィールド: rails_id(取引 API およびアカウント API の currency_id/currency と同一です。相互参照に使用します)、price_native、price_usd、percent_change_*_native(過去の期間における価格パフォーマンス。例:percent_change_24h_native)。
現金(法定通貨)コマンド
現金コマンドでは、入金、出金、銀行口座の管理を行います。
# Cash overview — balances + available payment networks per currency
npx tsx $SKILL_DIR/scripts/fiat.ts discover
# Payment networks for a currency
npx tsx $SKILL_DIR/scripts/fiat.ts payment-networks <CURRENCY>
# Deposit method details (bank routing info)
npx tsx $SKILL_DIR/scripts/fiat.ts deposit-methods <CURRENCY> <DEPOSIT_METHOD>
# Email deposit instructions to user
npx tsx $SKILL_DIR/scripts/fiat.ts email-deposit-info <CURRENCY> <VIBAN_TYPE>
# Withdrawal details (quotas, fees, minimums)
npx tsx $SKILL_DIR/scripts/fiat.ts withdrawal-details <CURRENCY> <VIBAN_TYPE>
# Create withdrawal order (returns order with fees + receivable amount)
npx tsx $SKILL_DIR/scripts/fiat.ts create-withdrawal-order '<json-params>'
# Execute withdrawal (may prompt for TOTP authenticator code)
npx tsx $SKILL_DIR/scripts/fiat.ts create-withdrawal <ORDER_ID>
# List linked bank accounts
npx tsx $SKILL_DIR/scripts/fiat.ts bank-accounts [CURRENCY]
主なパラメーター:
| パラメーター | 説明 | 値の例 |
|---|---|---|
CURRENCY | 大文字の通貨コード | USD、EUR、GBP、AUD |
DEPOSIT_METHOD | payment-networks のネットワーク ID | us_ach、sepa、uk_fps |
VIBAN_TYPE | 入金方法/出金ネットワークと同じ | us_ach、sepa、uk_fps |
出金注文の JSON パラメーター:
| フィールド | 必須 | 説明 |
|---|---|---|
currency | はい | 通貨コード(例:"USD") |
amount | はい | 文字列形式の金額(例:"500.00") |
viban_type | はい | 決済ネットワーク(例:"us_ach") |
bank_account_id | いいえ | 特定の銀行口座 ID |
例 — 「USD を入金するにはどうすればよいですか?」:
- 実行:
npx tsx $SKILL_DIR/scripts/fiat.ts payment-networks USD data配列を確認します。各エントリーにはdeposit_push_payment_networks(例:["us_ach", "us_wire_transfer"])が含まれます。- 詳細を確認するには:
npx tsx $SKILL_DIR/scripts/fiat.ts deposit-methods USD us_ach data配列を確認します。ルーティング番号、口座番号などを含むbank_detailsが含まれます。
例 — 「ACH 経由で 500 USD を出金」:
- 実行:
npx tsx $SKILL_DIR/scripts/fiat.ts withdrawal-details USD us_ach— 上限と手数料を確認します - 実行:
npx tsx $SKILL_DIR/scripts/fiat.ts create-withdrawal-order '{"currency":"USD","amount":"500","viban_type":"us_ach"}' - レスポンスから
data.id(注文 ID)、data.fee、data.receivable_amountを確認します - ユーザーに確認します:「ACH 経由で 500 USD を出金します。手数料:{fee}。受取額:{receivable_amount}。よろしいですか?」
- はいの場合:
npx tsx $SKILL_DIR/scripts/fiat.ts create-withdrawal <order-id> - TOTP が必要な場合、スクリプトは stderr に 6 桁の認証コードを入力するよう求めます
出力形式
すべてのスクリプトは、構造化 JSON を stdout に出力します。
成功:
{"ok": true, "data": { ... }}
エラー:
{"ok": false, "error": "ERROR_CODE", "error_message": "Human-readable message"}
制約
- 検証: 成功するには、スクリプト出力で
ok: trueである必要があります。 - 確認期限: 見積もりの有効期限は、見積もりデータの
countdownフィールドで定義されます。 - 実行に関する警告: 注文の確定に 5 秒以上かかる場合は、「注文は送信されましたが、想定より時間がかかっています。『最近の取引を表示』で注文状況を確認してください」と通知します。
- レート制限:
- 1 分あたり最大 10 件の取引。
- 1 分あたり最大 100 回の API 呼び出し。
- HTTP 429(
RATE_LIMITEDエラー)の場合:同じリクエストを再試行する前に 60 秒待ちます。ユーザーに「レート制限に達しました。再試行する前に 60 秒お待ちください」と伝えます。
エラー処理
すべてのスクリプトは構造化エラーを返します。適切な応答を判断するには、error フィールドを解析してください。
スクリプトのエラーコード
以下は、スクリプトの JSON 出力に含まれる error の値です。発生した失敗のカテゴリを示します。
| エラーコード | 意味 | エージェントの応答 |
|---|---|---|
MISSING_ENV | CDC_API_KEY または CDC_API_SECRET が設定されていません | ターミナルから環境変数を設定するようユーザーに伝えます |
API_ERROR | API が 200 以外を返した、または ok !== true | 報告:「取引に失敗しました:{error_message}」 |
INVALID_ARGS | コマンドライン引数が正しくありません | error_message に記載された正しい使い方を提示します |
QUOTATION_FAILED | 見積もりリクエストが API に拒否されました | error_message をユーザーに伝えます(以下の API エラーを参照) |
EXECUTION_FAILED | 注文の確定に失敗しました | 報告し、「『最近の取引を表示』で注文状況を確認してください」と提案します |
API_KEY_NOT_FOUND | キーはすでに取り消されているか、存在しません | 「API キーが見つかりません。すでに取り消されている可能性があります。」 |
RATE_LIMITED | リクエストが多すぎます(HTTP 429) | 「レート制限に達しました。再試行する前に 60 秒お待ちください。」 |
UNKNOWN | 予期しないエラー | 生の error_message を報告します |
ルール: 出力で ok が false の場合、現在の操作を停止し、上記のガイダンスに従ってエラーをユーザーに報告します。失敗後に次の手順へ進んではいけません。
一般的な API エラー(クイックリファレンス)
以下は、QUOTATION_FAILED、EXECUTION_FAILED、または API_ERROR のレスポンスの error_message 内に現れる具体的な API エラーコードです。API がリクエストを拒否した理由を示しています。
error | 意味 | 対処方法 |
|---|---|---|
not_enough_balance | 残高不足 | 残高を確認し、取引額を減らします |
invalid_currency | 通貨コードが認識されません | コイン検索で確認します |
invalid_quotation | 見積もりの有効期限が切れているか、すでに使用されています | 新しい見積もりをリクエストします |
failed_to_create_quotation | 見積もりエンジンのエラー | 少し待ってから再試行します |
not_eligible_for_prime | Prime の特典を利用する資格がありません | Prime を利用せずに進めます |
unauthorized | アカウントが取引を承認されていません | サポートに問い合わせます |
restricted_feature | アカウントで機能が制限されています | error_message をユーザーに伝えます |
existing_currency_order_error | 既存の注文が進行中です | 既存の注文が完了するまで待つか、キャンセルします |
viban_purchase_not_enabled | 法定通貨から暗号資産への購入が有効になっていません | アカウントでこの機能を利用できません |
crypto_viban_not_enabled | 暗号資産から法定通貨への売却が有効になっていません | アカウントでこの機能を利用できません |
bank_transfer_not_enabled | 銀行振込が有効になっていません | アカウントでこの機能を利用できません |
missing_parameter | 必須パラメーターがありません | スクリプトの不具合です。報告してください |
failed_to_create_transaction | トランザクションの作成に失敗しました | 再試行するか、サポートに問い合わせます |
key_not_active | API キーが無効化されているか、有効期限が切れています | 新しい API キーを生成し、環境変数を更新します |
api_key_not_found | キーが存在しないか、別のユーザーに属しています | CDC_API_KEY に正しいキーが設定されていることを確認します |
totp_required | 出金に 2FA コードが必要です | スクリプトが自動的に処理し、認証アプリのコードをユーザーに求めます |
withdrawal_limit_exceeded | 日次または月次の上限を超えています | withdrawal-details で上限を表示し、金額を減らします |
invalid_bank_account | 銀行口座を利用できません | bank-accounts で status: completed の有効な口座を確認します |
withdrawal_cooling_off | 出金設定が最近変更されました | クーリングオフ期間が終了するまで待ち、error_message をユーザーに伝えます |
email_cooldown | 入金情報のメールを送りすぎています | クールダウン期間(エラーに表示)を待ってから、再試行します |
上限超過、通貨の無効化、クーリングオフなどの動的なエラーについては、error と error_message をそのままユーザーに伝えてください。詳細については、references/errors.md を参照してください。
ロジックとルール
1. 資産と送金元の判別
まず取引の種類を特定します。
- 購入 — 法定通貨 → 暗号資産
- 売却 — 暗号資産 → 法定通貨
- 交換 — 暗号資産 → 暗号資産
次に送金元ウォレットを特定します。
- 購入の場合:
npx tsx $SKILL_DIR/scripts/account.ts resolve-source purchaseを実行します。スクリプトは、資金のある法定通貨の項目のみを返します。 - 売却または交換の場合:
npx tsx $SKILL_DIR/scripts/account.ts resolve-source sale(またはexchange)を実行します。スクリプトは、資金のある暗号資産の項目のみを返します。
結果(data.status の値):
SELECTED→data.currencyを自動選択します。AMBIGUOUS→data.optionsから選ぶようユーザーに促します。EMPTY→ ユーザーに「資金のあるウォレットが見つかりません」と伝え、処理を停止します。
「すべて売却」の場合: ユーザーが「[TOKEN] をすべて売却」と指示した場合は、npx tsx $SKILL_DIR/scripts/account.ts balance [TOKEN] を実行します。data.available の金額(または data.balance)を見積もりの from_amount として使用します。
2. 取引プロセス(見積もり → 確認 → 実行)
ユーザーが暗号資産の購入、売却、または交換を依頼した場合は、必ず次の3ステップのフローに従ってください。
-
ステップ A — 見積もりを取得する: ユーザーの依頼に基づいて JSON パラメーターを作成し(Trade Commands の「Quotation JSON params」テーブルを参照)、次を実行します。
npx tsx $SKILL_DIR/scripts/trade.ts quote <type> '<json-params>'応答からdata.id、data.from_amount、data.to_amount、data.countdownを読み取ります。 -
ステップ B — ユーザーに確認を求める:
- もし
memory.confirmation_requiredがtrue(または未設定)の場合:- プロンプト:「確認してください:{from_amount} で {to_amount} です。有効期限は {countdown} 秒です。続行するには「YES」と返信してください。」
- 有効期限のロジック:
countdown秒が経過した後にユーザーが「YES」と返信した場合は、次のように拒否します:「取引は拒否されました:見積もりレートの有効期限が切れています。新しい見積もりを依頼してください。」 - 有効期間内にユーザーが「YES」と返信した場合に限り、ステップ C を実行します。
- それ以外(オプトアウト済み)の場合:
- 通知:「見積もりを受け取りました。自動的に実行に進みます……」
- 直ちにステップ C に進みます。
- もし
-
ステップ C — 注文を実行する: ステップ A の
idを使用して、次を実行します:npx tsx $SKILL_DIR/scripts/trade.ts confirm <type> <data.id>
3. メモリ管理(オプトイン/オプトアウト)
- オプトアウトするには: ユーザーが「確認を求めるのをやめて」または「自動取引を有効にして」と言った場合、
memory.confirmation_requiredをfalseに更新します。 - オプトインするには: ユーザーが「確認を必須にして」または「手動取引を有効にして」と言った場合、
memory.confirmation_requiredをtrueに更新します。 - 永続メモリに対応していないプラットフォーム: プラットフォームが
{{memory.*}}に対応していない場合は、confirmation_requiredを常にtrueとして扱います(最も安全なデフォルト)。
4. エラー処理
- すべてのスクリプト出力には
okフィールドが含まれます。成功と見なされるのはok: trueの場合のみです。 okがfalseの場合は、errorを読み取り、上記のエラー処理テーブルに従って応答します。- コマンドが失敗した後は、次のステップに進まないでください。
5. アカウントと履歴
- 履歴:
npx tsx $SKILL_DIR/scripts/trade.ts historyを実行し、dataのエントリーを表示します。 - 週間取引上限:
npx tsx $SKILL_DIR/scripts/account.ts trading-limitを実行し、次の形式で表示します:「📊 Weekly Trading Limit: {data.used} / {data.limit} USD (Remaining: {data.remaining} USD)」。 - 法定通貨と暗号資産の残高の振り分け: ユーザーから特定の通貨の残高について質問された場合、それが法定通貨(USD、EUR、GBP、AUD、SGD、CAD、BRL など)か、暗号資産トークン(BTC、ETH、CRO など)かを判断します。
- 法定通貨 →
npx tsx $SKILL_DIR/scripts/account.ts balances fiat(法定通貨の残高をすべて表示)またはnpx tsx $SKILL_DIR/scripts/fiat.ts discover(残高と決済ネットワークを表示)を実行します。法定通貨には絶対にbalance <SYMBOL>を使用しないでください。これは暗号資産ウォレットを照会するため、必ず 0 が返されます。 - 暗号資産トークン →
npx tsx $SKILL_DIR/scripts/account.ts balance <SYMBOL>を実行します。 - 判断できない場合 →
npx tsx $SKILL_DIR/scripts/account.ts balances allを実行し、法定通貨と暗号資産の両方を表示します。
- 法定通貨 →
- 残高(分類別):
- 「法定通貨を一覧表示」の場合:
npx tsx $SKILL_DIR/scripts/account.ts balances fiatを実行します。 - 「暗号資産を一覧表示」の場合:
npx tsx $SKILL_DIR/scripts/account.ts balances cryptoを実行します。 - 「すべて一覧表示」の場合:
npx tsx $SKILL_DIR/scripts/account.ts balances allを実行します。重要: 法定通貨のカテゴリを先に表示し、その下に暗号資産の残高を表示します。 - スクリプトは残高が 0 のエントリーを自動的に除外します。出力にカテゴリのエントリーがない場合は、その見出しの下に「保有資産なし」と表示します。
- 暗号資産の残高(
data.crypto)にはnoteフィールド(「取引可能」)とwallets配列が含まれます。これらの金額は取引に利用可能な残高であり、すべての商品を合算した保有額はこれを上回る場合があることを、必ずユーザーに伝えてください。 - ポートフォリオ配分: 暗号資産の残高を照会すると、出力に
portfolio_allocation配列が含まれる場合があります。各エントリーには商品名nameと価格price_native(USD 相当額)が含まれます。これを、商品(Crypto Wallet、Exchange、Earn、Staking など)ごとのユーザーの資産配分の概要として表示します。 - 単一トークンの残高(
balance <SYMBOL>)の出力には、product_allocationオブジェクトが含まれる場合があります。キーは商品名(例:crypto_earn、staking、supercharger、crypto_basket、airdrop_arena)、値は各商品で保有しているトークンの数量です。0 以外の商品だけが含まれます。取引可能な残高とあわせてこれらの配分もユーザーに要約し、トークンがどこに保有されているか全体像を把握できるようにします。
- 「法定通貨を一覧表示」の場合:
6. 緊急停止
- トリガー: ユーザーが「STOP ALL TRADING」、「kill switch」、または同様の緊急停止コマンドを入力した場合。
memory.confirmation_requiredの設定にかかわらず、必ず明示的な確認を求めてください。- 確認文:「⚠️ 警告:この操作を行うと、API キーがただちに取り消され、すべての取引が無効になります。取引を再開するには、新しい API キーを生成する必要があります。続行するには「CONFIRM KILL SWITCH」と入力してください。」
- ユーザーが完全に一致するフレーズで返信した場合にのみ実行します。
- 実行:
npx tsx $SKILL_DIR/scripts/account.ts revoke-keyを実行します。 - 成功時(
ok: true): 「🛑 緊急停止を有効にしました。API キーは取り消され、すべての取引が無効になっています。取引を再開するには、新しい API キーを生成し、環境変数を更新してください。」と通知します。 API_KEY_NOT_FOUNDエラー時: 「API キーが見つかりません。すでに取り消されているか、存在しない可能性があります。」と通知します。- 冪等性: すでに取り消されているキーの再取り消しはエラーではありません。取り消しが成功した場合と同様に扱います。
7. 残高の表示形式
- 法定通貨の見出し: 「🏦 Fiat Balances」
- 暗号資産の見出し: 「🪙 Crypto Balances」
- 両方を求められた場合は、必ず法定通貨のセクションを先に表示します。
- 残高が 0 の資産は絶対に表示しないでください。 残高が 0 より大きい資産のみ表示します。カテゴリ内のすべての資産が 0 の場合は、その見出しの下に「保有資産なし」と表示します。
8. 現金の入金と出金
用語: ユーザー向けメッセージでは「fiat」ではなく「cash」を使用してください。「your fiat balance」ではなく「your cash balance」と表現してください。
通貨の特定: ユーザーが通貨を指定していない場合は、まず discover を実行してください。
- 残高がある通貨が1つ → 自動的に選択して続行します。
- 残高がある通貨が複数 → 通貨の一覧を提示し、続行する前にユーザーに選択を求めます。
- 残高がない → 「現金残高はまだありません。」と伝えて終了します。
入金フロー:
discoverを実行して、ユーザーが利用できる現金通貨とネットワークを表示します- ユーザーが通貨とネットワークを選択したら、
deposit-methodsを実行して銀行情報を取得します - 銀行情報(ルーティング番号、口座番号、銀行名、照会番号)を提示します
- 任意で
email-deposit-infoを実行し、ユーザーに手順をメールで送信します - レート制限:
email-deposit-infoは30分あたり5回までです。クールダウンエラーが発生した場合は、ユーザーに伝え、cooldown_in_secondsの値を表示します。
出金フロー:
bank-accounts <currency>を実行して、対象となる口座を一覧表示します(status: "completed"のものだけに絞り込みます)- 対象口座が1つ → 自動的に選択します
- 対象口座が複数 → 一覧(銀行名、口座識別子、ネットワーク)を提示し、ユーザーに選択を求めます
- 対象口座がない → 「{currency} の対象となる銀行口座が見つかりません。先に銀行口座を登録してください。」と伝えて終了します
withdrawal-detailsを実行して、出金限度額、手数料、最低金額を確認します- 手順1の金額、ネットワーク、
bank_account_idを指定してcreate-withdrawal-orderを実行します — 手数料を含む注文が返されます - 実行前に必ずユーザーに確認してください(
memory.confirmation_requiredの値に関係なく):- 金額、手数料、受取金額、ネットワーク、出金先の銀行口座、処理時間を表示します
- 続行するには明示的な「YES」が必要です
- 注文 ID を指定して
create-withdrawalを実行します - TOTP の処理: API が
totp_requiredを返した場合、スクリプトは stderr に6桁の認証アプリコードの入力を求めます。エージェントはユーザーに「入力を求められたら、6桁の認証アプリコードを入力してください。」と伝えてください。TOTP を生成したり、回避しようとしたりしてはいけません。
銀行口座:
bank-accountsを実行して、登録済みの口座を一覧表示します。通貨が指定されている場合は、その通貨で絞り込みます。- 出金に使用できるのは
status: "completed"の口座のみです。 - 各口座には
withdrawal_payment_networksが表示されます。これらを有効なviban_typeの値として使用します。
入金方法 — ベンダーの選択:
deposit-methodsはvendor_list配列を返します。各ベンダーにはstatusフィールドがあります。status: "created"(有効)のベンダーのみを表示します。"uncreated"のベンダーは無視します。createdのベンダーが複数ある場合は、一覧の最初のベンダーをデフォルトで選択します。
現金コマンドのクイックリファレンス:
| ユーザーの発言 | 実行するコマンド |
|---|---|
| 「USDを入金するにはどうすればいいですか?」 | payment-networks USD の後に deposit-methods USD <network> |
| 「入金手順をメールで送ってください」 | email-deposit-info <currency> <viban_type> |
| 「銀行口座を表示してください」 | bank-accounts |
| 「出金限度額を教えてください」 | withdrawal-details <currency> <viban_type> |
| 「USDを500出金してください」 | withdrawal-details -> create-withdrawal-order -> 確認 -> create-withdrawal |
| 「入金できる通貨を教えてください」 | discover |