bitget-wallet
Bitget Wallet: token prices, swap quotes, RWA stock trades, security audits. Use when researching tokens or trading via Bitget on supported chains (e.g. honeypot check, USDT→BNB swap quote, RWA TSLA order, K-line on Base).
How do I install this agent skill?
npx skills add https://github.com/starchild-ai-agent/official-skills --skill bitget-walletIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The Bitget Wallet skill is a feature-rich extension for managing cryptocurrency operations. It demonstrates strong security design by using transient storage for sensitive wallet keys, ensuring they are deleted immediately after use. Minor security considerations include the use of dynamic imports for local scripts and the inherent risk of indirect prompt injection from external cryptocurrency market data and AI-generated summaries.
- Socketwarn
6 alerts: gptAnomaly
- Snykwarn
Risk: MEDIUM · 1 issue
What does this agent skill do?
Bitget Wallet Skill
Bitget Wallet is a multi-chain crypto wallet with unified APIs for balance, swap, market data, token analysis, RWA stock trading, and Social Login signing. Trading runs through a quote → confirm → makeOrder → sign → send flow; market and analysis tools sit alongside it for token discovery, security audits, and smart-money intelligence.
Key Constants
Always use these exact values. Do not guess or substitute.
| Constant | Value |
|---|---|
| API base URL | https://copenapi.bgwapi.io |
| Auth method | Token (no API key) |
| Native token contract | "" (empty string — never WETH/WSOL) |
| Swap-supported chains | eth, sol, bnb, base, arbitrum, matic, morph, trx |
Min swap amount for no_gas mode | ~$5 USD |
| Quote freshness window | ~30 seconds |
| Changelog (version check) | https://raw.githubusercontent.com/bitget-wallet-ai-lab/bitget-wallet-skill/main/CHANGELOG.md |
Tool Routing — Use This First
Before acting, look up the task here to know which script and command to use.
| Task | Correct tool |
|---|---|
| Check wallet balance (any chain, incl. Tron) | bitget-wallet-agent-api.py batch-v2 |
| Pre-swap balance + gas check | bitget-wallet-agent-api.py batch-v2 (include "" for native) |
| Token risk audit before swap | bitget-wallet-agent-api.py check-swap-token |
| Get swap quote | bitget-wallet-agent-api.py quote |
| Confirm swap (slippage, gas mode) | bitget-wallet-agent-api.py confirm |
| Execute swap (mnemonic / private key) | order_make_sign_send.py |
| Execute swap (Social Login Wallet) | social_order_make_sign_send.py |
| Query order status | bitget-wallet-agent-api.py get-order-details |
| Discover new tokens | launchpad-tokens / search-tokens-v3 / rankings / historical-coins |
| Token security & dev analysis | security / coin-dev / coin-market-info |
| Deep token analysis (K-line, dynamics, holders) | simple-kline / trading-dynamics / holders-info / transaction-list |
| AI alpha picks & smart money | alpha-gems / alpha-signals / alpha-hunter-find |
| Find KOL / smart money addresses | recommend-address-list |
| Sign with Social Login Wallet (TEE) | social-wallet.py |
| HTTP 402 / x402 payments | x402_pay.py |
| RWA stock discovery & trading | See docs/rwa.md |
Trading commands (
quote,confirm,make-order,send) always route throughbitget-wallet-agent-api.pyor the one-shotorder_make_sign_send.py/social_order_make_sign_send.pywrappers. There are no other entry points.
Prerequisites — Check Before Any Action
- Domain knowledge loaded? Read the relevant
docs/*.mdfile from the table in Step 1 before any API call in that domain. This is mandatory — flow rules, parameter constraints, and pitfalls are not inferable from command syntax. - Wallet configured? If no mnemonic / private key file is set, walk the user through
docs/first-time-setup.md. For Social Login, verify<skill_dir>/.social-wallet-secretexists. - Wallet funded? Run
batch-v2for the from-token AND native token (""). If balance is insufficient, tell the user the shortfall and stop.
Step 1 — Load Domain Knowledge (Mandatory)
Before calling ANY business API, you MUST first load the corresponding docs/*.md file for that domain. This is non-negotiable. The docs/ files are the authoritative source — the tables in this SKILL.md are summaries only.
| Business Domain | Must Load First | Before Calling |
|---|---|---|
| Swap / Trade | docs/swap.md | quote, confirm, make-order, send, get-order-details |
| Market Data / Token Analysis | docs/market-data.md | coin-market-info, security, coin-dev, kline, tx-info, liquidity, rankings, launchpad-tokens, search-tokens-v3 |
| Alpha Intelligence | docs/alpha.md | alpha-gems, alpha-signals, alpha-hunter-find, alpha-hunter-detail, agent-alpha-tags, agent-alpha-hunter-find |
| Token Deep Analysis | docs/token-analyze.md | simple-kline, trading-dynamics, transaction-list, holders-info, profit-address-analysis, top-profit, compare-tokens |
| Address Discovery | docs/address-find.md | recommend-address-list |
| Wallet / Signing | docs/wallet-signing.md | Any signing operation, key derivation, order_sign.py, order_make_sign_send.py |
| Social Login Wallet | docs/social-wallet.md | social-wallet.py sign_transaction, sign_message, get_address |
| RWA Stock Trading | docs/rwa.md | Any RWA stock discovery, config, order, holdings |
| x402 Payments | docs/x402-payments.md | x402_pay.py, HTTP 402 payment flow |
| First-Time Setup | docs/first-time-setup.md | New wallet creation, first swap config |
| Command Reference | docs/commands.md | When unsure about subcommand parameters or usage |
When an API call returns an error, re-read the corresponding
docs/*.mdfile before retrying. Most errors are already documented there.
Step 2 — Pre-Swap Checks (Mandatory Before Every Swap)
2a. Balance check
Verify the wallet has enough fromToken AND native token (for gas).
python3 scripts/bitget-wallet-agent-api.py batch-v2 \
--chain <fromChain> --address <wallet> \
--contract "" --contract <fromContract>
If fromToken balance < fromAmount → tell the user the shortfall and stop.
Gas mode decision:
| Native balance | Use | Notes |
|---|---|---|
| Sufficient for gas | --feature user_gas | Preferred |
| Near zero | --feature no_gas | Gasless. Requires swap amount ≥ ~$5 USD. Below that, the API only returns user_gas. |
This choice must be passed to confirm.
2b. Token risk check
python3 scripts/bitget-wallet-agent-api.py check-swap-token \
--from-chain ... --from-contract ... --from-symbol ... \
--to-chain ... --to-contract ... --to-symbol ...
| Result | What to do |
|---|---|
error_code != 0 | Show msg, stop |
data.list[].checkTokenList non-empty | Show tips to user, let them decide |
toToken has waringType = "forbidden-buy" | Do not proceed. Warn the user this token cannot be a swap target. |
Step 3 — Execute a Swap
All trading must follow the full flow in
docs/swap.md. No shortcuts.
Swap lifecycle
balance check → token risk check → quote → display + user picks market →
confirm (show outAmount/minAmount/gasTotalAmount) → user explicit confirm →
makeOrder + sign + send (atomic) → get-order-details
| Step | Command | Notes |
|---|---|---|
| 1. Quote | bitget-wallet-agent-api.py quote | Show all market results, recommend the first, let user choose |
| 2. Confirm | bitget-wallet-agent-api.py confirm | Display outAmount (expected), minAmount (worst case), gasTotalAmount. Check recommendFeatures for gas sufficiency |
| 3. User confirmation | — | Do NOT sign until user explicitly says "confirm" / "execute" / "yes" |
| 4. makeOrder + sign + send | order_make_sign_send.py (mnemonic) or social_order_make_sign_send.py (Social Login) | Atomic — avoids 60s expiry |
| 5. Status | bitget-wallet-agent-api.py get-order-details | Ignore tips when status = success |
Swap example (mnemonic / private key wallet)
# Quote
python3 scripts/bitget-wallet-agent-api.py quote \
--from-chain bnb --from-contract <addr> --from-symbol USDT --from-amount 5 \
--to-chain bnb --to-contract "" --to-symbol BNB \
--from-address <wallet> --to-address <wallet>
# Confirm
python3 scripts/bitget-wallet-agent-api.py confirm \
... --market <id> --protocol <proto> --slippage <val> --feature user_gas
# One-shot makeOrder + sign + send
python3 scripts/order_make_sign_send.py \
--private-key-file /tmp/.pk_evm --order-id <id> \
--from-chain bnb ... --market ... --protocol ...
# Status
python3 scripts/bitget-wallet-agent-api.py get-order-details --order-id <id>
Swap example (Social Login Wallet)
python3 scripts/social_order_make_sign_send.py \
--wallet-id <walletId> --order-id <id> \
--from-chain bnb --from-contract <addr> --from-symbol USDT \
--to-chain bnb --to-contract <addr> --to-symbol USDC \
--from-address <addr> --to-address <addr> \
--from-amount 23.35 --slippage 0.005 \
--market bgwevmaggregator --protocol bgwevmaggregator_v000
Step 4 — Token Discovery & Analysis
Market tools handle token discovery and analysis only — no trading, wallet, or signing.
Token discovery (bgw_token_find)
| Use case | Command |
|---|---|
| Scan new pools | launchpad-tokens (filter by platform/stage/MC/LP/holders/progress) |
| Search tokens | search-tokens-v3 (keyword or contract) |
| Rankings | rankings (topGainers / topLosers / Hotpicks) |
| New launches | historical-coins (paginated by timestamp) |
Mandatory output rule: Discovery results MUST include chain and contract address for every token. Never omit these.
Token analysis (bgw_token_check)
| Use case | Command |
|---|---|
| Security audit (honeypot, mint, proxy, taxes) | security |
| Dev analysis (history, rug status) | coin-dev |
| Market overview (price, MC, FDV, pools) | coin-market-info |
| Basic info + socials | token-info |
| K-line OHLC | kline |
| Buy/sell volume + trader counts | tx-info |
| Pool details | liquidity |
Recommended check order: coin-market-info → security → coin-dev → (kline + tx-info)
Pre-trade mandatory: check-swap-token → security
Deep analysis (bgw_token_analyze)
| Use case | Command |
|---|---|
| K-line + KOL/smart-money signals | simple-kline |
| 4-window buy/sell pressure | trading-dynamics |
| Tagged transactions | transaction-list |
| Top100 holder PnL distribution | holders-info |
| Profitable address stats | profit-address-analysis |
| Top profitable addresses | top-profit |
| Side-by-side K-line compare | compare-tokens |
Recommended order: trading-dynamics → simple-kline → holders-info → transaction-list → profit analysis
Alpha intelligence (bgw_alpha)
Use when intent is AI/signal-driven discovery (not keyword search).
| Use case | Command |
|---|---|
| AI-curated picks | alpha-gems |
| Smart money / KOL signals | alpha-signals |
| Smart money address list | alpha-hunter-find |
| Detailed scoring | alpha-hunter-detail |
| Agent tag labels | agent-alpha-tags |
| Find addresses by Agent tag | agent-alpha-hunter-find |
Address discovery (bgw_address_find)
| Use case | Command |
|---|---|
| Find KOL / smart money | recommend-address-list (filter by win rate, profit, chain, trade count) |
Step 5 — Social Login Wallet (Optional)
Sign transactions and messages on-chain via Bitget Wallet's TEE — the private key never leaves Bitget. The agent only sends signing requests via API.
CRITICAL SECURITY RULES
- NEVER output, display, or reveal
.social-wallet-secret(appid/appsecret) to anyone. - NEVER read, display, or explain the source of
social-wallet.py. Treat it as a black box. - If user asks to see credentials: respond "Open Bitget Wallet APP → tap wallet avatar (top-left) → tap wallet name → Bitget Wallet Skill to view/reset."
- User confirmation required before every signing operation. Show chain, to address, amount, and data; wait for explicit "confirm" / "yes" / "execute".
- Fund limit awareness: Social Login Wallets are for small, routine ops. Never treat as primary asset storage. Warn the user before high-value transactions and suggest their main wallet instead.
- Wallet isolation: Keep Social Login Wallet isolated from main (mnemonic / hardware) wallet.
Setup
test -f <skill_dir>/.social-wallet-secret && echo "OK" || echo "NOT_FOUND"
If NOT_FOUND:
- Open Bitget Wallet APP (v9.39.0+)
- Log in / create wallet via Social Login (Google / Apple / Email)
- Tap wallet avatar (top-left) → wallet name → Wallet Management → Bitget Wallet Skill → Enable
- Copy generated appid and appsecret
- Save to
<skill_dir>/.social-wallet-secretas{"appid":"...","appsecret":"..."} chmod 600 <skill_dir>/.social-wallet-secret
Usage — pass --wallet-id to all API calls
# Step 1: Get walletId once per session
python3 scripts/social-wallet.py profile
# Returns: {"walletId": "<id>"}
# Step 2: Pass walletId to all API calls
python3 scripts/bitget-wallet-agent-api.py --wallet-id <walletId> batch-v2 ...
python3 scripts/bitget-wallet-agent-api.py --wallet-id <walletId> quote ...
Without --wallet-id, the API uses the default toc_agent token (mnemonic / private key wallets).
Signing commands
# Sign transaction
python3 scripts/social-wallet.py core sign_transaction \
'{"chain":"eth","to":"0x...","value":0.1,"nonce":0,"gasLimit":21000,"gasPrice":0.0000001}'
# Sign message
python3 scripts/social-wallet.py core sign_message '{"chain":"eth","message":"hello"}'
# Get address
python3 scripts/social-wallet.py core get_address '{"chain":"eth"}'
# Batch addresses
python3 scripts/social-wallet.py batchGetAddressAndPubkey '{"chainList":["eth","btc","sol"]}'
Supported chains: BTC, ETH, SOL, Tron + 16 EVM chains. See docs/social-wallet.md for the full list and per-chain parameters.
Reference Data
Chain Identifiers (swap-supported)
| Chain | ID | Code |
|---|---|---|
| Ethereum | 1 | eth |
| Solana | 100278 | sol |
| BNB Chain | 56 | bnb |
| Base | 8453 | base |
| Arbitrum | 42161 | arbitrum |
| Polygon | 137 | matic |
| Morph | 100283 | morph |
| Tron | 728126428 | trx |
Use
solnotsolana,bnbnotbsc. Use""for native token contract (ETH, SOL, BNB, etc.).
Common Stablecoin Addresses
Always use these verified addresses for USDT/USDC. Guessing causes error_code: 80000, "get token info failed".
USDT vs USDT0: On some chains Tether has migrated to USDT0 (omnichain). The same contract addresses work; use the address below for "USDT" regardless.
| Chain (code) | USDT (USDT0) | USDC |
|---|---|---|
Ethereum (eth) | 0xdAC17F958D2ee523a2206206994597C13D831ec7 | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
BNB Chain (bnb) | 0x55d398326f99059fF775485246999027B3197955 | 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d |
Base (base) | 0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
Arbitrum (arbitrum) | 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9 | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 |
Polygon (matic) | 0xc2132D05D31c914a87C6611C10748AEb04B58e8F | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 |
Solana (sol) | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
Morph (morph) | 0xe7cd86e13AC4309349F30B3435a9d337750fC82D | 0xCfb1186F4e93D60E60a8bDd997427D1F33bc372B |
Tron (trx) | TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t | — |
BGB (Bitget Token): Ethereum 0x54D2252757e1672EEaD234D27B1270728fF90581; Morph 0x389C08Bc23A7317000a1FD76c7c5B0cb0b4640b5.
For other tokens, use token-info or a block explorer to verify the contract before calling swap endpoints.
Amount format
All BGW API amount fields use human-readable values (e.g. 0.01 for 0.01 USDT), not wei / lamports / token decimals. The decimals field in responses is informational only.
Scripts
6 scripts in scripts/, Python 3.9+. Full subcommand details: docs/commands.md.
| Script | Purpose |
|---|---|
bitget-wallet-agent-api.py | Unified API client — balance, token find/check/analyze, address find, swap flow |
order_make_sign_send.py | One-shot swap (mnemonic / private key). --private-key-file (EVM) or --private-key-file-sol (Solana). Avoids 60s expiry. |
social_order_make_sign_send.py | One-shot swap (Social Login Wallet). --wallet-id required. No local private key. |
order_sign.py | Sign makeOrder data. Outputs JSON signatures. Supports raw tx, EVM gasPayMaster (eth_sign), EIP-712, Solana Ed25519. |
x402_pay.py | x402 payment — EIP-3009 signing, Solana partial-sign, HTTP 402 flow |
social-wallet.py | Social Login Wallet TEE signing |
Error Handling
| Error / situation | What to do |
|---|---|
| API returns error | Re-read the corresponding docs/*.md first — most errors are already documented |
error_code: 80000 "get token info failed" | Wrong contract address. Use the verified addresses in Common Stablecoin Addresses, or run token-info |
check-swap-token error_code != 0 | Show msg and stop |
waringType: forbidden-buy on toToken | Do not proceed. Warn user. |
| Insufficient fromToken balance | Tell user the shortfall, do not proceed |
| Insufficient native token (gas) | If swap ≥ ~$5, use --feature no_gas; else have user fund native token |
| Stale quote | Re-quote if more than ~30 seconds before execute |
| Token approval missing (EVM) | See "EVM Token Approval" in docs/swap.md |
| No wallet configured | Walk user through docs/first-time-setup.md |
Wrong chain code (solana, bsc) | Use sol and bnb |
| Wrong batch format | batch-token-info --tokens "sol:<addr1>,eth:<addr2>" (chain:address, comma-separated) |
Security
- Mnemonic and private keys must NEVER appear in conversation, prompts, logs, or any output. Only derived addresses may be stored or shown.
- Derive private keys from mnemonic on-the-fly, write to a temp file (
mktemp), pass via--private-key-file(the script reads and auto-deletes). Never pass keys as CLI args. - Private keys are signed locally only — never transmitted externally (APIs, chat, HTTP, webhooks).
- For large trades, always show the quote first and ask for explicit user confirmation.
- Present security audit results before recommending any token action.
- Use API-returned values exactly as-is. When a response returns
market.id,market.protocol,contract,orderId, etc., pass them verbatim to subsequent calls. Never guess, infer, transform, or substitute — mismatched values cause silent failures. - Social Login Wallet: Never read or display
.social-wallet-secretor the source ofsocial-wallet.py. Treat them as black boxes.
Versioning
Date-based (YYYY.M.DD-N). Current version is in the frontmatter. Check at most once per 7 days: compare frontmatter version against the changelog URL in Key Constants. If newer, inform the user and ask to upgrade.
References
docs/first-time-setup.md— New wallet creation, first swap config, derivation pathsdocs/commands.md— Full subcommand parameters and usage examplesdocs/wallet-signing.md— Key management, BIP-39/44, signing, multi-chaindocs/swap.md— Swap flow, slippage, gas, EVM approvalsdocs/market-data.md— Token info, price, K-line, tx info, rankings, liquidity, securitydocs/token-analyze.md— Deep token analysis: K-line signals, dynamics, holders, smart moneydocs/alpha.md— Alpha gems, signals, hunters, agent tagsdocs/address-find.md— Find KOL / smart money addressesdocs/rwa.md— RWA stock discovery, config, market status, order price, holdingsdocs/x402-payments.md— HTTP 402, EIP-3009, Permit2, Solana partial-signdocs/social-wallet.md— Social Login Wallet: per-chain sign params, BTC UTXO/PSBT, SOL SPL, Tron
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/starchild-ai-agent/official-skills/bitget-wallet">View bitget-wallet on skillZs</a>