gmgn-cli 1.1.3 → 1.1.5
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 +69 -6
- package/Readme.zh.md +141 -8
- package/dist/client/OpenApiClient.d.ts +2 -2
- package/dist/client/OpenApiClient.d.ts.map +1 -1
- package/dist/client/OpenApiClient.js +7 -3
- package/dist/client/OpenApiClient.js.map +1 -1
- package/dist/commands/portfolio.d.ts.map +1 -1
- package/dist/commands/portfolio.js +0 -68
- package/dist/commands/portfolio.js.map +1 -1
- package/dist/commands/track.d.ts +3 -0
- package/dist/commands/track.d.ts.map +1 -0
- package/dist/commands/track.js +72 -0
- package/dist/commands/track.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/gmgn-market/SKILL.md +248 -18
- package/skills/gmgn-portfolio/SKILL.md +9 -49
- package/skills/gmgn-swap/SKILL.md +9 -7
- package/skills/gmgn-token/SKILL.md +375 -33
- package/skills/gmgn-track/SKILL.md +114 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { OpenApiClient } from "../client/OpenApiClient.js";
|
|
2
|
+
import { getConfig } from "../config.js";
|
|
3
|
+
import { exitOnError, printResult } from "../output.js";
|
|
4
|
+
import { validateChain } from "../validate.js";
|
|
5
|
+
export function registerTrackCommands(program) {
|
|
6
|
+
const track = program.command("track").description("On-chain tracking commands: follow-wallet trades, KOL trades, Smart Money trades");
|
|
7
|
+
track
|
|
8
|
+
.command("follow-wallet")
|
|
9
|
+
.description("Get follow-wallet trade records")
|
|
10
|
+
.requiredOption("--chain <chain>", "Chain: sol / bsc / base")
|
|
11
|
+
.option("--wallet <address>", "Filter by wallet address")
|
|
12
|
+
.option("--limit <n>", "Page size (1–100, default 10)", parseInt)
|
|
13
|
+
.option("--side <side>", "Trade direction filter: buy / sell")
|
|
14
|
+
.option("--filter <tag...>", "Filter conditions, repeatable")
|
|
15
|
+
.option("--min-amount-usd <n>", "Minimum trade amount (USD)", parseFloat)
|
|
16
|
+
.option("--max-amount-usd <n>", "Maximum trade amount (USD)", parseFloat)
|
|
17
|
+
.option("--raw", "Output raw JSON")
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
validateChain(opts.chain);
|
|
20
|
+
const extra = {};
|
|
21
|
+
if (opts.wallet)
|
|
22
|
+
extra["wallet_address"] = opts.wallet;
|
|
23
|
+
if (opts.limit != null)
|
|
24
|
+
extra["limit"] = opts.limit;
|
|
25
|
+
if (opts.side)
|
|
26
|
+
extra["side"] = opts.side;
|
|
27
|
+
if (opts.filter?.length)
|
|
28
|
+
extra["filters"] = opts.filter;
|
|
29
|
+
if (opts.minAmountUsd != null)
|
|
30
|
+
extra["min_amount_usd"] = opts.minAmountUsd;
|
|
31
|
+
if (opts.maxAmountUsd != null)
|
|
32
|
+
extra["max_amount_usd"] = opts.maxAmountUsd;
|
|
33
|
+
const client = new OpenApiClient(getConfig(true));
|
|
34
|
+
const data = await client.getFollowWallet(opts.chain, extra).catch(exitOnError);
|
|
35
|
+
printResult(data, opts.raw);
|
|
36
|
+
});
|
|
37
|
+
track
|
|
38
|
+
.command("kol")
|
|
39
|
+
.description("Get KOL trade records")
|
|
40
|
+
.option("--chain <chain>", "Chain: sol / bsc / base")
|
|
41
|
+
.option("--limit <n>", "Page size (1–200, default 100)", parseInt)
|
|
42
|
+
.option("--side <side>", "Filter by trade direction: buy / sell (client-side filter)")
|
|
43
|
+
.option("--raw", "Output raw JSON")
|
|
44
|
+
.action(async (opts) => {
|
|
45
|
+
if (opts.chain)
|
|
46
|
+
validateChain(opts.chain);
|
|
47
|
+
const client = new OpenApiClient(getConfig());
|
|
48
|
+
const data = await client.getKol(opts.chain, opts.limit).catch(exitOnError);
|
|
49
|
+
if (opts.side && data?.list) {
|
|
50
|
+
data.list = data.list.filter((item) => item.side === opts.side);
|
|
51
|
+
}
|
|
52
|
+
printResult(data, opts.raw);
|
|
53
|
+
});
|
|
54
|
+
track
|
|
55
|
+
.command("smartmoney")
|
|
56
|
+
.description("Get Smart Money trade records")
|
|
57
|
+
.option("--chain <chain>", "Chain: sol / bsc / base")
|
|
58
|
+
.option("--limit <n>", "Page size (1–200, default 100)", parseInt)
|
|
59
|
+
.option("--side <side>", "Filter by trade direction: buy / sell (client-side filter)")
|
|
60
|
+
.option("--raw", "Output raw JSON")
|
|
61
|
+
.action(async (opts) => {
|
|
62
|
+
if (opts.chain)
|
|
63
|
+
validateChain(opts.chain);
|
|
64
|
+
const client = new OpenApiClient(getConfig());
|
|
65
|
+
const data = await client.getSmartMoney(opts.chain, opts.limit).catch(exitOnError);
|
|
66
|
+
if (opts.side && data?.list) {
|
|
67
|
+
data.list = data.list.filter((item) => item.side === opts.side);
|
|
68
|
+
}
|
|
69
|
+
printResult(data, opts.raw);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=track.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track.js","sourceRoot":"","sources":["../../src/commands/track.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { Command } from "commander";
|
|
|
8
8
|
import { registerTokenCommands } from "./commands/token.js";
|
|
9
9
|
import { registerMarketCommands } from "./commands/market.js";
|
|
10
10
|
import { registerPortfolioCommands } from "./commands/portfolio.js";
|
|
11
|
+
import { registerTrackCommands } from "./commands/track.js";
|
|
11
12
|
import { registerSwapCommands } from "./commands/swap.js";
|
|
12
13
|
const proxy = process.env.HTTPS_PROXY ?? process.env.https_proxy
|
|
13
14
|
?? process.env.HTTP_PROXY ?? process.env.http_proxy;
|
|
@@ -49,6 +50,7 @@ program
|
|
|
49
50
|
registerTokenCommands(program);
|
|
50
51
|
registerMarketCommands(program);
|
|
51
52
|
registerPortfolioCommands(program);
|
|
53
|
+
registerTrackCommands(program);
|
|
52
54
|
registerSwapCommands(program);
|
|
53
55
|
program.parseAsync().catch((err) => {
|
|
54
56
|
console.error(`[gmgn-cli] ${err.message}`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -4,15 +4,17 @@ description: Query GMGN market data — token K-line (candlestick), trending tok
|
|
|
4
4
|
argument-hint: "kline --chain <sol|bsc|base> --address <token_address> --resolution <1m|5m|15m|1h|4h|1d> [--from <unix_ts>] [--to <unix_ts>] | trending --chain <sol|bsc|base> --interval <1m|5m|1h|6h|24h> | trenches --chain <sol|bsc|base>"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
**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
|
+
|
|
7
9
|
Use the `gmgn-cli` tool to query K-line data for a token, browse trending tokens, or view Trenches token lists.
|
|
8
10
|
|
|
9
11
|
## Sub-commands
|
|
10
12
|
|
|
11
13
|
| Sub-command | Description |
|
|
12
14
|
|-------------|-------------|
|
|
13
|
-
| `market kline` | Token candlestick data |
|
|
14
|
-
| `market trending` | Trending
|
|
15
|
-
| `market trenches` |
|
|
15
|
+
| `market kline` | Token candlestick / OHLCV data and trading volume over a time range |
|
|
16
|
+
| `market trending` | Trending tokens ranked by swap activity — use `--interval` to specify the time window (e.g. `1m` for 1-minute hottest, `1h` for 1-hour trending) |
|
|
17
|
+
| `market trenches` | Newly launched launchpad paltform tokens — **use this when the user asks for "new tokens", "just launched tokens", "latest tokens on pump.fun/letsbonk"**. Three categories: `new_creation` (just created), `near_completion` (bonding curve almost full), `completed` (graduated to open market / DEX) |
|
|
16
18
|
|
|
17
19
|
## Supported Chains
|
|
18
20
|
|
|
@@ -22,23 +24,52 @@ Use the `gmgn-cli` tool to query K-line data for a token, browse trending tokens
|
|
|
22
24
|
|
|
23
25
|
- `.env` file with `GMGN_API_KEY` set
|
|
24
26
|
- Run from the directory where your `.env` file is located, or set `GMGN_HOST` in your environment
|
|
25
|
-
- `gmgn-cli` installed globally: `npm install -g gmgn-cli
|
|
27
|
+
- `gmgn-cli` installed globally: `npm install -g gmgn-cli`
|
|
26
28
|
|
|
27
|
-
##
|
|
29
|
+
## `market kline` Parameters
|
|
28
30
|
|
|
29
31
|
| Parameter | Required | Description |
|
|
30
32
|
|-----------|----------|-------------|
|
|
31
33
|
| `--chain` | Yes | `sol` / `bsc` / `base` |
|
|
32
34
|
| `--address` | Yes | Token contract address |
|
|
33
|
-
| `--resolution` | Yes | Candlestick resolution |
|
|
35
|
+
| `--resolution` | Yes | Candlestick resolution: `1m` / `5m` / `15m` / `1h` / `4h` / `1d` |
|
|
34
36
|
| `--from` | No | Start time (Unix seconds) |
|
|
35
37
|
| `--to` | No | End time (Unix seconds) |
|
|
36
38
|
|
|
37
|
-
##
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
## `market kline` Response Fields
|
|
40
|
+
|
|
41
|
+
The response is an object with a `list` array. Each element in `list` is one candlestick:
|
|
42
|
+
|
|
43
|
+
| Field | Type | Description |
|
|
44
|
+
|-------|------|-------------|
|
|
45
|
+
| `time` | number | Candle open time — Unix timestamp in **milliseconds** (divide by 1000 for seconds) |
|
|
46
|
+
| `open` | string | Opening price in USD at the start of the period |
|
|
47
|
+
| `close` | string | Closing price in USD at the end of the period |
|
|
48
|
+
| `high` | string | Highest price in USD during the period |
|
|
49
|
+
| `low` | string | Lowest price in USD during the period |
|
|
50
|
+
| `volume` | string | Trading volume in **USD** (dollar value of all trades in this period) |
|
|
51
|
+
| `amount` | string | Trading volume in **base token units** (number of tokens traded) |
|
|
52
|
+
|
|
53
|
+
**Important distinctions (naming is counterintuitive — do not guess):**
|
|
54
|
+
- `volume` = USD dollar value (e.g. `1214` means ~$1,214 traded) — use this for "how much was traded in USD"
|
|
55
|
+
- `amount` = token count (e.g. `5379110` means ~5.38M tokens changed hands) — use this for "how many tokens were traded"
|
|
56
|
+
- For tokens not priced at $1, `volume` and `amount` will differ by orders of magnitude (e.g. a $0.0002 token: $1,214 volume = 5,379,110 tokens)
|
|
57
|
+
- To get **total USD volume over a time range**, sum `volume` across all candles in the range
|
|
58
|
+
- To get **price trend**, read `close` values in chronological order (`time` ascending)
|
|
59
|
+
- To detect **volatility**, compare `high` vs `low` within each candle
|
|
60
|
+
- Candles are returned in chronological order (oldest first)
|
|
61
|
+
|
|
62
|
+
## `market trending` Options
|
|
63
|
+
|
|
64
|
+
**`--interval` selection guide — always match to the user's stated time window:**
|
|
65
|
+
|
|
66
|
+
| User says | `--interval` |
|
|
67
|
+
|-----------|-------------|
|
|
68
|
+
| "1分钟热门" / "1m trending" / "hottest right now" | `1m` |
|
|
69
|
+
| "5分钟" / "5m" | `5m` |
|
|
70
|
+
| "1小时" / "1h" / no time specified (default) | `1h` |
|
|
71
|
+
| "6小时" / "6h" | `6h` |
|
|
72
|
+
| "24小时" / "今日" / "daily" | `24h` |
|
|
42
73
|
|
|
43
74
|
| Option | Description |
|
|
44
75
|
|--------|-------------|
|
|
@@ -52,6 +83,8 @@ Use the `gmgn-cli` tool to query K-line data for a token, browse trending tokens
|
|
|
52
83
|
|
|
53
84
|
## Usage Examples
|
|
54
85
|
|
|
86
|
+
### Kline
|
|
87
|
+
|
|
55
88
|
```bash
|
|
56
89
|
# Last 1 hour of 1-minute candles
|
|
57
90
|
# macOS:
|
|
@@ -73,22 +106,210 @@ gmgn-cli market kline \
|
|
|
73
106
|
--to $(date +%s)
|
|
74
107
|
# Linux: use $(date -d '24 hours ago' +%s) instead of $(date -v-24H +%s)
|
|
75
108
|
|
|
109
|
+
# Raw output for further processing
|
|
110
|
+
gmgn-cli market kline --chain sol --address <addr> \
|
|
111
|
+
--resolution 5m --from <ts> --to <ts> --raw | jq '.[]'
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Trending — General
|
|
115
|
+
|
|
116
|
+
```bash
|
|
76
117
|
# Top 20 hot tokens on SOL in the last 1 hour, sorted by volume
|
|
77
118
|
gmgn-cli market trending --chain sol --interval 1h --order-by volume --limit 20
|
|
78
119
|
|
|
120
|
+
# Top 50 tokens on SOL, 5m window, sorted by volume
|
|
121
|
+
gmgn-cli market trending --chain sol --interval 5m --order-by volume --limit 50
|
|
122
|
+
|
|
79
123
|
# Hot tokens with social links only, verified and not honeypot, on BSC over 24h
|
|
80
124
|
gmgn-cli market trending \
|
|
81
125
|
--chain bsc --interval 24h \
|
|
82
126
|
--filter has_social --filter not_honeypot --filter verified
|
|
127
|
+
```
|
|
83
128
|
|
|
84
|
-
|
|
85
|
-
gmgn-cli market trending --chain sol --interval 6h --platform Pump.fun
|
|
129
|
+
### Trending — SOL by Launchpad Platform
|
|
86
130
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
131
|
+
Use `--platform` to filter trending results to tokens from specific launchpads only.
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# SOL 1m hottest — Pump.fun + letsbonk only (most active launchpads), sorted by volume
|
|
135
|
+
gmgn-cli market trending \
|
|
136
|
+
--chain sol --interval 1m \
|
|
137
|
+
--platform Pump.fun --platform letsbonk \
|
|
138
|
+
--order-by volume --limit 50 --raw
|
|
139
|
+
|
|
140
|
+
# SOL 5m hottest — Pump.fun + letsbonk + Moonshot, sorted by volume
|
|
141
|
+
gmgn-cli market trending \
|
|
142
|
+
--chain sol --interval 5m \
|
|
143
|
+
--platform Pump.fun --platform letsbonk --platform moonshot_app \
|
|
144
|
+
--order-by volume --limit 50 --raw
|
|
145
|
+
|
|
146
|
+
# SOL 1h trending — Pump.fun only, with safety filters
|
|
147
|
+
gmgn-cli market trending \
|
|
148
|
+
--chain sol --interval 1h \
|
|
149
|
+
--platform Pump.fun \
|
|
150
|
+
--filter renounced --filter frozen --filter not_wash_trading \
|
|
151
|
+
--order-by volume --limit 20 --raw
|
|
152
|
+
|
|
153
|
+
# SOL 1h trending — all major launchpads combined
|
|
154
|
+
gmgn-cli market trending \
|
|
155
|
+
--chain sol --interval 1h \
|
|
156
|
+
--platform Pump.fun --platform letsbonk --platform moonshot_app \
|
|
157
|
+
--platform pump_mayhem --platform pump_mayhem_agent --platform bonkers \
|
|
158
|
+
--order-by volume --limit 50 --raw
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Trending — BSC by Launchpad Platform
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# BSC 1m hottest — fourmeme (main BSC launchpad), sorted by volume
|
|
165
|
+
gmgn-cli market trending \
|
|
166
|
+
--chain bsc --interval 1m \
|
|
167
|
+
--platform fourmeme --platform four_xmode_agent \
|
|
168
|
+
--order-by volume --limit 50 --raw
|
|
169
|
+
|
|
170
|
+
# BSC 5m hottest — fourmeme family, sorted by volume
|
|
171
|
+
gmgn-cli market trending \
|
|
172
|
+
--chain bsc --interval 5m \
|
|
173
|
+
--platform fourmeme --platform fourmeme_agent --platform bn_fourmeme --platform four_xmode_agent \
|
|
174
|
+
--order-by volume --limit 50 --raw
|
|
175
|
+
|
|
176
|
+
# BSC 1h trending — fourmeme with safety filters
|
|
177
|
+
gmgn-cli market trending \
|
|
178
|
+
--chain bsc --interval 1h \
|
|
179
|
+
--platform fourmeme --platform fourmeme_agent --platform bn_fourmeme --platform four_xmode_agent \
|
|
180
|
+
--filter not_honeypot --filter verified \
|
|
181
|
+
--order-by volume --limit 20 --raw
|
|
90
182
|
```
|
|
91
183
|
|
|
184
|
+
### Trending — Base by Launchpad Platform
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Base 1m hottest — clanker + zora (main Base launchpads), sorted by volume
|
|
188
|
+
gmgn-cli market trending \
|
|
189
|
+
--chain base --interval 1m \
|
|
190
|
+
--platform clanker --platform zora --platform zora_creator \
|
|
191
|
+
--order-by volume --limit 50 --raw
|
|
192
|
+
|
|
193
|
+
# Base 5m hottest — clanker + zora + virtuals_v2 + flaunch, sorted by volume
|
|
194
|
+
gmgn-cli market trending \
|
|
195
|
+
--chain base --interval 5m \
|
|
196
|
+
--platform clanker --platform zora --platform zora_creator \
|
|
197
|
+
--platform virtuals_v2 --platform flaunch \
|
|
198
|
+
--order-by volume --limit 50 --raw
|
|
199
|
+
|
|
200
|
+
# Base 1h trending — all major launchpads with safety filters
|
|
201
|
+
gmgn-cli market trending \
|
|
202
|
+
--chain base --interval 1h \
|
|
203
|
+
--platform clanker --platform zora --platform zora_creator \
|
|
204
|
+
--platform virtuals_v2 --platform flaunch --platform baseapp \
|
|
205
|
+
--filter not_honeypot --filter verified \
|
|
206
|
+
--order-by volume --limit 20 --raw
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## `market trending` Response Fields
|
|
210
|
+
|
|
211
|
+
The response is `data.rank` — an array of rank items. Each item represents one token.
|
|
212
|
+
|
|
213
|
+
**Basic Info**
|
|
214
|
+
|
|
215
|
+
| Field | Description |
|
|
216
|
+
|-------|-------------|
|
|
217
|
+
| `address` | Token contract address |
|
|
218
|
+
| `symbol` / `name` | Token ticker and full name |
|
|
219
|
+
| `logo` | Token logo image URL |
|
|
220
|
+
| `chain` | Chain identifier |
|
|
221
|
+
| `total_supply` | Total token supply |
|
|
222
|
+
| `creator` | Creator wallet address |
|
|
223
|
+
| `launchpad_platform` | Launch/pool platform (e.g. `Pump.fun`, `letsbonk`, `pool_meteora`, `fourmeme`) |
|
|
224
|
+
| `exchange` | Current DEX (e.g. `meteora_damm_v2`, `raydium`, `pump_amm`) |
|
|
225
|
+
| `open_timestamp` | Open market listing time (Unix seconds) |
|
|
226
|
+
| `creation_timestamp` | Token creation time (Unix seconds) |
|
|
227
|
+
| `rank` | Position in this trending list (lower = hotter) |
|
|
228
|
+
| `hot_level` | Trending intensity level (higher = hotter) |
|
|
229
|
+
|
|
230
|
+
**Price & Market**
|
|
231
|
+
|
|
232
|
+
| Field | Description |
|
|
233
|
+
|-------|-------------|
|
|
234
|
+
| `price` | Current price in USD |
|
|
235
|
+
| `market_cap` | Market cap in USD (directly available — no calculation needed) |
|
|
236
|
+
| `liquidity` | Current liquidity in USD |
|
|
237
|
+
| `volume` | Trading volume in USD for the queried interval |
|
|
238
|
+
| `history_highest_market_cap` | All-time highest market cap in USD |
|
|
239
|
+
| `initial_liquidity` | Initial liquidity at token launch |
|
|
240
|
+
| `price_change_percent` | Price change % for the queried interval |
|
|
241
|
+
| `price_change_percent1m` | Price change % in last 1 minute |
|
|
242
|
+
| `price_change_percent5m` | Price change % in last 5 minutes |
|
|
243
|
+
| `price_change_percent1h` | Price change % in last 1 hour |
|
|
244
|
+
|
|
245
|
+
**Trading Activity**
|
|
246
|
+
|
|
247
|
+
| Field | Description |
|
|
248
|
+
|-------|-------------|
|
|
249
|
+
| `swaps` | Total swap count in the queried interval |
|
|
250
|
+
| `buys` / `sells` | Buy / sell count in the interval |
|
|
251
|
+
| `holder_count` | Number of unique token holders |
|
|
252
|
+
| `gas_fee` | Average gas fee per transaction |
|
|
253
|
+
|
|
254
|
+
**Security & Risk**
|
|
255
|
+
|
|
256
|
+
| Field | Chains | Description |
|
|
257
|
+
|-------|--------|-------------|
|
|
258
|
+
| `renounced_mint` | SOL | Mint authority renounced (`1` = yes, `0` = no) |
|
|
259
|
+
| `renounced_freeze_account` | SOL | Freeze authority renounced (`1` = yes, `0` = no) |
|
|
260
|
+
| `is_honeypot` | BSC / Base | Honeypot flag (`1` = yes, `0` = no) |
|
|
261
|
+
| `is_open_source` | all | Contract verified (`1` = yes, `0` = no) |
|
|
262
|
+
| `is_renounced` | all | Ownership renounced (`1` = yes, `0` = no) |
|
|
263
|
+
| `buy_tax` / `sell_tax` | all | Tax rate — empty string means `0` (no tax) |
|
|
264
|
+
| `burn_status` | all | Liquidity burn status (e.g. `"none"`, `"burn"`) |
|
|
265
|
+
| `top_10_holder_rate` | all | Top 10 wallets concentration (0–1) |
|
|
266
|
+
| `rug_ratio` | all | Rug pull risk score (0–1) |
|
|
267
|
+
| `is_wash_trading` | all | Wash trading detected (`true` / `false`) |
|
|
268
|
+
| `rat_trader_amount_rate` | all | Ratio of insider/sneak trading volume |
|
|
269
|
+
| `bundler_rate` | all | Ratio of bundle bot trading volume |
|
|
270
|
+
| `entrapment_ratio` | all | Entrapment trading ratio |
|
|
271
|
+
| `sniper_count` | all | Number of sniper wallets at launch |
|
|
272
|
+
| `bot_degen_count` / `bot_degen_rate` | all | Bot degen wallet count / ratio |
|
|
273
|
+
| `dev_team_hold_rate` | all | Dev team holding ratio |
|
|
274
|
+
| `top70_sniper_hold_rate` | all | Top 70 sniper current holding ratio |
|
|
275
|
+
| `lock_percent` | all | Liquidity lock percentage |
|
|
276
|
+
|
|
277
|
+
**Dev Status**
|
|
278
|
+
|
|
279
|
+
| Field | Description |
|
|
280
|
+
|-------|-------------|
|
|
281
|
+
| `creator_token_status` | Dev holding status: `creator_hold` (still holding) / `creator_close` (sold/closed) |
|
|
282
|
+
| `creator_close` | Boolean shorthand for `creator_token_status == creator_close` |
|
|
283
|
+
| `dev_token_burn_ratio` | Ratio of dev's tokens that have been burned |
|
|
284
|
+
|
|
285
|
+
**Smart Money**
|
|
286
|
+
|
|
287
|
+
| Field | Description |
|
|
288
|
+
|-------|-------------|
|
|
289
|
+
| `smart_degen_count` | Number of smart money wallets holding the token |
|
|
290
|
+
| `renowned_count` | Number of renowned / KOL wallets holding the token |
|
|
291
|
+
| `bluechip_owner_percentage` | Ratio of holders that are bluechip wallets (0–1) |
|
|
292
|
+
|
|
293
|
+
**Social**
|
|
294
|
+
|
|
295
|
+
| Field | Description |
|
|
296
|
+
|-------|-------------|
|
|
297
|
+
| `twitter_username` | Twitter / X username (not a full URL — prepend `https://x.com/` to get the link) |
|
|
298
|
+
| `website` | Project website URL |
|
|
299
|
+
| `telegram` | Telegram URL |
|
|
300
|
+
| `cto_flag` | Community takeover flag (`1` = CTO has occurred) |
|
|
301
|
+
|
|
302
|
+
**Dexscreener Marketing**
|
|
303
|
+
|
|
304
|
+
| Field | Description |
|
|
305
|
+
|-------|-------------|
|
|
306
|
+
| `dexscr_ad` | Dexscreener ad placed (`1` = yes) |
|
|
307
|
+
| `dexscr_update_link` | Social links updated on Dexscreener (`1` = yes) |
|
|
308
|
+
| `dexscr_trending_bar` | Paid for Dexscreener trending bar (`1` = yes) |
|
|
309
|
+
| `dexscr_boost_fee` | Dexscreener boost amount paid (0 = none) |
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
92
313
|
## Workflow: Discover Trading Opportunities via Trending
|
|
93
314
|
|
|
94
315
|
### Step 1 — Fetch trending data
|
|
@@ -136,7 +357,16 @@ For each token, offer:
|
|
|
136
357
|
- **Deep dive**: `token info` + `token security` for full due diligence
|
|
137
358
|
- **Swap**: execute directly if the user is satisfied with the trending data alone
|
|
138
359
|
|
|
139
|
-
##
|
|
360
|
+
## `market trenches` Parameters
|
|
361
|
+
|
|
362
|
+
**Intent → `--type` mapping (always specify `--type` explicitly):**
|
|
363
|
+
|
|
364
|
+
| User intent | `--type` value |
|
|
365
|
+
|-------------|----------------|
|
|
366
|
+
| "new tokens", "just launched", "newly created", "latest tokens" | `new_creation` |
|
|
367
|
+
| "about to graduate", "near completion", "bonding curve almost full" | `near_completion` |
|
|
368
|
+
| "graduated tokens", "already on DEX", "open market tokens" | `completed` |
|
|
369
|
+
| No specific stage mentioned | omit `--type` (returns all three) |
|
|
140
370
|
|
|
141
371
|
| Parameter | Required | Description |
|
|
142
372
|
|-----------|----------|-------------|
|
|
@@ -147,7 +377,7 @@ For each token, offer:
|
|
|
147
377
|
|
|
148
378
|
Response fields: `data.new_creation`, `data.pump`, `data.completed` — each is an array of `RankItem` (same fields as `market trending` rank items). **Important: `data.pump` in the response corresponds to `--type near_completion` in the request. The API always returns this category under the key `pump`, not `near_completion`.**
|
|
149
379
|
|
|
150
|
-
|
|
380
|
+
## `market trenches` Response Fields
|
|
151
381
|
|
|
152
382
|
**Basic Info**
|
|
153
383
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gmgn-portfolio
|
|
3
|
-
description: Query GMGN wallet portfolio — API Key wallet info, holdings, transaction activity, trading stats, token balance
|
|
4
|
-
argument-hint: "<info|holdings|activity|stats|token-balance
|
|
3
|
+
description: Query GMGN wallet portfolio — API Key wallet info, holdings, transaction activity, trading stats, and token balance. Supports sol / bsc / base.
|
|
4
|
+
argument-hint: "<info|holdings|activity|stats|token-balance> [--chain <sol|bsc|base>] [--wallet <wallet_address>]"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
**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
|
+
|
|
7
9
|
Use the `gmgn-cli` tool to query wallet portfolio data based on the user's request.
|
|
8
10
|
|
|
9
11
|
## Sub-commands
|
|
@@ -15,9 +17,6 @@ Use the `gmgn-cli` tool to query wallet portfolio data based on the user's reque
|
|
|
15
17
|
| `portfolio activity` | Transaction history |
|
|
16
18
|
| `portfolio stats` | Trading statistics (supports batch) |
|
|
17
19
|
| `portfolio token-balance` | Token balance for a specific token |
|
|
18
|
-
| `portfolio follow-wallet` | Follow-wallet trade records |
|
|
19
|
-
| `portfolio kol` | KOL trade records (SOL chain) |
|
|
20
|
-
| `portfolio smartmoney` | Smart Money trade records (SOL chain) |
|
|
21
20
|
|
|
22
21
|
## Supported Chains
|
|
23
22
|
|
|
@@ -27,7 +26,7 @@ Use the `gmgn-cli` tool to query wallet portfolio data based on the user's reque
|
|
|
27
26
|
|
|
28
27
|
- `.env` file with `GMGN_API_KEY` set
|
|
29
28
|
- Run from the directory where your `.env` file is located, or set `GMGN_HOST` in your environment
|
|
30
|
-
- `gmgn-cli` installed globally: `npm install -g gmgn-cli
|
|
29
|
+
- `gmgn-cli` installed globally: `npm install -g gmgn-cli`
|
|
31
30
|
|
|
32
31
|
## Usage Examples
|
|
33
32
|
|
|
@@ -72,7 +71,7 @@ gmgn-cli portfolio token-balance \
|
|
|
72
71
|
--chain sol --wallet <wallet_address> --token <token_address>
|
|
73
72
|
```
|
|
74
73
|
|
|
75
|
-
##
|
|
74
|
+
## `portfolio holdings` Options
|
|
76
75
|
|
|
77
76
|
| Option | Description |
|
|
78
77
|
|--------|-------------|
|
|
@@ -87,7 +86,7 @@ gmgn-cli portfolio token-balance \
|
|
|
87
86
|
| `--hide-closed` | Hide closed positions |
|
|
88
87
|
| `--hide-open` | Hide open positions |
|
|
89
88
|
|
|
90
|
-
##
|
|
89
|
+
## `portfolio activity` Options
|
|
91
90
|
|
|
92
91
|
| Option | Description |
|
|
93
92
|
|--------|-------------|
|
|
@@ -98,55 +97,16 @@ gmgn-cli portfolio token-balance \
|
|
|
98
97
|
|
|
99
98
|
The activity response includes a `next` field. Pass it to `--cursor` to fetch the next page.
|
|
100
99
|
|
|
101
|
-
##
|
|
100
|
+
## `portfolio stats` Options
|
|
102
101
|
|
|
103
102
|
| Option | Description |
|
|
104
103
|
|--------|-------------|
|
|
105
104
|
| `--period <period>` | Stats period: `7d` / `30d` (default `7d`) |
|
|
106
105
|
|
|
107
|
-
## Follow-Wallet Options
|
|
108
|
-
|
|
109
|
-
| Option | Description |
|
|
110
|
-
|--------|-------------|
|
|
111
|
-
| `--chain` | Required. `sol` / `bsc` / `base` / `eth` |
|
|
112
|
-
| `--wallet <address>` | Filter by wallet address |
|
|
113
|
-
| `--base-token <address>` | Filter by base token address |
|
|
114
|
-
| `--page-token <cursor>` | Pagination cursor |
|
|
115
|
-
| `--limit <n>` | Page size (1–200, default 100) |
|
|
116
|
-
| `--side <side>` | Trade direction filter |
|
|
117
|
-
| `--cost <cost>` | Cost filter |
|
|
118
|
-
| `--filter <tag...>` | Repeatable filter conditions |
|
|
119
|
-
| `--with-balance` | Include balance in response |
|
|
120
|
-
| `--with-security` | Include security info in response |
|
|
121
|
-
| `--min-amount-usd <n>` | Minimum trade amount (USD) |
|
|
122
|
-
| `--max-amount-usd <n>` | Maximum trade amount (USD) |
|
|
123
|
-
| `--is-gray` | Gray mode filter |
|
|
124
|
-
|
|
125
|
-
## KOL / Smart Money Options
|
|
126
|
-
|
|
127
|
-
| Option | Description |
|
|
128
|
-
|--------|-------------|
|
|
129
|
-
| `--limit <n>` | Page size (1–200, default 100) |
|
|
130
|
-
|
|
131
|
-
Both `kol` and `smartmoney` return SOL chain data only — no `--chain` flag needed.
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
# Follow-wallet trades filtered by wallet
|
|
135
|
-
gmgn-cli portfolio follow-wallet --chain sol --wallet <wallet_address>
|
|
136
|
-
|
|
137
|
-
# Follow-wallet with balance info
|
|
138
|
-
gmgn-cli portfolio follow-wallet --chain sol --with-balance --limit 20
|
|
139
|
-
|
|
140
|
-
# KOL trade records
|
|
141
|
-
gmgn-cli portfolio kol --limit 10 --raw
|
|
142
|
-
|
|
143
|
-
# Smart Money trade records
|
|
144
|
-
gmgn-cli portfolio smartmoney --limit 10 --raw
|
|
145
|
-
```
|
|
146
|
-
|
|
147
106
|
## Notes
|
|
148
107
|
|
|
149
108
|
- All portfolio commands use normal auth (API Key only, no signature required)
|
|
150
109
|
- `portfolio stats` supports multiple `--wallet` flags for batch queries
|
|
151
110
|
- Use `--raw` to get single-line JSON for further processing
|
|
152
111
|
- **Input validation** — Wallet and token addresses are validated against the expected chain format at runtime (sol: base58 32–44 chars; bsc/base/eth: `0x` + 40 hex digits). The CLI exits with an error on invalid input.
|
|
112
|
+
- For follow-wallet, KOL, and Smart Money trade records, use the `gmgn-track` skill (`track follow-wallet` / `track kol` / `track smartmoney`)
|
|
@@ -4,6 +4,8 @@ description: "[FINANCIAL EXECUTION] Submit a real blockchain token swap or query
|
|
|
4
4
|
argument-hint: "[--chain <chain> --from <wallet> --input-token <addr> --output-token <addr> --amount <n>] | [order get --chain <chain> --order-id <id>]"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
**IMPORTANT: Always use `gmgn-cli` commands below. Do NOT use web search, WebFetch, curl, or visit gmgn.ai — all swap operations must go through the CLI. The CLI handles signing and submission automatically.**
|
|
8
|
+
|
|
7
9
|
Use the `gmgn-cli` tool to submit a token swap or query an existing order. **Requires private key** (`GMGN_PRIVATE_KEY` in `.env`).
|
|
8
10
|
|
|
9
11
|
## Financial Risk Notice
|
|
@@ -46,7 +48,7 @@ Both `GMGN_API_KEY` and `GMGN_PRIVATE_KEY` must be set in `.env`. The private ke
|
|
|
46
48
|
`gmgn-cli` must be installed globally before use (one-time setup):
|
|
47
49
|
|
|
48
50
|
```bash
|
|
49
|
-
npm install -g gmgn-cli
|
|
51
|
+
npm install -g gmgn-cli
|
|
50
52
|
```
|
|
51
53
|
|
|
52
54
|
### Credential Model
|
|
@@ -55,7 +57,7 @@ npm install -g gmgn-cli@1.1.0
|
|
|
55
57
|
- `GMGN_PRIVATE_KEY` is used exclusively for **local message signing** — the private key never leaves the machine. The CLI computes an Ed25519 or RSA-SHA256 signature in-process and transmits only the base64-encoded result in the `X-Signature` request header.
|
|
56
58
|
- `GMGN_API_KEY` is transmitted in the `X-APIKEY` request header to GMGN's servers over HTTPS.
|
|
57
59
|
|
|
58
|
-
##
|
|
60
|
+
## `swap` Usage
|
|
59
61
|
|
|
60
62
|
```bash
|
|
61
63
|
# Basic swap
|
|
@@ -102,7 +104,7 @@ gmgn-cli swap \
|
|
|
102
104
|
--percent 50
|
|
103
105
|
```
|
|
104
106
|
|
|
105
|
-
##
|
|
107
|
+
## `order quote` Usage
|
|
106
108
|
|
|
107
109
|
Get an estimated output amount before submitting a swap. Uses normal auth — no private key required.
|
|
108
110
|
|
|
@@ -116,7 +118,7 @@ gmgn-cli order quote \
|
|
|
116
118
|
--slippage 0.01
|
|
117
119
|
```
|
|
118
120
|
|
|
119
|
-
###
|
|
121
|
+
### `order quote` Response Fields
|
|
120
122
|
|
|
121
123
|
| Field | Type | Description |
|
|
122
124
|
|-------|------|-------------|
|
|
@@ -127,13 +129,13 @@ gmgn-cli order quote \
|
|
|
127
129
|
| `min_output_amount` | string | Minimum output after slippage |
|
|
128
130
|
| `slippage` | number | Actual slippage percentage |
|
|
129
131
|
|
|
130
|
-
##
|
|
132
|
+
## `order get` Usage
|
|
131
133
|
|
|
132
134
|
```bash
|
|
133
135
|
gmgn-cli order get --chain sol --order-id <order_id>
|
|
134
136
|
```
|
|
135
137
|
|
|
136
|
-
##
|
|
138
|
+
## `swap` Parameters
|
|
137
139
|
|
|
138
140
|
| Parameter | Required | Description |
|
|
139
141
|
|-----------|----------|-------------|
|
|
@@ -154,7 +156,7 @@ gmgn-cli order get --chain sol --order-id <order_id>
|
|
|
154
156
|
| `--max-fee-per-gas <n>` | No | EIP-1559 max fee per gas (Base only) |
|
|
155
157
|
| `--max-priority-fee-per-gas <n>` | No | EIP-1559 max priority fee per gas (Base only) |
|
|
156
158
|
|
|
157
|
-
##
|
|
159
|
+
## `swap` Response Fields
|
|
158
160
|
|
|
159
161
|
| Field | Type | Description |
|
|
160
162
|
|-------|------|-------------|
|