gmgn-cli 1.1.5 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Readme.md +188 -50
- package/Readme.zh.md +208 -29
- package/dist/client/OpenApiClient.d.ts.map +1 -1
- package/dist/client/OpenApiClient.js +14 -1
- package/dist/client/OpenApiClient.js.map +1 -1
- package/dist/commands/portfolio.d.ts.map +1 -1
- package/dist/commands/portfolio.js +6 -15
- package/dist/commands/portfolio.js.map +1 -1
- package/dist/commands/token.js +2 -2
- package/dist/commands/token.js.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/gmgn-market/SKILL.md +147 -39
- package/skills/gmgn-portfolio/SKILL.md +134 -5
- package/skills/gmgn-swap/SKILL.md +94 -11
- package/skills/gmgn-token/SKILL.md +215 -53
- package/skills/gmgn-track/SKILL.md +174 -4
|
@@ -2,12 +2,34 @@
|
|
|
2
2
|
name: gmgn-token
|
|
3
3
|
description: Query GMGN token information — basic info, security, pool, top holders and top traders. Supports sol / bsc / base.
|
|
4
4
|
argument-hint: "<sub-command> --chain <sol|bsc|base> --address <token_address>"
|
|
5
|
+
metadata:
|
|
6
|
+
cliHelp: "gmgn-cli token --help"
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
**IMPORTANT: Always use `gmgn-cli` commands below. Do NOT use web search, WebFetch, curl, or visit gmgn.ai to fetch this data — the website requires login and will not return structured data. The CLI is the only correct method.**
|
|
8
10
|
|
|
11
|
+
**⚠️ IPv6 NOT SUPPORTED: If you get a `401` or `403` error and credentials look correct, check for IPv6 immediately: (1) list all network interfaces and their IPv6 addresses — run `ifconfig | grep inet6` (macOS) or `ip addr show | grep inet6` (Linux); (2) send a test request to `https://ipv6.icanhazip.com` — if the response is an IPv6 address, outbound traffic is going via IPv6. Tell the user immediately: "Please disable IPv6 on your network interface — gmgn-cli commands only work over IPv4."**
|
|
12
|
+
|
|
13
|
+
**IMPORTANT: Do NOT guess field names or values. When a field's meaning is unclear, look it up in the Response Field Reference tables below before using it.**
|
|
14
|
+
|
|
9
15
|
Use the `gmgn-cli` tool to query token information based on the user's request.
|
|
10
16
|
|
|
17
|
+
## Core Concepts
|
|
18
|
+
|
|
19
|
+
- **Token address** — The on-chain contract address that uniquely identifies a token on its chain. Required for all token sub-commands. Format: base58 (SOL) or `0x...` hex (BSC/Base).
|
|
20
|
+
- **Chain** — The blockchain network: `sol` = Solana, `bsc` = BNB Smart Chain, `base` = Base (Coinbase L2).
|
|
21
|
+
- **Market cap** — Not returned directly by `token info`. Calculate as `price × circulating_supply` (both are top-level fields in the response, already in human-readable units).
|
|
22
|
+
- **Liquidity** — USD value of token reserves in the main trading pool. Low liquidity (< $10k) means high price impact / slippage when buying or selling.
|
|
23
|
+
- **Holder** — A wallet that currently holds the token. `token holders` returns wallets ranked by current balance.
|
|
24
|
+
- **Trader** — Any wallet that has transacted with the token (bought or sold), regardless of current holdings. `token traders` covers both current holders and past traders.
|
|
25
|
+
- **Smart money (`smart_degen`)** — Wallets with a proven track record of profitable trading, tagged by GMGN's algorithm. High `smart_degen_count` is a bullish signal.
|
|
26
|
+
- **KOL (`renowned`)** — Known influencer, fund, or public figure wallets, tagged by GMGN. Their positions are publicly tracked.
|
|
27
|
+
- **Honeypot** — A token where buy transactions succeed but sell transactions always fail. User funds become permanently trapped. Only detectable on BSC/Base (`is_honeypot`); not applicable on SOL.
|
|
28
|
+
- **Renounced (mint / freeze / ownership)** — The developer has permanently given up that authority. On SOL: `renounced_mint` (cannot create new supply) and `renounced_freeze_account` (cannot freeze wallets) both `true` is the safe baseline. On EVM: `owner_renounced` `"yes"` means no admin backdoors.
|
|
29
|
+
- **rug_ratio** — A 0–1 risk score estimating the likelihood of a rug pull. Values above `0.3` are high-risk. Do not treat as a binary safe/unsafe flag — use in combination with other signals.
|
|
30
|
+
- **Bonding curve** — Price discovery mechanism used by launchpads (e.g. Pump.fun, letsbonk). Token price rises as more is bought. When the curve fills, the token "graduates" to an open DEX pool. `is_on_curve: true` means the token has not graduated yet.
|
|
31
|
+
- **Wallet tags** — GMGN-assigned labels on wallets: `smart_degen` (smart money), `renowned` (KOL), `sniper` (launched at token open), `bundler` (bot-bundled buy), `rat_trader` (insider/sneak trading). Use `--tag` to filter `token holders` / `token traders` by these labels.
|
|
32
|
+
|
|
11
33
|
## Sub-commands
|
|
12
34
|
|
|
13
35
|
| Sub-command | Description |
|
|
@@ -45,7 +67,7 @@ Use the `gmgn-cli` tool to query token information based on the user's request.
|
|
|
45
67
|
| `--limit` | No | `20` | Number of results, max `100` |
|
|
46
68
|
| `--order-by` | No | `amount_percentage` | Sort field — see table below |
|
|
47
69
|
| `--direction` | No | `desc` | Sort direction: `asc` / `desc` |
|
|
48
|
-
| `--tag` | No |
|
|
70
|
+
| `--tag` | No | — | Wallet filter: `renowned` (KOL wallets) / `smart_degen` (smart money). Omit to return all wallets. |
|
|
49
71
|
| `--raw` | No | — | Output raw single-line JSON |
|
|
50
72
|
|
|
51
73
|
### `--order-by` Values
|
|
@@ -65,6 +87,23 @@ Use the `gmgn-cli` tool to query token information based on the user's request.
|
|
|
65
87
|
| `renowned` | KOL / well-known wallets (influencers, funds, public figures) |
|
|
66
88
|
| `smart_degen` | Smart money wallets (historically high-performing traders) |
|
|
67
89
|
|
|
90
|
+
### `--tag` + `--order-by` Combination Guide
|
|
91
|
+
|
|
92
|
+
`--tag` and `--order-by` are independent — all `--order-by` values are valid with or without `--tag`. Omitting `--tag` returns all wallets (no filter).
|
|
93
|
+
|
|
94
|
+
Recommended combinations for common use cases:
|
|
95
|
+
|
|
96
|
+
| Goal | `--tag` | `--order-by` |
|
|
97
|
+
|------|---------|--------------|
|
|
98
|
+
| Largest smart money holders by supply | `smart_degen` | `amount_percentage` |
|
|
99
|
+
| Smart money with highest realized profit | `smart_degen` | `profit` |
|
|
100
|
+
| Smart money sitting on unrealized gains | `smart_degen` | `unrealized_profit` |
|
|
101
|
+
| Smart money aggressively accumulating | `smart_degen` | `buy_volume_cur` |
|
|
102
|
+
| Smart money distributing (exit signal) | `smart_degen` | `sell_volume_cur` |
|
|
103
|
+
| KOLs who already took profit | `renowned` | `profit` |
|
|
104
|
+
| KOLs still holding with paper gains | `renowned` | `unrealized_profit` |
|
|
105
|
+
| Largest holders overall (no filter) | *(omit)* | `amount_percentage` |
|
|
106
|
+
|
|
68
107
|
## Response Field Reference
|
|
69
108
|
|
|
70
109
|
### `token info` — Key Fields
|
|
@@ -207,23 +246,106 @@ The response has four nested objects: `pool`, `link`, `stat`, `wallet_tags_stat`
|
|
|
207
246
|
|
|
208
247
|
---
|
|
209
248
|
|
|
210
|
-
### `token holders` / `token traders` —
|
|
249
|
+
### `token holders` / `token traders` — Response Fields
|
|
211
250
|
|
|
212
|
-
Each item in
|
|
251
|
+
The response is an object with a `list` array. Each item in `list` represents one wallet.
|
|
252
|
+
|
|
253
|
+
**Identity & Holdings**
|
|
213
254
|
|
|
214
255
|
| Field | Description |
|
|
215
256
|
|-------|-------------|
|
|
216
257
|
| `address` | Wallet address |
|
|
217
|
-
| `
|
|
218
|
-
| `
|
|
219
|
-
| `
|
|
220
|
-
| `
|
|
221
|
-
| `
|
|
222
|
-
| `
|
|
223
|
-
| `
|
|
224
|
-
| `
|
|
225
|
-
| `
|
|
226
|
-
| `
|
|
258
|
+
| `account_address` | Token account address (the on-chain account holding the token, distinct from the wallet address) |
|
|
259
|
+
| `addr_type` | Address type: `0` = regular wallet, `2` = exchange / liquidity pool |
|
|
260
|
+
| `exchange` | Exchange or pool name if `addr_type` is `2` (e.g. `pump_amm`, `raydium`) |
|
|
261
|
+
| `wallet_tag_v2` | Rank label in this list (e.g. `TOP1`, `TOP2`, ...) |
|
|
262
|
+
| `native_balance` | Native token balance in smallest unit (lamports for SOL) |
|
|
263
|
+
| `balance` | Current token balance (human-readable units) |
|
|
264
|
+
| `amount_cur` | Same as `balance` — current token amount held |
|
|
265
|
+
| `usd_value` | USD value of current holdings at current price |
|
|
266
|
+
| `amount_percentage` | Ratio of total supply held (0–1); e.g. `0.05` = 5% |
|
|
267
|
+
| `is_on_curve` | `true` = still on bonding curve (pump.fun pre-graduation); `false` = open market |
|
|
268
|
+
| `is_new` | Whether this is a newly created wallet |
|
|
269
|
+
| `is_suspicious` | Whether this wallet is flagged as suspicious |
|
|
270
|
+
| `transfer_in` | Whether the current holding was received via transfer (not bought) |
|
|
271
|
+
|
|
272
|
+
**Trading Summary**
|
|
273
|
+
|
|
274
|
+
| Field | Description |
|
|
275
|
+
|-------|-------------|
|
|
276
|
+
| `buy_volume_cur` | Total buy volume in USD |
|
|
277
|
+
| `sell_volume_cur` | Total sell volume in USD |
|
|
278
|
+
| `buy_amount_cur` | Total tokens bought |
|
|
279
|
+
| `sell_amount_cur` | Total tokens sold |
|
|
280
|
+
| `sell_amount_percentage` | Ratio of bought tokens that have been sold (0–1); `1.0` = fully exited |
|
|
281
|
+
| `buy_tx_count_cur` | Number of buy transactions |
|
|
282
|
+
| `sell_tx_count_cur` | Number of sell transactions |
|
|
283
|
+
| `netflow_usd` | Net USD flow = sell income − buy cost (negative = net spent) |
|
|
284
|
+
| `netflow_amount` | Net token flow = bought − sold (positive = still holding net position) |
|
|
285
|
+
|
|
286
|
+
**Cost & P&L**
|
|
287
|
+
|
|
288
|
+
| Field | Description |
|
|
289
|
+
|-------|-------------|
|
|
290
|
+
| `avg_cost` | Average buy price in USD per token |
|
|
291
|
+
| `avg_sold` | Average sell price in USD per token |
|
|
292
|
+
| `history_bought_cost` | Total USD spent buying |
|
|
293
|
+
| `history_bought_fee` | Total fees paid on buys in USD |
|
|
294
|
+
| `history_sold_income` | Total USD received from selling |
|
|
295
|
+
| `history_sold_fee` | Total fees paid on sells in USD |
|
|
296
|
+
| `total_cost` | Total cost basis including fees |
|
|
297
|
+
| `profit` | Total profit in USD (realized + unrealized) |
|
|
298
|
+
| `profit_change` | Total profit ratio = profit / total_cost |
|
|
299
|
+
| `realized_profit` | Realized profit in USD from completed sells |
|
|
300
|
+
| `realized_pnl` | Realized profit ratio = realized_profit / buy_cost |
|
|
301
|
+
| `unrealized_profit` | Unrealized profit in USD on current holdings at current price |
|
|
302
|
+
| `unrealized_pnl` | Unrealized profit ratio; `null` if no current holdings |
|
|
303
|
+
|
|
304
|
+
**Transfer History**
|
|
305
|
+
|
|
306
|
+
| Field | Description |
|
|
307
|
+
|-------|-------------|
|
|
308
|
+
| `current_transfer_in_amount` | Tokens received via transfer (not bought) in current period |
|
|
309
|
+
| `current_transfer_out_amount` | Tokens sent out via transfer (not sold) in current period |
|
|
310
|
+
| `history_transfer_in_amount` | Historical total tokens received via transfer |
|
|
311
|
+
| `history_transfer_in_cost` | Estimated cost basis of transferred-in tokens |
|
|
312
|
+
| `history_transfer_out_amount` | Historical total tokens sent out via transfer |
|
|
313
|
+
| `history_transfer_out_income` | Estimated income from transferred-out tokens |
|
|
314
|
+
| `history_transfer_out_fee` | Fees paid on transfer-outs |
|
|
315
|
+
| `transfer_in_count` | Number of inbound transfers |
|
|
316
|
+
| `transfer_out_count` | Number of outbound transfers |
|
|
317
|
+
|
|
318
|
+
**Timing**
|
|
319
|
+
|
|
320
|
+
| Field | Description |
|
|
321
|
+
|-------|-------------|
|
|
322
|
+
| `start_holding_at` | Unix timestamp when wallet first acquired this token |
|
|
323
|
+
| `end_holding_at` | Unix timestamp when wallet fully exited; `null` if still holding |
|
|
324
|
+
| `last_active_timestamp` | Unix timestamp of most recent on-chain activity for this token |
|
|
325
|
+
| `last_block` | Block number of last activity |
|
|
326
|
+
|
|
327
|
+
**Wallet Identity**
|
|
328
|
+
|
|
329
|
+
| Field | Description |
|
|
330
|
+
|-------|-------------|
|
|
331
|
+
| `name` | Wallet display name (if known) |
|
|
332
|
+
| `twitter_username` | Twitter / X username |
|
|
333
|
+
| `twitter_name` | Twitter / X display name |
|
|
334
|
+
| `avatar` | Avatar image URL |
|
|
335
|
+
| `tags` | Platform-level wallet tags (e.g. `["kol"]`, `["smart_degen"]`, `["axiom"]`) |
|
|
336
|
+
| `maker_token_tags` | Token-specific behavior tags for this wallet (e.g. `["bundler"]`, `["paper_hands"]`, `["top_holder"]`) |
|
|
337
|
+
| `created_at` | Wallet creation timestamp (Unix seconds); `0` if unknown |
|
|
338
|
+
|
|
339
|
+
**Last Transaction Records**
|
|
340
|
+
|
|
341
|
+
Each of the following is an object with `name`, `address`, `timestamp`, `tx_hash`, `type`:
|
|
342
|
+
|
|
343
|
+
| Field | Description |
|
|
344
|
+
|-------|-------------|
|
|
345
|
+
| `native_transfer` | Most recent native token (SOL/BNB/ETH) transfer associated with this wallet |
|
|
346
|
+
| `token_transfer` | Most recent token transfer (buy or sell) |
|
|
347
|
+
| `token_transfer_in` | Most recent inbound token transfer |
|
|
348
|
+
| `token_transfer_out` | Most recent outbound token transfer |
|
|
227
349
|
|
|
228
350
|
---
|
|
229
351
|
|
|
@@ -310,6 +432,20 @@ gmgn-cli token holders --chain sol --address EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGG
|
|
|
310
432
|
--limit 100 --raw
|
|
311
433
|
```
|
|
312
434
|
|
|
435
|
+
### `token traders` — `--tag` + `--order-by` Combination Guide
|
|
436
|
+
|
|
437
|
+
Use this table to pick the right combination for common `token traders` use cases:
|
|
438
|
+
|
|
439
|
+
| Use case | `--tag` | `--order-by` |
|
|
440
|
+
|----------|---------|-------------|
|
|
441
|
+
| Smart money with highest buy volume | `smart_degen` | `buy_volume_cur` |
|
|
442
|
+
| Smart money with highest sell volume (exit signal) | `smart_degen` | `sell_volume_cur` |
|
|
443
|
+
| KOLs recently active | `renowned` | `last_active_timestamp` |
|
|
444
|
+
| Smart money most profitable traders | `smart_degen` | `profit` |
|
|
445
|
+
| Snipers still holding | `sniper` | `amount_percentage` |
|
|
446
|
+
| Smart money sitting on biggest unrealized gains | `smart_degen` | `unrealized_profit` |
|
|
447
|
+
| KOLs who already took profit | `renowned` | `profit` |
|
|
448
|
+
|
|
313
449
|
### `token traders` — Find Active Traders
|
|
314
450
|
|
|
315
451
|
```bash
|
|
@@ -343,66 +479,92 @@ gmgn-cli token traders --chain bsc --address 0x2170Ed0880ac9A755fd29B2688956BD95
|
|
|
343
479
|
|
|
344
480
|
---
|
|
345
481
|
|
|
346
|
-
##
|
|
482
|
+
## Token Quick Scoring Card
|
|
347
483
|
|
|
348
|
-
|
|
484
|
+
After fetching `token security` and `token info`, apply this scoring card to give a structured verdict. Do not skip this step when the user asks for a safety check or due diligence.
|
|
349
485
|
|
|
350
|
-
|
|
486
|
+
| Field | ✅ Safe | ⚠️ Warning | 🚫 Danger (Hard Stop) |
|
|
487
|
+
|-------|---------|-----------|----------------------|
|
|
488
|
+
| `is_honeypot` | `"no"` | — | `"yes"` → **stop immediately** |
|
|
489
|
+
| `open_source` | `"yes"` | `"unknown"` | `"no"` |
|
|
490
|
+
| `owner_renounced` | `"yes"` | `"unknown"` | `"no"` |
|
|
491
|
+
| `renounced_mint` (SOL) | `true` | — | `false` |
|
|
492
|
+
| `renounced_freeze_account` (SOL) | `true` | — | `false` |
|
|
493
|
+
| `rug_ratio` | `< 0.10` | `0.10–0.30` | `> 0.30` |
|
|
494
|
+
| `top_10_holder_rate` | `< 0.20` | `0.20–0.50` | `> 0.50` |
|
|
495
|
+
| `creator_token_status` | `creator_close` | — | `creator_hold` |
|
|
496
|
+
| `buy_tax` / `sell_tax` | `0` | `0.01–0.05` | `> 0.10` |
|
|
497
|
+
| `sniper_count` | `< 5` | `5–20` | `> 20` |
|
|
498
|
+
| `smart_wallets` (from `wallet_tags_stat`) | `≥ 3` | `1–2` | `0` (bearish, not a hard stop) |
|
|
499
|
+
| `renowned_wallets` (from `wallet_tags_stat`) | `≥ 1` | — | `0` (neutral, not a hard stop) |
|
|
500
|
+
|
|
501
|
+
**Final scoring logic:**
|
|
502
|
+
- If `is_honeypot = "yes"` → **hard stop immediately**, do not proceed regardless of other signals
|
|
503
|
+
- If other 🚫 fields present → **skip** (strong warning — present to user)
|
|
504
|
+
- `smart_wallets = 0` alone is NOT a hard stop — it means no smart money interest yet, which is bearish but not disqualifying for very new tokens
|
|
505
|
+
- If 3+ ⚠️ with no 🚫 → **needs more research** — present findings and ask user how to proceed
|
|
506
|
+
- If mostly ✅ with `smart_wallets ≥ 3` → **worth researching** — proceed to holders/traders analysis
|
|
351
507
|
|
|
352
|
-
|
|
353
|
-
gmgn-cli token info --chain sol --address <token_address> --raw
|
|
354
|
-
```
|
|
508
|
+
## Workflow: Full Token Due Diligence
|
|
355
509
|
|
|
356
|
-
|
|
510
|
+
When the user asks for a full token research / due diligence, follow the steps in [`docs/workflow-token-research.md`](../../docs/workflow-token-research.md).
|
|
357
511
|
|
|
358
|
-
|
|
512
|
+
Steps: `token info` → `token security` → `token pool` → market heat check → `token holders/traders` (smart money signals) → Decision Framework.
|
|
359
513
|
|
|
360
|
-
|
|
514
|
+
**For a more comprehensive report** (user asks for a "deep report", "full analysis", "is this worth a large position"), use the extended workflow: [`docs/workflow-project-deep-report.md`](../../docs/workflow-project-deep-report.md). This adds a scored multi-dimension analysis (fundamentals + security + liquidity + smart money conviction + price action) and produces a full written report.
|
|
361
515
|
|
|
362
|
-
|
|
363
|
-
gmgn-cli token security --chain sol --address <token_address> --raw
|
|
364
|
-
```
|
|
516
|
+
**For active risk monitoring** on a held position (user asks "any risk warnings", "are whales dumping", "is liquidity still healthy"), follow: [`docs/workflow-risk-warning.md`](../../docs/workflow-risk-warning.md). Uses `token security` + `token pool` + `token holders` to flag whale exits, liquidity drain, and developer dumps.
|
|
365
517
|
|
|
366
|
-
|
|
518
|
+
---
|
|
367
519
|
|
|
368
|
-
|
|
369
|
-
|-------|------|---------|--------|
|
|
370
|
-
| `is_honeypot` | `"no"` | — | `"yes"` → Do not buy |
|
|
371
|
-
| `open_source` | `"yes"` | `"unknown"` | `"no"` |
|
|
372
|
-
| `owner_renounced` | `"yes"` | `"unknown"` | `"no"` |
|
|
373
|
-
| `renounced_mint` (SOL) | `true` | — | `false` → mint risk |
|
|
374
|
-
| `renounced_freeze_account` (SOL) | `true` | — | `false` → freeze risk |
|
|
375
|
-
| `buy_tax` / `sell_tax` | `0` | `0.01–0.05` | `>0.10` → high tax |
|
|
376
|
-
| `top_10_holder_rate` | `<0.20` | `0.20–0.40` | `>0.50` → whale risk |
|
|
377
|
-
| `rug_ratio` | `<0.10` | `0.10–0.30` | `>0.30` → high rug risk |
|
|
378
|
-
| `creator_token_status` | `creator_close` | — | `creator_hold` → dev not sold |
|
|
379
|
-
| `sniper_count` | `<5` | `5–20` | `>20` → heavily sniped |
|
|
520
|
+
## Output Format
|
|
380
521
|
|
|
381
|
-
###
|
|
522
|
+
### `token info` — Summary Card
|
|
382
523
|
|
|
383
|
-
|
|
384
|
-
|
|
524
|
+
Present as a concise card. Do not dump raw JSON.
|
|
525
|
+
|
|
526
|
+
```
|
|
527
|
+
{symbol} ({name})
|
|
528
|
+
Price: ${price} | Market Cap: ~${price × circulating_supply} | Liquidity: ${liquidity}
|
|
529
|
+
Holders: {holder_count} | Smart Money: {wallet_tags_stat.smart_wallets} | KOLs: {wallet_tags_stat.renowned_wallets}
|
|
530
|
+
Social: @{link.twitter_username} | {link.website} | {link.telegram}
|
|
385
531
|
```
|
|
386
532
|
|
|
387
|
-
|
|
533
|
+
If any social fields are empty, omit them rather than showing `null`.
|
|
388
534
|
|
|
389
|
-
###
|
|
535
|
+
### `token security` — Risk Assessment Summary
|
|
390
536
|
|
|
391
|
-
|
|
392
|
-
# Is smart money accumulating?
|
|
393
|
-
gmgn-cli token holders --chain sol --address <token_address> \
|
|
394
|
-
--tag smart_degen --order-by buy_volume_cur --direction desc --limit 20 --raw
|
|
537
|
+
After fetching security data, present a structured risk summary using this format:
|
|
395
538
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
539
|
+
```
|
|
540
|
+
Token: {symbol} | Chain: {chain} | Address: {short address}
|
|
541
|
+
─── Security ──────────────────────────────────────
|
|
542
|
+
Contract verified: ✅ yes / 🚫 no / ⚠️ unknown
|
|
543
|
+
Owner renounced: ✅ yes / 🚫 no / ⚠️ unknown
|
|
544
|
+
Honeypot: ✅ no / 🚫 YES — DO NOT BUY
|
|
545
|
+
Mint renounced (SOL): ✅ yes / ⚠️ no
|
|
546
|
+
Freeze renounced(SOL):✅ yes / ⚠️ no
|
|
547
|
+
Rug risk score: {rug_ratio} → ✅ <0.1 Low / ⚠️ 0.1–0.3 Med / 🚫 >0.3 High
|
|
548
|
+
Top-10 holder %: {top_10_holder_rate%} → ✅ <20% / ⚠️ 20–50% / 🚫 >50%
|
|
549
|
+
Dev still holding: ✅ sold (creator_close) / ⚠️ holding (creator_hold)
|
|
550
|
+
Sniper wallets: ✅ <5 / ⚠️ 5–20 / 🚫 >20
|
|
551
|
+
─── Smart Money ───────────────────────────────────
|
|
552
|
+
SM holders: {smart_wallets} KOL holders: {renowned_wallets}
|
|
553
|
+
─── Verdict ───────────────────────────────────────
|
|
554
|
+
🟢 Clean — worth researching
|
|
555
|
+
🟡 Mixed signals — proceed with caution
|
|
556
|
+
🔴 Red flags present — skip or verify manually
|
|
399
557
|
```
|
|
400
558
|
|
|
401
|
-
**
|
|
559
|
+
**If `is_honeypot = "yes"`, stop immediately and display: "🚫 HONEYPOT DETECTED — Do not buy this token." Do NOT proceed to further analysis steps.**
|
|
402
560
|
|
|
403
|
-
|
|
561
|
+
### `token holders` / `token traders` — Ranked Table
|
|
404
562
|
|
|
405
|
-
|
|
563
|
+
```
|
|
564
|
+
# | Wallet (name or short addr) | Hold% | Avg Buy | Realized P&L | Unrealized P&L | Tags
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
Show top rows only. Highlight wallets tagged `kol`, `smart_degen`, or flagged `bundler` / `rat_trader` in `maker_token_tags`.
|
|
406
568
|
|
|
407
569
|
## Notes
|
|
408
570
|
|
|
@@ -2,16 +2,43 @@
|
|
|
2
2
|
name: gmgn-track
|
|
3
3
|
description: Query GMGN on-chain tracking data — follow-wallet trade records, KOL trades, and Smart Money trades. Supports sol / bsc / base.
|
|
4
4
|
argument-hint: "<follow-wallet|kol|smartmoney> [--chain <sol|bsc|base>] [--wallet <wallet_address>]"
|
|
5
|
+
metadata:
|
|
6
|
+
cliHelp: "gmgn-cli track --help"
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
**IMPORTANT: Always use `gmgn-cli` commands below. Do NOT use web search, WebFetch, curl, or visit gmgn.ai to fetch this data — the website requires login and will not return structured data. The CLI is the only correct method.**
|
|
8
10
|
|
|
11
|
+
**IMPORTANT: Do NOT guess field names or values. When a field's meaning is unclear, look it up in the Response Fields sections below before using it.**
|
|
12
|
+
|
|
13
|
+
**⚠️ IPv6 NOT SUPPORTED: If you get a `401` or `403` error and credentials look correct, check for IPv6 immediately: (1) list all network interfaces and their IPv6 addresses — run `ifconfig | grep inet6` (macOS) or `ip addr show | grep inet6` (Linux); (2) send a test request to `https://ipv6.icanhazip.com` — if the response is an IPv6 address, outbound traffic is going via IPv6. Tell the user immediately: "Please disable IPv6 on your network interface — gmgn-cli commands only work over IPv4."**
|
|
14
|
+
|
|
9
15
|
Use the `gmgn-cli` tool to query on-chain tracking data based on the user's request.
|
|
10
16
|
|
|
17
|
+
## Core Concepts
|
|
18
|
+
|
|
19
|
+
- **`follow-wallet` vs `kol` vs `smartmoney`** — Three distinct data sources. `follow-wallet` returns trades from wallets the user has personally followed on the GMGN platform (user-specific, requires private key). `kol` and `smartmoney` return trades from platform-tagged public wallet lists (not user-specific, API Key only). Never substitute one for another.
|
|
20
|
+
|
|
21
|
+
- **KOL (Key Opinion Leader)** — Wallets publicly identified as influencers or well-known traders on GMGN. Tagged as `renowned` in the platform's wallet label system. Their trades carry social/marketing signal, not necessarily alpha.
|
|
22
|
+
|
|
23
|
+
- **Smart Money (`smart_degen`)** — Wallets with a statistically proven record of profitable trading, identified by GMGN's algorithm. Same concept as `smart_degen` in gmgn-token. Their trades are a stronger alpha signal than KOL trades.
|
|
24
|
+
|
|
25
|
+
- **`is_open_or_close`** — Indicates whether a trade is a full position event. Interpretation differs by sub-command:
|
|
26
|
+
- `follow-wallet`: `1` = full position open or close; `0` = partial add or reduce.
|
|
27
|
+
- `kol` / `smartmoney`: `0` = position opened / added; `1` = position closed / reduced.
|
|
28
|
+
Do not apply the same interpretation to both sub-commands.
|
|
29
|
+
|
|
30
|
+
- **`price_change`** — Ratio of price change since the trade was made. `6.66` = the token is now 6.66× what it was when the wallet traded (i.e. +566%). `0.5` = price halved since the trade (-50%). Use this to assess "how well did this trade age."
|
|
31
|
+
|
|
32
|
+
- **`base_address` vs `quote_address`** — In a trading pair, `base_address` is the token being bought/sold; `quote_address` is what it was priced in (typically SOL native address on Solana). To get the token of interest, always read `base_address`.
|
|
33
|
+
|
|
34
|
+
- **`maker_info.tags`** — Array of platform labels on the wallet (e.g. `["kol", "gmgn"]`, `["smart_degen", "photon"]`). A wallet can carry multiple tags. Use `tag_rank` (follow-wallet only) to see the wallet's rank within each tag category.
|
|
35
|
+
|
|
36
|
+
- **Cluster signal** — When multiple followed/tracked wallets trade the same token in the same direction within a short time window, this is a stronger conviction signal than a single wallet. Highlight this pattern when it appears in results.
|
|
37
|
+
|
|
11
38
|
**When to use which sub-command:**
|
|
12
|
-
- `track follow-wallet` — user asks "what did the wallets I follow trade?", "show me my follow list trades", "
|
|
13
|
-
- `track kol` — user asks "what are KOLs buying?", "
|
|
14
|
-
- `track smartmoney` — user asks "what is smart money doing?", "
|
|
39
|
+
- `track follow-wallet` — user asks "what did the wallets I follow trade?", "show me my follow list trades", "show my followed wallet activity" → requires wallets followed via GMGN platform
|
|
40
|
+
- `track kol` — user asks "what are KOLs buying?", "show me influencer trades", "what are KOLs doing recently" → returns trades from known KOL wallets
|
|
41
|
+
- `track smartmoney` — user asks "what is smart money doing?", "show me whale trades", "what is smart money buying recently" → returns trades from smart money / whale wallets
|
|
15
42
|
|
|
16
43
|
**Do NOT confuse these three:**
|
|
17
44
|
- `follow-wallet` = wallets the user has personally followed on GMGN
|
|
@@ -85,10 +112,58 @@ gmgn-cli track smartmoney --chain sol --side sell --limit 10 --raw
|
|
|
85
112
|
| `--limit <n>` | Page size (1–200, default 100) |
|
|
86
113
|
| `--side <side>` | Filter by trade direction: `buy` / `sell` (client-side filter — applied locally after fetching results) |
|
|
87
114
|
|
|
88
|
-
## `track
|
|
115
|
+
## `track follow-wallet` Response Fields
|
|
116
|
+
|
|
117
|
+
Top-level fields:
|
|
118
|
+
|
|
119
|
+
| Field | Description |
|
|
120
|
+
|-------|-------------|
|
|
121
|
+
| `next_page_token` | Opaque token for fetching the next page of results |
|
|
122
|
+
| `list` | Array of trade records |
|
|
89
123
|
|
|
90
124
|
Each item in `list` contains:
|
|
91
125
|
|
|
126
|
+
| Field | Description |
|
|
127
|
+
|-------|-------------|
|
|
128
|
+
| `id` | Record ID (base64-encoded, use as cursor) |
|
|
129
|
+
| `chain` | Chain name (e.g. `sol`) |
|
|
130
|
+
| `transaction_hash` | On-chain transaction hash |
|
|
131
|
+
| `maker` | Wallet address of the followed wallet |
|
|
132
|
+
| `side` | Trade direction: `buy` or `sell` |
|
|
133
|
+
| `base_address` | Token contract address |
|
|
134
|
+
| `quote_address` | Quote token address (SOL native address for buys/sells on SOL) |
|
|
135
|
+
| `base_amount` | Token quantity in smallest unit |
|
|
136
|
+
| `quote_amount` | Quote token amount spent / received (e.g. SOL) |
|
|
137
|
+
| `amount_usd` | Trade value in USD |
|
|
138
|
+
| `cost_usd` | Same as `amount_usd` — USD value of this transaction leg |
|
|
139
|
+
| `buy_cost_usd` | Original buy cost in USD (`0` if this record is the buy itself) |
|
|
140
|
+
| `price` | Token price denominated in quote token at time of trade |
|
|
141
|
+
| `price_usd` | Token price in USD at time of trade |
|
|
142
|
+
| `price_now` | Token current price in USD |
|
|
143
|
+
| `price_change` | Price change ratio since trade time (e.g. `6.66` = +666%) |
|
|
144
|
+
| `timestamp` | Unix timestamp of the trade |
|
|
145
|
+
| `is_open_or_close` | `1` = full position open or close; `0` = partial add or reduce |
|
|
146
|
+
| `launchpad` | Launchpad display name (e.g. `Pump.fun`) |
|
|
147
|
+
| `launchpad_platform` | Launchpad platform identifier (e.g. `Pump.fun`, `pump_agent`) |
|
|
148
|
+
| `migrated_pool_exchange` | DEX the token migrated to, if any (e.g. `pump_amm`); empty if not migrated |
|
|
149
|
+
| `base_token.symbol` | Token ticker symbol |
|
|
150
|
+
| `base_token.logo` | Token logo image URL |
|
|
151
|
+
| `base_token.hot_level` | Hotness level (`0` = normal, higher = trending) |
|
|
152
|
+
| `base_token.total_supply` | Total token supply (string) |
|
|
153
|
+
| `base_token.token_create_time` | Unix timestamp when token was created |
|
|
154
|
+
| `base_token.token_open_time` | Unix timestamp when trading opened (`0` if not yet migrated/opened) |
|
|
155
|
+
| `maker_info.address` | Followed wallet address |
|
|
156
|
+
| `maker_info.name` | Wallet display name |
|
|
157
|
+
| `maker_info.twitter_username` | Twitter / X username |
|
|
158
|
+
| `maker_info.twitter_name` | Twitter / X display name |
|
|
159
|
+
| `maker_info.tags` | Array of wallet tags (e.g. `["kol","gmgn"]`) |
|
|
160
|
+
| `maker_info.tag_rank` | Map of tag → rank within that category (e.g. `{"kol": 854}`) |
|
|
161
|
+
| `balance_info` | Wallet token balance info; `null` if not available |
|
|
162
|
+
|
|
163
|
+
## `track kol` / `track smartmoney` Response Fields
|
|
164
|
+
|
|
165
|
+
The response is an object with a `list` array. Each item in `list` contains:
|
|
166
|
+
|
|
92
167
|
| Field | Description |
|
|
93
168
|
|-------|-------------|
|
|
94
169
|
| `transaction_hash` | On-chain transaction hash |
|
|
@@ -106,6 +181,101 @@ Each item in `list` contains:
|
|
|
106
181
|
| `maker_info.twitter_username` | KOL's Twitter username |
|
|
107
182
|
| `maker_info.tags` | Wallet tags (e.g. `kol`, `smart_degen`, `photon`) |
|
|
108
183
|
|
|
184
|
+
## Smart Money Behavior Interpretation
|
|
185
|
+
|
|
186
|
+
After receiving trade data, interpret the signals using these frameworks before presenting results. Do not just list trades — analyze what they mean.
|
|
187
|
+
|
|
188
|
+
### 1. Signal Strength Levels
|
|
189
|
+
|
|
190
|
+
| Level | Criteria |
|
|
191
|
+
|-------|----------|
|
|
192
|
+
| Weak | 1 KOL buys |
|
|
193
|
+
| Medium | 2–3 smart money buys in the same direction, OR 1 smart money full position open |
|
|
194
|
+
| Strong | ≥ 3 smart money wallets same direction within 30 min (cluster signal) |
|
|
195
|
+
| Very Strong | Cluster signal + full position opens + KOL joining the same trade |
|
|
196
|
+
|
|
197
|
+
### 2. Reading `is_open_or_close` — Conviction Signals
|
|
198
|
+
|
|
199
|
+
The field has opposite meanings by sub-command:
|
|
200
|
+
|
|
201
|
+
- **`follow-wallet`**: `1` = full position open or close; `0` = partial add or reduce.
|
|
202
|
+
- **`kol` / `smartmoney`**: `0` = position opened / added; `1` = position closed / reduced.
|
|
203
|
+
|
|
204
|
+
Full position events (full open or full close) carry much stronger conviction than partial adds. A wallet opening a full new position signals high confidence. A wallet doing a full close signals they are exiting completely — treat this as a potential exit signal for that token.
|
|
205
|
+
|
|
206
|
+
### 3. Using `price_change` to Evaluate Track Record
|
|
207
|
+
|
|
208
|
+
`price_change` is a ratio of current price vs price at trade time:
|
|
209
|
+
- `price_change > 2` → this wallet's trade aged well (token is now 2x+ since they bought) — strong conviction signal
|
|
210
|
+
- `price_change 1–2` → modest gain, trade is in profit
|
|
211
|
+
- `price_change < 1` → trade is underwater (current price below entry)
|
|
212
|
+
|
|
213
|
+
Use this to build a mental model of a wallet's past performance before acting on their current trades.
|
|
214
|
+
|
|
215
|
+
### 4. Cluster Signal Detection
|
|
216
|
+
|
|
217
|
+
When multiple trades hit the same `base_address` in a short time window, this is a convergence signal — stronger than any single trade. To identify:
|
|
218
|
+
- Group results by `base_address`
|
|
219
|
+
- Count distinct `maker` addresses trading the same direction
|
|
220
|
+
- If ≥ 3 distinct wallets buy the same token within ~30 min → highlight as **cluster signal**
|
|
221
|
+
|
|
222
|
+
Cluster signals from `smartmoney` are stronger than from `kol` alone.
|
|
223
|
+
|
|
224
|
+
### 5. Red Flags in Smart Money Data
|
|
225
|
+
|
|
226
|
+
- **Smart money selling** (`side = sell` + `is_open_or_close` = full close) → exit signal — evaluate whether to exit or reduce position
|
|
227
|
+
- **Only KOL buying, zero smart_degen** → social hype without fundamental backing; higher risk
|
|
228
|
+
- **Renowned buying + smart money selling simultaneously** → divergence signal — insiders may be distributing into retail/KOL demand; high risk
|
|
229
|
+
- **Single very large buy, no follow-through** → may be one-off; wait for confirmation from other wallets
|
|
230
|
+
|
|
231
|
+
## Output Format
|
|
232
|
+
|
|
233
|
+
### `track follow-wallet` / `track kol` / `track smartmoney` — Trade Feed
|
|
234
|
+
|
|
235
|
+
Present as a reverse-chronological trade feed. Do not dump raw JSON.
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
{timestamp} {side} {base_token.symbol} ${amount_usd} by {maker_info.name or short address}
|
|
239
|
+
[{tags}] Price: ${price_usd} | Price now: ${price_now} ({price_change}x since trade)
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Group by token if multiple trades hit the same token. Highlight tokens where several followed wallets traded in the same direction within a short window (cluster signal).
|
|
243
|
+
|
|
244
|
+
For `follow-wallet`, also show `is_open_or_close`: flag full position opens/closes distinctly from partial adds/reduces.
|
|
245
|
+
|
|
246
|
+
### Cluster Signal Summary
|
|
247
|
+
|
|
248
|
+
After presenting the trade feed, check for convergence signals. If ≥ 2 distinct wallets traded the same token in the same direction, display a summary block:
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
⚡ Convergence Signals
|
|
252
|
+
──────────────────────────────────────────
|
|
253
|
+
TOKEN_X ({short_address})
|
|
254
|
+
5 smart money wallets — all BUY — $42,300 total — within 15 min
|
|
255
|
+
Signal strength: STRONG
|
|
256
|
+
|
|
257
|
+
TOKEN_Y ({short_address})
|
|
258
|
+
2 KOL wallets — BUY (full open) — $8,100 total
|
|
259
|
+
Signal strength: MEDIUM
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
For STRONG signals: proceed to full token research before acting — see [`docs/workflow-token-research.md`](../../docs/workflow-token-research.md)
|
|
263
|
+
For MEDIUM signals: monitor and wait for more wallets to confirm before acting.
|
|
264
|
+
|
|
265
|
+
If no convergence signals are detected: output "No cluster signals detected in this result set."
|
|
266
|
+
|
|
267
|
+
To research any token surfaced by smart money activity, follow [`docs/workflow-token-research.md`](../../docs/workflow-token-research.md)
|
|
268
|
+
|
|
269
|
+
**Smart money leaderboard / wallet profiling:** When the user asks "which smart money wallets are best to follow", "rank wallets by win rate", or wants to compare wallet performance — use `track smartmoney` to collect active wallet addresses, then batch-query their stats via `gmgn-portfolio stats`. Full workflow: [`docs/workflow-smart-money-profile.md`](../../docs/workflow-smart-money-profile.md)
|
|
270
|
+
|
|
271
|
+
**Daily brief:** When the user asks for a market overview ("what's the market like today", "what is smart money buying today", "give me a daily brief") — combine `track smartmoney` + `track kol` with `gmgn-market trending`. Full workflow: [`docs/workflow-daily-brief.md`](../../docs/workflow-daily-brief.md)
|
|
272
|
+
|
|
273
|
+
## Safety Constraints
|
|
274
|
+
|
|
275
|
+
- **`track follow-wallet` requires `GMGN_PRIVATE_KEY`** — this signing key is linked to your GMGN account. It is used for authentication only (no on-chain access), but must be protected like any credential. Never expose it in logs or command output.
|
|
276
|
+
- **`follow-wallet` reveals your following list** — results expose which wallets you have followed on GMGN. Do not share raw output in public channels.
|
|
277
|
+
- **`track kol` / `track smartmoney` expose no personal data** — these use API Key auth only and return platform-tagged public wallet activity. Safe to share raw output.
|
|
278
|
+
|
|
109
279
|
## Notes
|
|
110
280
|
|
|
111
281
|
- `track kol` / `track smartmoney` use normal auth (API Key only, no signature required)
|