clodds 1.2.9 → 1.4.0
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/skills/bundled/acp/SKILL.md +188 -0
- package/dist/skills/bundled/acp/index.d.ts +0 -3
- package/dist/skills/bundled/acp/index.js +1 -1
- package/dist/skills/bundled/acp/index.js.map +1 -1
- package/dist/skills/bundled/agentbets/SKILL.md +19 -0
- package/dist/skills/bundled/agentbets/index.js +1 -1
- package/dist/skills/bundled/agentbets/index.js.map +1 -1
- package/dist/skills/bundled/ai-strategy/SKILL.md +111 -0
- package/dist/skills/bundled/ai-strategy/index.js +1 -1
- package/dist/skills/bundled/ai-strategy/index.js.map +1 -1
- package/dist/skills/bundled/alerts/SKILL.md +87 -0
- package/dist/skills/bundled/analytics/SKILL.md +252 -0
- package/dist/skills/bundled/analytics/index.js +2 -2
- package/dist/skills/bundled/analytics/index.js.map +1 -1
- package/dist/skills/bundled/arbitrage/SKILL.md +287 -0
- package/dist/skills/bundled/arbitrage/index.js +6 -1
- package/dist/skills/bundled/arbitrage/index.js.map +1 -1
- package/dist/skills/bundled/auto-reply/SKILL.md +285 -0
- package/dist/skills/bundled/auto-reply/index.js +2 -2
- package/dist/skills/bundled/auto-reply/index.js.map +1 -1
- package/dist/skills/bundled/automation/SKILL.md +242 -0
- package/dist/skills/bundled/automation/index.js +2 -2
- package/dist/skills/bundled/automation/index.js.map +1 -1
- package/dist/skills/bundled/backtest/SKILL.md +225 -0
- package/dist/skills/bundled/bags/SKILL.md +131 -0
- package/dist/skills/bundled/bankr/SKILL.md +114 -0
- package/dist/skills/bundled/betfair/SKILL.md +113 -0
- package/dist/skills/bundled/binance-futures/SKILL.md +84 -0
- package/dist/skills/bundled/binance-futures/index.d.ts +0 -3
- package/dist/skills/bundled/binance-futures/index.js +1 -2
- package/dist/skills/bundled/binance-futures/index.js.map +1 -1
- package/dist/skills/bundled/botchan/SKILL.md +66 -0
- package/dist/skills/bundled/botchan/index.d.ts +0 -3
- package/dist/skills/bundled/botchan/index.js +0 -1
- package/dist/skills/bundled/botchan/index.js.map +1 -1
- package/dist/skills/bundled/bridge/SKILL.md +215 -0
- package/dist/skills/bundled/bridge/index.js +6 -0
- package/dist/skills/bundled/bridge/index.js.map +1 -1
- package/dist/skills/bundled/bybit-futures/SKILL.md +84 -0
- package/dist/skills/bundled/bybit-futures/index.d.ts +0 -3
- package/dist/skills/bundled/bybit-futures/index.js +0 -1
- package/dist/skills/bundled/bybit-futures/index.js.map +1 -1
- package/dist/skills/bundled/clanker/SKILL.md +125 -0
- package/dist/skills/bundled/clanker/index.d.ts +0 -3
- package/dist/skills/bundled/clanker/index.js +0 -1
- package/dist/skills/bundled/clanker/index.js.map +1 -1
- package/dist/skills/bundled/copy-trading/SKILL.md +285 -0
- package/dist/skills/bundled/copy-trading/index.js +15 -8
- package/dist/skills/bundled/copy-trading/index.js.map +1 -1
- package/dist/skills/bundled/copy-trading-solana/SKILL.md +66 -0
- package/dist/skills/bundled/credentials/SKILL.md +261 -0
- package/dist/skills/bundled/credentials/index.js +4 -0
- package/dist/skills/bundled/credentials/index.js.map +1 -1
- package/dist/skills/bundled/crypto-hft/SKILL.md +121 -0
- package/dist/skills/bundled/crypto-hft/index.js +18 -3
- package/dist/skills/bundled/crypto-hft/index.js.map +1 -1
- package/dist/skills/bundled/dca/SKILL.md +27 -0
- package/dist/skills/bundled/dex/SKILL.md +92 -0
- package/dist/skills/bundled/dex/index.js +77 -29
- package/dist/skills/bundled/dex/index.js.map +1 -1
- package/dist/skills/bundled/divergence/SKILL.md +83 -0
- package/dist/skills/bundled/doctor/SKILL.md +267 -0
- package/dist/skills/bundled/doctor/index.js +2 -8
- package/dist/skills/bundled/doctor/index.js.map +1 -1
- package/dist/skills/bundled/drift/SKILL.md +53 -0
- package/dist/skills/bundled/drift-sdk/SKILL.md +103 -0
- package/dist/skills/bundled/drift-sdk/index.d.ts +0 -3
- package/dist/skills/bundled/drift-sdk/index.js +0 -1
- package/dist/skills/bundled/drift-sdk/index.js.map +1 -1
- package/dist/skills/bundled/edge/SKILL.md +84 -0
- package/dist/skills/bundled/embeddings/SKILL.md +244 -0
- package/dist/skills/bundled/endaoment/SKILL.md +65 -0
- package/dist/skills/bundled/endaoment/index.d.ts +0 -3
- package/dist/skills/bundled/endaoment/index.js +0 -1
- package/dist/skills/bundled/endaoment/index.js.map +1 -1
- package/dist/skills/bundled/ens/SKILL.md +63 -0
- package/dist/skills/bundled/ens/index.d.ts +0 -3
- package/dist/skills/bundled/ens/index.js +0 -1
- package/dist/skills/bundled/ens/index.js.map +1 -1
- package/dist/skills/bundled/erc8004/SKILL.md +79 -0
- package/dist/skills/bundled/erc8004/index.d.ts +0 -3
- package/dist/skills/bundled/erc8004/index.js +0 -1
- package/dist/skills/bundled/erc8004/index.js.map +1 -1
- package/dist/skills/bundled/execution/SKILL.md +278 -0
- package/dist/skills/bundled/farcaster/SKILL.md +80 -0
- package/dist/skills/bundled/farcaster/index.js +12 -0
- package/dist/skills/bundled/farcaster/index.js.map +1 -1
- package/dist/skills/bundled/features/SKILL.md +20 -0
- package/dist/skills/bundled/feeds/SKILL.md +288 -0
- package/dist/skills/bundled/harden/SKILL.md +74 -0
- package/dist/skills/bundled/history/SKILL.md +257 -0
- package/dist/skills/bundled/hyperliquid/SKILL.md +200 -0
- package/dist/skills/bundled/hyperliquid/index.d.ts +0 -3
- package/dist/skills/bundled/hyperliquid/index.js +0 -1
- package/dist/skills/bundled/hyperliquid/index.js.map +1 -1
- package/dist/skills/bundled/identity/SKILL.md +228 -0
- package/dist/skills/bundled/identity/index.js +2 -2
- package/dist/skills/bundled/identity/index.js.map +1 -1
- package/dist/skills/bundled/integrations/SKILL.md +321 -0
- package/dist/skills/bundled/integrations/index.js +2 -2
- package/dist/skills/bundled/integrations/index.js.map +1 -1
- package/dist/skills/bundled/jupiter/SKILL.md +163 -0
- package/dist/skills/bundled/jupiter/index.js +2 -2
- package/dist/skills/bundled/kamino/SKILL.md +69 -0
- package/dist/skills/bundled/ledger/SKILL.md +20 -0
- package/dist/skills/bundled/lighter/SKILL.md +83 -0
- package/dist/skills/bundled/lighter/index.d.ts +0 -3
- package/dist/skills/bundled/lighter/index.js +0 -1
- package/dist/skills/bundled/lighter/index.js.map +1 -1
- package/dist/skills/bundled/marginfi/SKILL.md +62 -0
- package/dist/skills/bundled/market-index/SKILL.md +242 -0
- package/dist/skills/bundled/market-index/index.js +1 -3
- package/dist/skills/bundled/market-index/index.js.map +1 -1
- package/dist/skills/bundled/markets/SKILL.md +49 -0
- package/dist/skills/bundled/mcp/SKILL.md +235 -0
- package/dist/skills/bundled/mcp/index.js +1 -3
- package/dist/skills/bundled/mcp/index.js.map +1 -1
- package/dist/skills/bundled/memory/SKILL.md +209 -0
- package/dist/skills/bundled/metaculus/SKILL.md +62 -0
- package/dist/skills/bundled/metaculus/index.js +4 -1
- package/dist/skills/bundled/metaculus/index.js.map +1 -1
- package/dist/skills/bundled/meteora/SKILL.md +28 -0
- package/dist/skills/bundled/meteora-dbc/SKILL.md +25 -0
- package/dist/skills/bundled/metrics/SKILL.md +338 -0
- package/dist/skills/bundled/mev/SKILL.md +239 -0
- package/dist/skills/bundled/mev/index.js +2 -2
- package/dist/skills/bundled/mev/index.js.map +1 -1
- package/dist/skills/bundled/mexc-futures/SKILL.md +86 -0
- package/dist/skills/bundled/mexc-futures/index.d.ts +0 -3
- package/dist/skills/bundled/mexc-futures/index.js +0 -1
- package/dist/skills/bundled/mexc-futures/index.js.map +1 -1
- package/dist/skills/bundled/mm/SKILL.md +142 -0
- package/dist/skills/bundled/mm/index.js +28 -27
- package/dist/skills/bundled/mm/index.js.map +1 -1
- package/dist/skills/bundled/monitoring/SKILL.md +249 -0
- package/dist/skills/bundled/news/SKILL.md +95 -0
- package/dist/skills/bundled/news/index.js +1 -2
- package/dist/skills/bundled/news/index.js.map +1 -1
- package/dist/skills/bundled/onchainkit/SKILL.md +83 -0
- package/dist/skills/bundled/opinion/SKILL.md +87 -0
- package/dist/skills/bundled/opportunity/SKILL.md +308 -0
- package/dist/skills/bundled/orca/SKILL.md +28 -0
- package/dist/skills/bundled/orca/index.js +11 -7
- package/dist/skills/bundled/orca/index.js.map +1 -1
- package/dist/skills/bundled/pairing/SKILL.md +275 -0
- package/dist/skills/bundled/pancakeswap/SKILL.md +93 -0
- package/dist/skills/bundled/pancakeswap/index.d.ts +0 -3
- package/dist/skills/bundled/pancakeswap/index.js +0 -1
- package/dist/skills/bundled/pancakeswap/index.js.map +1 -1
- package/dist/skills/bundled/percolator/SKILL.md +22 -0
- package/dist/skills/bundled/permissions/SKILL.md +269 -0
- package/dist/skills/bundled/permissions/index.js +2 -2
- package/dist/skills/bundled/permissions/index.js.map +1 -1
- package/dist/skills/bundled/plugins/SKILL.md +263 -0
- package/dist/skills/bundled/plugins/index.js +2 -2
- package/dist/skills/bundled/plugins/index.js.map +1 -1
- package/dist/skills/bundled/portfolio/SKILL.md +161 -0
- package/dist/skills/bundled/portfolio/index.js +1 -1
- package/dist/skills/bundled/portfolio/index.js.map +1 -1
- package/dist/skills/bundled/portfolio-sync/SKILL.md +466 -0
- package/dist/skills/bundled/positions/SKILL.md +262 -0
- package/dist/skills/bundled/predictfun/SKILL.md +109 -0
- package/dist/skills/bundled/predictfun/index.js +1 -1
- package/dist/skills/bundled/predictfun/index.js.map +1 -1
- package/dist/skills/bundled/predictit/SKILL.md +66 -0
- package/dist/skills/bundled/predictit/index.js +4 -1
- package/dist/skills/bundled/predictit/index.js.map +1 -1
- package/dist/skills/bundled/presence/SKILL.md +217 -0
- package/dist/skills/bundled/presence/index.js +2 -2
- package/dist/skills/bundled/presence/index.js.map +1 -1
- package/dist/skills/bundled/processes/SKILL.md +254 -0
- package/dist/skills/bundled/pump-swarm/SKILL.md +309 -0
- package/dist/skills/bundled/pumpfun/SKILL.md +145 -0
- package/dist/skills/bundled/pumpfun/index.js +82 -8
- package/dist/skills/bundled/pumpfun/index.js.map +1 -1
- package/dist/skills/bundled/qmd/SKILL.md +129 -0
- package/dist/skills/bundled/qrcoin/SKILL.md +60 -0
- package/dist/skills/bundled/qrcoin/index.d.ts +0 -3
- package/dist/skills/bundled/qrcoin/index.js +0 -1
- package/dist/skills/bundled/qrcoin/index.js.map +1 -1
- package/dist/skills/bundled/raydium/SKILL.md +198 -0
- package/dist/skills/bundled/remote/SKILL.md +201 -0
- package/dist/skills/bundled/research/SKILL.md +83 -0
- package/dist/skills/bundled/research/index.js +2 -2
- package/dist/skills/bundled/research/index.js.map +1 -1
- package/dist/skills/bundled/risk/SKILL.md +323 -0
- package/dist/skills/bundled/router/SKILL.md +233 -0
- package/dist/skills/bundled/routing/SKILL.md +258 -0
- package/dist/skills/bundled/sandbox/SKILL.md +257 -0
- package/dist/skills/bundled/search-config/SKILL.md +257 -0
- package/dist/skills/bundled/search-config/index.js +2 -2
- package/dist/skills/bundled/search-config/index.js.map +1 -1
- package/dist/skills/bundled/sessions/SKILL.md +251 -0
- package/dist/skills/bundled/sessions/index.js +1 -1
- package/dist/skills/bundled/sessions/index.js.map +1 -1
- package/dist/skills/bundled/setup/SKILL.md +53 -0
- package/dist/skills/bundled/shield/SKILL.md +21 -0
- package/dist/skills/bundled/signals/SKILL.md +106 -0
- package/dist/skills/bundled/signals/index.d.ts +0 -3
- package/dist/skills/bundled/signals/index.js +3 -4
- package/dist/skills/bundled/signals/index.js.map +1 -1
- package/dist/skills/bundled/sizing/SKILL.md +238 -0
- package/dist/skills/bundled/slippage/SKILL.md +306 -0
- package/dist/skills/bundled/smarkets/SKILL.md +107 -0
- package/dist/skills/bundled/smarkets/index.js +3 -3
- package/dist/skills/bundled/smarkets/index.js.map +1 -1
- package/dist/skills/bundled/solend/SKILL.md +63 -0
- package/dist/skills/bundled/strategy/SKILL.md +266 -0
- package/dist/skills/bundled/streaming/SKILL.md +150 -0
- package/dist/skills/bundled/streaming/index.js +2 -2
- package/dist/skills/bundled/streaming/index.js.map +1 -1
- package/dist/skills/bundled/tailscale/SKILL.md +249 -0
- package/dist/skills/bundled/tailscale/index.js +2 -2
- package/dist/skills/bundled/tailscale/index.js.map +1 -1
- package/dist/skills/bundled/ticks/SKILL.md +61 -0
- package/dist/skills/bundled/token-security/SKILL.md +18 -0
- package/dist/skills/bundled/trading-evm/SKILL.md +329 -0
- package/dist/skills/bundled/trading-futures/SKILL.md +865 -0
- package/dist/skills/bundled/trading-kalshi/SKILL.md +629 -0
- package/dist/skills/bundled/trading-kalshi/index.js +2 -0
- package/dist/skills/bundled/trading-kalshi/index.js.map +1 -1
- package/dist/skills/bundled/trading-manifold/SKILL.md +387 -0
- package/dist/skills/bundled/trading-polymarket/SKILL.md +1080 -0
- package/dist/skills/bundled/trading-polymarket/index.js +28 -19
- package/dist/skills/bundled/trading-polymarket/index.js.map +1 -1
- package/dist/skills/bundled/trading-solana/SKILL.md +418 -0
- package/dist/skills/bundled/trading-solana/index.js +1 -1
- package/dist/skills/bundled/trading-solana/index.js.map +1 -1
- package/dist/skills/bundled/trading-system/SKILL.md +290 -0
- package/dist/skills/bundled/triggers/SKILL.md +433 -0
- package/dist/skills/bundled/tts/SKILL.md +220 -0
- package/dist/skills/bundled/tweet-ideas/SKILL.md +77 -0
- package/dist/skills/bundled/usage/SKILL.md +239 -0
- package/dist/skills/bundled/usage/index.js +2 -2
- package/dist/skills/bundled/usage/index.js.map +1 -1
- package/dist/skills/bundled/veil/SKILL.md +76 -0
- package/dist/skills/bundled/veil/index.d.ts +0 -3
- package/dist/skills/bundled/veil/index.js +0 -1
- package/dist/skills/bundled/veil/index.js.map +1 -1
- package/dist/skills/bundled/verify/SKILL.md +199 -0
- package/dist/skills/bundled/verify/index.d.ts +0 -3
- package/dist/skills/bundled/verify/index.js +0 -1
- package/dist/skills/bundled/verify/index.js.map +1 -1
- package/dist/skills/bundled/virtuals/SKILL.md +82 -0
- package/dist/skills/bundled/voice/SKILL.md +217 -0
- package/dist/skills/bundled/voice/index.js +2 -2
- package/dist/skills/bundled/voice/index.js.map +1 -1
- package/dist/skills/bundled/weather/SKILL.md +80 -0
- package/dist/skills/bundled/weather/index.js +3 -0
- package/dist/skills/bundled/weather/index.js.map +1 -1
- package/dist/skills/bundled/webhooks/SKILL.md +297 -0
- package/dist/skills/bundled/webhooks/index.js +2 -2
- package/dist/skills/bundled/webhooks/index.js.map +1 -1
- package/dist/skills/bundled/whale-tracking/SKILL.md +287 -0
- package/dist/skills/bundled/whale-tracking/index.js +2 -2
- package/dist/skills/bundled/whale-tracking/index.js.map +1 -1
- package/dist/skills/bundled/yoink/SKILL.md +54 -0
- package/dist/skills/bundled/yoink/index.d.ts +0 -3
- package/dist/skills/bundled/yoink/index.js +0 -1
- package/dist/skills/bundled/yoink/index.js.map +1 -1
- package/dist/skills/executor.js +5 -3
- package/dist/skills/executor.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pump-swarm
|
|
3
|
+
description: "Coordinated multi-wallet trading on Pump.fun"
|
|
4
|
+
command: swarm
|
|
5
|
+
emoji: "🐝"
|
|
6
|
+
gates:
|
|
7
|
+
envs:
|
|
8
|
+
- SOLANA_PRIVATE_KEY
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Pump.fun Swarm Trading
|
|
12
|
+
|
|
13
|
+
Coordinate up to **20 wallets** to execute synchronized trades on Pump.fun tokens.
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Set up wallets
|
|
19
|
+
export SOLANA_PRIVATE_KEY="your-main-wallet-key" # wallet_0
|
|
20
|
+
export SOLANA_SWARM_KEY_1="second-wallet-key" # wallet_1
|
|
21
|
+
export SOLANA_SWARM_KEY_2="third-wallet-key" # wallet_2
|
|
22
|
+
# ... up to SOLANA_SWARM_KEY_20
|
|
23
|
+
|
|
24
|
+
# Optional
|
|
25
|
+
export SOLANA_RPC_URL="https://your-rpc.com"
|
|
26
|
+
export PUMPPORTAL_API_KEY="your-api-key"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Commands
|
|
30
|
+
|
|
31
|
+
### Wallet Management
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
/swarm wallets List all swarm wallets with addresses
|
|
35
|
+
/swarm balances Fetch SOL balances from chain
|
|
36
|
+
/swarm enable <wallet_id> Enable a wallet for trading
|
|
37
|
+
/swarm disable <wallet_id> Disable a wallet
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Trading
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
/swarm buy <mint> <sol> [options] Buy with all enabled wallets
|
|
44
|
+
/swarm sell <mint> <amount|%> [opts] Sell from wallets with positions
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Position Management
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
/swarm position <mint> Show cached token positions
|
|
51
|
+
/swarm refresh <mint> Fetch fresh positions from chain (required before sell)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Execution Modes
|
|
55
|
+
|
|
56
|
+
| Mode | Flag | Best For | Description |
|
|
57
|
+
|------|------|----------|-------------|
|
|
58
|
+
| **Parallel** | `--parallel` | Speed (>5 wallets) | All wallets execute simultaneously |
|
|
59
|
+
| **Bundle** | `--bundle` | Atomicity (≤5) | Single Jito bundle, all-or-nothing |
|
|
60
|
+
| **Multi-Bundle** | `--multi-bundle` | Atomicity (6-20) | Multiple Jito bundles in parallel |
|
|
61
|
+
| **Sequential** | `--sequential` | Stealth | Staggered 200-400ms delays |
|
|
62
|
+
|
|
63
|
+
### Auto Mode Selection (Default)
|
|
64
|
+
- 1 wallet → Parallel (direct submit)
|
|
65
|
+
- 2-5 wallets → Single Jito Bundle
|
|
66
|
+
- 6-20 wallets → Multi-Bundle (chunks of 5)
|
|
67
|
+
|
|
68
|
+
## Other Options
|
|
69
|
+
|
|
70
|
+
| Option | Description |
|
|
71
|
+
|--------|-------------|
|
|
72
|
+
| `--preset <name>` | Apply a saved preset |
|
|
73
|
+
| `--wallets <id1,id2>` | Use specific wallets only |
|
|
74
|
+
| `--slippage <bps>` | Slippage tolerance (default: 500 = 5%) |
|
|
75
|
+
| `--pool <pool>` | Pool: pump, raydium, auto (pumpfun only) |
|
|
76
|
+
| `--dex <dex>` | DEX: pumpfun (default), bags, meteora |
|
|
77
|
+
| `--pool-address <addr>` | Specific pool address (for Meteora) |
|
|
78
|
+
|
|
79
|
+
## Examples
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Buy 0.1 SOL worth on each enabled wallet (auto mode)
|
|
83
|
+
/swarm buy ABC123mint... 0.1
|
|
84
|
+
|
|
85
|
+
# Buy with specific wallets only
|
|
86
|
+
/swarm buy ABC123mint... 0.2 --wallets wallet_0,wallet_1
|
|
87
|
+
|
|
88
|
+
# Buy with a preset
|
|
89
|
+
/swarm buy ABC123mint... 0.1 --preset stealth
|
|
90
|
+
|
|
91
|
+
# Sell 100% with multiple Jito bundles (for >5 wallets)
|
|
92
|
+
/swarm sell ABC123mint... 100% --multi-bundle
|
|
93
|
+
|
|
94
|
+
# Sell 50% with staggered timing (stealth mode)
|
|
95
|
+
/swarm sell ABC123mint... 50% --sequential
|
|
96
|
+
|
|
97
|
+
# Sell with preset
|
|
98
|
+
/swarm sell ABC123mint... 100% --preset fast
|
|
99
|
+
|
|
100
|
+
# Check positions before selling
|
|
101
|
+
/swarm refresh ABC123mint...
|
|
102
|
+
/swarm position ABC123mint...
|
|
103
|
+
|
|
104
|
+
# Multi-DEX examples
|
|
105
|
+
/swarm buy ABC123mint... 0.1 --dex bags # Buy on Bags.fm
|
|
106
|
+
/swarm buy ABC123mint... 0.1 --dex meteora # Buy on Meteora DLMM
|
|
107
|
+
/swarm sell ABC123mint... 100% --dex bags # Sell on Bags.fm
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Execution Modes Deep Dive
|
|
111
|
+
|
|
112
|
+
### Parallel (Default for >5 wallets)
|
|
113
|
+
- **Speed:** All wallets submit simultaneously via `Promise.all`
|
|
114
|
+
- **Risk:** No atomicity - some may succeed, others fail
|
|
115
|
+
- **Use when:** Speed is priority, or bundles keep failing
|
|
116
|
+
|
|
117
|
+
### Jito Bundle (Default for 2-5 wallets)
|
|
118
|
+
- **Atomic:** All transactions succeed or all fail together
|
|
119
|
+
- **MEV-protected:** No front-running between your own wallets
|
|
120
|
+
- **Cost:** ~10,000 lamports tip per bundle
|
|
121
|
+
- **Limit:** Max 5 transactions per bundle (Jito constraint)
|
|
122
|
+
|
|
123
|
+
### Multi-Bundle (Recommended for 6-20 wallets)
|
|
124
|
+
- **Chunked:** Splits wallets into groups of 5
|
|
125
|
+
- **Parallel bundles:** All chunks submit simultaneously
|
|
126
|
+
- **Partial atomicity:** Each chunk is atomic, but chunks are independent
|
|
127
|
+
- **Example:** 12 wallets → 3 bundles of [5, 5, 2] wallets
|
|
128
|
+
|
|
129
|
+
### Sequential (Stealth mode)
|
|
130
|
+
- **Staggered:** 200-400ms random delay between wallets
|
|
131
|
+
- **Amount variance:** ±5% to avoid detection patterns
|
|
132
|
+
- **Rate limited:** 5 seconds minimum between trades per wallet
|
|
133
|
+
- **Use when:** Want to avoid pattern detection
|
|
134
|
+
|
|
135
|
+
## How It Works
|
|
136
|
+
|
|
137
|
+
### Buy Flow
|
|
138
|
+
1. Refreshes SOL balances from chain
|
|
139
|
+
2. Filters wallets with sufficient balance (≥0.01 SOL + amount)
|
|
140
|
+
3. Builds transaction for each wallet via PumpPortal API
|
|
141
|
+
4. Signs all transactions locally
|
|
142
|
+
5. Submits via selected execution mode
|
|
143
|
+
6. Reports results per wallet
|
|
144
|
+
|
|
145
|
+
### Sell Flow
|
|
146
|
+
1. **Fetches actual token balances from chain** (critical!)
|
|
147
|
+
2. Filters wallets with positions
|
|
148
|
+
3. Calculates sell amount (% of position or exact)
|
|
149
|
+
4. Builds and signs transactions
|
|
150
|
+
5. Submits via selected execution mode
|
|
151
|
+
6. Reports results per wallet
|
|
152
|
+
|
|
153
|
+
## Safety Features
|
|
154
|
+
|
|
155
|
+
- **Balance check:** Verifies sufficient SOL before buy
|
|
156
|
+
- **Position check:** Fetches real token balances before sell
|
|
157
|
+
- **Max amount:** Rejects buy amounts > 10 SOL per wallet
|
|
158
|
+
- **Confirmation timeout:** 60 second timeout per transaction
|
|
159
|
+
- **Error reporting:** Shows detailed errors per wallet
|
|
160
|
+
- **Bundle fallback:** Failed bundles automatically retry as parallel
|
|
161
|
+
|
|
162
|
+
## Configuration
|
|
163
|
+
|
|
164
|
+
| Env Variable | Description |
|
|
165
|
+
|--------------|-------------|
|
|
166
|
+
| `SOLANA_PRIVATE_KEY` | Main wallet (wallet_0) |
|
|
167
|
+
| `SOLANA_SWARM_KEY_1..20` | Additional swarm wallets |
|
|
168
|
+
| `SOLANA_RPC_URL` | Custom RPC endpoint (faster = better) |
|
|
169
|
+
| `PUMPPORTAL_API_KEY` | PumpPortal API key (optional, for pumpfun) |
|
|
170
|
+
| `BAGS_API_KEY` | Bags.fm API key (required for bags DEX) |
|
|
171
|
+
|
|
172
|
+
## Multi-DEX Support
|
|
173
|
+
|
|
174
|
+
The swarm system supports trading across multiple DEXes:
|
|
175
|
+
|
|
176
|
+
| DEX | Flag | Best For | Requires |
|
|
177
|
+
|-----|------|----------|----------|
|
|
178
|
+
| Pump.fun | `--dex pumpfun` (default) | Memecoins, new launches | `PUMPPORTAL_API_KEY` (optional) |
|
|
179
|
+
| Bags.fm | `--dex bags` | Bags-launched tokens | `BAGS_API_KEY` |
|
|
180
|
+
| Meteora | `--dex meteora` | DLMM pools, concentrated liquidity | - |
|
|
181
|
+
|
|
182
|
+
### Multi-DEX Examples
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Buy on Pump.fun (default)
|
|
186
|
+
/swarm buy ABC123... 0.1
|
|
187
|
+
|
|
188
|
+
# Buy on Bags.fm
|
|
189
|
+
/swarm buy ABC123... 0.1 --dex bags
|
|
190
|
+
|
|
191
|
+
# Buy on Meteora with specific pool
|
|
192
|
+
/swarm buy ABC123... 0.1 --dex meteora --pool-address <pool_address>
|
|
193
|
+
|
|
194
|
+
# Sell on Bags.fm with stealth preset
|
|
195
|
+
/swarm sell ABC123... 100% --dex bags --preset stealth
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Notes
|
|
199
|
+
- Default DEX is `pumpfun` for backward compatibility
|
|
200
|
+
- Bags requires `BAGS_API_KEY` - will error if missing
|
|
201
|
+
- Meteora can auto-discover pools or use a specific `--pool-address`
|
|
202
|
+
- All execution modes (parallel, bundle, sequential) work with all DEXes
|
|
203
|
+
- Presets work with all DEXes
|
|
204
|
+
|
|
205
|
+
## Agent Tools (12)
|
|
206
|
+
|
|
207
|
+
| Tool | Description |
|
|
208
|
+
|------|-------------|
|
|
209
|
+
| `swarm_wallets` | List all swarm wallets |
|
|
210
|
+
| `swarm_balances` | Refresh SOL balances from chain |
|
|
211
|
+
| `swarm_buy` | Coordinated buy across wallets (supports `preset` param) |
|
|
212
|
+
| `swarm_sell` | Coordinated sell across wallets (supports `preset` param) |
|
|
213
|
+
| `swarm_position` | Get cached positions |
|
|
214
|
+
| `swarm_refresh` | Fetch fresh positions from chain |
|
|
215
|
+
| `swarm_enable` | Enable a wallet |
|
|
216
|
+
| `swarm_disable` | Disable a wallet |
|
|
217
|
+
| `swarm_preset_save` | Save a trading preset |
|
|
218
|
+
| `swarm_preset_list` | List saved presets |
|
|
219
|
+
| `swarm_preset_get` | Get preset details |
|
|
220
|
+
| `swarm_preset_delete` | Delete a preset |
|
|
221
|
+
|
|
222
|
+
## Scaling Notes
|
|
223
|
+
|
|
224
|
+
- **Max wallets:** 20 (wallet_0 + SOLANA_SWARM_KEY_1..20)
|
|
225
|
+
- **Jito bundle limit:** 5 txs per bundle (handled automatically)
|
|
226
|
+
- **Multi-bundle parallel:** All bundles submit simultaneously
|
|
227
|
+
- **RPC recommendation:** Use dedicated RPC for best performance
|
|
228
|
+
- **Tip amount:** 10,000 lamports per bundle (~$0.002)
|
|
229
|
+
|
|
230
|
+
## Presets
|
|
231
|
+
|
|
232
|
+
Save and reuse trading configurations across tokens and strategies.
|
|
233
|
+
|
|
234
|
+
### Preset Commands
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
/swarm preset save <name> [options] Save a preset
|
|
238
|
+
/swarm preset list [type] List presets
|
|
239
|
+
/swarm preset show <name> Show preset details
|
|
240
|
+
/swarm preset delete <name> Delete a preset
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Preset Save Options
|
|
244
|
+
|
|
245
|
+
| Option | Description |
|
|
246
|
+
|--------|-------------|
|
|
247
|
+
| `--type <type>` | Preset type: strategy, token, wallet_group |
|
|
248
|
+
| `--desc "..."` | Preset description |
|
|
249
|
+
| `--mint <addr>` | Token address (for token presets) |
|
|
250
|
+
| `--amount <sol>` | Default SOL per wallet |
|
|
251
|
+
| `--slippage <bps>` | Slippage in basis points |
|
|
252
|
+
| `--pool <pool>` | Pool: pump, raydium, auto |
|
|
253
|
+
| `--mode <mode>` | parallel, bundle, multi-bundle, sequential |
|
|
254
|
+
| `--wallets <ids>` | Wallet IDs (for wallet_group presets) |
|
|
255
|
+
|
|
256
|
+
### Built-in Presets
|
|
257
|
+
|
|
258
|
+
| Name | Mode | Slippage | Pool | Use Case |
|
|
259
|
+
|------|------|----------|------|----------|
|
|
260
|
+
| `fast` | parallel | 5% | auto | Speed priority |
|
|
261
|
+
| `atomic` | multi-bundle | 5% | auto | All-or-nothing execution |
|
|
262
|
+
| `stealth` | sequential | 3% | auto | Pattern avoidance |
|
|
263
|
+
| `aggressive` | parallel | 10% | pump | High volatility tokens |
|
|
264
|
+
| `safe` | bundle | 2% | auto | Conservative trading |
|
|
265
|
+
|
|
266
|
+
### Preset Examples
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
# Create a custom strategy preset
|
|
270
|
+
/swarm preset save my_stealth --type strategy --mode sequential --slippage 300
|
|
271
|
+
|
|
272
|
+
# Create a token preset for BONK
|
|
273
|
+
/swarm preset save bonk_entry --type token --mint DezXAZ... --slippage 1000 --amount 0.1
|
|
274
|
+
|
|
275
|
+
# Create a wallet group preset
|
|
276
|
+
/swarm preset save top5 --type wallet_group --wallets wallet_0,wallet_1,wallet_2,wallet_3,wallet_4
|
|
277
|
+
|
|
278
|
+
# List all presets
|
|
279
|
+
/swarm preset list
|
|
280
|
+
|
|
281
|
+
# List only strategy presets
|
|
282
|
+
/swarm preset list strategy
|
|
283
|
+
|
|
284
|
+
# Use preset in trade
|
|
285
|
+
/swarm buy ABC... 0.1 --preset my_stealth
|
|
286
|
+
/swarm sell ABC... 100% --preset fast
|
|
287
|
+
|
|
288
|
+
# Delete a preset
|
|
289
|
+
/swarm preset delete old_preset
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Preset Types
|
|
293
|
+
|
|
294
|
+
| Type | Purpose |
|
|
295
|
+
|------|---------|
|
|
296
|
+
| `strategy` | Reusable trading settings (mode, slippage, pool) |
|
|
297
|
+
| `token` | Token-specific settings with saved mint address |
|
|
298
|
+
| `wallet_group` | Named wallet combinations for specific trades |
|
|
299
|
+
|
|
300
|
+
## Troubleshooting
|
|
301
|
+
|
|
302
|
+
| Issue | Solution |
|
|
303
|
+
|-------|----------|
|
|
304
|
+
| Bundle keeps failing | Try `--parallel` or check network congestion |
|
|
305
|
+
| Positions not showing | Run `/swarm refresh <mint>` first |
|
|
306
|
+
| Insufficient balance | Check with `/swarm balances` |
|
|
307
|
+
| Slow execution | Use dedicated RPC via `SOLANA_RPC_URL` |
|
|
308
|
+
| Some wallets skipped | Wallet disabled or insufficient balance |
|
|
309
|
+
| Preset not found | Check name with `/swarm preset list` |
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pumpfun
|
|
3
|
+
description: "Pump.fun - Complete Solana memecoin launchpad. Discovery, trending, gainers, losers, token data all work without a key. Trading requires SOLANA_PRIVATE_KEY."
|
|
4
|
+
command: pump
|
|
5
|
+
emoji: "🚀"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Pump.fun - Complete API Coverage (32 Tools)
|
|
9
|
+
|
|
10
|
+
Pump.fun is the leading Solana memecoin launchpad with bonding curve trading.
|
|
11
|
+
|
|
12
|
+
## Trading
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/pump buy <mint> <amount> [options] Buy tokens (amount in SOL)
|
|
16
|
+
/pump sell <mint> <amount|%> [options] Sell tokens (amount or percentage)
|
|
17
|
+
/pump quote <mint> <amount> <action> Get swap quote
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Options:**
|
|
21
|
+
- `--pool <pool>` - Pool: pump, raydium, pump-amm, launchlab, bonk, auto
|
|
22
|
+
- `--slippage <bps>` - Slippage in basis points (default: 500 = 5%)
|
|
23
|
+
- `--priority <lamports>` - Priority fee for faster execution
|
|
24
|
+
|
|
25
|
+
**Examples:**
|
|
26
|
+
```
|
|
27
|
+
/pump buy ABC123... 0.1
|
|
28
|
+
/pump buy ABC123... 0.5 --pool auto --slippage 1000
|
|
29
|
+
/pump sell ABC123... 100%
|
|
30
|
+
/pump sell ABC123... 50% --pool raydium
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Discovery
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
/pump trending Top tokens by 24h volume (DexScreener enriched)
|
|
37
|
+
/pump gainers Top 24h price gainers
|
|
38
|
+
/pump losers Top 24h price losers
|
|
39
|
+
/pump hot Most active right now (1h transactions)
|
|
40
|
+
/pump new-hot Hottest new tokens by volume
|
|
41
|
+
/pump new Recently created tokens
|
|
42
|
+
/pump live Currently trading tokens
|
|
43
|
+
/pump graduated Tokens migrated to Raydium
|
|
44
|
+
/pump search <query> Search tokens by name/symbol
|
|
45
|
+
/pump volatile High volatility tokens
|
|
46
|
+
/pump koth King of the Hill (30-35K mcap)
|
|
47
|
+
/pump for-you Personalized recommendations
|
|
48
|
+
/pump metas Trending narratives/keywords
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Token Data
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
/pump token <mint> Full token info
|
|
55
|
+
/pump stats <mint> Volume, txns, liquidity, price change (DexScreener)
|
|
56
|
+
/pump price <mint> Current price + 24h stats
|
|
57
|
+
/pump holders <mint> Top holders list
|
|
58
|
+
/pump trades <mint> [--limit N] Recent trades for token
|
|
59
|
+
/pump chart <mint> [--interval X] OHLCV price chart
|
|
60
|
+
/pump similar <mint> Find similar tokens
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Intervals:** 1m, 5m, 15m, 1h, 4h, 1d
|
|
64
|
+
|
|
65
|
+
## Creator Tools
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
/pump user-coins <address> Tokens created by wallet
|
|
69
|
+
/pump create <name> <symbol> <desc> Launch new token
|
|
70
|
+
/pump claim <mint> Claim creator fees
|
|
71
|
+
/pump ipfs-upload <name> <symbol> <desc> Upload metadata to IPFS
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Create Options:**
|
|
75
|
+
- `--image <url>` - Token image URL
|
|
76
|
+
- `--twitter <url>` - Twitter link
|
|
77
|
+
- `--telegram <url>` - Telegram link
|
|
78
|
+
- `--website <url>` - Website link
|
|
79
|
+
- `--initial <SOL>` - Initial buy amount
|
|
80
|
+
|
|
81
|
+
## Platform Data
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
/pump latest-trades [--limit N] Latest trades platform-wide
|
|
85
|
+
/pump sol-price Current SOL price
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Monitoring (WebSocket)
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
/pump watch <mint> Watch token for real-time trades
|
|
92
|
+
/pump snipe <symbol> Wait for token with symbol to launch
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Configuration
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
export SOLANA_PRIVATE_KEY="your-private-key"
|
|
99
|
+
export PUMPPORTAL_API_KEY="your-api-key" # Optional, for trading API
|
|
100
|
+
export SOLANA_RPC_URL="your-rpc-url" # Optional, custom RPC
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Pool Options
|
|
104
|
+
|
|
105
|
+
| Pool | Description |
|
|
106
|
+
|------|-------------|
|
|
107
|
+
| `pump` | Pump.fun bonding curve (default) |
|
|
108
|
+
| `raydium` | Raydium AMM (graduated tokens) |
|
|
109
|
+
| `pump-amm` | Pump.fun native AMM |
|
|
110
|
+
| `launchlab` | LaunchLab pools |
|
|
111
|
+
| `raydium-cpmm` | Raydium CPMM pools |
|
|
112
|
+
| `bonk` | Bonk pools |
|
|
113
|
+
| `auto` | Automatic best route |
|
|
114
|
+
|
|
115
|
+
## API Sources
|
|
116
|
+
|
|
117
|
+
- **Trading:** PumpPortal (pumpportal.fun) - 0.5% fee
|
|
118
|
+
- **Data:** Pump.fun Frontend API v3 (frontend-api-v3.pump.fun)
|
|
119
|
+
- **Analytics:** Advanced API v2 (advanced-api-v2.pump.fun)
|
|
120
|
+
- **Volatility:** Volatility API v2 (volatility-api-v2.pump.fun)
|
|
121
|
+
- **WebSocket:** wss://pumpportal.fun/api/data
|
|
122
|
+
|
|
123
|
+
## Complete Tool List (32 Tools)
|
|
124
|
+
|
|
125
|
+
| Category | Tools |
|
|
126
|
+
|----------|-------|
|
|
127
|
+
| **Trading** | trade (buy/sell), quote |
|
|
128
|
+
| **Discovery** | trending, gainers, losers, hot, new-hot, new, live, graduated, search, volatile, koth, for-you, metas |
|
|
129
|
+
| **Token Data** | token, stats, price, holders, trades, chart, similar |
|
|
130
|
+
| **Creator** | user-coins, create, claim, ipfs-upload |
|
|
131
|
+
| **Platform** | latest-trades, sol-price |
|
|
132
|
+
|
|
133
|
+
## Features
|
|
134
|
+
|
|
135
|
+
- Bonding curve trading with automatic graduation
|
|
136
|
+
- Multi-pool routing (Pump, Raydium, CPMM, etc.)
|
|
137
|
+
- Token creation with IPFS metadata upload
|
|
138
|
+
- Creator fee claiming
|
|
139
|
+
- Real-time trade streaming via WebSocket
|
|
140
|
+
- Token sniping support
|
|
141
|
+
- OHLCV charts and analytics
|
|
142
|
+
- Holder analysis
|
|
143
|
+
- Trending metas/narratives discovery
|
|
144
|
+
- Similar token recommendations
|
|
145
|
+
- Platform-wide trade feed
|
|
@@ -151,12 +151,28 @@ function formatPrice(price) {
|
|
|
151
151
|
return price.toFixed(4);
|
|
152
152
|
}
|
|
153
153
|
function formatMarketCap(mcap) {
|
|
154
|
+
if (mcap >= 1_000_000_000)
|
|
155
|
+
return `$${(mcap / 1_000_000_000).toFixed(2)}B`;
|
|
154
156
|
if (mcap >= 1_000_000)
|
|
155
157
|
return `$${(mcap / 1_000_000).toFixed(2)}M`;
|
|
156
158
|
if (mcap >= 1_000)
|
|
157
159
|
return `$${(mcap / 1_000).toFixed(1)}K`;
|
|
158
160
|
return `$${mcap.toFixed(0)}`;
|
|
159
161
|
}
|
|
162
|
+
function formatPriceUsd(priceStr) {
|
|
163
|
+
if (!priceStr || priceStr === '0')
|
|
164
|
+
return 'N/A';
|
|
165
|
+
const p = parseFloat(priceStr);
|
|
166
|
+
if (isNaN(p) || p === 0)
|
|
167
|
+
return 'N/A';
|
|
168
|
+
if (p < 0.000001)
|
|
169
|
+
return `$${p.toExponential(2)}`;
|
|
170
|
+
if (p < 0.01)
|
|
171
|
+
return `$${p.toFixed(8)}`;
|
|
172
|
+
if (p < 1)
|
|
173
|
+
return `$${p.toFixed(6)}`;
|
|
174
|
+
return `$${p.toFixed(4)}`;
|
|
175
|
+
}
|
|
160
176
|
// ============================================================================
|
|
161
177
|
// Trading Handlers
|
|
162
178
|
// ============================================================================
|
|
@@ -376,7 +392,15 @@ async function enrichWithDexScreener(mints) {
|
|
|
376
392
|
if (!mints.length)
|
|
377
393
|
return result;
|
|
378
394
|
try {
|
|
379
|
-
const
|
|
395
|
+
const controller = new AbortController();
|
|
396
|
+
const timeout = setTimeout(() => controller.abort(), 10_000);
|
|
397
|
+
let resp;
|
|
398
|
+
try {
|
|
399
|
+
resp = await fetch(`https://api.dexscreener.com/tokens/v1/solana/${mints.join(',')}`, { signal: controller.signal });
|
|
400
|
+
}
|
|
401
|
+
finally {
|
|
402
|
+
clearTimeout(timeout);
|
|
403
|
+
}
|
|
380
404
|
if (!resp.ok)
|
|
381
405
|
return result;
|
|
382
406
|
const pairs = await resp.json();
|
|
@@ -413,9 +437,27 @@ async function enrichWithDexScreener(mints) {
|
|
|
413
437
|
catch { /* best-effort */ }
|
|
414
438
|
return result;
|
|
415
439
|
}
|
|
416
|
-
async function getTopPumpTokenMints(limit = 20) {
|
|
417
|
-
|
|
418
|
-
|
|
440
|
+
async function getTopPumpTokenMints(limit = 20, includeActive = true) {
|
|
441
|
+
if (!includeActive) {
|
|
442
|
+
// Graduated only
|
|
443
|
+
const tokens = await pumpFrontendRequest(`/coins?limit=${limit}&offset=0&sort=market_cap&order=DESC&includeNsfw=false&complete=true`);
|
|
444
|
+
return tokens?.map(t => t.mint) || [];
|
|
445
|
+
}
|
|
446
|
+
// Fetch both graduated (by mcap) and active bonding curve tokens for broader coverage
|
|
447
|
+
const [graduated, active] = await Promise.allSettled([
|
|
448
|
+
pumpFrontendRequest(`/coins?limit=${Math.ceil(limit * 0.6)}&offset=0&sort=market_cap&order=DESC&includeNsfw=false&complete=true`),
|
|
449
|
+
pumpFrontendRequest(`/coins?limit=${Math.ceil(limit * 0.6)}&offset=0&sort=market_cap&order=DESC&includeNsfw=false&complete=false`),
|
|
450
|
+
]);
|
|
451
|
+
const mints = new Set();
|
|
452
|
+
if (graduated.status === 'fulfilled') {
|
|
453
|
+
for (const t of graduated.value || [])
|
|
454
|
+
mints.add(t.mint);
|
|
455
|
+
}
|
|
456
|
+
if (active.status === 'fulfilled') {
|
|
457
|
+
for (const t of active.value || [])
|
|
458
|
+
mints.add(t.mint);
|
|
459
|
+
}
|
|
460
|
+
return [...mints].slice(0, limit);
|
|
419
461
|
}
|
|
420
462
|
// ============================================================================
|
|
421
463
|
// Discovery Handlers
|
|
@@ -460,7 +502,7 @@ async function handleGainers() {
|
|
|
460
502
|
const arrow = t.change24h >= 0 ? '📈' : '📉';
|
|
461
503
|
output += `${i + 1}. ${arrow} **${t.symbol}** ${t.change24h >= 0 ? '+' : ''}${t.change24h.toFixed(1)}%\n`;
|
|
462
504
|
output += ` MCap: ${formatMarketCap(t.marketCap)} | Vol: ${formatMarketCap(t.vol24h)}`;
|
|
463
|
-
output += ` |
|
|
505
|
+
output += ` | ${formatPriceUsd(t.priceUsd)}\n`;
|
|
464
506
|
output += ` \`${t.mint.slice(0, 20)}...\`\n\n`;
|
|
465
507
|
}
|
|
466
508
|
return output;
|
|
@@ -481,9 +523,10 @@ async function handleLosers() {
|
|
|
481
523
|
let output = '**Top Losers on Pump.fun (24h)**\n\n';
|
|
482
524
|
for (let i = 0; i < tokens.length; i++) {
|
|
483
525
|
const t = tokens[i];
|
|
484
|
-
|
|
526
|
+
const arrow = t.change24h < 0 ? '📉' : '📈';
|
|
527
|
+
output += `${i + 1}. ${arrow} **${t.symbol}** ${t.change24h >= 0 ? '+' : ''}${t.change24h.toFixed(1)}%\n`;
|
|
485
528
|
output += ` MCap: ${formatMarketCap(t.marketCap)} | Vol: ${formatMarketCap(t.vol24h)}`;
|
|
486
|
-
output += ` |
|
|
529
|
+
output += ` | ${formatPriceUsd(t.priceUsd)}\n`;
|
|
487
530
|
output += ` \`${t.mint.slice(0, 20)}...\`\n\n`;
|
|
488
531
|
}
|
|
489
532
|
return output;
|
|
@@ -559,7 +602,7 @@ async function handleStats(mint) {
|
|
|
559
602
|
return `No market data found for \`${mint.slice(0, 20)}...\``;
|
|
560
603
|
return `**${t.symbol} - Market Stats**
|
|
561
604
|
|
|
562
|
-
Price:
|
|
605
|
+
Price: ${formatPriceUsd(t.priceUsd)}
|
|
563
606
|
Market Cap: ${formatMarketCap(t.marketCap)}
|
|
564
607
|
Liquidity: ${formatMarketCap(t.liquidity)}
|
|
565
608
|
DEX: ${t.dex}
|
|
@@ -582,6 +625,33 @@ DEX: ${t.dex}
|
|
|
582
625
|
return `Error: ${error instanceof Error ? error.message : String(error)}`;
|
|
583
626
|
}
|
|
584
627
|
}
|
|
628
|
+
async function handleGraduating() {
|
|
629
|
+
try {
|
|
630
|
+
// Fetch active bonding curve tokens sorted by market cap (highest = closest to graduating)
|
|
631
|
+
const tokens = await pumpFrontendRequest('/coins?limit=50&offset=0&sort=market_cap&order=DESC&includeNsfw=false&complete=false');
|
|
632
|
+
if (!tokens?.length)
|
|
633
|
+
return 'No active tokens found.';
|
|
634
|
+
// Filter for tokens with high bonding curve progress (>60%)
|
|
635
|
+
const nearGrad = tokens.filter(t => t.bondingCurveProgress !== undefined && t.bondingCurveProgress > 0.6);
|
|
636
|
+
if (!nearGrad.length)
|
|
637
|
+
return 'No tokens near graduation found (>60% bonding curve).';
|
|
638
|
+
// Sort by progress descending
|
|
639
|
+
nearGrad.sort((a, b) => (b.bondingCurveProgress || 0) - (a.bondingCurveProgress || 0));
|
|
640
|
+
let output = '**Near Graduation (Bonding Curve >60%)**\n\n';
|
|
641
|
+
for (const t of nearGrad.slice(0, 15)) {
|
|
642
|
+
const pct = ((t.bondingCurveProgress || 0) * 100).toFixed(1);
|
|
643
|
+
output += `**${t.symbol}** - ${t.name}\n`;
|
|
644
|
+
output += ` Progress: **${pct}%** | MCap: ${formatMarketCap(t.marketCap || 0)}`;
|
|
645
|
+
if (t.holders)
|
|
646
|
+
output += ` | Holders: ${t.holders}`;
|
|
647
|
+
output += `\n \`${t.mint.slice(0, 20)}...\`\n\n`;
|
|
648
|
+
}
|
|
649
|
+
return output;
|
|
650
|
+
}
|
|
651
|
+
catch (error) {
|
|
652
|
+
return `Error: ${error instanceof Error ? error.message : String(error)}`;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
585
655
|
async function handleNew() {
|
|
586
656
|
try {
|
|
587
657
|
const tokens = await pumpFrontendRequest('/coins/currently-live?limit=20&offset=0&includeNsfw=false&order=DESC');
|
|
@@ -1483,6 +1553,9 @@ async function execute(args) {
|
|
|
1483
1553
|
return handleVolatile();
|
|
1484
1554
|
case 'koth':
|
|
1485
1555
|
return handleKOTH();
|
|
1556
|
+
case 'graduating':
|
|
1557
|
+
case 'near-grad':
|
|
1558
|
+
return handleGraduating();
|
|
1486
1559
|
case 'gainers':
|
|
1487
1560
|
return handleGainers();
|
|
1488
1561
|
case 'losers':
|
|
@@ -1558,6 +1631,7 @@ async function execute(args) {
|
|
|
1558
1631
|
/pump new Recently created
|
|
1559
1632
|
/pump live Currently trading
|
|
1560
1633
|
/pump graduated Migrated to Raydium
|
|
1634
|
+
/pump graduating Near graduation (>60% bonding)
|
|
1561
1635
|
/pump search <query> Search tokens
|
|
1562
1636
|
/pump volatile High volatility
|
|
1563
1637
|
/pump koth King of the Hill (30-35K)
|