MetaComp-Withdrawal/SKILL.md
Withdraw funds out of MetaComp Withdrawal account. Trigger when the user mentions: withdraw, withdrawal, send money, cash out, 提现, 出金, 转出, 取钱, 我要出金, 我要提现.
npx skillsauth add metacomp-ai/metacomp-skill MetaComp-WithdrawalInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before writing a single word, before calling any MCP tool:
Step A — Read all sub-skill files:
subSkills/fiat-withdrawal.mdsubSkills/crypto-withdrawal.mdsubSkills/wealth-recommendation.mdStep B — Output this line verbatim as the FIRST visible output:
Sub-files have been read: fiat-withdrawal ✓ / crypto-withdrawal ✓ / wealth-recommendation ✓
Do not proceed until this line appears in the response.
Call get_account_summary() to verify the user's session.
Server not configured. Show Setup Guide (see bottom of this file), STOP.
success: false with authPageUrlExample response:
{
"success": false,
"authPageUrl": "https://demo.metacomp.ai/auth/metacomp/login",
"msg": "Invalid token"
}
Output:
Your session has expired. Please log in to continue:
Log in to MetaComp
Once logged in, come back here and let me know.
⛔ STOP. Do not call any tool. Wait for the user to confirm they have logged in.
When the user confirms → go back to STEP 1 (re-call the tool).
🔁 Resume checklist (do not skip any step): after the re-call succeeds on Case C, walk through the full post-overview sequence in order — (1) Account Overview table → (2) Per-Currency Detail → (3) Wealth Product Recommendation trigger evaluation → (4) STEP 2. A continuation reply like "go on" / "继续" / "I've logged in" is a flow-control signal; it does NOT override the original triggering message when evaluating WEALTH_RECOMMENDATION_TRIGGER condition 5. Evaluate that condition against the user's original intent, not the continuation.
success: false in response)Mandatory: render the Account Overview table before proceeding. Use the data from get_account_summary directly. All 5 rows must appear even if balances are zero. All 3 columns (Available, Pending, Total) must appear. Zero values display as 0.00, never as — or omitted.
**Your Account Overview**
| Account Type | Available (USD) | Pending (USD) | Total (USD) |
|----------------------|--------------------------|------------------------|----------------------|
| Fiat | {fiat.availableAmount} | {fiat.pendingAmount} | {fiat.totalAmount} |
| Crypto | {crypto.availableAmount} | {crypto.pendingAmount} | {crypto.totalAmount} |
| Investment Fiat | {investment_fiat.availableAmount} | {investment_fiat.pendingAmount} | {investment_fiat.totalAmount} |
| Quarantine Portfolio | {quarantine_portfolio.availableAmount} | {quarantine_portfolio.pendingAmount} | {quarantine_portfolio.totalAmount} |
| Investment Product | {investment_product.availableAmount} | {investment_product.pendingAmount} | {investment_product.totalAmount} |
**您的账户概览**
| 账户类型 | 可用 (USD) | 待处理 (USD) | 总计 (USD) |
|---------|-----------|-------------|-----------|
| 法币账户 | {fiat.availableAmount} | {fiat.pendingAmount} | {fiat.totalAmount} |
| 加密货币 | {crypto.availableAmount} | {crypto.pendingAmount} | {crypto.totalAmount} |
| 投资法币 | {investment_fiat.availableAmount} | {investment_fiat.pendingAmount} | {investment_fiat.totalAmount} |
| 隔离资产 | {quarantine_portfolio.availableAmount} | {quarantine_portfolio.pendingAmount} | {quarantine_portfolio.totalAmount} |
| 投资产品 | {investment_product.availableAmount} | {investment_product.pendingAmount} | {investment_product.totalAmount} |
All amounts with thousands separators (e.g. 13,887,754,197.50).
get_account_detail)After the Account Overview, call get_account_detail for fiat and crypto (in parallel if possible) to show per-currency balances from data.instrumentInfoMap.
Display rules:
availableAmount > 0 OR pendingAmount > 0 OR pendingCreditAmount > 0 — skip zero-balance currenciespendingCreditAmount > 0 means incoming funds awaiting confirmation — display in a separate "Incoming" columnavailableAmount descending— (not 0.00)**Fiat Account Detail** (Account: {holderCode})
| Currency | Available | Pending | Incoming | USD Equivalent |
|----------|--------------------|---------|----------|--------------------|
| USD | 10,000.00 | — | — | 10,000.00 |
> Other 35 currencies have zero balance.
**Cryptocurrency Detail** (Account: {holderCode})
| Currency | Available | Pending | Incoming | USD Equivalent |
|----------|-----------|---------|----------|----------------|
| USDT | 80.00 | — | 64.00 | 79.99 |
> Other 22 currencies have zero balance.
**法币账户明细**(账户:{holderCode})
| 币种 | 可用余额 | 待处理 | 待入账 | USD 等值 |
|-----|-----------|-------|-------|-----------|
| USD | 10,000.00 | — | — | 10,000.00 |
> 其他 35 个币种余额为 0。
**加密货币明细**(账户:{holderCode})
| 币种 | 可用余额 | 待处理 | 待入账 | USD 等值 |
|------|---------|-------|-------|---------|
| USDT | 80.00 | — | 64.00 | 79.99 |
> 其他 22 个币种余额为 0。
From get_account_detail response, for each entry in instrumentInfoMap:
| Display field | Source field |
|----------------|-----------------------------------|
| Currency | unitCode |
| Available | availableAmount (0 → —) |
| Pending | pendingAmount (0 → —) |
| Incoming | pendingCreditAmount (0 → —) |
| USD Equivalent | availableAmountUSD (0 → —) |
After rendering the Account Overview and before STEP 2, evaluate the WEALTH_RECOMMENDATION_TRIGGER (defined in subSkills/wealth-recommendation.md). If TRUE, follow the recommendation flow in that file — call investor_precheck, then conditionally get_fip_products, and render the appropriate template. This recommendation is informational only and does NOT replace or delay STEP 2. The evaluation must still be performed when resuming after a Token Guard login — do not skip it.
Then proceed to STEP 2.
If the user has already specified the type (e.g. "我要出 USDT", "withdraw 500 USD"), skip the question and route directly.
Otherwise, ask:
Would you like to withdraw fiat currency or cryptocurrency?
- Fiat currency (e.g. USD, SGD, EUR, GBP)
- Cryptocurrency (e.g. USDT, USDC, BTC, ETH)
⛔ STOP. Wait for the user's answer.
→ Fiat: follow subSkills/fiat-withdrawal.md, starting from its STEP 1.
→ Crypto: follow subSkills/crypto-withdrawal.md, starting from its STEP 0 (determines first-party vs third-party).
No server added yet → complete all 3 steps. Server added, no API key → skip to Step 2.
Sidebar → Customize → Connectors → + → Add custom connector
metacomp mcphttps://demo.metacomp.ai/mcpCustomize → Connectors → find metacomp mcp → Connect
Enter your sk-... API key → Allow
No API key? Apply at metacomp.ai
401 after connecting? Re-authorize or apply for a new key at metacomp.ai.
get_account_summary{}
Returns account balances. Used here for authentication check.
See subSkills/fiat-withdrawal.md for tool details.
See subSkills/crypto-withdrawal.md for tool details.
After EVERY MCP tool call, before processing the response data, check:
success: false AND authPageUrl → TOKEN EXPIREDYour session has expired. Please log in to continue:
Log in to MetaComp
Once logged in, come back here and let me know — I'll pick up where we left off.
get_account_summary() to re-verify session:
success: false with authPageUrl → repeat step 3 (show login link again)This rule takes priority over all step-specific error handling. Token expiration is always detected and handled before any other error logic.
This rule has the same priority as Token Guard. It applies whenever an Account Overview has been successfully rendered in this response AND the current skill is NOT MetaComp-Wealth.
Before you output any terminal/closing message (the STEP 2 routing question "Would you like to withdraw fiat currency or cryptocurrency?" / any similar handoff line), you MUST have completed the following sequential evaluation:
Step A — Evaluate ALL 5 conditions of WEALTH_RECOMMENDATION_TRIGGER (defined in subSkills/wealth-recommendation.md). This evaluation is mandatory and must happen BEFORE any tool call. There is NO path that skips this evaluation.
Step B — Branch on result:
investor_precheck, then follow the recommendation flow in subSkills/wealth-recommendation.md.investor_precheck. Proceed directly to the closing message.⛔ There is no legitimate path where investor_precheck is called without first confirming all 5 conditions are TRUE. Calling investor_precheck "just in case" or "to be safe" when condition 5 is FALSE is a rule violation — it wastes an API call and may render an unwanted recommendation to a user with clear business intent.
Evaluation is mandatory, render is non-blocking. "Non-blocking" in wealth-recommendation.md refers ONLY to the rendered output (the recommendation block never halts the primary flow). The evaluation itself is not skippable under any circumstance where conditions 1-2 hold (overview rendered + not MetaComp-Wealth). Treating the evaluation as optional is a rule violation.
Self-check (mandatory before sending response): Re-read your draft:
investor_precheck, and proceed directly to the closing message.A response that calls investor_precheck when condition 5 is FALSE, or that reaches the closing message without evaluating the 5 conditions, is treated the same as skipping Token Guard — a rule violation.
This rule takes priority over the phrasing of the "Wealth Product Recommendation (non-blocking)" section in STEP 1 — that heading describes the render as non-blocking; the evaluation is mandatory per this Gate.
verificationCode — the user must type it themselveschargeType when executing a first-party fiat withdrawalphoto / proof when executing a first-party crypto withdrawalsubSkills/crypto-withdrawal.md for the flow (uses hardcoded demo file IDs for compliance documents)network from get_crypto_withdrawal_wallets and pass it verbatim to execute_crypto_withdrawal (do not re-ask the user)0.00.tools
MetaComp + VisionX — one skill for all MetaComp account and Web3-security actions over the metacomp-mcp connector; routes to the matching scenario. Use it whenever the user wants to: DEPOSIT / receive funds (deposit, 充值, 入金, 收款, 收钱); WITHDRAW / cash out (withdraw, cash out, 提现, 出金, 转出, 取钱, withdrawal history, 出金记录); SWAP / exchange currency (swap, exchange, convert, 换汇, 换钱, "100k USDT to SGD", swap history, 换汇记录); GET A RATE / PRICE (汇率, 查汇率, 报价, 价格, "price X to Y", "X to Y rate", "how much is X in Y", "X 值多少 Y"); WEALTH / FIP (wealth, fixed income, subscribe, 理财, 买理财, 认购, FIP 申购); VIEW BALANCE / ASSETS (check balance, view assets, account overview, 查余额, 查看资产, 账户概览); or WEB3 SECURITY via VisionX (a wallet address 0x…/Bitcoin/Tron, a transaction hash, or any Web3 security / risk / scam / suspicious-activity question). Trigger even when the user doesn't say "MetaComp", as long as the intent is one of these; when unsure, load it and let the router (STEP ZERO) disambiguate.
testing
Subscribe to MetaComp Wealth / Fixed Income Products (FIP). Trigger when the user mentions: wealth, financial product, fixed income, subscribe, 理财, 理财产品, 买理财, 我想买一些理财, 了解理财, 认购理财.
development
Check Web3 wallet or transaction security using the MetaComp VisionX Trigger when the user mentions: wallet address (0x..., Bitcoin address, Tron address), transaction hash, or asks about Web3 security, risk, scam, or suspicious activity.
testing
Currency exchange (swap) via MetaComp Swap. Trigger when the user mentions: currency exchange, swap, convert currency, or specific requests like "I want to exchange 10000 SGD", "换汇", "换钱", "我想换钱".