mcpField
C
crypto-com-app

crypto-com-app

github.com/crypto-comその他201.4k 回インストール9 週間前に更新
リポジトリ

crypto-com-app について

crypto-com-appは、Crypto.comの口座照会、コイン検索、取引手順を扱うエージェントスキルです。TypeScriptスクリプトでAPIを呼び出し、構造化JSONを解析します。取引実行にはユーザー確認の手順があります。

主な機能

  1. 01法定通貨と暗号資産の残高確認
  2. 02コイン検索とページ送り
  3. 03見積もり取得と取引確認
  4. 04現金入金ネットワークと詳細の確認
  5. 05確認を伴う出金注文の作成

活用シーン

  1. 01口座残高の確認
  2. 02キーワードや市場条件によるコイン検索
  3. 03暗号資産取引の見積もりと確認
  4. 04法定通貨の入金・出金方法の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/crypto-com/crypto-agent-trading --skill crypto-com-app

インストール後、Claude Code で/crypto-com-appを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

_meta.json
references/
errors.md
scripts/
account.ts
coins.ts
fiat.ts
trade.ts
scripts/lib/
api.ts
output.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

ユーザーの意図を取引タイプに対応させる方法:

ユーザーの発言取引タイプFromTo
"Buy CRO with 100 USD"purchaseUSD(法定通貨)CRO(暗号資産)
"Sell 0.1 BTC"saleBTC(暗号資産)USD(法定通貨)
"Swap 0.1 BTC to ETH"exchangeBTC(暗号資産)ETH(暗号資産)

取引タイプごとの見積もり用 JSON パラメーター:

TypeJSON 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":

  1. 実行:npx tsx $SKILL_DIR/scripts/trade.ts quote purchase '{"from_currency":"USD","to_currency":"CRO","from_amount":"100"}'
  2. レスポンスから data.id、data.from_amount、data.to_amount、data.countdown を読み取ります。
  3. 確認が必要な場合(デフォルト): ユーザーに「確認してください:100 USD で X CRO です。{countdown} 秒間有効です。続行するには「YES」と返信してください」と尋ねます。
    • ユーザーが制限時間内に YES と答えた場合:npx tsx $SKILL_DIR/scripts/trade.ts confirm purchase <data.id>
  4. 確認がオプトアウトされている場合(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 パラメーター:

ParameterTypeAllowed values
sort_bystringrank、market_cap、alphabetical、volume、performance
sort_directionstringasc、desc
native_currencystring大文字の通貨コード(例:USD)
keywordstring検索文字列。1~100 文字。コイン名とシンボルのみが一致対象です
page_sizeinteger1 ページあたりの結果数

任意: 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_METHODpayment-networks のネットワーク IDus_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 を入金するにはどうすればよいですか?」:

  1. 実行:npx tsx $SKILL_DIR/scripts/fiat.ts payment-networks USD
  2. data 配列を確認します。各エントリーには deposit_push_payment_networks(例:["us_ach", "us_wire_transfer"])が含まれます。
  3. 詳細を確認するには:npx tsx $SKILL_DIR/scripts/fiat.ts deposit-methods USD us_ach
  4. data 配列を確認します。ルーティング番号、口座番号などを含む bank_details が含まれます。

例 — 「ACH 経由で 500 USD を出金」:

  1. 実行:npx tsx $SKILL_DIR/scripts/fiat.ts withdrawal-details USD us_ach — 上限と手数料を確認します
  2. 実行:npx tsx $SKILL_DIR/scripts/fiat.ts create-withdrawal-order '{"currency":"USD","amount":"500","viban_type":"us_ach"}'
  3. レスポンスから data.id(注文 ID)、data.fee、data.receivable_amount を確認します
  4. ユーザーに確認します:「ACH 経由で 500 USD を出金します。手数料:{fee}。受取額:{receivable_amount}。よろしいですか?」
  5. はいの場合:npx tsx $SKILL_DIR/scripts/fiat.ts create-withdrawal <order-id>
  6. 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_ENVCDC_API_KEY または CDC_API_SECRET が設定されていませんターミナルから環境変数を設定するようユーザーに伝えます
API_ERRORAPI が 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_primePrime の特典を利用する資格がありません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_activeAPI キーが無効化されているか、有効期限が切れています新しい 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つ → 自動的に選択して続行します。
  • 残高がある通貨が複数 → 通貨の一覧を提示し、続行する前にユーザーに選択を求めます。
  • 残高がない → 「現金残高はまだありません。」と伝えて終了します。

入金フロー:

  1. discover を実行して、ユーザーが利用できる現金通貨とネットワークを表示します
  2. ユーザーが通貨とネットワークを選択したら、deposit-methods を実行して銀行情報を取得します
  3. 銀行情報(ルーティング番号、口座番号、銀行名、照会番号)を提示します
  4. 任意で email-deposit-info を実行し、ユーザーに手順をメールで送信します
  5. レート制限: email-deposit-info は30分あたり5回までです。クールダウンエラーが発生した場合は、ユーザーに伝え、cooldown_in_seconds の値を表示します。

出金フロー:

  1. bank-accounts <currency> を実行して、対象となる口座を一覧表示します(status: "completed" のものだけに絞り込みます)
    • 対象口座が1つ → 自動的に選択します
    • 対象口座が複数 → 一覧(銀行名、口座識別子、ネットワーク)を提示し、ユーザーに選択を求めます
    • 対象口座がない → 「{currency} の対象となる銀行口座が見つかりません。先に銀行口座を登録してください。」と伝えて終了します
  2. withdrawal-details を実行して、出金限度額、手数料、最低金額を確認します
  3. 手順1の金額、ネットワーク、bank_account_id を指定して create-withdrawal-order を実行します — 手数料を含む注文が返されます
  4. 実行前に必ずユーザーに確認してください(memory.confirmation_required の値に関係なく):
    • 金額、手数料、受取金額、ネットワーク、出金先の銀行口座、処理時間を表示します
    • 続行するには明示的な「YES」が必要です
  5. 注文 ID を指定して create-withdrawal を実行します
  6. 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

コメント