Compare commits

...
Author SHA1 Message Date
GMGN.AI 34fc2f9e2a 1.2.8 2026-04-23 19:37:48 +08:00
GMGN.AIandGitHub 5ef03579cf Merge pull request #114 from gina888666/fix/swap-currency-address-warning
fix(swap): add critical warning to Chain Currencies table to prevent address guessing
2026-04-23 19:30:20 +08:00
wuyanlingandClaude Sonnet 4.6 1d433724d3 fix(swap): add critical warning to Chain Currencies table to prevent address guessing
AI models may use incorrect currency addresses from training data (e.g.
So11111111111111111111111111111111111111111 vs the correct ...112), causing
silent failures or misleading "jupiter has no route" errors. Added a warning
above the table and wrapped all addresses in backticks for clarity.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 19:17:53 +08:00
GMGN.AIandGitHub 26a50c7046 Merge pull request #113 from GMGNAI/feat/eth-chain-support
feat(eth): add ETH chain support to multi-swap, strategy, kol, smartmoney, created-tokens
2026-04-23 18:17:32 +08:00
David LauandClaude Sonnet 4.6 56a3a60352 feat(eth): add ETH chain support to multi-swap, strategy, kol, smartmoney, created-tokens
- multi-swap --chain: add eth
- order strategy create/list/cancel --chain: add eth
- track kol/smartmoney --chain: add eth, change to requiredOption
- portfolio created-tokens --chain: add eth
- SKILL.md files updated accordingly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 18:16:58 +08:00
GMGN.AIandClaude Sonnet 4.6 211f7d6fd0 docs(swap): remove USDC from ETH chain currencies (ETH-only for now)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 20:41:35 +08:00
GMGN.AIandClaude Sonnet 4.6 5e1560188e docs: remove USDC from ETH chain currencies (ETH-only for now)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 20:39:31 +08:00
GMGN.AIandClaude Sonnet 4.6 08f7b66251 docs: add ETH chain to multi-chain descriptions in README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 20:31:56 +08:00
GMGN.AI 48c596ab10 1.2.7 2026-04-22 19:31:47 +08:00
GMGN.AIandGitHub ec099ea399 Merge pull request #112 from GMGNAI/feat-add-eth-chain-support
feat(eth): add Ethereum mainnet chain support (P0 commands)
2026-04-22 17:40:24 +08:00
10 changed files with 38 additions and 26 deletions
+2 -2
View File
@@ -22,7 +22,7 @@ With GMGN Agent Skills, you can use AI agents to query real-time trending token
### 1. Real-time on-chain data — faster ### 1. Real-time on-chain data — faster
Data across SOL / BSC / Base is live on every query. Supports multi-parameter customization, no snapshot cache — built for AI agent real-time decision-making (including but not limited to): Data across SOL / BSC / Base / ETH is live on every query. Supports multi-parameter customization, no snapshot cache — built for AI agent real-time decision-making (including but not limited to):
| Data | Granularity | | Data | Granularity |
|------|-------------| |------|-------------|
@@ -673,7 +673,7 @@ gmgn-cli cooking \
| Commands | Chains | Chain Currencies | | Commands | Chains | Chain Currencies |
|----------|--------|-----------------| |----------|--------|-----------------|
| token / market / portfolio / track | `sol` / `bsc` / `base` / `eth` | — | | token / market / portfolio / track | `sol` / `bsc` / `base` / `eth` | — |
| swap / order | `sol` / `bsc` / `base` / `eth` | sol: SOL, USDC · bsc: BNB, USDC · base: ETH, USDC · eth: ETH, USDC | | swap / order | `sol` / `bsc` / `base` / `eth` | sol: SOL, USDC · bsc: BNB, USDC · base: ETH, USDC · eth: ETH |
--- ---
+2 -2
View File
@@ -22,7 +22,7 @@
### 1. 链上实时数据查询快 ### 1. 链上实时数据查询快
SOL / BSC / Base 多链数据每次查询均为实时,支持多参数个性化调用,无快照缓存,方便AI Agent实时决策(包括不限于下表)。 SOL / BSC / Base / ETH 多链数据每次查询均为实时,支持多参数个性化调用,无快照缓存,方便AI Agent实时决策(包括不限于下表)。
| 数据类型 | 粒度 | | 数据类型 | 粒度 |
|---------|------| |---------|------|
@@ -697,7 +697,7 @@ gmgn-cli cooking \
| 接口类型 | 支持的链 | 链原生货币 | | 接口类型 | 支持的链 | 链原生货币 |
|----------|----------|-----------| |----------|----------|-----------|
| token / market / portfolio / track | `sol` / `bsc` / `base` / `eth` | — | | token / market / portfolio / track | `sol` / `bsc` / `base` / `eth` | — |
| swap / order | `sol` / `bsc` / `base` / `eth` | sol: SOL、USDC · bsc: BNB、USDC · base: ETH、USDC · eth: ETH、USDC | | swap / order | `sol` / `bsc` / `base` / `eth` | sol: SOL、USDC · bsc: BNB、USDC · base: ETH、USDC · eth: ETH |
--- ---
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "gmgn-cli", "name": "gmgn-cli",
"version": "1.2.6", "version": "1.2.8",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "gmgn-cli", "name": "gmgn-cli",
"version": "1.2.6", "version": "1.2.8",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"commander": "^12.1.0", "commander": "^12.1.0",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "gmgn-cli", "name": "gmgn-cli",
"version": "1.2.6", "version": "1.2.8",
"description": "GMGN OpenAPI CLI — call GMGN market, token, portfolio and swap APIs from the command line", "description": "GMGN OpenAPI CLI — call GMGN market, token, portfolio and swap APIs from the command line",
"type": "module", "type": "module",
"bin": { "bin": {
+1 -1
View File
@@ -43,7 +43,7 @@ Use the `gmgn-cli` tool to query wallet portfolio data based on the user's reque
## Supported Chains ## Supported Chains
`sol` / `bsc` / `base` / `eth` (info / holdings / activity / stats / token-balance); `sol` / `bsc` / `base` (created-tokens) `sol` / `bsc` / `base` / `eth`
## Prerequisites ## Prerequisites
+20 -8
View File
@@ -61,12 +61,14 @@ Use the `gmgn-cli` tool to submit a token swap or query an existing order. `GMGN
Currency tokens are the base/native assets of each chain. They are used to buy other tokens or receive proceeds from selling. Knowing which tokens are currencies is critical for `--percent` usage (see Swap Parameters below). Currency tokens are the base/native assets of each chain. They are used to buy other tokens or receive proceeds from selling. Knowing which tokens are currencies is critical for `--percent` usage (see Swap Parameters below).
> ⚠️ **CRITICAL: Always copy currency addresses from this table — NEVER rely on memory or training data.** A wrong address (e.g. `So11111111111111111111111111111111111111111` instead of `So11111111111111111111111111111111111111112`) will cause silent failures or `jupiter has no route` errors with no clear indication of what went wrong.
| Chain | Currency tokens | | Chain | Currency tokens |
| ------ | --------------- | | ------ | --------------- |
| `sol` | SOL (native, So11111111111111111111111111111111111111112), USDC (`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`) | | `sol` | SOL (native, `So11111111111111111111111111111111111111112`), USDC (`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`) |
| `bsc` | BNB (native, 0x0000000000000000000000000000000000000000), USDC (`0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d`) | | `bsc` | BNB (native, `0x0000000000000000000000000000000000000000`), USDC (`0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d`) |
| `base` | ETH (native, 0x0000000000000000000000000000000000000000), USDC (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`) | | `base` | ETH (native, `0x0000000000000000000000000000000000000000`), USDC (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`) |
| `eth` | ETH (native, 0x0000000000000000000000000000000000000000), USDC (`0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`) | | `eth` | ETH (native, `0x0000000000000000000000000000000000000000`) |
## Prerequisites ## Prerequisites
@@ -199,13 +201,23 @@ gmgn-cli multi-swap \
--priority-fee 0.00001 \ --priority-fee 0.00001 \
--tip-fee 0.00001 \ --tip-fee 0.00001 \
--condition-orders '[{"order_type":"profit_stop","side":"sell","price_scale":"100","sell_ratio":"100"},{"order_type":"loss_stop","side":"sell","price_scale":"50","sell_ratio":"100"}]' --condition-orders '[{"order_type":"profit_stop","side":"sell","price_scale":"100","sell_ratio":"100"},{"order_type":"loss_stop","side":"sell","price_scale":"50","sell_ratio":"100"}]'
# ETH multi-wallet swap (EIP-1559 gas)
gmgn-cli multi-swap \
--chain eth \
--accounts <0xaddr1>,<0xaddr2> \
--input-token 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 \
--output-token <token_address> \
--input-amount '{"<0xaddr1>":"1000000","<0xaddr2>":"2000000"}' \
--slippage 0.01 \
--gas-price 5
``` ```
## `multi-swap` Parameters ## `multi-swap` Parameters
| Parameter | Required | Description | | Parameter | Required | Description |
|-----------|----------|-------------| |-----------|----------|-------------|
| `--chain` | Yes | `sol` / `bsc` / `base` | | `--chain` | Yes | `sol` / `bsc` / `base` / `eth` |
| `--accounts` | Yes | Comma-separated wallet addresses (1100, all must be bound to the API Key) | | `--accounts` | Yes | Comma-separated wallet addresses (1100, all must be bound to the API Key) |
| `--input-token` | Yes | Input token contract address | | `--input-token` | Yes | Input token contract address |
| `--output-token` | Yes | Output token contract address | | `--output-token` | Yes | Output token contract address |
@@ -442,7 +454,7 @@ Convert `report.input_amount` and `report.output_amount` from smallest unit usin
| Parameter | Required | Description | | Parameter | Required | Description |
|-----------|----------|-------------| |-----------|----------|-------------|
| `--chain` | Yes | `sol` / `bsc` / `base` | | `--chain` | Yes | `sol` / `bsc` / `base` / `eth` |
| `--from` | Yes | Wallet address (must match API Key binding) | | `--from` | Yes | Wallet address (must match API Key binding) |
| `--base-token` | Yes | Base token contract address | | `--base-token` | Yes | Base token contract address |
| `--quote-token` | Yes | Quote token contract address | | `--quote-token` | Yes | Quote token contract address |
@@ -473,7 +485,7 @@ Convert `report.input_amount` and `report.output_amount` from smallest unit usin
| Parameter | Required | Description | | Parameter | Required | Description |
|-----------|----------|-------------| |-----------|----------|-------------|
| `--chain` | Yes | `sol` / `bsc` / `base` | | `--chain` | Yes | `sol` / `bsc` / `base` / `eth` |
| `--type` | No | `open` (default) / `history` | | `--type` | No | `open` (default) / `history` |
| `--from` | No | Filter by wallet address | | `--from` | No | Filter by wallet address |
| `--group-tag` | Yes | Filter by order group: `LimitOrder` (limit orders only) / `STMix` (mixed strategy orders: take-profit, stop-loss, trailing take-profit, trailing stop-loss) | | `--group-tag` | Yes | Filter by order group: `LimitOrder` (limit orders only) / `STMix` (mixed strategy orders: take-profit, stop-loss, trailing take-profit, trailing stop-loss) |
@@ -493,7 +505,7 @@ Convert `report.input_amount` and `report.output_amount` from smallest unit usin
| Parameter | Required | Description | | Parameter | Required | Description |
|-----------|----------|-------------| |-----------|----------|-------------|
| `--chain` | Yes | `sol` / `bsc` / `base` | | `--chain` | Yes | `sol` / `bsc` / `base` / `eth` |
| `--from` | Yes | Wallet address (must match API Key binding) | | `--from` | Yes | Wallet address (must match API Key binding) |
| `--order-id` | Yes | Order ID to cancel | | `--order-id` | Yes | Order ID to cancel |
| `--order-type` | No | Order type: `limit_order` (limit order) / `smart_trade` (mixed strategy order: take-profit, stop-loss, trailing take-profit, trailing stop-loss) | | `--order-type` | No | Order type: `limit_order` (limit order) / `smart_trade` (mixed strategy order: take-profit, stop-loss, trailing take-profit, trailing stop-loss) |
+3 -3
View File
@@ -1,7 +1,7 @@
--- ---
name: gmgn-track name: gmgn-track
description: Get real-time crypto buy/sell activity from Smart Money wallets, KOL influencer wallets, and personally followed wallets via GMGN API — alpha signals, whale tracking, meme token copy-trading ideas on Solana, BSC, Base, or Ethereum. Use when user asks what smart money or KOLs are buying, wants whale alerts, on-chain alpha, or copy-trade signals. (For a specific wallet address, use gmgn-portfolio.) description: Get real-time crypto buy/sell activity from Smart Money wallets, KOL influencer wallets, and personally followed wallets via GMGN API — alpha signals, whale tracking, meme token copy-trading ideas on Solana, BSC, Base, or Ethereum. Use when user asks what smart money or KOLs are buying, wants whale alerts, on-chain alpha, or copy-trade signals. (For a specific wallet address, use gmgn-portfolio.)
argument-hint: "<follow-wallet|kol|smartmoney> [--chain <sol|bsc|base|eth>] [--wallet <wallet_address>]" argument-hint: "<follow-wallet|kol|smartmoney> --chain <sol|bsc|base|eth> [--wallet <wallet_address>]"
metadata: metadata:
cliHelp: "gmgn-cli track --help" cliHelp: "gmgn-cli track --help"
--- ---
@@ -55,7 +55,7 @@ Use the `gmgn-cli` tool to query on-chain tracking data based on the user's requ
## Supported Chains ## Supported Chains
`sol` / `bsc` / `base` / `eth` (follow-wallet); `sol` / `bsc` / `base` (kol / smartmoney) `sol` / `bsc` / `base` / `eth`
## Prerequisites ## Prerequisites
@@ -142,7 +142,7 @@ gmgn-cli track smartmoney --chain sol --side sell --limit 10 --raw
| Option | Description | | Option | Description |
|--------|-------------| |--------|-------------|
| `--chain <chain>` | Chain: `sol` / `bsc` / `base` (default `sol`) | | `--chain <chain>` | Required. Chain: `sol` / `bsc` / `base` / `eth` |
| `--limit <n>` | Page size (1200, default 100) | | `--limit <n>` | Page size (1200, default 100) |
| `--side <side>` | Filter by trade direction: `buy` / `sell` (client-side filter — applied locally after fetching results) | | `--side <side>` | Filter by trade direction: `buy` / `sell` (client-side filter — applied locally after fetching results) |
+1 -1
View File
@@ -112,7 +112,7 @@ export function registerPortfolioCommands(program: Command): void {
portfolio portfolio
.command("created-tokens") .command("created-tokens")
.description("Get tokens created by a developer wallet") .description("Get tokens created by a developer wallet")
.requiredOption("--chain <chain>", "Chain: sol / bsc / base") .requiredOption("--chain <chain>", "Chain: sol / bsc / base / eth")
.requiredOption("--wallet <address>", "Developer wallet address") .requiredOption("--wallet <address>", "Developer wallet address")
.option("--order-by <field>", "Sort field: market_cap / token_ath_mc") .option("--order-by <field>", "Sort field: market_cap / token_ath_mc")
.option("--direction <dir>", "Sort direction: asc / desc") .option("--direction <dir>", "Sort direction: asc / desc")
+4 -4
View File
@@ -112,7 +112,7 @@ export function registerSwapCommands(program: Command): void {
program program
.command("multi-swap") .command("multi-swap")
.description("Submit token swaps across multiple wallets concurrently (up to 100 wallets)") .description("Submit token swaps across multiple wallets concurrently (up to 100 wallets)")
.requiredOption("--chain <chain>", "Chain: sol / bsc / base") .requiredOption("--chain <chain>", "Chain: sol / bsc / base / eth")
.requiredOption("--accounts <addresses>", "Comma-separated wallet addresses (all must be bound to the API Key)") .requiredOption("--accounts <addresses>", "Comma-separated wallet addresses (all must be bound to the API Key)")
.requiredOption("--input-token <address>", "Input token contract address") .requiredOption("--input-token <address>", "Input token contract address")
.requiredOption("--output-token <address>", "Output token contract address") .requiredOption("--output-token <address>", "Output token contract address")
@@ -186,7 +186,7 @@ export function registerSwapCommands(program: Command): void {
strategy strategy
.command("create") .command("create")
.description("Create a limit/strategy order (requires private key)") .description("Create a limit/strategy order (requires private key)")
.requiredOption("--chain <chain>", "Chain: sol / bsc / base") .requiredOption("--chain <chain>", "Chain: sol / bsc / base / eth")
.requiredOption("--from <address>", "Wallet address (must match API Key binding)") .requiredOption("--from <address>", "Wallet address (must match API Key binding)")
.requiredOption("--base-token <address>", "Base token contract address") .requiredOption("--base-token <address>", "Base token contract address")
.requiredOption("--quote-token <address>", "Quote token contract address") .requiredOption("--quote-token <address>", "Quote token contract address")
@@ -243,7 +243,7 @@ export function registerSwapCommands(program: Command): void {
strategy strategy
.command("list") .command("list")
.description("List strategy orders (requires private key)") .description("List strategy orders (requires private key)")
.requiredOption("--chain <chain>", "Chain: sol / bsc / base") .requiredOption("--chain <chain>", "Chain: sol / bsc / base / eth")
.option("--type <type>", "open (default) / history") .option("--type <type>", "open (default) / history")
.option("--from <address>", "Filter by wallet address") .option("--from <address>", "Filter by wallet address")
.option("--group-tag <tag>", "Filter by group: LimitOrder / STMix") .option("--group-tag <tag>", "Filter by group: LimitOrder / STMix")
@@ -268,7 +268,7 @@ export function registerSwapCommands(program: Command): void {
strategy strategy
.command("cancel") .command("cancel")
.description("Cancel a strategy order (requires private key)") .description("Cancel a strategy order (requires private key)")
.requiredOption("--chain <chain>", "Chain: sol / bsc / base") .requiredOption("--chain <chain>", "Chain: sol / bsc / base / eth")
.requiredOption("--from <address>", "Wallet address (must match API Key binding)") .requiredOption("--from <address>", "Wallet address (must match API Key binding)")
.requiredOption("--order-id <id>", "Order ID to cancel") .requiredOption("--order-id <id>", "Order ID to cancel")
.option("--order-type <type>", "Order type: limit_order / smart_trade") .option("--order-type <type>", "Order type: limit_order / smart_trade")
+2 -2
View File
@@ -35,7 +35,7 @@ export function registerTrackCommands(program: Command): void {
track track
.command("kol") .command("kol")
.description("Get KOL trade records") .description("Get KOL trade records")
.option("--chain <chain>", "Chain: sol / bsc / base") .requiredOption("--chain <chain>", "Chain: sol / bsc / base / eth")
.option("--limit <n>", "Page size (1200, default 100)", parseInt) .option("--limit <n>", "Page size (1200, default 100)", parseInt)
.option("--side <side>", "Filter by trade direction: buy / sell (client-side filter)") .option("--side <side>", "Filter by trade direction: buy / sell (client-side filter)")
.option("--raw", "Output raw JSON") .option("--raw", "Output raw JSON")
@@ -52,7 +52,7 @@ export function registerTrackCommands(program: Command): void {
track track
.command("smartmoney") .command("smartmoney")
.description("Get Smart Money trade records") .description("Get Smart Money trade records")
.option("--chain <chain>", "Chain: sol / bsc / base") .requiredOption("--chain <chain>", "Chain: sol / bsc / base / eth")
.option("--limit <n>", "Page size (1200, default 100)", parseInt) .option("--limit <n>", "Page size (1200, default 100)", parseInt)
.option("--side <side>", "Filter by trade direction: buy / sell (client-side filter)") .option("--side <side>", "Filter by trade direction: buy / sell (client-side filter)")
.option("--raw", "Output raw JSON") .option("--raw", "Output raw JSON")