crypto-agent-trading by crypto-com/crypto-agent-trading
npx skills add https://github.com/crypto-com/crypto-agent-trading --skill crypto-agent-trading此技能要求您的智能体平台支持以下能力。如果您的平台缺少任何必需能力,该技能将无法工作。
| 能力 | 必需 | 详情 |
|---|---|---|
| Shell 命令执行 | 是 | 必须能够运行 npx tsx ./scripts/... 并捕获标准输出 |
| 环境变量 | 是 | 必须能从 shell 环境中读取 CDC_API_KEY 和 CDC_API_SECRET |
| JSON 解析 | 是 | 必须能解析脚本标准输出的结构化 JSON 以提取字段 |
| 多轮对话 | 是 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 交易使用报价 → 确认流程,该流程跨越多个用户轮次 |
| 持久化内存 | 否 | 用于 confirmation_required 偏好设置。如果不支持,则默认始终确认交易 |
| 时间流逝感知 | 否 | 用于检查报价过期(countdown 字段)。如果不支持,则始终尝试确认并优雅处理 invalid_quotation 错误 |
您必须使用 TypeScript 脚本来处理所有 API 交互。切勿使用 curl、fetch 或任何其他 HTTP 方法直接调用 API。
脚本处理请求签名、错误处理和响应格式化。如果您绕过它们:
对于每个用户请求,找到下面匹配的命令并通过 npx tsx 运行它。读取 JSON 输出。据此行动。
https://wapi.crypto.com{{env.CDC_API_KEY}}{{env.CDC_API_SECRET}}{{memory.confirmation_required}} (默认: true)SKILL.md 文件的目录。根据您加载此文件的路径解析它(例如,如果您读取的是 /home/user/skills/crypto-agent-trading/SKILL.md,那么 SKILL_DIR 就是 /home/user/skills/crypto-agent-trading)。在使用前,必须将 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"您可以在 https://help.crypto.com/en/articles/13843786-api-key-management 生成 API 密钥。设置好后请告诉我。"
然后停止并等待用户确认,然后再重试。
MISSING_ENV 错误,请以相同方式处理:提示用户设置变量并等待。所有 API 交互必须通过这些脚本进行。 它们处理签名、执行、过滤和错误格式化。通过 shell 运行下面适当的命令,然后解析 JSON 输出。
前提条件: npx tsx(需要 Node.js 18+;tsx 由 npx 自动获取)。
重要: 下面的所有脚本路径都使用 $SKILL_DIR 作为此技能根目录的占位符。根据您加载此 SKILL.md 的路径解析它,或者 cd 进入技能目录并使用 ./scripts/... 作为路径。两种方法都有效。
# 过滤非零余额(范围:fiat | crypto | all)
npx tsx $SKILL_DIR/scripts/account.ts balances [fiat|crypto|all]
# 单一代币余额查询
npx tsx $SKILL_DIR/scripts/account.ts balance <SYMBOL>
# 周度交易限额
npx tsx $SKILL_DIR/scripts/account.ts trading-limit
# 为交易类型查找有资金的源钱包
npx tsx $SKILL_DIR/scripts/account.ts resolve-source <purchase|sale|exchange>
# 紧急停止开关 — 撤销 API 密钥
npx tsx $SKILL_DIR/scripts/account.ts revoke-key
交易遵循两步流程:首先获取报价,然后确认订单。
# 步骤 1 — 获取报价(类型:purchase | sale | exchange)
npx tsx $SKILL_DIR/scripts/trade.ts quote <type> '<json-params>'
# 返回:{"ok": true, "data": {"id": "<quotation-id>", "from_amount": {...}, "to_amount": {...}, "countdown": 15, ...}}
# 步骤 2 — 确认订单:将步骤 1 中的 data.id 作为 <quotation-id> 传入
npx tsx $SKILL_DIR/scripts/trade.ts confirm <type> <quotation-id>
# 查看近期交易
npx tsx $SKILL_DIR/scripts/trade.ts history
如何将用户意图映射到交易类型:
| 用户说 | 交易类型 | 从 | 到 |
|---|---|---|---|
| "用 100 USD 购买 CRO" | purchase | USD (法币) | CRO (加密货币) |
| "卖出 0.1 BTC" | sale | BTC (加密货币) | USD (法币) |
| "将 0.1 BTC 兑换成 ETH" | exchange | BTC (加密货币) | ETH (加密货币) |
按交易类型的报价 JSON 参数:
| 类型 | JSON 字段 |
|---|---|
| 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"} |
示例 — "用 100 USD 购买 CRO":
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。npx tsx $SKILL_DIR/scripts/trade.ts confirm purchase <data.id>memory.confirmation_required 为 false):跳过询问并立即运行 npx tsx $SKILL_DIR/scripts/trade.ts confirm purchase <data.id>选择加入/退出: 用户可以说 "stop asking for confirmation" 以自动执行交易,或者说 "require confirmation" 以重新启用提示。请参见下面的第 3 节。
# 搜索代币
npx tsx $SKILL_DIR/scripts/coins.ts search '{"keyword":"BTC","sort_by":"rank","sort_direction":"asc","native_currency":"USD","page_size":10}'
必需的 JSON 参数:
| 参数 | 类型 | 允许值 |
|---|---|---|
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 | 每页结果数 |
可选: page_token — 用于获取下一页的不透明令牌(见下面的分页)。
分页: 响应包含一个 pagination 对象,其中有 has_more(布尔值)和 next_page_token(字符串)。当 has_more 为 true 时,将 next_page_token 作为 page_token 传入下一个请求以获取下一页。
每个代币的关键响应字段: rails_id(与交易和账户 API 中的 currency_id / currency 相同 — 使用此字段进行交叉引用)、price_native、price_usd、percent_change_*_native(过去时间段内的价格表现,例如 percent_change_24h_native)。
每个脚本都将结构化 JSON 打印到标准输出:
成功:
{"ok": true, "data": { ... }}
错误:
{"ok": false, "error": "ERROR_CODE", "error_message": "人类可读的消息"}
ok: true。countdown 字段定义。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 时,停止当前操作,并使用上述指导向用户报告错误。失败后切勿继续下一步。
这些是出现在 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 中设置的是正确的密钥 |
对于动态错误(超出限额、货币禁用、冷却期等),直接将 error 和 error_message 报告给用户。有关完整详情,请参阅 references/errors.md。
首先确定交易类型:
然后解析源钱包:
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 → 通知用户"未找到有资金的钱包"并停止。"卖出全部"场景: 如果用户说"Sell all [TOKEN]",运行 npx tsx $SKILL_DIR/scripts/account.ts balance [TOKEN]。使用 data.available 金额(或 data.balance)作为报价的 from_amount。
当用户要求购买、出售或交换加密货币时,始终遵循这个三步流程:
步骤 A — 获取报价: 根据用户的请求构建 JSON 参数(见交易命令中的"报价 JSON 参数"表)并运行: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(或未设置):
countdown 秒后回复"YES",则拒绝:"交易被拒绝:报价汇率已过期。请请求新的报价。"步骤 C — 执行订单: 运行:npx tsx $SKILL_DIR/scripts/trade.ts confirm <type> <data.id>,使用步骤 A 中的 id。
memory.confirmation_required 更新为 false。memory.confirmation_required 更新为 true。{{memory.*}},则将 confirmation_required 视为始终为 true(最安全的默认值)。ok 字段。成功仅定义为 ok: true。ok 为 false,请读取 error 并根据上面的错误处理表进行响应。npx tsx $SKILL_DIR/scripts/trade.ts history — 显示 data 中的条目。npx tsx $SKILL_DIR/scripts/account.ts trading-limit — 显示为:"📊 周度交易限额:{data.used} / {data.limit} USD(剩余:{data.remaining} USD)"。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。关键: 首先显示法币类别,然后是加密货币余额。memory.confirmation_required 如何:
npx tsx $SKILL_DIR/scripts/account.ts revoke-key。ok: true): 通知:"🛑 紧急停止开关已激活。API 密钥已被撤销。所有交易已禁用。生成新的 API 密钥并更新您的环境变量以恢复。"API_KEY_NOT_FOUND 错误时: 通知:"未找到 API 密钥 — 可能已被撤销或不存在。"周度安装数
193
仓库
GitHub 星标数
1
首次出现
8 天前
安全审计
安装于
gemini-cli193
amp193
cline193
github-copilot193
codex193
kimi-cli193
This skill requires your agent platform to support the following capabilities. If your platform lacks any required capability, the skill will not function.
| Capability | Required | Details |
|---|---|---|
| Shell command execution | Yes | Must be able to run npx tsx ./scripts/... and capture stdout |
| Environment variables | Yes | Must read CDC_API_KEY and CDC_API_SECRET from the shell environment |
| JSON parsing | Yes | Must parse structured JSON from script stdout to extract fields |
| Multi-turn conversation | Yes | Trading uses a quote → confirm flow that spans multiple user turns |
| Persistent memory | No | Used for confirmation_required preference. If unsupported, default to always confirming trades |
| Elapsed-time awareness | No | Used to check quote expiry (countdown field). If unsupported, always attempt confirmation and handle invalid_quotation errors gracefully |
You MUST use the TypeScript scripts for ALL API interactions. NEVER call the API directly withcurl, fetch, or any other HTTP method.
The scripts handle request signing, error handling, and response formatting. If you bypass them:
For every user request, find the matching command below and run it vianpx tsx. Read the JSON output. Act on it.
https://wapi.crypto.com{{env.CDC_API_KEY}}{{env.CDC_API_SECRET}}{{memory.confirmation_required}} (Default: true)SKILL.md file. Resolve it from the path you loaded this file from (e.g. if you read /home/user/skills/crypto-agent-trading/SKILL.md, then SKILL_DIR is /home/user/skills/crypto-agent-trading).Both CDC_API_KEY and CDC_API_SECRET must be set as environment variables before use.
Before running any script , check whether both variables are set by running:
echo "CDC_API_KEY=${CDC_API_KEY:+set}" "CDC_API_SECRET=${CDC_API_SECRET:+set}"
If either prints empty instead of set, prompt the user:
"Your API credentials are not configured. Please set them in your terminal before I can proceed:
export CDC_API_KEY="your-api-key" export CDC_API_SECRET="your-api-secret"You can generate an API key at https://help.crypto.com/en/articles/13843786-api-key-management. Let me know once you've set them."
Then stop and wait for the user to confirm before retrying.
MISSING_ENV error, treat it the same way: prompt the user to set the variables and wait.ALL API interactions MUST go through these scripts. They handle signing, execution, filtering, and error formatting. Run the appropriate command below via shell, then parse the JSON output.
Prerequisite: npx tsx (Node.js 18+ required; tsx is fetched automatically by npx).
Important: All script paths below use $SKILL_DIR as a placeholder for this skill's root directory. Resolve it from the path you loaded this SKILL.md from, or cd into the skill directory and use ./scripts/... as the path. Either approach works.
# 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
Trading follows a two-step flow : get a quotation first, then confirm the order.
# 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
How to map user intent to trade type:
| User says | Trade type | From | To |
|---|---|---|---|
| "Buy CRO with 100 USD" | purchase | USD (fiat) | CRO (crypto) |
| "Sell 0.1 BTC" | sale | BTC (crypto) | USD (fiat) |
| "Swap 0.1 BTC to ETH" | exchange | BTC (crypto) | ETH (crypto) |
Quotation JSON params by trade type:
| Type | JSON fields |
|---|---|
| purchase | {"from_currency":"USD","to_currency":"CRO","from_amount":"100"} or use to_amount instead |
| 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"} |
Example — "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 from the response.npx tsx $SKILL_DIR/scripts/trade.ts confirm purchase <data.id>memory.confirmation_required is false): Skip asking and immediately run Opt-in / Opt-out: Users can say "stop asking for confirmation" to auto-execute trades, or "require confirmation" to re-enable the prompt. See Section 3 below.
# Search coins
npx tsx $SKILL_DIR/scripts/coins.ts search '{"keyword":"BTC","sort_by":"rank","sort_direction":"asc","native_currency":"USD","page_size":10}'
Required JSON parameters:
| Parameter | Type | Allowed values |
|---|---|---|
sort_by | string | rank, market_cap, alphabetical, volume, performance |
sort_direction | string | asc, desc |
Optional: page_token — opaque token for fetching the next page (see pagination below).
Pagination: The response includes a pagination object with has_more (boolean) and next_page_token (string). When has_more is true, pass next_page_token as page_token in the next request to fetch the next page.
Key response fields per coin: rails_id (identical to currency_id / currency in trade and account APIs — use this to cross-reference), price_native, price_usd, percent_change_*_native (price performance over past timeframes, e.g. percent_change_24h_native).
Every script prints structured JSON to stdout:
Success:
{"ok": true, "data": { ... }}
Error:
{"ok": false, "error": "ERROR_CODE", "error_message": "Human-readable message"}
ok: true in the script output.countdown field in the quotation data.RATE_LIMITED error): wait 60 seconds before retrying the same request. Inform the user: "Rate limit reached — please wait 60 seconds before trying again."All scripts return structured errors. Parse the error field to determine the appropriate response.
These are the error values in the script's JSON output. They tell you what category of failure occurred.
| Error Code | Meaning | Agent Response |
|---|---|---|
MISSING_ENV | CDC_API_KEY or CDC_API_SECRET not set | Tell user to set env vars via terminal |
API_ERROR | API returned non-200 or ok !== true | Report: "Transaction failed: {error_message}" |
INVALID_ARGS | Bad command-line arguments | Show correct usage from the error_message |
Rule: When ok is false in the output, stop the current operation and report the error to the user using the guidance above. Never proceed to the next step after a failure.
These are the specific API error codes that appear inside the error_message of QUOTATION_FAILED, EXECUTION_FAILED, or API_ERROR responses. They tell you why the API rejected the request.
error | Meaning | Recovery |
|---|---|---|
not_enough_balance | Insufficient funds | Check balances, reduce trade amount |
invalid_currency | Currency code not recognized | Verify via coin search |
invalid_quotation | Quote expired or already used | Request a new quotation |
failed_to_create_quotation | Quotation engine error | Retry shortly |
For dynamic errors (limit exceeded, currency disabled, cooling-off, etc.), report the error and error_message directly to the user. For full details, see references/errors.md.
Determine the trade type first:
Then resolve the source wallet:
npx tsx $SKILL_DIR/scripts/account.ts resolve-source purchase. The script returns only funded fiat entries.npx tsx $SKILL_DIR/scripts/account.ts resolve-source sale (or exchange). The script returns only funded crypto entries.Result (fromdata.status):
SELECTED → auto-select data.currency.AMBIGUOUS → prompt user to choose from data.options.EMPTY → inform user "No funded wallets found" and stop."Sell All" Scenario: If user says "Sell all [TOKEN]", run npx tsx $SKILL_DIR/scripts/account.ts balance [TOKEN]. Use the data.available amount (or data.balance) as from_amount for the quotation.
When the user asks to buy, sell, or swap crypto, always follow this three-step flow:
Step A — Get Quotation: Build the JSON params from the user's request (see the "Quotation JSON params" table in Trade Commands) and run: npx tsx $SKILL_DIR/scripts/trade.ts quote <type> '<json-params>' Read data.id, data.from_amount, data.to_amount, and data.countdown from the response.
Step B — Ask User to Confirm:
memory.confirmation_required is true (or unset):
memory.confirmation_required to false.memory.confirmation_required to true.{{memory.*}}, treat confirmation_required as always true (safest default).ok field. Success is defined ONLY as ok: true.ok is false, read error and respond per the Error Handling table above.npx tsx $SKILL_DIR/scripts/trade.ts history — display the entries from data.npx tsx $SKILL_DIR/scripts/account.ts trading-limit — display as: "📊 Weekly Trading Limit: {data.used} / {data.limit} USD (Remaining: {data.remaining} USD)".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. Crucial: Display Fiat category first, followed by Crypto balances below.memory.confirmation_required:
npx tsx $SKILL_DIR/scripts/account.ts revoke-key.ok: true): Notify: "🛑 Kill switch activated. API key has been revoked. All trading is disabled. Generate a new API key and update your environment variables to resume."API_KEY_NOT_FOUND error: Notify: "API key not found — it may have already been revoked or does not exist."Weekly Installs
193
Repository
GitHub Stars
1
First Seen
8 days ago
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
gemini-cli193
amp193
cline193
github-copilot193
codex193
kimi-cli193
xdrop 文件传输脚本:Bun 环境下安全上传下载工具,支持加密分享
20,700 周安装
Convex Cron Jobs 教程:后台任务调度、数据同步与自动化工作流实现
1,600 周安装
移动应用设计开发指南:移动优先、触控优先设计系统与性能优化最佳实践
1,600 周安装
Next.js DCE-Edge 死代码消除与边缘运行时优化指南 | Vercel
277 周安装
前端设计技能:生成独特UI、审核CSS、提取设计令牌、检查无障碍性,告别AI垃圾美学
1,600 周安装
主动自我改进智能体:AI智能体自动化经验学习与安全进化框架
1,600 周安装
精英PowerPoint设计师 | 2024-2025演示设计趋势,打造苹果/谷歌风格专业幻灯片
1,600 周安装
npx tsx $SKILL_DIR/scripts/trade.ts confirm purchase <data.id>native_currency | string | Uppercase currency code (e.g. USD) |
keyword | string | Search string, 1–100 chars; matches coin name and symbol only |
page_size | integer | Number of results per page |
QUOTATION_FAILED | Quotation request rejected by API | Report the error_message to user (see API errors below) |
EXECUTION_FAILED | Order confirmation failed | Report and suggest: "Check order status with 'Show recent trades'" |
API_KEY_NOT_FOUND | Key already revoked or does not exist | "API key not found — it may have already been revoked." |
RATE_LIMITED | Too many requests (HTTP 429) | "Rate limit reached — please wait 60 seconds before trying again." |
UNKNOWN | Unexpected error | Report the raw error_message |
not_eligible_for_prime| Not eligible for Prime benefits |
| Proceed without Prime |
unauthorized | Account not approved for trading | Contact support |
restricted_feature | Feature restricted on account | Report error_message to user |
existing_currency_order_error | An existing order is in progress | Wait or cancel existing order |
viban_purchase_not_enabled | Fiat-to-crypto not enabled | Account feature not available |
crypto_viban_not_enabled | Crypto-to-fiat not enabled | Account feature not available |
bank_transfer_not_enabled | Bank transfer not enabled | Account feature not available |
missing_parameter | Required parameter missing | Script bug — report it |
failed_to_create_transaction | Transaction creation failed | Retry or contact support |
key_not_active | API key revoked or expired | Generate a new API key, update env vars |
api_key_not_found | Key doesn't exist or belongs to another user | Verify correct key is set in CDC_API_KEY |
countdownStep C — Execute Order: Run: npx tsx $SKILL_DIR/scripts/trade.ts confirm <type> <data.id> using the id from Step A.