gmgn-cli 1.1.9 → 1.1.10

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAwB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;OAClD,OAAO,CAAC,GAAG,CAAC,UAAU,IAAK,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAChE,IAAI,KAAK,EAAE,CAAC;IACV,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,mBAAmB,CAAC,IAAI,KAAK,CAAC;YAC5B,8DAA8D;YAC9D,OAAO,EAAE,KAAK,EAAE,OAAY,EAAE,QAAa,EAAE,EAAE;gBAC7C,IAAI,CAAC;oBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC;wBACpD,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE;wBACnE,OAAO,EAAE,SAAS;wBAClB,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAS,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAK,EAAE;wBAC9D,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,EAAS;qBACrC,CAAC,CAAC;oBACH,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBAClC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;oBAClI,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,QAAQ,CAAC,GAAY,EAAE,IAAI,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;SACF,CAAC,CAAC,CAAC;IACN,CAAC;SAAM,CAAC;QACN,mBAAmB,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;KAAM,CAAC;IACN,iDAAiD;IACjD,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,EAAS,CAAC,CAAC;IACvD,mBAAmB,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,+FAA+F,CAAC,CAAC;AAEhH,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjC,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gmgn-cli",
3
- "version": "1.1.9",
3
+ "version": "1.1.10",
4
4
  "description": "GMGN OpenAPI CLI — call GMGN market, token, portfolio and swap APIs from the command line",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,363 @@
1
+ ---
2
+ name: gmgn-cooking
3
+ description: "[FINANCIAL EXECUTION] Create tokens on launchpad platforms (Pump.fun, Raydium, PancakeSwap, Flap, FourMeme, Bonk, BAGS, etc.) or query token creation statistics by launchpad. Token creation executes irreversible on-chain transactions. Requires explicit user confirmation before every create. Supports sol / bsc / base / eth / ton."
4
+ argument-hint: "stats | [create --chain <chain> --dex <dex> --from <addr> --name <name> --symbol <sym> --buy-amt <n> (--image <base64> | --image-url <url>)]"
5
+ metadata:
6
+ cliHelp: "gmgn-cli cooking --help"
7
+ ---
8
+
9
+ **IMPORTANT: Always use `gmgn-cli` commands below. Do NOT use web search, WebFetch, curl, or visit gmgn.ai — all token creation operations must go through the CLI. The CLI handles signing and submission automatically.**
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
+
15
+ Use the `gmgn-cli` tool to create a token on a launchpad platform or query token creation statistics per launchpad. **Requires private key** (`GMGN_PRIVATE_KEY` in `.env`) for `cooking create`.
16
+
17
+ ## Core Concepts
18
+
19
+ - **Bonding curve** — Most launchpad platforms (Pump.fun, FourMeme, Flap, etc.) launch tokens on an internal bonding curve. The token price rises as buyers enter. Once the threshold is reached, the token "graduates" to an open DEX (e.g. Raydium on SOL, PancakeSwap on BSC). Token creation happens on the bonding curve — not the open market.
20
+
21
+ - **`--buy-amt` is in human units** — `--buy-amt` is expressed in full native token units, not smallest unit. `0.01` = 0.01 SOL. `0.05` = 0.05 BNB. Always confirm the human-readable amount with the user before executing.
22
+
23
+ - **`--dex` identifiers** — Each launchpad has a fixed identifier passed to `--dex`. These are not free-form names — use only the identifiers listed in the Supported Launchpads table. Never guess a `--dex` value not in that table.
24
+
25
+ - **Image input** — Token logo can be provided as base64-encoded data (`--image`, max 2MB decoded) or a publicly accessible URL (`--image-url`). Provide one or the other — not both. If the user gives a file path, read and base64-encode it before passing to `--image`. If they give a URL, use `--image-url` directly.
26
+
27
+ - **Status polling via `order get`** — `cooking create` is asynchronous. The immediate response may show `pending`. Poll with `gmgn-cli order get --chain <chain> --order-id <order_id>` until `confirmed`. The new token's contract address is in the `output_token` field of the `order get` response, not in the initial create response.
28
+
29
+ - **Critical auth** — `cooking create` requires both `GMGN_API_KEY` and `GMGN_PRIVATE_KEY`. The private key never leaves the machine — the CLI uses it only for local signing. `cooking stats` uses normal auth (API Key only).
30
+
31
+ - **Slippage** — The initial buy is executed as part of the same transaction as token creation. Slippage applies to that buy. Use `--slippage` (decimal, e.g. `0.01` = 1%) or `--auto-slippage`. One of the two is required when `--buy-amt` is set.
32
+
33
+ ## Financial Risk Notice
34
+
35
+ **This skill executes REAL, IRREVERSIBLE blockchain transactions.**
36
+
37
+ - Every `cooking create` command deploys an on-chain token contract and spends real funds (initial buy amount).
38
+ - Token deployments cannot be undone once confirmed on-chain.
39
+ - The AI agent must **never auto-execute a create** — explicit user confirmation is required every time, without exception.
40
+ - Only use this skill with funds you are willing to spend. Initial buy amounts are non-refundable.
41
+
42
+ ## Sub-commands
43
+
44
+ | Sub-command | Description |
45
+ |-------------|-------------|
46
+ | `cooking stats` | Get token creation count statistics grouped by launchpad platform (normal auth) |
47
+ | `cooking create` | Deploy a new token on a launchpad platform (requires private key) |
48
+
49
+ ## Supported Chains
50
+
51
+ `sol` / `bsc` / `base` / `eth` / `ton`
52
+
53
+ ## Supported Launchpads by Chain
54
+
55
+ | Chain | `--dex` values |
56
+ |-------|----------------|
57
+ | `sol` | `pump` / `raydium` / `bonk` / `bags` / `memoo` / `letsbonk` / `bonkers` |
58
+ | `bsc` | `pancakeswap` / `flap` / `fourmeme` |
59
+ | `base` | `clanker` / `flaunch` / `baseapp` / `basememe` / `zora` / `virtuals_v2` |
60
+
61
+ When the user names a platform colloquially (e.g. "pump.fun", "four.meme", "PancakeSwap"), map it to the correct `--dex` identifier from this table before running the command.
62
+
63
+ ## Prerequisites
64
+
65
+ - `cooking stats`: Only `GMGN_API_KEY` required
66
+ - `cooking create`: Both `GMGN_API_KEY` and `GMGN_PRIVATE_KEY` must be configured in `~/.config/gmgn/.env`. The private key must correspond to the wallet bound to the API Key.
67
+ - `gmgn-cli` installed globally — if missing, run: `npm install -g gmgn-cli`
68
+
69
+ ## Rate Limit Handling
70
+
71
+ All cooking routes go through GMGN's leaky-bucket limiter with `rate=10` and `capacity=10`. Sustained throughput is roughly `10 ÷ weight` requests/second.
72
+
73
+ | Command | Weight |
74
+ |---------|--------|
75
+ | `cooking create` | 5 |
76
+ | `cooking stats` | 1 |
77
+
78
+ When a request returns `429`:
79
+
80
+ - Read `X-RateLimit-Reset` from the response headers — Unix timestamp for when the limit resets.
81
+ - `cooking create` is a real transaction: **never loop or auto-resubmit** after a `429`. Wait until the reset time, then ask for confirmation again before retrying.
82
+ - For `RATE_LIMIT_EXCEEDED` or `RATE_LIMIT_BANNED`, repeated requests during cooldown extend the ban by 5 seconds each time, up to 5 minutes.
83
+
84
+ **First-time setup** (if credentials are not configured):
85
+
86
+ 1. Generate key pair and show the public key to the user:
87
+ ```bash
88
+ openssl genpkey -algorithm ed25519 -out /tmp/gmgn_private.pem 2>/dev/null && \
89
+ openssl pkey -in /tmp/gmgn_private.pem -pubout 2>/dev/null
90
+ ```
91
+ Tell the user: *"This is your Ed25519 public key. Go to **https://gmgn.ai/ai**, paste it into the API key creation form (enable swap/cooking capability), then send me the API Key value shown on the page."*
92
+
93
+ 2. Wait for the user's API key, then configure both credentials:
94
+ ```bash
95
+ mkdir -p ~/.config/gmgn
96
+ echo 'GMGN_API_KEY=<key_from_user>' > ~/.config/gmgn/.env
97
+ echo 'GMGN_PRIVATE_KEY="<pem_content_from_step_1>"' >> ~/.config/gmgn/.env
98
+ chmod 600 ~/.config/gmgn/.env
99
+ ```
100
+
101
+ ### Credential Model
102
+
103
+ - `GMGN_PRIVATE_KEY` is used exclusively for **local message signing** — the private key never leaves the machine. The CLI computes an Ed25519 signature in-process and transmits only the base64-encoded result in the `X-Signature` request header.
104
+ - `GMGN_API_KEY` is transmitted in the `X-APIKEY` header over HTTPS.
105
+ - Neither credential is ever passed as a command-line argument.
106
+
107
+ ## `cooking stats` Usage
108
+
109
+ ```bash
110
+ gmgn-cli cooking stats [--raw]
111
+ ```
112
+
113
+ ### `cooking stats` Response Fields
114
+
115
+ | Field | Type | Description |
116
+ |-------|------|-------------|
117
+ | `launchpad` | string | Launchpad identifier (e.g. `pump`, `raydium`, `pancakeswap`) |
118
+ | `token_count` | int | Number of tokens created via GMGN on that launchpad |
119
+
120
+ ## `cooking create` Parameters
121
+
122
+ | Parameter | Required | Description |
123
+ |-----------|----------|-------------|
124
+ | `--chain` | Yes | Chain: `sol` / `bsc` / `base` / `eth` / `ton` |
125
+ | `--dex` | Yes | Launchpad platform identifier — see Supported Launchpads table. Never guess this value. |
126
+ | `--from` | Yes | Wallet address (must match API Key binding) |
127
+ | `--name` | Yes | Token full name (e.g. `Doge Killer`) |
128
+ | `--symbol` | Yes | Token ticker symbol (e.g. `DOGEK`) |
129
+ | `--description` | No | Token description / project pitch |
130
+ | `--buy-amt` | Yes | Initial buy amount in **human-readable native token units** (e.g. `0.01` = 0.01 SOL). This is NOT in smallest unit. |
131
+ | `--image` | No* | Token logo as **base64-encoded** data (max 2MB decoded). Mutually exclusive with `--image-url`. One of the two is required. |
132
+ | `--image-url` | No* | Token logo as a publicly accessible URL. Mutually exclusive with `--image`. One of the two is required. |
133
+ | `--slippage` | No* | Slippage tolerance, e.g. `0.01` = 1%. **Mutually exclusive with `--auto-slippage`** — provide one or the other. |
134
+ | `--auto-slippage` | No* | Enable automatic slippage. **Mutually exclusive with `--slippage`.** |
135
+ | `--website` | No | Project website URL |
136
+ | `--twitter` | No | Twitter / X URL |
137
+ | `--telegram` | No | Telegram group URL |
138
+ | `--priority-fee` | No | Priority fee in SOL (SOL only, ≥ 0.0001 SOL) |
139
+ | `--tip-fee` | No | Tip fee (SOL ≥ 0.00001 / BSC ≥ 0.000001 BNB; ignored on ETH/BASE) |
140
+ | `--gas-price` | No | Gas price in wei (EVM chains) |
141
+ | `--anti-mev` | No | Enable anti-MEV protection |
142
+
143
+ \* `--image` or `--image-url`: provide exactly one. `--slippage` or `--auto-slippage`: provide exactly one.
144
+
145
+ ## `cooking create` Response Fields
146
+
147
+ | Field | Type | Description |
148
+ |-------|------|-------------|
149
+ | `status` | string | `pending` / `confirmed` / `failed` |
150
+ | `hash` | string | Transaction hash (may be empty while `pending`) |
151
+ | `order_id` | string | Order ID — pass to `gmgn-cli order get` to poll for final status |
152
+ | `error_code` | string | Error code on failure |
153
+ | `error_status` | string | Error description on failure |
154
+
155
+ ## Status Polling
156
+
157
+ Token creation is **asynchronous**. If the initial `cooking create` response shows `status: pending`:
158
+
159
+ 1. Poll with `gmgn-cli order get` every **2 seconds**, up to **30 seconds**:
160
+ ```bash
161
+ gmgn-cli order get --chain <chain> --order-id <order_id>
162
+ ```
163
+ 2. The new token's contract / mint address is in the **`output_token`** field of the `order get` response — it is NOT returned by `cooking create` directly.
164
+ 3. Stop polling once `status` is `confirmed`, `failed`, or `expired`.
165
+ 4. On `confirmed`: display `output_token` as the token address and include the block explorer link.
166
+ 5. On `failed` / `expired`: report the `error_status` and do not retry automatically.
167
+
168
+ ## Usage Examples
169
+
170
+ ```bash
171
+ # Get token creation statistics per launchpad
172
+ gmgn-cli cooking stats
173
+
174
+ # Create a token on Pump.fun (SOL) — with URL image
175
+ gmgn-cli cooking create \
176
+ --chain sol \
177
+ --dex pump \
178
+ --from <wallet_address> \
179
+ --name "My Token" \
180
+ --symbol MAT \
181
+ --buy-amt 0.01 \
182
+ --image-url https://example.com/logo.png \
183
+ --slippage 0.01 \
184
+ --priority-fee 0.001
185
+
186
+ # Create a token on PancakeSwap (BSC) — with URL image and social links
187
+ gmgn-cli cooking create \
188
+ --chain bsc \
189
+ --dex pancakeswap \
190
+ --from <wallet_address> \
191
+ --name "BSC Token" \
192
+ --symbol BSCT \
193
+ --buy-amt 0.05 \
194
+ --image-url https://example.com/logo.png \
195
+ --slippage 0.02 \
196
+ --gas-price 5000000000 \
197
+ --website https://mytoken.io \
198
+ --twitter https://twitter.com/mytoken
199
+
200
+ # Create a token on FourMeme (BSC) — using base64 image from local file
201
+ gmgn-cli cooking create \
202
+ --chain bsc \
203
+ --dex fourmeme \
204
+ --from <wallet_address> \
205
+ --name "Four Token" \
206
+ --symbol FOUR \
207
+ --buy-amt 0.05 \
208
+ --image "$(base64 -i /path/to/logo.png)" \
209
+ --auto-slippage
210
+
211
+ # Create a token on letsbonk (SOL)
212
+ gmgn-cli cooking create \
213
+ --chain sol \
214
+ --dex letsbonk \
215
+ --from <wallet_address> \
216
+ --name "Bonk Token" \
217
+ --symbol BNKT \
218
+ --buy-amt 0.01 \
219
+ --image-url https://example.com/logo.png \
220
+ --auto-slippage \
221
+ --anti-mev
222
+
223
+ ```
224
+
225
+ ## Output Format
226
+
227
+ ### Pre-create Confirmation
228
+
229
+ Before every `cooking create`, present this summary and wait for explicit user confirmation:
230
+
231
+ ```
232
+ ⚠️ Token Creation Confirmation Required
233
+
234
+ Chain: {chain}
235
+ Platform: {--dex} (e.g. pump / fourmeme)
236
+ Wallet: {--from}
237
+ Token Name: {--name}
238
+ Symbol: {--symbol}
239
+ Initial Buy: {--buy-amt} {native currency} (e.g. 0.01 SOL)
240
+ Slippage: {--slippage}% (or "auto")
241
+ Image: {--image-url or "base64 provided"}
242
+ Social: {twitter / telegram / website if provided}
243
+
244
+ Reply "confirm" to deploy this token. This action is IRREVERSIBLE.
245
+ ```
246
+
247
+ ### Post-create Receipt
248
+
249
+ After polling confirms a successful deployment:
250
+
251
+ ```
252
+ ✅ Token Created
253
+
254
+ Token: {--name} ({--symbol})
255
+ Address: {output_token from order get}
256
+ Chain: {chain}
257
+ Platform: {--dex}
258
+ Tx: {explorer link for hash}
259
+ Order ID: {order_id}
260
+ ```
261
+
262
+ Block explorer links:
263
+
264
+ | Chain | Explorer |
265
+ |-------|----------|
266
+ | sol | `https://solscan.io/tx/<hash>` |
267
+ | bsc | `https://bscscan.com/tx/<hash>` |
268
+ | base | `https://basescan.org/tx/<hash>` |
269
+ | eth | `https://etherscan.io/tx/<hash>` |
270
+
271
+ ## Guided Launch Flow
272
+
273
+ When a user says they want to launch / create / deploy a token but has not provided all required information, do NOT ask for everything at once. Collect information in this order, one step at a time:
274
+
275
+ ### Step 1 — Chain & Platform
276
+
277
+ Ask: *"Which chain and platform do you want to launch on?"*
278
+
279
+ Show the available options:
280
+
281
+ | Chain | Platform | `--dex` |
282
+ |-------|----------|---------|
283
+ | Solana | Pump.fun | `pump` |
284
+ | Solana | letsbonk | `letsbonk` |
285
+ | Solana | Raydium | `raydium` |
286
+ | Solana | BAGS | `bags` |
287
+ | Solana | Memoo | `memoo` |
288
+ | Solana | Bonkers | `bonkers` |
289
+ | BSC | FourMeme | `fourmeme` |
290
+ | BSC | PancakeSwap | `pancakeswap` |
291
+ | BSC | Flap | `flap` |
292
+ | Base | Clanker | `clanker` |
293
+ | Base | Zora | `zora` |
294
+ | Base | Flaunch | `flaunch` |
295
+ | Base | Virtuals | `virtuals_v2` |
296
+
297
+ If the user is unsure, recommend: **Pump.fun (SOL)** or **FourMeme (BSC)** — the two most active launchpads.
298
+
299
+ ### Step 2 — Token Identity
300
+
301
+ Ask for name, symbol, and description together:
302
+
303
+ *"What is your token's name, ticker symbol, and a short description?"*
304
+
305
+ - Name: the full display name (e.g. `Doge Killer`)
306
+ - Symbol: short uppercase ticker, typically 3–8 characters (e.g. `DOGEK`)
307
+ - Description: optional but recommended — a one-line pitch shown on the launchpad
308
+
309
+ ### Step 3 — Logo
310
+
311
+ Ask: *"Do you have a logo image? You can share a file path (e.g. `/Users/you/logo.png`) or an image URL."*
312
+
313
+ - If the user provides a **file path**: silently run `base64 -i <path>` and pass the result to `--image`. Do not mention "base64" to the user.
314
+ - If the user provides a **URL**: use `--image-url` directly.
315
+ - If the user has no logo: note that most platforms accept a launch without one, but it significantly reduces visibility. Ask if they want to proceed without it.
316
+
317
+ ### Step 4 — Social Links (optional)
318
+
319
+ Ask: *"Do you have a Twitter, Telegram, or website to attach to the token? You can skip this."*
320
+
321
+ Collect any combination of `--twitter`, `--telegram`, `--website`. If the user skips, proceed to the next step.
322
+
323
+ ### Step 5 — Initial Buy Amount
324
+
325
+ Ask: *"How much {SOL / BNB / ETH} do you want to spend on the initial buy?"*
326
+
327
+ Pass the user's answer directly to `--buy-amt` — this is already in full token units (e.g. `0.01` = 0.01 SOL), do NOT convert to lamports or wei.
328
+
329
+ ### Step 6 — Confirmation & Execute
330
+
331
+ Once all information is collected, present the pre-create confirmation summary (see Output Format section) and wait for the user to reply "confirm" before executing.
332
+
333
+ ---
334
+
335
+ ## Execution Guidelines
336
+
337
+ - **[REQUIRED] Pre-create confirmation** — Before executing `cooking create`, present the full summary above and receive explicit "confirm" from the user. No exceptions. Do NOT auto-create.
338
+ - **[REQUIRED] `--dex` validation** — Before running, look up the user's named platform in the Supported Launchpads table and resolve to the correct `--dex` identifier. Never guess or pass a freeform platform name. If the chain/platform combination is not in the table, tell the user it is unsupported.
339
+ - **Slippage requirement** — Either `--slippage` or `--auto-slippage` must be provided. If the user did not specify, suggest `--auto-slippage` for volatile new tokens or ask for a preference.
340
+ - **Image handling** — If the user provides a file path, run `base64 -i <path>` and pass the result to `--image`. If they provide a URL, use `--image-url`. If neither is provided, ask before building the confirmation — most platforms require a logo.
341
+ - **Address validation** — Validate `--from` wallet address format before submitting:
342
+ - `sol`: base58, 32–44 characters
343
+ - `bsc` / `base` / `eth`: `0x` + 40 hex digits
344
+ - **Chain-wallet compatibility** — SOL addresses are incompatible with EVM chains and vice versa. Warn the user and abort if the address format does not match the chain.
345
+ - **Order polling** — After `cooking create`, if `status` is `pending`, poll `order get` every 2 seconds up to 30 seconds. The token address is in `output_token`. Do not report success until `status` is `confirmed`.
346
+ - **Credential sensitivity** — `GMGN_API_KEY` and `GMGN_PRIVATE_KEY` can execute real transactions. Never log, display, or expose these values.
347
+
348
+ ## Notes
349
+
350
+ - `cooking create` uses **critical auth** (API Key + signature) — CLI handles signing automatically.
351
+ - `cooking stats` uses normal auth (API Key only — no private key needed).
352
+ - The new token's mint address is in `output_token` from `gmgn-cli order get`, not in the initial `cooking create` response.
353
+ - Use `--raw` on any command to get single-line JSON for further processing.
354
+
355
+ ## References
356
+
357
+ | Skill | Description |
358
+ |-------|-------------|
359
+ | [gmgn-swap](https://github.com/GMGNAI/gmgn-skills/tree/main/skills/gmgn-swap) | Contains `order get` command used for polling token creation status |
360
+ | [gmgn-token](https://github.com/GMGNAI/gmgn-skills/tree/main/skills/gmgn-token) | Token security check, info, holders, and traders — useful after launch to monitor your token |
361
+ | [gmgn-market](https://github.com/GMGNAI/gmgn-skills/tree/main/skills/gmgn-market) | `market trenches` for tracking bonding curve progress; `market trending` to see if your token is gaining traction |
362
+ | [gmgn-track](https://github.com/GMGNAI/gmgn-skills/tree/main/skills/gmgn-track) | Smart money and KOL trade tracking — monitor whether smart wallets are buying your token after launch |
363
+ | [gmgn-portfolio](https://github.com/GMGNAI/gmgn-skills/tree/main/skills/gmgn-portfolio) | Wallet holdings and P&L — check your own wallet balance before deciding on `--buy-amt` |
@@ -55,9 +55,40 @@ Use the `gmgn-cli` tool to query K-line data for a token, browse trending tokens
55
55
 
56
56
  ## Prerequisites
57
57
 
58
- - `.env` file with `GMGN_API_KEY` set
59
- - Run from the directory where your `.env` file is located, or set `GMGN_HOST` in your environment
60
- - `gmgn-cli` installed globally: `npm install -g gmgn-cli`
58
+ - `gmgn-cli` installed globally — if missing, run: `npm install -g gmgn-cli`
59
+ - `GMGN_API_KEY` configured in `~/.config/gmgn/.env`
60
+
61
+ ## Rate Limit Handling
62
+
63
+ All market routes used by this skill go through GMGN's leaky-bucket limiter with `rate=10` and `capacity=10`. Sustained throughput is roughly `10 ÷ weight` requests/second, and the max burst is roughly `floor(10 ÷ weight)` when the bucket is full.
64
+
65
+ | Command | Route | Weight |
66
+ |---------|-------|--------|
67
+ | `market kline` | `GET /v1/market/token_kline` | 2 |
68
+ | `market trending` | `GET /v1/market/rank` | 1 |
69
+ | `market trenches` | `POST /v1/trenches` | 3 |
70
+
71
+ When a request returns `429`:
72
+
73
+ - Read `X-RateLimit-Reset` from the response headers. It is a Unix timestamp in seconds that marks when the limit is expected to reset.
74
+ - The CLI may wait and retry once automatically when the remaining cooldown is short. If it still fails, stop and tell the user the exact retry time instead of sending more requests.
75
+ - For `RATE_LIMIT_EXCEEDED` or `RATE_LIMIT_BANNED`, repeated requests during the cooldown can extend the ban by 5 seconds each time, up to 5 minutes. Do not spam retries.
76
+
77
+ **First-time setup** (if `GMGN_API_KEY` is not configured):
78
+
79
+ 1. Generate key pair and show the public key to the user:
80
+ ```bash
81
+ openssl genpkey -algorithm ed25519 -out /tmp/gmgn_private.pem 2>/dev/null && \
82
+ openssl pkey -in /tmp/gmgn_private.pem -pubout 2>/dev/null
83
+ ```
84
+ Tell the user: *"This is your Ed25519 public key. Go to **https://gmgn.ai/ai**, paste it into the API key creation form, then send me the API Key value shown on the page."*
85
+
86
+ 2. Wait for the user's API key, then configure:
87
+ ```bash
88
+ mkdir -p ~/.config/gmgn
89
+ echo 'GMGN_API_KEY=<key_from_user>' > ~/.config/gmgn/.env
90
+ chmod 600 ~/.config/gmgn/.env
91
+ ```
61
92
 
62
93
  ## `market kline` Parameters
63
94
 
@@ -46,9 +46,42 @@ Use the `gmgn-cli` tool to query wallet portfolio data based on the user's reque
46
46
 
47
47
  ## Prerequisites
48
48
 
49
- - `.env` file with `GMGN_API_KEY` set
50
- - Run from the directory where your `.env` file is located, or set `GMGN_HOST` in your environment
51
- - `gmgn-cli` installed globally: `npm install -g gmgn-cli`
49
+ - `gmgn-cli` installed globally — if missing, run: `npm install -g gmgn-cli`
50
+ - `GMGN_API_KEY` configured in `~/.config/gmgn/.env`
51
+
52
+ ## Rate Limit Handling
53
+
54
+ All portfolio routes used by this skill go through GMGN's leaky-bucket limiter with `rate=10` and `capacity=10`. Sustained throughput is roughly `10 ÷ weight` requests/second, and the max burst is roughly `floor(10 ÷ weight)` when the bucket is full.
55
+
56
+ | Command | Route | Weight |
57
+ |---------|-------|--------|
58
+ | `portfolio info` | `GET /v1/user/info` | 1 |
59
+ | `portfolio holdings` | `GET /v1/user/wallet_holdings` | 2 |
60
+ | `portfolio activity` | `GET /v1/user/wallet_activity` | 3 |
61
+ | `portfolio stats` | `GET /v1/user/wallet_stats` | 3 |
62
+ | `portfolio token-balance` | `GET /v1/user/wallet_token_balance` | 1 |
63
+
64
+ When a request returns `429`:
65
+
66
+ - Read `X-RateLimit-Reset` from the response headers. It is a Unix timestamp in seconds that marks when the limit is expected to reset.
67
+ - The CLI may wait and retry once automatically when the remaining cooldown is short. If it still fails, stop and tell the user the exact retry time instead of sending more requests.
68
+ - For `RATE_LIMIT_EXCEEDED` or `RATE_LIMIT_BANNED`, repeated requests during the cooldown can extend the ban by 5 seconds each time, up to 5 minutes. Do not spam retries.
69
+
70
+ **First-time setup** (if `GMGN_API_KEY` is not configured):
71
+
72
+ 1. Generate key pair and show the public key to the user:
73
+ ```bash
74
+ openssl genpkey -algorithm ed25519 -out /tmp/gmgn_private.pem 2>/dev/null && \
75
+ openssl pkey -in /tmp/gmgn_private.pem -pubout 2>/dev/null
76
+ ```
77
+ Tell the user: *"This is your Ed25519 public key. Go to **https://gmgn.ai/ai**, paste it into the API key creation form, then send me the API Key value shown on the page."*
78
+
79
+ 2. Wait for the user's API key, then configure:
80
+ ```bash
81
+ mkdir -p ~/.config/gmgn
82
+ echo 'GMGN_API_KEY=<key_from_user>' > ~/.config/gmgn/.env
83
+ chmod 600 ~/.config/gmgn/.env
84
+ ```
52
85
 
53
86
  ## Usage Examples
54
87
 
@@ -48,6 +48,9 @@ Use the `gmgn-cli` tool to submit a token swap or query an existing order. **Req
48
48
  | `swap` | Submit a token swap |
49
49
  | `order quote` | Get a swap quote (no transaction submitted) |
50
50
  | `order get` | Query order status |
51
+ | `order strategy create` | Create a limit/strategy order (requires private key) |
52
+ | `order strategy list` | List strategy orders (normal auth) |
53
+ | `order strategy cancel` | Cancel a strategy order (requires private key) |
51
54
 
52
55
  ## Supported Chains
53
56
 
@@ -67,13 +70,44 @@ Currency tokens are the base/native assets of each chain. They are used to buy o
67
70
 
68
71
  ## Prerequisites
69
72
 
70
- Both `GMGN_API_KEY` and `GMGN_PRIVATE_KEY` must be set in `.env`. The private key must correspond to the wallet bound to the API Key.
73
+ Both `GMGN_API_KEY` and `GMGN_PRIVATE_KEY` must be configured in `~/.config/gmgn/.env`. The private key must correspond to the wallet bound to the API Key.
71
74
 
72
- `gmgn-cli` must be installed globally before use (one-time setup):
75
+ - `gmgn-cli` installed globally if missing, run: `npm install -g gmgn-cli`
73
76
 
74
- ```bash
75
- npm install -g gmgn-cli
76
- ```
77
+ ## Rate Limit Handling
78
+
79
+ All swap-related routes used by this skill go through GMGN's leaky-bucket limiter with `rate=10` and `capacity=10`. Sustained throughput is roughly `10 ÷ weight` requests/second, and the max burst is roughly `floor(10 ÷ weight)` when the bucket is full.
80
+
81
+ | Command | Route | Weight |
82
+ |---------|-------|--------|
83
+ | `swap` | `POST /v1/trade/swap` | 5 |
84
+ | `order quote` | `GET /v1/trade/quote` | 2 |
85
+ | `order get` | `GET /v1/trade/query_order` | 1 |
86
+
87
+ When a request returns `429`:
88
+
89
+ - Read `X-RateLimit-Reset` from the response headers. It is a Unix timestamp in seconds that marks when the limit is expected to reset.
90
+ - `swap` is a real transaction: never loop or auto-submit repeated swap attempts after a `429`. Wait until the reset time, then ask for confirmation again before retrying.
91
+ - The CLI may wait and retry once automatically for short cooldowns on read-only commands such as `order quote` and `order get`. If it still fails, stop and tell the user the exact retry time instead of sending more requests.
92
+ - For `RATE_LIMIT_EXCEEDED` or `RATE_LIMIT_BANNED`, repeated requests during the cooldown can extend the ban by 5 seconds each time, up to 5 minutes.
93
+ - `POST /v1/trade/swap` also has an error-count limiter. Repeatedly triggering the same business error, especially `40003701` (insufficient token balance), can return `ERROR_RATE_LIMIT_BLOCKED`. When this happens, do not retry until the reset time and fix the underlying request first.
94
+
95
+ **First-time setup** (if credentials are not configured):
96
+
97
+ 1. Generate key pair and show the public key to the user:
98
+ ```bash
99
+ openssl genpkey -algorithm ed25519 -out /tmp/gmgn_private.pem 2>/dev/null && \
100
+ openssl pkey -in /tmp/gmgn_private.pem -pubout 2>/dev/null
101
+ ```
102
+ Tell the user: *"This is your Ed25519 public key. Go to **https://gmgn.ai/ai**, paste it into the API key creation form (enable swap capability), then send me the API Key value shown on the page."*
103
+
104
+ 2. Wait for the user's API key, then configure both credentials:
105
+ ```bash
106
+ mkdir -p ~/.config/gmgn
107
+ echo 'GMGN_API_KEY=<key_from_user>' > ~/.config/gmgn/.env
108
+ echo 'GMGN_PRIVATE_KEY="<pem_content_from_step_1>"' >> ~/.config/gmgn/.env
109
+ chmod 600 ~/.config/gmgn/.env
110
+ ```
77
111
 
78
112
  ### Credential Model
79
113
 
@@ -248,11 +282,108 @@ Order ID: {order_id}
248
282
 
249
283
  Convert `filled_input_amount` and `filled_output_amount` from smallest unit using token decimals before displaying.
250
284
 
285
+ ## `order strategy create` Parameters
286
+
287
+ | Parameter | Required | Description |
288
+ |-----------|----------|-------------|
289
+ | `--chain` | Yes | `sol` / `bsc` / `base` |
290
+ | `--from` | Yes | Wallet address (must match API Key binding) |
291
+ | `--base-token` | Yes | Base token contract address |
292
+ | `--quote-token` | Yes | Quote token contract address |
293
+ | `--side` | Yes | Direction: `buy` / `sell` |
294
+ | `--check-price` | Yes | Trigger check price |
295
+ | `--amount-in` | No* | Input amount (smallest unit). Mutually exclusive with `--amount-in-percent` |
296
+ | `--amount-in-percent` | No* | Input as percentage (e.g. `50` = 50%). Mutually exclusive with `--amount-in` |
297
+ | `--limit-price-mode` | No | `exact` / `slippage` (default: `slippage`) |
298
+ | `--expire-in` | No | Order expiry in seconds |
299
+ | `--sell-ratio-type` | No | `buy_amount` (default) / `hold_amount` |
300
+ | `--slippage` | No | Slippage tolerance, e.g. `0.01` = 1%. Mutually exclusive with `--auto-slippage` |
301
+ | `--auto-slippage` | No | Enable automatic slippage |
302
+ | `--priority-fee` | No | Priority fee in SOL (SOL only) |
303
+ | `--tip-fee` | No | Tip fee |
304
+ | `--gas-price` | No | Gas price in wei (EVM chains) |
305
+ | `--anti-mev` | No | Enable anti-MEV protection |
306
+
307
+
308
+ **`order strategy create` Response Fields:**
309
+
310
+ | Field | Type | Description |
311
+ |-------|------|-------------|
312
+ | `order_id` | string | Created strategy order ID |
313
+ | `is_update` | bool | `true` if an existing order was updated, `false` if newly created |
314
+
315
+ ## `order strategy list` Parameters
316
+
317
+ | Parameter | Required | Description |
318
+ |-----------|----------|-------------|
319
+ | `--chain` | Yes | `sol` / `bsc` / `base` |
320
+ | `--type` | No | `open` (default) / `history` |
321
+ | `--from` | No | Filter by wallet address |
322
+ | `--base-token` | No | Filter by token address |
323
+ | `--page-token` | No | Pagination cursor from previous response |
324
+ | `--limit` | No | Results per page (default 10 for history) |
325
+
326
+ **`order strategy list` Response Fields:**
327
+
328
+ | Field | Type | Description |
329
+ |-------|------|-------------|
330
+ | `next_page_token` | string | Cursor for next page; empty when no more data |
331
+ | `total` | int | Total count (only returned when `--type open`) |
332
+ | `list` | array | Strategy order list |
333
+
334
+ ## `order strategy cancel` Parameters
335
+
336
+ | Parameter | Required | Description |
337
+ |-----------|----------|-------------|
338
+ | `--chain` | Yes | `sol` / `bsc` / `base` |
339
+ | `--from` | Yes | Wallet address (must match API Key binding) |
340
+ | `--order-id` | Yes | Order ID to cancel |
341
+ | `--close-sell-model` | No | Sell model when closing the order |
342
+
343
+ ## `order strategy` Usage Examples
344
+
345
+ ```bash
346
+ # Create a take-profit order: sell when price rises to target
347
+ gmgn-cli order strategy create \
348
+ --chain sol \
349
+ --from <wallet_address> \
350
+ --base-token <token_address> \
351
+ --quote-token <sol_address> \
352
+ --sub-order-type take_profit \
353
+ --check-price 0.002 \
354
+ --amount-in 1000000 \
355
+ --slippage 0.01
356
+
357
+ # Create a stop-loss order: sell when price drops to target
358
+ gmgn-cli order strategy create \
359
+ --chain sol \
360
+ --from <wallet_address> \
361
+ --base-token <token_address> \
362
+ --quote-token <sol_address> \
363
+ --sub-order-type stop_loss \
364
+ --check-price 0.0005 \
365
+ --amount-in-percent 100 \
366
+ --slippage 0.01
367
+
368
+ # List open strategy orders
369
+ gmgn-cli order strategy list --chain sol
370
+
371
+ # List history orders with pagination
372
+ gmgn-cli order strategy list --chain sol --type history --limit 20
373
+
374
+ # Cancel a strategy order
375
+ gmgn-cli order strategy cancel \
376
+ --chain sol \
377
+ --from <wallet_address> \
378
+ --order-id <order_id>
379
+ ```
380
+
251
381
  ## Notes
252
382
 
253
383
  - Swap uses **critical auth** (API Key + signature) — CLI handles signing automatically, no manual processing needed
254
384
  - After submitting a swap, use `order get` to poll for confirmation
255
385
  - `--amount` is in the **smallest unit** (e.g., lamports for SOL)
386
+ - `order strategy create` and `order strategy cancel` use critical auth (require `GMGN_PRIVATE_KEY`); `order strategy list` uses normal auth
256
387
  - Use `--raw` to get single-line JSON for further processing
257
388
 
258
389
  ## Input Validation