solana-agent-kit-plugin-madeonsol 1.15.0 β†’ 1.16.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 MadeOnSol
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,318 +1,319 @@
1
- # solana-agent-kit-plugin-madeonsol
2
-
3
- [![npm version](https://img.shields.io/npm/v/solana-agent-kit-plugin-madeonsol?style=flat-square)](https://www.npmjs.com/package/solana-agent-kit-plugin-madeonsol)
4
- [![npm downloads](https://img.shields.io/npm/dm/solana-agent-kit-plugin-madeonsol?style=flat-square)](https://www.npmjs.com/package/solana-agent-kit-plugin-madeonsol)
5
- [![SAK](https://img.shields.io/badge/Solana%20Agent%20Kit-plugin-blueviolet?style=flat-square)](https://github.com/sendaifun/solana-agent-kit)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](LICENSE)
7
-
8
- > πŸ“š **[API docs](https://madeonsol.com/api-docs)** Β· πŸ’° **[Free API key](https://madeonsol.com/pricing)** Β· πŸ€– **[Solana Agent Kit](https://github.com/sendaifun/solana-agent-kit)**
9
-
10
- [Solana Agent Kit](https://github.com/sendaifun/solana-agent-kit) plugin for [MadeOnSol](https://madeonsol.com) β€” Solana KOL intelligence, deployer analytics, and wallet tracking.
11
-
12
- > Real-time Solana trading intelligence: track 1,069 KOL wallets with <3s latency, score 23,000+ Pump.fun deployers, surface deshred deploy signals ~500ms before on-chain confirmation, detect multi-KOL coordination, and stream every DEX trade. Free tier: 200 requests/day, every endpoint β€” no signup payment. Get a key at [madeonsol.com/pricing](https://madeonsol.com/pricing).
13
-
14
- > **New in 1.15.0** β€” **Batch risk scoring + WebSocket session control.** New tool `tokenRiskBatch()` + action `MADEONSOL_TOKEN_RISK_BATCH_ACTION` β€” bulk 0–100 rug-risk/safety scoring for 1–50 mints in one call (`{ tokens, count }`, same per-mint shape as `tokenRisk()` plus an `as_of` ISO string; untracked mints come back as `{ mint, error: "not_tracked" }` without failing the batch; counts as one request). New tools `streamSessions()` / `streamSessionKill({ id })` + actions `MADEONSOL_STREAM_SESSIONS_ACTION` / `MADEONSOL_STREAM_SESSION_KILL_ACTION` β€” list your live ws-streaming/dex-stream sessions (`id`, `service`, `tier`, `channels[]`, `connected_at`, `remote_ip`, `messages_sent`) and evict one by id to free a connection slot. PRO/ULTRA only.
15
- >
16
- > **New in 1.14.0** β€” **Almost-bonded discovery + trending sorts.** New tool `almostBonded()` + action `MADEONSOL_ALMOST_BONDED_ACTION` β€” pre-bond pump.fun tokens near graduation, ranked by velocity (Ξ”progress/min): "95% and accelerating" beats "92% stalled". Each token carries `progress_pct`, `velocity_pct_per_min`, `eta_minutes`, `stalled`, `real_sol_reserves`, `market_cap_usd`, `liquidity_usd`, `authorities_revoked`, `deployer_tier`, and `age_minutes`. Params: `min_progress`, `max_progress`, `min_velocity_pct_per_min`, `max_age_minutes`, `deployer_tier`, `authority_revoked`, `min_liq`, `sort` (velocity_desc / progress_desc / eta_asc), `limit`. PRO/ULTRA only. Plus `tokensList({ sort })` gains four momentum sorts β€” `mc_change_5m_desc`, `mc_change_1h_desc`, `volume_1h_desc`, and `trending` (composite recent-volume Γ— positive-momentum rank).
17
- >
18
- > **New in 1.13.0** β€” **Token net flow.** New tool `tokenFlow()` + action `MADEONSOL_TOKEN_FLOW_ACTION` β€” net buy/sell flow over a rolling window (`1h` default, or `24h`): `unique_wallets`, `unique_buyers`, `unique_sellers`, `buy_count`, `sell_count`, `total_trades`, `buy_sol`, `sell_sol`, `net_sol`, `trades_per_wallet`. PRO/ULTRA only. Deployer alerts now also surface `deployer_sol_balance` β€” the deployer wallet's SOL balance at alert time (`null` for historical rows).
19
- >
20
- > **New in 1.12.0** β€” **Token OHLCV candles.** New tool `tokenCandles()` + action `MADEONSOL_TOKEN_CANDLES_ACTION` β€” historical price candles (1m/5m/15m/1h/4h/1d) aggregated from the on-chain trade firehose. Each candle has `t/open/high/low/close/volume_usd/trades/market_cap_usd`. PRO returns OHLCV for the last 30 days; ULTRA adds buy/sell volume + count splits, net flow, MEV volume, open/close liquidity, high/low MC, and full history. PRO/ULTRA only.
21
- >
22
- > **New in 1.11.0** β€” **Token risk score.** New tool `tokenRisk()` + action `MADEONSOL_TOKEN_RISK_ACTION` β€” a transparent 0–100 rug-risk/safety score (higher = riskier) with a `band` (safe/caution/danger), an explainable `factors[]` array, and the raw `inputs` (mint/freeze authority, liquidity, liq-to-MC ratio, transfer fee, launch cohort, deployer bond rate, KOL signal, blacklist). PRO/ULTRA only.
23
-
24
- > **New in 1.10.0** β€” `tokensList()` gains three new filter params: `min_liq_mc_ratio`, `max_liq_mc_ratio`, and `deployer_tier`. Response items now include `liquidity_to_mc_ratio` and `deployer_tier`. KOL leaderboard entries now include `median_hold_minutes_30d` and `percentile_early_entry_30d`. Token endpoints now return `liquidity_to_mc_ratio`, `launch_cohort_sol`, and `launch_cohort_size`.
25
-
26
- > **New in 1.9.3** β€” Deployer alerts now surface `runner_rate` + `labeled_tokens` (fraction of a deployer's labeled tokens that ran vs dumped, gate on `labeled_tokens` β‰₯3) and `avg_time_to_bond_minutes`.
27
-
28
- > **New in 1.9.2** β€” **Dump-cluster detection.** Buyer-quality breakdown now includes `dump_cluster_count` (3+ dump-cluster wallets in the first-20 β†’ 94% historical dump rate vs 61% base) and `recycled_early_buyer_count`, on all tiers. The API also pushes every pump.fun graduation in real time (`token:graduations` WS channel).
29
-
30
- > **New in 1.9** β€” **Price alerts, scout leaderboard, coordination history.** `agent.methods.priceAlertsCreate()` (PRO=5, ULTRA=25). `agent.methods.scoutLeaderboard()`, `kolConsensus()`, `peakHistory()`, `coordinationHistory()`. `walletStats` now returns `derived`: win_rate, roi, verdict, biggest_miss.
31
- >
32
- > **New in 1.8** β€” **Universal Wallet API.** `agent.methods.walletStats()`, `walletPnl()`, `walletPositions()`, `walletTrades()` β€” FIFO cost-basis PnL for any wallet. PRO+. Cache hits free.
33
- >
34
- > **New in 1.7.0** *(2026-05-12)* β€” **Account introspection + filtered token directory.** Two new actions: `meAction` (`GET /me`) returns your tier, daily/burst quota state, remaining requests, and per-feature usage so the agent can self-throttle; `tokensListAction` (`GET /tokens`, PRO+) exposes the full filtered/sortable token directory with MC band, liquidity floor, recent-activity window, primary DEX, authority flags, computed 1h volume floor, MEV-share ceiling, and MC change deltas β€” defaults to `min_liq=2000` to skip dust. Token responses now carry velocity / MEV-share fields. `/token/{mint}` returns structured 400 errors (`code`, `reason`, `example`, `docs`) instead of bare 400s. Deprecated `avg_entry_mc_usd` removed from leaderboards.
35
-
36
- ## Quick start (10 seconds)
37
-
38
- ```bash
39
- npm install solana-agent-kit-plugin-madeonsol
40
- ```
41
-
42
- ```ts
43
- import { SolanaAgentKit } from "solana-agent-kit";
44
- import MadeOnSolPlugin from "solana-agent-kit-plugin-madeonsol";
45
- const agent = new SolanaAgentKit(privateKey, rpcUrl, { MADEONSOL_API_KEY: "msk_..." }); // free tier at https://madeonsol.com/pricing
46
- agent.use(MadeOnSolPlugin);
47
- const trades = await agent.methods.kolFeed(agent, { limit: 5, action: "buy" });
48
- ```
49
-
50
- ## Authentication
51
-
52
- Two options (in priority order):
53
-
54
- | Method | Config key | Best for |
55
- |---|---|---|
56
- | **MadeOnSol API key** (recommended) | `MADEONSOL_API_KEY` | Developers β€” [get a free key](https://madeonsol.com/pricing) |
57
- | x402 micropayments | `SVM_PRIVATE_KEY` | AI agents with Solana wallets |
58
-
59
- > **v1.0 breaking change:** RapidAPI auth (`RAPIDAPI_KEY`) has been removed. The MadeOnSol RapidAPI marketplace was retired on 2026-04-19. Get a free `msk_` key at [madeonsol.com/pricing](https://madeonsol.com/pricing).
60
-
61
- ## Install
62
-
63
- ```bash
64
- npm install solana-agent-kit-plugin-madeonsol
65
- ```
66
-
67
- > x402 peer deps (`@x402/fetch @x402/svm @x402/core @solana/kit @scure/base`) are only needed when using `SVM_PRIVATE_KEY`.
68
-
69
- ## Usage
70
-
71
- ```typescript
72
- import { SolanaAgentKit } from "solana-agent-kit";
73
- import MadeOnSolPlugin from "solana-agent-kit-plugin-madeonsol";
74
-
75
- const agent = new SolanaAgentKit(privateKey, rpcUrl, {
76
- MADEONSOL_API_KEY: "msk_your_api_key_here",
77
- });
78
-
79
- agent.use(MadeOnSolPlugin);
80
-
81
- // Use via methods
82
- const trades = await agent.methods.kolFeed(agent, { limit: 10, action: "buy" });
83
-
84
- // Wallet tracker
85
- const watchlist = await agent.methods.walletTrackerWatchlist(agent);
86
- await agent.methods.walletTrackerAdd(agent, { wallet_address: "WALLET", label: "whale" });
87
- const events = await agent.methods.walletTrackerTrades(agent, { limit: 50 });
88
-
89
- // Or let the LLM trigger actions via natural language
90
- // "What are KOLs buying right now?" β†’ MADEONSOL_KOL_FEED_ACTION
91
- ```
92
-
93
- ## Actions
94
-
95
- | Action | Triggers on |
96
- |---|---|
97
- | `MADEONSOL_KOL_FEED_ACTION` | "kol trades", "what are kols buying" |
98
- | `MADEONSOL_KOL_COORDINATION_ACTION` | "kol convergence", "tokens kols accumulating" |
99
- | `MADEONSOL_KOL_LEADERBOARD_ACTION` | "top kols", "kol rankings" β€” periods: today, 7d, 30d, 90d, 180d |
100
- | `MADEONSOL_DEPLOYER_ALERTS_ACTION` | "deployer alerts", "pump fun launches" |
101
- | `MADEONSOL_KOL_PNL_ACTION` | "kol pnl", "kol profit", "wallet pnl" |
102
- | `MADEONSOL_KOL_TRENDING_TOKENS_ACTION` | "kol trending tokens", "kol volume" |
103
- | `MADEONSOL_KOL_FIRST_TOUCHES_ACTION` | "kol first touch", "first kol buyer", "scout signal" β€” backtested first-mover signal (new in 1.3) |
104
- | `MADEONSOL_WALLET_TRACKER_WATCHLIST_ACTION` | "wallet watchlist", "tracked wallets" |
105
- | `MADEONSOL_WALLET_TRACKER_ADD_ACTION` | "track wallet", "watch wallet", "add to watchlist" |
106
- | `MADEONSOL_WALLET_TRACKER_REMOVE_ACTION` | "untrack wallet", "remove from watchlist" |
107
- | `MADEONSOL_WALLET_TRACKER_TRADES_ACTION` | "wallet tracker trades", "watchlist activity" |
108
- | `MADEONSOL_WALLET_TRACKER_SUMMARY_ACTION` | "wallet tracker summary", "tracked wallet stats" |
109
- | `MADEONSOL_ME_ACTION` | "my api account", "api quota", "remaining requests" β€” tier + quota introspection (new in 1.7) |
110
- | `MADEONSOL_TOKENS_LIST_ACTION` | "filter tokens", "tokens by market cap", "scan tokens" β€” filtered/sortable token directory + momentum/trending sorts, PRO+ (new in 1.7) |
111
- | `MADEONSOL_ALMOST_BONDED_ACTION` | **New 1.14** Β· "almost bonded", "about to graduate", "near graduation" β€” pre-bond pump.fun tokens ranked by velocity (Ξ”progress/min): progress, ETA, stalled, deployer tier (PRO+) |
112
- | `MADEONSOL_WALLET_STATS_ACTION` | **New 1.8** Β· "wallet stats", "wallet info", "check wallet" β€” aggregate 90d stats + cross-product flags (KOL/alpha/deployer) for any Solana wallet (PRO+) |
113
- | `MADEONSOL_WALLET_PNL_ACTION` | **New 1.8** Β· "wallet pnl", "wallet profit", "wallet performance" β€” FIFO cost-basis PnL with profit factor, drawdown, daily curve, closed + open positions (PRO+) |
114
- | `MADEONSOL_WALLET_POSITIONS_ACTION` | **New 1.8** Β· "wallet positions", "wallet bags", "open positions" β€” open lots with live unrealized SOL (PRO+) |
115
- | `MADEONSOL_WALLET_TRADES_ACTION` | **New 1.8** Β· "wallet trades", "wallet history" β€” cursor-paginated raw trades with filters (PRO+) |
116
- | `MADEONSOL_TOKEN_FLOW_ACTION` | **New 1.13** Β· "token flow", "net flow", "buy/sell pressure" β€” net buy/sell flow over a 1h/24h window (PRO+) |
117
- | `MADEONSOL_TOKEN_RISK_BATCH_ACTION` | **New 1.15** Β· "batch token risk", "bulk rug risk", "score many tokens" β€” rug-risk scoring for 1–50 mints in one call; untracked mints don't fail the batch (PRO+) |
118
- | `MADEONSOL_STREAM_SESSIONS_ACTION` | **New 1.15** Β· "list stream sessions", "live websocket sessions", "active ws sessions" β€” your live ws-streaming/dex-stream sessions (PRO+) |
119
- | `MADEONSOL_STREAM_SESSION_KILL_ACTION` | **New 1.15** Β· "kill stream session", "evict session", "free a connection slot" β€” evict a live streaming session by id (PRO+) |
120
-
121
- ## Additional methods (v1.0+)
122
-
123
- These are exposed via `agent.methods.*` (no LLM action wrappers β€” call directly):
124
-
125
- ### Alpha Wallet Intelligence
126
-
127
- Scored from 1M+ early-buyer records (wallets seen in the first 20 buyers of Pump.fun tokens).
128
-
129
- ```ts
130
- await agent.methods.alphaLeaderboard(agent, { limit: 100 }); // Free/Pro=100, ULTRA=500 + bot signals
131
- await agent.methods.alphaWallet(agent, { wallet: "WALLET" }); // ULTRA only β€” full breakdown + bot signals
132
- await agent.methods.alphaLinked(agent, { wallet: "WALLET" }); // ULTRA only β€” co-bought 3+ tokens within 2s
133
- ```
134
-
135
- ### Token Quality
136
-
137
- ```ts
138
- await agent.methods.tokenCapTable(agent, { mint: "MINT" }); // PRO=10, ULTRA=20 first non-deployer buyers
139
- await agent.methods.tokenBuyerQuality(agent, { mint: "MINT" }); // 0–100 buyer-quality score (5-min cached)
140
- await agent.methods.tokenRisk(agent, { mint: "MINT" }); // PRO+ 0–100 rug-risk/safety score + band + factors
141
- await agent.methods.tokenRiskBatch(agent, { mints: ["MINT_A", "MINT_B"] }); // PRO+ bulk rug-risk for 1–50 mints β†’ { tokens, count }; one request
142
- await agent.methods.tokenCandles(agent, { mint: "MINT", tf: "1h" }); // PRO+ OHLCV candles (1m–1d); ULTRA=+net flow, liquidity, full history
143
- await agent.methods.tokenFlow(agent, { mint: "MINT", window: "24h" }); // PRO+ net buy/sell flow (1h/24h): unique wallets, buy/sell/net SOL, trades-per-wallet
144
- await agent.methods.almostBonded(agent, { min_progress: 90, sort: "eta_asc" }); // PRO+ pre-bond pump.fun tokens by velocity: progress, ETA, stalled, deployer tier
145
- ```
146
-
147
- > Deployer alerts (`MADEONSOL_DEPLOYER_ALERTS_ACTION` / `agent.methods.deployerAlerts()`) now include `deployer_sol_balance` β€” the deployer wallet's SOL balance at alert time (`null` for historical rows).
148
-
149
- ### Copy-Trade Rules (PRO/ULTRA)
150
-
151
- Server-side rules that fire signals when a watched source wallet trades. Delivered via webhook (HMAC-signed) and/or WebSocket.
152
-
153
- ```ts
154
- await agent.methods.copyTradeList(agent);
155
- await agent.methods.copyTradeCreate(agent, {
156
- name: "Track Whales",
157
- source_wallets: ["WALLET_A", "WALLET_B"], // 1-50 wallets
158
- sizing_mode: "fixed",
159
- sizing_amount: 0.5, // required
160
- only_action: "buy",
161
- delivery_mode: "webhook",
162
- webhook_url: "https://you.com/hook",
163
- });
164
- await agent.methods.copyTradeSignals(agent, { limit: 50 }); // up to 7 days
165
- ```
166
-
167
- ### Streaming Sessions *(new in 1.15)*
168
-
169
- List and kill your live WebSocket streaming sessions (ws-streaming + dex-stream). Handy when a ghost socket is holding a connection slot. PRO/ULTRA only.
170
-
171
- ```ts
172
- const { sessions, count } = await agent.methods.streamSessions(agent); // id, service, tier, channels[], connected_at, remote_ip, messages_sent
173
- await agent.methods.streamSessionKill(agent, { id: "123" }); // β†’ { evicted: true, id }
174
- ```
175
-
176
- Also exposed as `MADEONSOL_STREAM_SESSIONS_ACTION` and `MADEONSOL_STREAM_SESSION_KILL_ACTION`.
177
-
178
- ### KOL Coordination Alerts (PRO/ULTRA β€” v1.1 push signals)
179
-
180
- Real-time push alerts when a KOL cluster co-buys the same token. Fires within ~1s of the triggering trade (pg_notify push, not polling). Delivered via WebSocket (`kol:coordination` channel, user-scoped) and/or HMAC-signed webhook. PRO=5 rules, ULTRA=20.
181
-
182
- ```ts
183
- const res = await agent.methods.coordinationAlertsCreate(agent, {
184
- name: "fresh pump cluster",
185
- min_kols: 4,
186
- window_minutes: 15, // peak-density window (1-60)
187
- min_score: 70, // 0-100 composite score cutoff
188
- include_majors: false, // filter WIF/BONK/POPCAT
189
- cooldown_min: 60,
190
- score_jump_break: 10,
191
- delivery_mode: "both",
192
- webhook_url: "https://you.com/hooks/coord",
193
- });
194
- // store res.webhook_secret β€” shown ONCE
195
-
196
- await agent.methods.coordinationAlertsList(agent);
197
- await agent.methods.coordinationAlertsGet(agent, { rule_id: "uuid..." });
198
- await agent.methods.coordinationAlertsUpdate(agent, { rule_id: "uuid...", updates: { is_active: false } });
199
- await agent.methods.coordinationAlertsDelete(agent, { rule_id: "uuid..." });
200
- ```
201
-
202
- The v1.1 `kolCoordination()` response also includes `peak_kols`, `peak_buys`, `exited_count`, and `coordination_score` (0-100). Pass `{ min_score, window_minutes, include_majors }` to filter.
203
-
204
- ### KOL First-Touch Signal *(new in 1.3)*
205
-
206
- Every "first KOL buy on a token mint" event β€” when a tracked KOL is the first of the cohort to touch a token. Filterable by **scout tier** (S/A/B/C from `mv_kol_scout_score`), KOL winrate, token age, mint suffix.
207
-
208
- **Backtest:** S-tier scouts attract β‰₯3 follow-on KOLs within 4h ~50% of the time vs ~14% baseline (38d / 491k buys / 72,549 events). Public leaderboard at [madeonsol.com/kol/scouts](https://madeonsol.com/kol/scouts).
209
-
210
- ```ts
211
- // REST query β€” also exposed as MADEONSOL_KOL_FIRST_TOUCHES_ACTION for the agent
212
- const { events } = await agent.methods.kolFirstTouches(agent, {
213
- preset: "scout",
214
- min_scout_tier: "S",
215
- limit: 20,
216
- });
217
-
218
- // Webhook subscription (Ultra only) β€” push delivery, HMAC-signed
219
- const res = await agent.methods.firstTouchSubscriptionsCreate(agent, {
220
- name: "S-tier scouts on pump tokens",
221
- filters: { min_scout_tier: "S", mint_suffix: "pump" },
222
- delivery_mode: "webhook",
223
- webhook_url: "https://you.com/hooks/scout",
224
- });
225
- // store res.webhook_secret β€” shown ONCE
226
-
227
- await agent.methods.firstTouchSubscriptionsList(agent);
228
- await agent.methods.firstTouchSubscriptionsGet(agent, { subscription_id: "uuid..." });
229
- await agent.methods.firstTouchSubscriptionsUpdate(agent, { subscription_id: "uuid...", updates: { is_active: false } });
230
- await agent.methods.firstTouchSubscriptionsDelete(agent, { subscription_id: "uuid..." });
231
- ```
232
-
233
- ULTRA only for subscriptions β€” up to 10 active per user.
234
-
235
- > **Don't poll β€” push.** Median lead time before the second KOL is 12 seconds. WebSocket channel: `kol:first_touches` (PRO+).
236
-
237
- ### Price Alerts *(new in 1.9)*
238
-
239
- CRUD for token dip/recovery price alerts. Fires when a token's market cap crosses your threshold. PRO=5 rules, ULTRA=25.
240
-
241
- ```ts
242
- const { alert, webhook_secret } = await agent.methods.priceAlertsCreate(agent, {
243
- name: "SOL dip buy",
244
- token_mint: "So11111111111111111111111111111111111111112",
245
- condition: "below",
246
- threshold_mc_usd: 5_000_000_000,
247
- cooldown_min: 120,
248
- delivery_mode: "both",
249
- webhook_url: "https://you.com/hooks/price",
250
- });
251
- // store webhook_secret β€” shown ONCE
252
-
253
- await agent.methods.priceAlertsList(agent);
254
- await agent.methods.priceAlertsGet(agent, { alert_id: "uuid..." });
255
- await agent.methods.priceAlertsUpdate(agent, { alert_id: "uuid...", updates: { is_active: false } });
256
- await agent.methods.priceAlertsDelete(agent, { alert_id: "uuid..." });
257
- ```
258
-
259
- Also exposed as `MADEONSOL_PRICE_ALERTS_LIST_ACTION` ("my price alerts") and `MADEONSOL_PRICE_ALERTS_CREATE_ACTION` ("alert me when token dips below").
260
-
261
- ### Scout Leaderboard & KOL Consensus *(new in 1.9)*
262
-
263
- | Method / Action | Description |
264
- |---|---|
265
- | `agent.methods.scoutLeaderboard(agent, params)` | Top scout-tier KOLs ranked by first-touch follow-on rate, win rate, and ROI (PRO+) |
266
- | `agent.methods.kolConsensus(agent, params)` | Tokens with the strongest KOL agreement signal (PRO+) |
267
- | `agent.methods.peakHistory(agent, { mint })` | Historical peak-density windows for a token (PRO+) |
268
- | `agent.methods.coordinationHistory(agent, params)` | Global coordination event log (PRO+) |
269
-
270
- ```ts
271
- const { leaderboard } = await agent.methods.scoutLeaderboard(agent, { period: "30d", limit: 25 });
272
- const { tokens } = await agent.methods.kolConsensus(agent, { min_kols: 5, period: "24h" });
273
- ```
274
-
275
- Also exposed as `MADEONSOL_SCOUT_LEADERBOARD_ACTION` and `MADEONSOL_KOL_CONSENSUS_ACTION`.
276
-
277
- ### Wallet Derived Stats *(new in 1.9)*
278
-
279
- `walletStats` now returns a `stats` object with derived fields: `win_rate` (0-1), `roi`, `verdict` ("strong" | "profitable" | "neutral" | "losing"), and `biggest_miss` (token with the highest post-exit gain the wallet missed).
280
-
281
- ```ts
282
- const { stats } = await agent.methods.walletStats(agent, { address: "WALLET_ADDRESS" });
283
- // stats.win_rate, stats.roi, stats.verdict, stats.biggest_miss
284
- ```
285
-
286
- ### Rate-limit headers
287
-
288
- Every successful request populates a module-level `lastRateLimit` (limit / remaining / reset / requestId):
289
-
290
- ```ts
291
- import { lastRateLimit } from "solana-agent-kit-plugin-madeonsol";
292
- await agent.methods.kolFeed(agent, { limit: 10 });
293
- console.log(lastRateLimit); // { limit: "10000", remaining: "9999", reset: "...", requestId: "..." }
294
- ```
295
-
296
- ## Tiers
297
-
298
- | Tier | Price | Wallets tracked | Requests/day |
299
- |------|-------|-----------------|--------------|
300
- | BASIC (free) | $0 | 10 | 200 |
301
- | PRO | €43/mo (€430/yr) β‰ˆ $49 | 50 | 10,000 |
302
- | ULTRA | €131/mo (€1310/yr) β‰ˆ $149 | 100 + WS events | 100,000 |
303
-
304
- Free tier returns the full REST response shape on every endpoint β€” real wallets, TX signatures, full precision. Paid tiers unlock webhooks, WebSockets, rule engines, and ULTRA-only data depth. Get a key at [madeonsol.com/pricing](https://madeonsol.com/pricing).
305
-
306
- ## Also Available
307
-
308
- | Platform | Package |
309
- |---|---|
310
- | TypeScript SDK | [`madeonsol`](https://www.npmjs.com/package/madeonsol) on npm |
311
- | Rust SDK | [`madeonsol`](https://crates.io/crates/madeonsol) on crates.io |
312
- | Python (LangChain, CrewAI) | [`madeonsol-x402`](https://pypi.org/project/madeonsol-x402/) on PyPI |
313
- | MCP Server (Claude, Cursor) | [`mcp-server-madeonsol`](https://www.npmjs.com/package/mcp-server-madeonsol) Β· [Smithery](https://smithery.ai/servers/madeonsol/solana-kol-intelligence) Β· [Glama](https://glama.ai/mcp/servers/LamboPoewert/mcp-server-madeonsol) |
314
- | ElizaOS | [`@madeonsol/plugin-madeonsol`](https://www.npmjs.com/package/@madeonsol/plugin-madeonsol) |
315
-
316
- ## License
317
-
318
- MIT
1
+ # solana-agent-kit-plugin-madeonsol
2
+
3
+ [![npm version](https://img.shields.io/npm/v/solana-agent-kit-plugin-madeonsol?style=flat-square)](https://www.npmjs.com/package/solana-agent-kit-plugin-madeonsol)
4
+ [![npm downloads](https://img.shields.io/npm/dm/solana-agent-kit-plugin-madeonsol?style=flat-square)](https://www.npmjs.com/package/solana-agent-kit-plugin-madeonsol)
5
+ [![SAK](https://img.shields.io/badge/Solana%20Agent%20Kit-plugin-blueviolet?style=flat-square)](https://github.com/sendaifun/solana-agent-kit)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](LICENSE)
7
+
8
+ > πŸ“š **[API docs](https://madeonsol.com/api-docs)** Β· πŸ’° **[Free API key](https://madeonsol.com/pricing)** Β· πŸ€– **[Solana Agent Kit](https://github.com/sendaifun/solana-agent-kit)**
9
+
10
+ [Solana Agent Kit](https://github.com/sendaifun/solana-agent-kit) plugin for [MadeOnSol](https://madeonsol.com) β€” Solana KOL intelligence, deployer analytics, bundle-cohort held-% signals, and wallet tracking.
11
+
12
+ > Real-time Solana trading intelligence: track 1,069 KOL wallets with <3s latency, score 23,000+ Pump.fun deployers, surface deshred deploy signals ~500ms before on-chain confirmation, detect multi-KOL coordination, and stream every DEX trade. Free tier: 200 requests/day, every endpoint β€” no signup payment. Get a key at [madeonsol.com/pricing](https://madeonsol.com/pricing).
13
+
14
+ > **New in 1.16.0** β€” **Bundle-cohort holdings.** New tool `tokenBundle()` + action `MADEONSOL_TOKEN_BUNDLE_ACTION` β€” which same-slot "bundle" wallets (β‰₯3 buying in one slot) bought a token and how much of supply they STILL hold, from confirmed on-chain data. Returns a `bundle` summary (`wallet_count`, `bundle_kind` [`atomic_tx`/`same_slot`/`none`], `held_ratio`, **`held_pct_of_supply`** [the headline rug/insider signal], `fully_exited`, `buy_volume`, `tokens_held`) plus a `wallets[]` list (`rank`, `wallet`, `held_ratio`, `has_sold`, `atomic`, `is_kol`). BASIC/TRADER get the `bundle` block only (`wallets: []`); PRO gets top-10 flags-only; ULTRA adds full holdings + wallet identity (`kol_name`, `win_rate`, `bot_confidence`, `tokens_held`). PRO/ULTRA only.
15
+ >
16
+ > **New in 1.15.0** β€” **Batch risk scoring + WebSocket session control.** New tool `tokenRiskBatch()` + action `MADEONSOL_TOKEN_RISK_BATCH_ACTION` β€” bulk 0–100 rug-risk/safety scoring for 1–50 mints in one call (`{ tokens, count }`, same per-mint shape as `tokenRisk()` plus an `as_of` ISO string; untracked mints come back as `{ mint, error: "not_tracked" }` without failing the batch; counts as one request). New tools `streamSessions()` / `streamSessionKill({ id })` + actions `MADEONSOL_STREAM_SESSIONS_ACTION` / `MADEONSOL_STREAM_SESSION_KILL_ACTION` β€” list your live ws-streaming/dex-stream sessions (`id`, `service`, `tier`, `channels[]`, `connected_at`, `remote_ip`, `messages_sent`) and evict one by id to free a connection slot. PRO/ULTRA only.
17
+ >
18
+ > **New in 1.14.0** β€” **Almost-bonded discovery + trending sorts.** New tool `almostBonded()` + action `MADEONSOL_ALMOST_BONDED_ACTION` β€” pre-bond pump.fun tokens near graduation, ranked by velocity (Ξ”progress/min): "95% and accelerating" beats "92% stalled". Each token carries `progress_pct`, `velocity_pct_per_min`, `eta_minutes`, `stalled`, `real_sol_reserves`, `market_cap_usd`, `liquidity_usd`, `authorities_revoked`, `deployer_tier`, and `age_minutes`. Params: `min_progress`, `max_progress`, `min_velocity_pct_per_min`, `max_age_minutes`, `deployer_tier`, `authority_revoked`, `min_liq`, `sort` (velocity_desc / progress_desc / eta_asc), `limit`. PRO/ULTRA only. Plus `tokensList({ sort })` gains four momentum sorts β€” `mc_change_5m_desc`, `mc_change_1h_desc`, `volume_1h_desc`, and `trending` (composite recent-volume Γ— positive-momentum rank).
19
+ >
20
+ > **New in 1.13.0** β€” **Token net flow.** New tool `tokenFlow()` + action `MADEONSOL_TOKEN_FLOW_ACTION` β€” net buy/sell flow over a rolling window (`1h` default, or `24h`): `unique_wallets`, `unique_buyers`, `unique_sellers`, `buy_count`, `sell_count`, `total_trades`, `buy_sol`, `sell_sol`, `net_sol`, `trades_per_wallet`. PRO/ULTRA only. Deployer alerts now also surface `deployer_sol_balance` β€” the deployer wallet's SOL balance at alert time (`null` for historical rows).
21
+ >
22
+ > **New in 1.12.0** β€” **Token OHLCV candles.** New tool `tokenCandles()` + action `MADEONSOL_TOKEN_CANDLES_ACTION` β€” historical price candles (1m/5m/15m/1h/4h/1d) aggregated from the on-chain trade firehose. Each candle has `t/open/high/low/close/volume_usd/trades/market_cap_usd`. PRO returns OHLCV for the last 30 days; ULTRA adds buy/sell volume + count splits, net flow, MEV volume, open/close liquidity, high/low MC, and full history. PRO/ULTRA only.
23
+ >
24
+ > **New in 1.11.0** β€” **Token risk score.** New tool `tokenRisk()` + action `MADEONSOL_TOKEN_RISK_ACTION` β€” a transparent 0–100 rug-risk/safety score (higher = riskier) with a `band` (safe/caution/danger), an explainable `factors[]` array, and the raw `inputs` (mint/freeze authority, liquidity, liq-to-MC ratio, transfer fee, launch cohort, deployer bond rate, KOL signal, blacklist). PRO/ULTRA only.
25
+
26
+ > **New in 1.9.3** β€” Deployer alerts now surface `runner_rate` + `labeled_tokens` (fraction of a deployer's labeled tokens that ran vs dumped, gate on `labeled_tokens` β‰₯3) and `avg_time_to_bond_minutes`.
27
+
28
+ > **New in 1.9.2** β€” **Dump-cluster detection.** Buyer-quality breakdown now includes `dump_cluster_count` (3+ dump-cluster wallets in the first-20 β†’ 94% historical dump rate vs 61% base) and `recycled_early_buyer_count`, on all tiers. The API also pushes every pump.fun graduation in real time (`token:graduations` WS channel).
29
+
30
+ > **New in 1.9** β€” **Price alerts, scout leaderboard, coordination history.** `agent.methods.priceAlertsCreate()` (PRO=5, ULTRA=25). `agent.methods.scoutLeaderboard()`, `kolConsensus()`, `peakHistory()`, `coordinationHistory()`. `walletStats` now returns `derived`: win_rate, roi, verdict, biggest_miss.
31
+ >
32
+ > **New in 1.8** β€” **Universal Wallet API.** `agent.methods.walletStats()`, `walletPnl()`, `walletPositions()`, `walletTrades()` β€” FIFO cost-basis PnL for any wallet. PRO+. Cache hits free.
33
+ >
34
+ > **New in 1.7.0** *(2026-05-12)* β€” **Account introspection + filtered token directory.** Two new actions: `meAction` (`GET /me`) returns your tier, daily/burst quota state, remaining requests, and per-feature usage so the agent can self-throttle; `tokensListAction` (`GET /tokens`, PRO+) exposes the full filtered/sortable token directory with MC band, liquidity floor, recent-activity window, primary DEX, authority flags, computed 1h volume floor, MEV-share ceiling, and MC change deltas β€” defaults to `min_liq=2000` to skip dust. Token responses now carry velocity / MEV-share fields. `/token/{mint}` returns structured 400 errors (`code`, `reason`, `example`, `docs`) instead of bare 400s. Deprecated `avg_entry_mc_usd` removed from leaderboards.
35
+
36
+ ## Quick start (10 seconds)
37
+
38
+ ```bash
39
+ npm install solana-agent-kit-plugin-madeonsol
40
+ ```
41
+
42
+ ```ts
43
+ import { SolanaAgentKit } from "solana-agent-kit";
44
+ import MadeOnSolPlugin from "solana-agent-kit-plugin-madeonsol";
45
+ const agent = new SolanaAgentKit(privateKey, rpcUrl, { MADEONSOL_API_KEY: "msk_..." }); // free tier at https://madeonsol.com/pricing
46
+ agent.use(MadeOnSolPlugin);
47
+ const trades = await agent.methods.kolFeed(agent, { limit: 5, action: "buy" });
48
+ ```
49
+
50
+ ## Authentication
51
+
52
+ Two options (in priority order):
53
+
54
+ | Method | Config key | Best for |
55
+ |---|---|---|
56
+ | **MadeOnSol API key** (recommended) | `MADEONSOL_API_KEY` | Developers β€” [get a free key](https://madeonsol.com/pricing) |
57
+ | x402 micropayments | `SVM_PRIVATE_KEY` | AI agents with Solana wallets |
58
+
59
+ > **v1.0 breaking change:** RapidAPI auth (`RAPIDAPI_KEY`) has been removed. The MadeOnSol RapidAPI marketplace was retired on 2026-04-19. Get a free `msk_` key at [madeonsol.com/pricing](https://madeonsol.com/pricing).
60
+
61
+ ## Install
62
+
63
+ ```bash
64
+ npm install solana-agent-kit-plugin-madeonsol
65
+ ```
66
+
67
+ > x402 peer deps (`@x402/fetch @x402/svm @x402/core @solana/kit @scure/base`) are only needed when using `SVM_PRIVATE_KEY`.
68
+
69
+ ## Usage
70
+
71
+ ```typescript
72
+ import { SolanaAgentKit } from "solana-agent-kit";
73
+ import MadeOnSolPlugin from "solana-agent-kit-plugin-madeonsol";
74
+
75
+ const agent = new SolanaAgentKit(privateKey, rpcUrl, {
76
+ MADEONSOL_API_KEY: "msk_your_api_key_here",
77
+ });
78
+
79
+ agent.use(MadeOnSolPlugin);
80
+
81
+ // Use via methods
82
+ const trades = await agent.methods.kolFeed(agent, { limit: 10, action: "buy" });
83
+
84
+ // Wallet tracker
85
+ const watchlist = await agent.methods.walletTrackerWatchlist(agent);
86
+ await agent.methods.walletTrackerAdd(agent, { wallet_address: "WALLET", label: "whale" });
87
+ const events = await agent.methods.walletTrackerTrades(agent, { limit: 50 });
88
+
89
+ // Or let the LLM trigger actions via natural language
90
+ // "What are KOLs buying right now?" β†’ MADEONSOL_KOL_FEED_ACTION
91
+ ```
92
+
93
+ ## Actions
94
+
95
+ | Action | Triggers on |
96
+ |---|---|
97
+ | `MADEONSOL_KOL_FEED_ACTION` | "kol trades", "what are kols buying" |
98
+ | `MADEONSOL_KOL_COORDINATION_ACTION` | "kol convergence", "tokens kols accumulating" |
99
+ | `MADEONSOL_KOL_LEADERBOARD_ACTION` | "top kols", "kol rankings" β€” periods: today, 7d, 30d, 90d, 180d |
100
+ | `MADEONSOL_DEPLOYER_ALERTS_ACTION` | "deployer alerts", "pump fun launches" |
101
+ | `MADEONSOL_KOL_PNL_ACTION` | "kol pnl", "kol profit", "wallet pnl" |
102
+ | `MADEONSOL_KOL_TRENDING_TOKENS_ACTION` | "kol trending tokens", "kol volume" |
103
+ | `MADEONSOL_KOL_FIRST_TOUCHES_ACTION` | "kol first touch", "first kol buyer", "scout signal" β€” backtested first-mover signal (new in 1.3) |
104
+ | `MADEONSOL_WALLET_TRACKER_WATCHLIST_ACTION` | "wallet watchlist", "tracked wallets" |
105
+ | `MADEONSOL_WALLET_TRACKER_ADD_ACTION` | "track wallet", "watch wallet", "add to watchlist" |
106
+ | `MADEONSOL_WALLET_TRACKER_REMOVE_ACTION` | "untrack wallet", "remove from watchlist" |
107
+ | `MADEONSOL_WALLET_TRACKER_TRADES_ACTION` | "wallet tracker trades", "watchlist activity" |
108
+ | `MADEONSOL_WALLET_TRACKER_SUMMARY_ACTION` | "wallet tracker summary", "tracked wallet stats" |
109
+ | `MADEONSOL_ME_ACTION` | "my api account", "api quota", "remaining requests" β€” tier + quota introspection (new in 1.7) |
110
+ | `MADEONSOL_TOKENS_LIST_ACTION` | "filter tokens", "tokens by market cap", "scan tokens" β€” filtered/sortable token directory + momentum/trending sorts, PRO+ (new in 1.7) |
111
+ | `MADEONSOL_ALMOST_BONDED_ACTION` | **New 1.14** Β· "almost bonded", "about to graduate", "near graduation" β€” pre-bond pump.fun tokens ranked by velocity (Ξ”progress/min): progress, ETA, stalled, deployer tier (PRO+) |
112
+ | `MADEONSOL_WALLET_STATS_ACTION` | **New 1.8** Β· "wallet stats", "wallet info", "check wallet" β€” aggregate 90d stats + cross-product flags (KOL/alpha/deployer) for any Solana wallet (PRO+) |
113
+ | `MADEONSOL_WALLET_PNL_ACTION` | **New 1.8** Β· "wallet pnl", "wallet profit", "wallet performance" β€” FIFO cost-basis PnL with profit factor, drawdown, daily curve, closed + open positions (PRO+) |
114
+ | `MADEONSOL_WALLET_POSITIONS_ACTION` | **New 1.8** Β· "wallet positions", "wallet bags", "open positions" β€” open lots with live unrealized SOL (PRO+) |
115
+ | `MADEONSOL_WALLET_TRADES_ACTION` | **New 1.8** Β· "wallet trades", "wallet history" β€” cursor-paginated raw trades with filters (PRO+) |
116
+ | `MADEONSOL_TOKEN_FLOW_ACTION` | **New 1.13** Β· "token flow", "net flow", "buy/sell pressure" β€” net buy/sell flow over a 1h/24h window (PRO+) |
117
+ | `MADEONSOL_TOKEN_RISK_BATCH_ACTION` | **New 1.15** Β· "batch token risk", "bulk rug risk", "score many tokens" β€” rug-risk scoring for 1–50 mints in one call; untracked mints don't fail the batch (PRO+) |
118
+ | `MADEONSOL_STREAM_SESSIONS_ACTION` | **New 1.15** Β· "list stream sessions", "live websocket sessions", "active ws sessions" β€” your live ws-streaming/dex-stream sessions (PRO+) |
119
+ | `MADEONSOL_STREAM_SESSION_KILL_ACTION` | **New 1.15** Β· "kill stream session", "evict session", "free a connection slot" β€” evict a live streaming session by id (PRO+) |
120
+
121
+ ## Additional methods (v1.0+)
122
+
123
+ These are exposed via `agent.methods.*` (no LLM action wrappers β€” call directly):
124
+
125
+ ### Alpha Wallet Intelligence
126
+
127
+ Scored from 1M+ early-buyer records (wallets seen in the first 20 buyers of Pump.fun tokens).
128
+
129
+ ```ts
130
+ await agent.methods.alphaLeaderboard(agent, { limit: 100 }); // Free/Pro=100, ULTRA=500 + bot signals
131
+ await agent.methods.alphaWallet(agent, { wallet: "WALLET" }); // ULTRA only β€” full breakdown + bot signals
132
+ await agent.methods.alphaLinked(agent, { wallet: "WALLET" }); // ULTRA only β€” co-bought 3+ tokens within 2s
133
+ ```
134
+
135
+ ### Token Quality
136
+
137
+ ```ts
138
+ await agent.methods.tokenCapTable(agent, { mint: "MINT" }); // PRO=10, ULTRA=20 first non-deployer buyers
139
+ await agent.methods.tokenBuyerQuality(agent, { mint: "MINT" }); // 0–100 buyer-quality score (5-min cached)
140
+ await agent.methods.tokenRisk(agent, { mint: "MINT" }); // PRO+ 0–100 rug-risk/safety score + band + factors
141
+ await agent.methods.tokenRiskBatch(agent, { mints: ["MINT_A", "MINT_B"] }); // PRO+ bulk rug-risk for 1–50 mints β†’ { tokens, count }; one request
142
+ await agent.methods.tokenBundle(agent, { mint: "MINT" }); // PRO+ bundle-cohort holdings: held_pct_of_supply signal; ULTRA=+wallet identity
143
+ await agent.methods.tokenCandles(agent, { mint: "MINT", tf: "1h" }); // PRO+ OHLCV candles (1m–1d); ULTRA=+net flow, liquidity, full history
144
+ await agent.methods.tokenFlow(agent, { mint: "MINT", window: "24h" }); // PRO+ net buy/sell flow (1h/24h): unique wallets, buy/sell/net SOL, trades-per-wallet
145
+ await agent.methods.almostBonded(agent, { min_progress: 90, sort: "eta_asc" }); // PRO+ pre-bond pump.fun tokens by velocity: progress, ETA, stalled, deployer tier
146
+ ```
147
+
148
+ > Deployer alerts (`MADEONSOL_DEPLOYER_ALERTS_ACTION` / `agent.methods.deployerAlerts()`) now include `deployer_sol_balance` β€” the deployer wallet's SOL balance at alert time (`null` for historical rows).
149
+
150
+ ### Copy-Trade Rules (PRO/ULTRA)
151
+
152
+ Server-side rules that fire signals when a watched source wallet trades. Delivered via webhook (HMAC-signed) and/or WebSocket.
153
+
154
+ ```ts
155
+ await agent.methods.copyTradeList(agent);
156
+ await agent.methods.copyTradeCreate(agent, {
157
+ name: "Track Whales",
158
+ source_wallets: ["WALLET_A", "WALLET_B"], // 1-50 wallets
159
+ sizing_mode: "fixed",
160
+ sizing_amount: 0.5, // required
161
+ only_action: "buy",
162
+ delivery_mode: "webhook",
163
+ webhook_url: "https://you.com/hook",
164
+ });
165
+ await agent.methods.copyTradeSignals(agent, { limit: 50 }); // up to 7 days
166
+ ```
167
+
168
+ ### Streaming Sessions *(new in 1.15)*
169
+
170
+ List and kill your live WebSocket streaming sessions (ws-streaming + dex-stream). Handy when a ghost socket is holding a connection slot. PRO/ULTRA only.
171
+
172
+ ```ts
173
+ const { sessions, count } = await agent.methods.streamSessions(agent); // id, service, tier, channels[], connected_at, remote_ip, messages_sent
174
+ await agent.methods.streamSessionKill(agent, { id: "123" }); // β†’ { evicted: true, id }
175
+ ```
176
+
177
+ Also exposed as `MADEONSOL_STREAM_SESSIONS_ACTION` and `MADEONSOL_STREAM_SESSION_KILL_ACTION`.
178
+
179
+ ### KOL Coordination Alerts (PRO/ULTRA β€” v1.1 push signals)
180
+
181
+ Real-time push alerts when a KOL cluster co-buys the same token. Fires within ~1s of the triggering trade (pg_notify push, not polling). Delivered via WebSocket (`kol:coordination` channel, user-scoped) and/or HMAC-signed webhook. PRO=5 rules, ULTRA=20.
182
+
183
+ ```ts
184
+ const res = await agent.methods.coordinationAlertsCreate(agent, {
185
+ name: "fresh pump cluster",
186
+ min_kols: 4,
187
+ window_minutes: 15, // peak-density window (1-60)
188
+ min_score: 70, // 0-100 composite score cutoff
189
+ include_majors: false, // filter WIF/BONK/POPCAT
190
+ cooldown_min: 60,
191
+ score_jump_break: 10,
192
+ delivery_mode: "both",
193
+ webhook_url: "https://you.com/hooks/coord",
194
+ });
195
+ // store res.webhook_secret β€” shown ONCE
196
+
197
+ await agent.methods.coordinationAlertsList(agent);
198
+ await agent.methods.coordinationAlertsGet(agent, { rule_id: "uuid..." });
199
+ await agent.methods.coordinationAlertsUpdate(agent, { rule_id: "uuid...", updates: { is_active: false } });
200
+ await agent.methods.coordinationAlertsDelete(agent, { rule_id: "uuid..." });
201
+ ```
202
+
203
+ The v1.1 `kolCoordination()` response also includes `peak_kols`, `peak_buys`, `exited_count`, and `coordination_score` (0-100). Pass `{ min_score, window_minutes, include_majors }` to filter.
204
+
205
+ ### KOL First-Touch Signal *(new in 1.3)*
206
+
207
+ Every "first KOL buy on a token mint" event β€” when a tracked KOL is the first of the cohort to touch a token. Filterable by **scout tier** (S/A/B/C from `mv_kol_scout_score`), KOL winrate, token age, mint suffix.
208
+
209
+ **Backtest:** S-tier scouts attract β‰₯3 follow-on KOLs within 4h ~50% of the time vs ~14% baseline (38d / 491k buys / 72,549 events). Public leaderboard at [madeonsol.com/kol/scouts](https://madeonsol.com/kol/scouts).
210
+
211
+ ```ts
212
+ // REST query β€” also exposed as MADEONSOL_KOL_FIRST_TOUCHES_ACTION for the agent
213
+ const { events } = await agent.methods.kolFirstTouches(agent, {
214
+ preset: "scout",
215
+ min_scout_tier: "S",
216
+ limit: 20,
217
+ });
218
+
219
+ // Webhook subscription (Ultra only) β€” push delivery, HMAC-signed
220
+ const res = await agent.methods.firstTouchSubscriptionsCreate(agent, {
221
+ name: "S-tier scouts on pump tokens",
222
+ filters: { min_scout_tier: "S", mint_suffix: "pump" },
223
+ delivery_mode: "webhook",
224
+ webhook_url: "https://you.com/hooks/scout",
225
+ });
226
+ // store res.webhook_secret β€” shown ONCE
227
+
228
+ await agent.methods.firstTouchSubscriptionsList(agent);
229
+ await agent.methods.firstTouchSubscriptionsGet(agent, { subscription_id: "uuid..." });
230
+ await agent.methods.firstTouchSubscriptionsUpdate(agent, { subscription_id: "uuid...", updates: { is_active: false } });
231
+ await agent.methods.firstTouchSubscriptionsDelete(agent, { subscription_id: "uuid..." });
232
+ ```
233
+
234
+ ULTRA only for subscriptions β€” up to 10 active per user.
235
+
236
+ > **Don't poll β€” push.** Median lead time before the second KOL is 12 seconds. WebSocket channel: `kol:first_touches` (PRO+).
237
+
238
+ ### Price Alerts *(new in 1.9)*
239
+
240
+ CRUD for token dip/recovery price alerts. Fires when a token's market cap crosses your threshold. PRO=5 rules, ULTRA=25.
241
+
242
+ ```ts
243
+ const { alert, webhook_secret } = await agent.methods.priceAlertsCreate(agent, {
244
+ name: "SOL dip buy",
245
+ token_mint: "So11111111111111111111111111111111111111112",
246
+ condition: "below",
247
+ threshold_mc_usd: 5_000_000_000,
248
+ cooldown_min: 120,
249
+ delivery_mode: "both",
250
+ webhook_url: "https://you.com/hooks/price",
251
+ });
252
+ // store webhook_secret β€” shown ONCE
253
+
254
+ await agent.methods.priceAlertsList(agent);
255
+ await agent.methods.priceAlertsGet(agent, { alert_id: "uuid..." });
256
+ await agent.methods.priceAlertsUpdate(agent, { alert_id: "uuid...", updates: { is_active: false } });
257
+ await agent.methods.priceAlertsDelete(agent, { alert_id: "uuid..." });
258
+ ```
259
+
260
+ Also exposed as `MADEONSOL_PRICE_ALERTS_LIST_ACTION` ("my price alerts") and `MADEONSOL_PRICE_ALERTS_CREATE_ACTION` ("alert me when token dips below").
261
+
262
+ ### Scout Leaderboard & KOL Consensus *(new in 1.9)*
263
+
264
+ | Method / Action | Description |
265
+ |---|---|
266
+ | `agent.methods.scoutLeaderboard(agent, params)` | Top scout-tier KOLs ranked by first-touch follow-on rate, win rate, and ROI (PRO+) |
267
+ | `agent.methods.kolConsensus(agent, params)` | Tokens with the strongest KOL agreement signal (PRO+) |
268
+ | `agent.methods.peakHistory(agent, { mint })` | Historical peak-density windows for a token (PRO+) |
269
+ | `agent.methods.coordinationHistory(agent, params)` | Global coordination event log (PRO+) |
270
+
271
+ ```ts
272
+ const { leaderboard } = await agent.methods.scoutLeaderboard(agent, { period: "30d", limit: 25 });
273
+ const { tokens } = await agent.methods.kolConsensus(agent, { min_kols: 5, period: "24h" });
274
+ ```
275
+
276
+ Also exposed as `MADEONSOL_SCOUT_LEADERBOARD_ACTION` and `MADEONSOL_KOL_CONSENSUS_ACTION`.
277
+
278
+ ### Wallet Derived Stats *(new in 1.9)*
279
+
280
+ `walletStats` now returns a `stats` object with derived fields: `win_rate` (0-1), `roi`, `verdict` ("strong" | "profitable" | "neutral" | "losing"), and `biggest_miss` (token with the highest post-exit gain the wallet missed).
281
+
282
+ ```ts
283
+ const { stats } = await agent.methods.walletStats(agent, { address: "WALLET_ADDRESS" });
284
+ // stats.win_rate, stats.roi, stats.verdict, stats.biggest_miss
285
+ ```
286
+
287
+ ### Rate-limit headers
288
+
289
+ Every successful request populates a module-level `lastRateLimit` (limit / remaining / reset / requestId):
290
+
291
+ ```ts
292
+ import { lastRateLimit } from "solana-agent-kit-plugin-madeonsol";
293
+ await agent.methods.kolFeed(agent, { limit: 10 });
294
+ console.log(lastRateLimit); // { limit: "10000", remaining: "9999", reset: "...", requestId: "..." }
295
+ ```
296
+
297
+ ## Tiers
298
+
299
+ | Tier | Price | Wallets tracked | Requests/day |
300
+ |------|-------|-----------------|--------------|
301
+ | BASIC (free) | $0 | 10 | 200 |
302
+ | PRO | €43/mo (€430/yr) β‰ˆ $49 | 50 | 10,000 |
303
+ | ULTRA | €131/mo (€1310/yr) β‰ˆ $149 | 100 + WS events | 100,000 |
304
+
305
+ Free tier returns the full REST response shape on every endpoint β€” real wallets, TX signatures, full precision. Paid tiers unlock webhooks, WebSockets, rule engines, and ULTRA-only data depth. Get a key at [madeonsol.com/pricing](https://madeonsol.com/pricing).
306
+
307
+ ## Also Available
308
+
309
+ | Platform | Package |
310
+ |---|---|
311
+ | TypeScript SDK | [`madeonsol`](https://www.npmjs.com/package/madeonsol) on npm |
312
+ | Rust SDK | [`madeonsol`](https://crates.io/crates/madeonsol) on crates.io |
313
+ | Python (LangChain, CrewAI) | [`madeonsol-x402`](https://pypi.org/project/madeonsol-x402/) on PyPI |
314
+ | MCP Server (Claude, Cursor) | [`mcp-server-madeonsol`](https://www.npmjs.com/package/mcp-server-madeonsol) Β· [Smithery](https://smithery.ai/servers/madeonsol/solana-kol-intelligence) Β· [Glama](https://glama.ai/mcp/servers/madeonsol/mcp-server-madeonsol) |
315
+ | ElizaOS | [`@madeonsol/plugin-madeonsol`](https://www.npmjs.com/package/@madeonsol/plugin-madeonsol) |
316
+
317
+ ## License
318
+
319
+ MIT
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ export declare const tokenBundleAction: {
3
+ name: string;
4
+ similes: string[];
5
+ description: string;
6
+ examples: {
7
+ input: {
8
+ mint: string;
9
+ };
10
+ output: {
11
+ status: string;
12
+ };
13
+ explanation: string;
14
+ }[][];
15
+ schema: z.ZodObject<{
16
+ mint: z.ZodString;
17
+ }, "strip", z.ZodTypeAny, {
18
+ mint: string;
19
+ }, {
20
+ mint: string;
21
+ }>;
22
+ handler: (agent: unknown, input: {
23
+ mint: string;
24
+ }) => Promise<{
25
+ status: string;
26
+ result: any;
27
+ message?: undefined;
28
+ } | {
29
+ status: string;
30
+ message: string;
31
+ result?: undefined;
32
+ }>;
33
+ };
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import { tokenBundle } from "../tools/index.js";
3
+ export const tokenBundleAction = {
4
+ name: "MADEONSOL_TOKEN_BUNDLE_ACTION",
5
+ similes: ["token bundle holdings", "bundle wallets", "same slot buyers", "insider bundle", "how much do bundlers still hold"],
6
+ description: "Get bundle-cohort holdings for a Solana token β€” which same-slot 'bundle' wallets (β‰₯3 buying in one slot) bought the token and how much of supply they STILL hold (the held_pct_of_supply rug/insider signal, from confirmed on-chain data). Returns a bundle summary (wallet_count, bundle_kind, held_ratio, held_pct_of_supply headline, fully_exited, buy_volume, tokens_held) and a wallets[] list. BASIC/TRADER get the bundle block only; PRO gets top-10 flags-only; ULTRA gets full holdings + wallet identity (kol_name, win_rate, bot_confidence). PRO/ULTRA only β€” BASIC receives HTTP 403.",
7
+ examples: [
8
+ [{ input: { mint: "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU" }, output: { status: "success" }, explanation: "How much of this token do the bundle wallets still hold?" }],
9
+ ],
10
+ schema: z.object({
11
+ mint: z.string().describe("Token mint address (base58)"),
12
+ }),
13
+ handler: async (agent, input) => {
14
+ try {
15
+ const data = await tokenBundle(agent, input);
16
+ return { status: "success", result: data };
17
+ }
18
+ catch (err) {
19
+ return { status: "error", message: err.message };
20
+ }
21
+ },
22
+ };
package/dist/index.d.ts CHANGED
@@ -13,11 +13,12 @@ import { meAction } from "./actions/me.js";
13
13
  import { tokensListAction } from "./actions/tokensList.js";
14
14
  import { almostBondedAction } from "./actions/almostBonded.js";
15
15
  import { tokenRiskAction } from "./actions/tokenRisk.js";
16
+ import { tokenBundleAction } from "./actions/tokenBundle.js";
16
17
  import { tokenCandlesAction } from "./actions/tokenCandles.js";
17
18
  import { tokenFlowAction } from "./actions/tokenFlow.js";
18
19
  import { tokenRiskBatchAction } from "./actions/tokenRiskBatch.js";
19
20
  import { streamSessionsAction, streamSessionKillAction } from "./actions/streamSessions.js";
20
- import { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, streamSessions, streamSessionKill, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, tokenRiskBatch, tokenCandles, tokenFlow, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, priceAlertsList, priceAlertsCreate, priceAlertsGet, priceAlertsUpdate, priceAlertsDelete, priceAlertsEvents, scoutLeaderboard, coordinationHistory, kolConsensus, peakHistory, walletStats, walletPnl, walletPositions, walletTrades, me, tokensList, almostBonded } from "./tools/index.js";
21
+ import { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, streamSessions, streamSessionKill, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, tokenRiskBatch, tokenBundle, tokenCandles, tokenFlow, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, priceAlertsList, priceAlertsCreate, priceAlertsGet, priceAlertsUpdate, priceAlertsDelete, priceAlertsEvents, scoutLeaderboard, coordinationHistory, kolConsensus, peakHistory, walletStats, walletPnl, walletPositions, walletTrades, me, tokensList, almostBonded } from "./tools/index.js";
21
22
  import { walletStatsAction, walletPnlAction, walletPositionsAction, walletTradesAction } from "./actions/wallet.js";
22
23
  declare const MadeOnSolPlugin: {
23
24
  name: string;
@@ -50,6 +51,7 @@ declare const MadeOnSolPlugin: {
50
51
  tokenBuyerQuality: typeof tokenBuyerQuality;
51
52
  tokenRisk: typeof tokenRisk;
52
53
  tokenRiskBatch: typeof tokenRiskBatch;
54
+ tokenBundle: typeof tokenBundle;
53
55
  tokenCandles: typeof tokenCandles;
54
56
  tokenFlow: typeof tokenFlow;
55
57
  copyTradeList: typeof copyTradeList;
@@ -1122,8 +1124,8 @@ declare const MadeOnSolPlugin: {
1122
1124
  initialize(_agent: unknown): void;
1123
1125
  };
1124
1126
  export default MadeOnSolPlugin;
1125
- export { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, streamSessions, streamSessionKill, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, tokenRiskBatch, tokenCandles, tokenFlow, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, priceAlertsList, priceAlertsCreate, priceAlertsGet, priceAlertsUpdate, priceAlertsDelete, priceAlertsEvents, scoutLeaderboard, coordinationHistory, kolConsensus, peakHistory, walletStats, walletPnl, walletPositions, walletTrades, me, tokensList, almostBonded, };
1127
+ export { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, streamSessions, streamSessionKill, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, tokenRiskBatch, tokenBundle, tokenCandles, tokenFlow, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, priceAlertsList, priceAlertsCreate, priceAlertsGet, priceAlertsUpdate, priceAlertsDelete, priceAlertsEvents, scoutLeaderboard, coordinationHistory, kolConsensus, peakHistory, walletStats, walletPnl, walletPositions, walletTrades, me, tokensList, almostBonded, };
1126
1128
  export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction, kolPnlAction, kolTrendingTokensAction, kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction, kolFirstTouchesAction };
1127
1129
  export { walletTrackerWatchlistAction, walletTrackerAddAction, walletTrackerRemoveAction, walletTrackerTradesAction, walletTrackerSummaryAction };
1128
1130
  export { walletStatsAction, walletPnlAction, walletPositionsAction, walletTradesAction };
1129
- export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenRiskBatchAction, tokenCandlesAction, tokenFlowAction, streamSessionsAction, streamSessionKillAction };
1131
+ export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenRiskBatchAction, tokenBundleAction, tokenCandlesAction, tokenFlowAction, streamSessionsAction, streamSessionKillAction };
package/dist/index.js CHANGED
@@ -13,11 +13,12 @@ import { meAction } from "./actions/me.js";
13
13
  import { tokensListAction } from "./actions/tokensList.js";
14
14
  import { almostBondedAction } from "./actions/almostBonded.js";
15
15
  import { tokenRiskAction } from "./actions/tokenRisk.js";
16
+ import { tokenBundleAction } from "./actions/tokenBundle.js";
16
17
  import { tokenCandlesAction } from "./actions/tokenCandles.js";
17
18
  import { tokenFlowAction } from "./actions/tokenFlow.js";
18
19
  import { tokenRiskBatchAction } from "./actions/tokenRiskBatch.js";
19
20
  import { streamSessionsAction, streamSessionKillAction } from "./actions/streamSessions.js";
20
- import { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, streamSessions, streamSessionKill, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, tokenRiskBatch, tokenCandles, tokenFlow, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, priceAlertsList, priceAlertsCreate, priceAlertsGet, priceAlertsUpdate, priceAlertsDelete, priceAlertsEvents, scoutLeaderboard, coordinationHistory, kolConsensus, peakHistory, walletStats, walletPnl, walletPositions, walletTrades, me, tokensList, almostBonded, } from "./tools/index.js";
21
+ import { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, streamSessions, streamSessionKill, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, tokenRiskBatch, tokenBundle, tokenCandles, tokenFlow, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, priceAlertsList, priceAlertsCreate, priceAlertsGet, priceAlertsUpdate, priceAlertsDelete, priceAlertsEvents, scoutLeaderboard, coordinationHistory, kolConsensus, peakHistory, walletStats, walletPnl, walletPositions, walletTrades, me, tokensList, almostBonded, } from "./tools/index.js";
21
22
  import { walletStatsAction, walletPnlAction, walletPositionsAction, walletTradesAction } from "./actions/wallet.js";
22
23
  const MadeOnSolPlugin = {
23
24
  name: "madeonsol",
@@ -50,6 +51,7 @@ const MadeOnSolPlugin = {
50
51
  tokenBuyerQuality,
51
52
  tokenRisk,
52
53
  tokenRiskBatch,
54
+ tokenBundle,
53
55
  tokenCandles,
54
56
  tokenFlow,
55
57
  copyTradeList,
@@ -108,6 +110,7 @@ const MadeOnSolPlugin = {
108
110
  almostBondedAction,
109
111
  tokenRiskAction,
110
112
  tokenRiskBatchAction,
113
+ tokenBundleAction,
111
114
  tokenCandlesAction,
112
115
  tokenFlowAction,
113
116
  streamSessionsAction,
@@ -122,8 +125,8 @@ const MadeOnSolPlugin = {
122
125
  },
123
126
  };
124
127
  export default MadeOnSolPlugin;
125
- export { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, streamSessions, streamSessionKill, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, tokenRiskBatch, tokenCandles, tokenFlow, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, priceAlertsList, priceAlertsCreate, priceAlertsGet, priceAlertsUpdate, priceAlertsDelete, priceAlertsEvents, scoutLeaderboard, coordinationHistory, kolConsensus, peakHistory, walletStats, walletPnl, walletPositions, walletTrades, me, tokensList, almostBonded, };
128
+ export { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, streamSessions, streamSessionKill, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, tokenRiskBatch, tokenBundle, tokenCandles, tokenFlow, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, priceAlertsList, priceAlertsCreate, priceAlertsGet, priceAlertsUpdate, priceAlertsDelete, priceAlertsEvents, scoutLeaderboard, coordinationHistory, kolConsensus, peakHistory, walletStats, walletPnl, walletPositions, walletTrades, me, tokensList, almostBonded, };
126
129
  export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction, kolPnlAction, kolTrendingTokensAction, kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction, kolFirstTouchesAction };
127
130
  export { walletTrackerWatchlistAction, walletTrackerAddAction, walletTrackerRemoveAction, walletTrackerTradesAction, walletTrackerSummaryAction };
128
131
  export { walletStatsAction, walletPnlAction, walletPositionsAction, walletTradesAction };
129
- export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenRiskBatchAction, tokenCandlesAction, tokenFlowAction, streamSessionsAction, streamSessionKillAction };
132
+ export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenRiskBatchAction, tokenBundleAction, tokenCandlesAction, tokenFlowAction, streamSessionsAction, streamSessionKillAction };
@@ -184,6 +184,10 @@ export declare function tokenBuyerQuality(agent: Agent, params: {
184
184
  export declare function tokenRisk(agent: Agent, params: {
185
185
  mint: string;
186
186
  }): Promise<any>;
187
+ /** Bundle-cohort holdings: which same-slot "bundle" wallets bought a token and how much of supply they STILL hold (held_pct_of_supply headline rug/insider signal). BASIC/TRADER=bundle block only; PRO=top-10 flags; ULTRA=full + identity. PRO/ULTRA only. */
188
+ export declare function tokenBundle(agent: Agent, params: {
189
+ mint: string;
190
+ }): Promise<any>;
187
191
  /** Historical OHLCV candles (1m/5m/15m/1h/4h/1d) aggregated from the trade firehose. PRO=OHLCV 30d; ULTRA=+net flow, liquidity delta, full history. PRO/ULTRA only. */
188
192
  export declare function tokenCandles(agent: Agent, params: {
189
193
  mint: string;
@@ -279,6 +279,10 @@ export async function tokenBuyerQuality(agent, params) {
279
279
  export async function tokenRisk(agent, params) {
280
280
  return restQuery(agent, "GET", `/tokens/${encodeURIComponent(params.mint)}/risk`);
281
281
  }
282
+ /** Bundle-cohort holdings: which same-slot "bundle" wallets bought a token and how much of supply they STILL hold (held_pct_of_supply headline rug/insider signal). BASIC/TRADER=bundle block only; PRO=top-10 flags; ULTRA=full + identity. PRO/ULTRA only. */
283
+ export async function tokenBundle(agent, params) {
284
+ return restQuery(agent, "GET", `/tokens/${encodeURIComponent(params.mint)}/bundle`);
285
+ }
282
286
  /** Historical OHLCV candles (1m/5m/15m/1h/4h/1d) aggregated from the trade firehose. PRO=OHLCV 30d; ULTRA=+net flow, liquidity delta, full history. PRO/ULTRA only. */
283
287
  export async function tokenCandles(agent, params) {
284
288
  const qs = new URLSearchParams();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solana-agent-kit-plugin-madeonsol",
3
- "version": "1.15.0",
3
+ "version": "1.16.0",
4
4
  "description": "Solana Agent Kit plugin for MadeOnSol β€” KOL intelligence and deployer analytics via x402 micropayments",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -38,7 +38,7 @@
38
38
  "license": "MIT",
39
39
  "repository": {
40
40
  "type": "git",
41
- "url": "https://github.com/LamboPoewert/solana-agent-kit-plugin-madeonsol"
41
+ "url": "https://github.com/madeonsol/solana-agent-kit-plugin-madeonsol"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "solana-agent-kit": ">=2.0.0",