opentrade-token
OpenTrade DEX Token Info CLI
5 commands for token search, metadata, detailed pricing, rankings, and holder distribution.
Pre-flight Checks
Every time before running any opentrade command, always follow these steps in order. Do not echo routine command output to the user; only provide a brief status update when installing, updating, or handling a failure.
-
Confirm installed: Run
which opentrade. If not found, install it:curl -sSL https://raw.githubusercontent.com/6551Team/openskills/main/skills/opentrade/install.sh | shIf the install script fails, ask the user to install manually following the instructions at: https://github.com/6551Team/openskills
-
Check for updates: Read
~/.opentrade/last_checkand compare it with the current timestamp:cached_ts=$(cat ~/.opentrade/last_check 2>/dev/null || true) now=$(date +%s)- If
cached_tsis non-empty and(now - cached_ts) < 43200(12 hours), skip the update and proceed. - Otherwise (file missing or older than 12 hours), run the installer to check for updates:
If a newer version is installed, tell the user and suggest updating their opentrade skills from https://github.com/6551Team/openskills to get the latest features.curl -sSL https://raw.githubusercontent.com/6551Team/openskills/main/skills/opentrade/install.sh | sh
- If
-
If any
opentradecommand fails with an unexpected error during this session, try reinstalling before giving up:curl -sSL https://raw.githubusercontent.com/6551Team/openskills/main/skills/opentrade/install.sh | sh -
Find or create a .env file in the project root to override the default API credentials, Load it before performing opentrade operations.
OPEN_TOKEN=your_token_here
Get your API token at: https://6551.io/mcp
Security warning: Never commit .env to git (add it to .gitignore) and never expose credentials in logs, screenshots, or chat messages.
Router Discovery
IMPORTANT: If the user has not specified a trading router, you MUST first discover available routers:
opentrade trade routers
Response format:
{
"data": [
{
"name": "okx test",
"router": "okx",
"version": "v1",
"quota_reward": 0,
"is_active": true,
"created_at": "2026-03-03 21:24:34",
"updated_at": "2026-03-03 21:24:34"
}
],
"success": true
}
Usage:
- Extract
routerandversionfrom the response - MANDATORY: ALL subsequent
opentradecommands in this session MUST include--trader <router>and--api <version>flags - Example:
opentrade token search USDC --chains ethereum --trader okx --api v1 - Default fallback: If the API returns no data or is empty, use
--trader okx --api v1
Skill Routing
- For real-time prices / K-lines / trade history → use
opentrade-market - For swap execution → use
opentrade-dex-swap - For transaction broadcasting → use
opentrade-gateway - For wallet balances / portfolio → use
opentrade-portfolio - For meme token safety (dev reputation, rug pull, bundlers, similar tokens by same dev) → use
opentrade-market - For smart money / whale / KOL signals → use
opentrade-market
Quickstart
# Search token
opentrade token search xETH --chains "ethereum,solana"
# Get detailed price info
opentrade token price-info 0xe7b000003a45145decf8a28fc755ad5ec5ea025a --chain xlayer
# What's trending on Solana by volume?
opentrade token toplist --chains solana --sort-by 5 --time-frame 4
# Check holder distribution
opentrade token holders 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --chain xlayer
Chain Name Support
The CLI accepts human-readable chain names (e.g., ethereum, solana, xlayer) and resolves them automatically.
| Chain | Name | chainIndex |
|---|---|---|
| XLayer | xlayer |
196 |
| Solana | solana |
501 |
| Ethereum | ethereum |
1 |
| Base | base |
8453 |
| BSC | bsc |
56 |
| Arbitrum | arbitrum |
42161 |
| Polygon | polygon |
137 |
| Optimism | optimism |
10 |
| Avalanche | avalanche |
43114 |
| Fantom | fantom |
250 |
| Cronos | cronos |
25 |
| Gnosis | gnosis |
100 |
| Klaytn | klaytn |
8217 |
| Aurora | aurora |
1313161554 |
| Harmony | harmony |
1666600000 |
| Moonbeam | moonbeam |
1284 |
| Moonriver | moonriver |
1285 |
| Celo | celo |
42220 |
| Fuse | fuse |
122 |
| OKC | okc |
66 |
| Heco | heco |
128 |
| Metis | metis |
1088 |
| Boba | boba |
288 |
| zkSync Era | zksync |
324 |
| Polygon zkEVM | polygon-zkevm |
1101 |
| Linea | linea |
59144 |
| Mantle | mantle |
5000 |
| Scroll | scroll |
534352 |
| Blast | blast |
81457 |
Command Index
| # | Command | Description |
|---|---|---|
| 1 | opentrade token search <query> |
Search for tokens by name, symbol, or address |
| 2 | opentrade token info <address> |
Get token basic info (name, symbol, decimals, logo) |
| 3 | opentrade token price-info <address> |
Get detailed price info (price, market cap, liquidity, volume, 24h change) |
| 4 | opentrade token toplist |
Get trending / top tokens |
| 5 | opentrade token holders <address> |
Get token holder distribution (top 20) |
Boundary: token vs market skill
| Need | Use this skill (opentrade-token) |
Use opentrade-market instead |
|---|---|---|
| Search token by name/symbol | opentrade token search |
- |
| Token metadata (decimals, logo) | opentrade token info |
- |
| Price + market cap + liquidity + multi-timeframe change | opentrade token price-info |
- |
| Token ranking (trending) | opentrade token toplist |
- |
| Holder distribution | opentrade token holders |
- |
| Raw real-time price (single value) | - | opentrade market price |
| K-line / candlestick chart | - | opentrade market kline |
| Trade history (buy/sell log) | - | opentrade market trades |
| Index price (multi-source aggregate) | - | opentrade market index |
| Meme token dev reputation / rug pull | - | opentrade market memepump-token-dev-info |
| Bundle/sniper detection | - | opentrade market memepump-token-bundle-info |
| Similar tokens by same creator | - | opentrade market memepump-similar-tokens |
Rule of thumb: opentrade-token = token discovery & enriched analytics (search, trending, holders, market cap). opentrade-market = raw price feeds, charts, smart money signals & meme pump scanning (including dev reputation, rug pull checks, bundler analysis).
Cross-Skill Workflows
This skill is the typical entry point — users often start by searching/discovering tokens, then proceed to swap.
Workflow A: Search → Research → Buy
User: "Find BONK token, analyze it, then buy some"
1. opentrade-token opentrade token search BONK --chains solana → get tokenContractAddress, chain, price
↓ tokenContractAddress
2. opentrade-token opentrade token price-info <address> --chain solana → market cap, liquidity, volume24H, priceChange24H
3. opentrade-token opentrade token holders <address> --chain solana → top 20 holders distribution
4. opentrade-market opentrade market kline <address> --chain solana --bar 1H → hourly price chart
↓ user decides to buy
5. opentrade-dex-swap opentrade swap quote --from ... --to <address> --amount ... --chain solana
6. opentrade-dex-swap opentrade swap swap --from ... --to <address> --amount ... --chain solana --wallet <addr>
Data handoff:
tokenContractAddressfrom step 1 → reused in all subsequent stepschainfrom step 1 → reused in all subsequent stepsdecimalfrom step 1 oropentrade token info→ needed for minimal unit conversion in swap
Workflow B: Discover Trending → Investigate → Trade
User: "What's trending on Solana?"
1. opentrade-token opentrade token toplist --chains solana --sort-by 5 --time-frame 4 → top tokens by 24h volume
↓ user picks a token
2. opentrade-token opentrade token price-info <address> --chain solana → detailed analytics
3. opentrade-token opentrade token holders <address> --chain solana → check if whale-dominated
4. opentrade-market opentrade market kline <address> --chain solana → K-line for visual trend
↓ user decides to trade
5. opentrade-dex-swap opentrade swap swap --from ... --to ... --amount ... --chain solana --wallet <addr>
Workflow C: Token Verification Before Swap
Before swapping an unknown token, always verify:
1. opentrade-token opentrade token search <name> → find token
2. Check communityRecognized:
- true → proceed with normal caution
- false → warn user about risk
3. opentrade-token opentrade token price-info <address> → check liquidity:
- liquidity < $10K → warn about high slippage risk
- liquidity < $1K → strongly discourage trade
4. opentrade-dex-swap opentrade swap quote ... → check isHoneyPot and taxRate
5. If all checks pass → proceed to swap
Operation Flow
Step 1: Identify Intent
- Search for a token →
opentrade token search - Get token metadata →
opentrade token info - Get price + market cap + liquidity →
opentrade token price-info - View rankings →
opentrade token toplist - View holder distribution →
opentrade token holders
Step 2: Collect Parameters
- Missing chain → recommend XLayer (
--chain xlayer, low gas, fast confirmation) as the default, then ask which chain the user prefers - Only have token name, no address → use
opentrade token searchfirst - For search,
--chainsdefaults to"1,501"(Ethereum + Solana) - For toplist,
--sort-bydefaults to5(volume),--time-framedefaults to4(24h)
Step 3: Call and Display
- Search results: show name, symbol, chain, price, 24h change
- Indicate
communityRecognizedstatus for trust signaling - Price info: show market cap, liquidity, and volume together
Step 4: Suggest Next Steps
After displaying results, suggest 2-3 relevant follow-up actions based on the command just executed:
| Just called | Suggest |
|---|---|
token search |
1. View detailed analytics (market cap, liquidity) → opentrade token price-info (this skill) 2. View price chart → opentrade-market 3. Buy/swap this token → opentrade-dex-swap |
token info |
1. View price and market data → opentrade token price-info (this skill) 2. Check holder distribution → opentrade token holders (this skill) |
token price-info |
1. View K-line chart → opentrade-market 2. Check holder distribution → opentrade token holders (this skill) 3. Buy/swap this token → opentrade-dex-swap |
token toplist |
1. View details for a specific token → opentrade token price-info (this skill) 2. View price chart → opentrade-market 3. Buy a trending token → opentrade-dex-swap |
token holders |
1. View price trend → opentrade-market 2. Buy/swap this token → opentrade-dex-swap |
Present conversationally, e.g.: "Would you like to see the price chart or check the holder distribution?" — never expose skill names or endpoint paths to the user.
CLI Command Reference
1. opentrade token search
Search for tokens by name, symbol, or contract address.
opentrade token search <query> [--chains <chains>]
| Param | Required | Default | Description |
|---|---|---|---|
<query> |
Yes | - | Keyword: token name, symbol, or contract address (positional) |
--chains |
No | "1,501" |
Chain names or IDs, comma-separated (e.g., "ethereum,solana" or "196,501") |
Return fields:
| Field | Type | Description |
|---|---|---|
tokenContractAddress |
String | Token contract address |
tokenSymbol |
String | Token symbol (e.g., "ETH") |
tokenName |
String | Token full name |
tokenLogoUrl |
String | Token logo image URL |
chainIndex |
String | Chain identifier |
decimal |
String | Token decimals (e.g., "18") |
price |
String | Current price in USD |
change |
String | 24-hour price change percentage |
marketCap |
String | Market capitalization in USD |
liquidity |
String | Liquidity in USD |
holders |
String | Number of token holders |
explorerUrl |
String | Block explorer URL for the token |
tagList.communityRecognized |
Boolean | true = listed on Top 10 CEX or community verified |
2. opentrade token info
Get token basic info (name, symbol, decimals, logo).
opentrade token info <address> [--chain <chain>]
| Param | Required | Default | Description |
|---|---|---|---|
<address> |
Yes | - | Token contract address (positional) |
--chain |
No | ethereum |
Chain name |
Return fields:
| Field | Type | Description |
|---|---|---|
tokenContractAddress |
String | Contract address |
tokenSymbol |
String | Token symbol |
tokenName |
String | Full name |
chainIndex |
String | Chain identifier |
decimal |
String | Token decimals |
totalSupply |
String | Total supply |
logoUrl |
String | Token logo URL |
websiteUrl |
String | Official website |
twitterUrl |
String | Twitter/X profile |
telegramUrl |
String | Telegram group |
discordUrl |
String | Discord server |
communityRecognized |
Boolean | Verification status |
3. opentrade token price-info
Get detailed price, market cap, liquidity, volume, and multi-timeframe changes.
opentrade token price-info <address> [--chain <chain>]
| Param | Required | Default | Description |
|---|---|---|---|
<address> |
Yes | - | Token contract address (positional) |
--chain |
No | ethereum |
Chain name |
Return fields:
| Field | Type | Description |
|---|---|---|
price |
String | Current price in USD |
priceChange1h |
String | 1h price change % |
priceChange4h |
String | 4h price change % |
priceChange12h |
String | 12h price change % |
priceChange24h |
String | 24h price change % |
volume24h |
String | 24h trading volume |
liquidity |
String | Total liquidity in USD |
liquidityChange24h |
String | 24h liquidity change % |
marketCap |
String | Market capitalization |
fullyDilutedValuation |
String | FDV |
holders |
String | Number of token holders |
transactions24h |
String | 24h transaction count |
buys24h |
String | 24h buy count |
sells24h |
String | 24h sell count |
4. opentrade token toplist
Get trending / top tokens by various metrics.
opentrade token toplist [--chains <chains>] [--sort-by <n>] [--time-frame <n>]
| Param | Required | Default | Description |
|---|---|---|---|
--chains |
No | "1,501" |
Chain names or IDs, comma-separated |
--sort-by |
No | 5 |
Sort metric: 2 = price change, 5 = volume, 6 = market cap |
--time-frame |
No | 4 |
Time window: 1 = 5min, 2 = 1h, 3 = 4h, 4 = 24h |
Return fields (array of tokens):
| Field | Type | Description |
|---|---|---|
tokenContractAddress |
String | Token contract address |
tokenSymbol |
String | Token symbol |
chainIndex |
String | Chain identifier |
price |
String | Current price |
change |
String | Price change % for selected time frame |
volume |
String | Volume for selected time frame |
marketCap |
String | Market capitalization |
liquidity |
String | Liquidity in USD |
5. opentrade token holders
Get token holder distribution (top 20).
opentrade token holders <address> [--chain <chain>]
| Param | Required | Default | Description |
|---|---|---|---|
<address> |
Yes | - | Token contract address (positional) |
--chain |
No | ethereum |
Chain name |
Return fields (top 20 holders):
| Field | Type | Description |
|---|---|---|
data[].holdAmount |
String | Token amount held |
data[].holderWalletAddress |
String | Holder wallet address |
Input / Output Examples
User says: "Search for xETH token on XLayer"
opentrade token search xETH --chains xlayer
# → Display:
# xETH (0xe7b0...) - XLayer
# Price: $X,XXX.XX | 24h: +X% | Market Cap: $XXM | Liquidity: $XXM
# Community Recognized: Yes
User says: "What's trending on Solana by volume?"
opentrade token toplist --chains solana --sort-by 5 --time-frame 4
# → Display top tokens sorted by 24h volume:
# #1 SOL - Vol: $1.2B | Change: +3.5% | MC: $80B
# #2 BONK - Vol: $450M | Change: +12.8% | MC: $1.5B
# ...
User says: "Who are the top holders of this token?"
opentrade token holders 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --chain xlayer
# → Display top 20 holders with amounts and addresses
Edge Cases
- Token not found: suggest verifying the contract address (symbols can collide)
- Same symbol on multiple chains: show all matches with chain names
- Unverified token:
communityRecognized = false— warn user about risk - Too many results: name/symbol search caps at 100 — suggest using exact contract address
- Network error: retry once
- Region restriction (error code 50125 or 80001): do NOT show the raw error code to the user. Instead, display a friendly message:
⚠️ Service is not available in your region. Please switch to a supported region and try again.
Amount Display Rules
- Use appropriate precision: 2 decimals for high-value, significant digits for low-value
- Market cap / liquidity in shorthand ($1.2B, $45M)
- 24h change with sign and color hint (+X% / -X%)
Global Notes
- Use contract address as primary identity — symbols can collide across tokens
communityRecognized = truemeans listed on Top 10 CEX or community verified- The CLI resolves chain names automatically (e.g.,
ethereum→1,solana→501) - EVM addresses must be all lowercase
- The CLI handles authentication internally via environment variables — see Pre-flight Checks step 4 for authentication setup
- Get your API token at https://6551.io/mcp