solana-agent-kit-plugin-madeonsol 1.14.0 β†’ 1.15.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/README.md CHANGED
@@ -1,301 +1,318 @@
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 at [madeonsol.com/pricing](https://madeonsol.com/pricing) β€” no credit card required.
13
-
14
- > **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).
15
- >
16
- > **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).
17
- >
18
- > **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.
19
- >
20
- > **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.
21
-
22
- > **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`.
23
-
24
- > **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`.
25
-
26
- > **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).
27
-
28
- > **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.
29
- >
30
- > **New in 1.8** β€” **Universal Wallet API.** `agent.methods.walletStats()`, `walletPnl()`, `walletPositions()`, `walletTrades()` β€” FIFO cost-basis PnL for any wallet. PRO+. Cache hits free.
31
- >
32
- > **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.
33
-
34
- ## Quick start (10 seconds)
35
-
36
- ```bash
37
- npm install solana-agent-kit-plugin-madeonsol
38
- ```
39
-
40
- ```ts
41
- import { SolanaAgentKit } from "solana-agent-kit";
42
- import MadeOnSolPlugin from "solana-agent-kit-plugin-madeonsol";
43
- const agent = new SolanaAgentKit(privateKey, rpcUrl, { MADEONSOL_API_KEY: "msk_..." }); // free tier at https://madeonsol.com/pricing
44
- agent.use(MadeOnSolPlugin);
45
- const trades = await agent.methods.kolFeed(agent, { limit: 5, action: "buy" });
46
- ```
47
-
48
- ## Authentication
49
-
50
- Two options (in priority order):
51
-
52
- | Method | Config key | Best for |
53
- |---|---|---|
54
- | **MadeOnSol API key** (recommended) | `MADEONSOL_API_KEY` | Developers β€” [get a free key](https://madeonsol.com/pricing) |
55
- | x402 micropayments | `SVM_PRIVATE_KEY` | AI agents with Solana wallets |
56
-
57
- > **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).
58
-
59
- ## Install
60
-
61
- ```bash
62
- npm install solana-agent-kit-plugin-madeonsol
63
- ```
64
-
65
- > x402 peer deps (`@x402/fetch @x402/svm @x402/core @solana/kit @scure/base`) are only needed when using `SVM_PRIVATE_KEY`.
66
-
67
- ## Usage
68
-
69
- ```typescript
70
- import { SolanaAgentKit } from "solana-agent-kit";
71
- import MadeOnSolPlugin from "solana-agent-kit-plugin-madeonsol";
72
-
73
- const agent = new SolanaAgentKit(privateKey, rpcUrl, {
74
- MADEONSOL_API_KEY: "msk_your_api_key_here",
75
- });
76
-
77
- agent.use(MadeOnSolPlugin);
78
-
79
- // Use via methods
80
- const trades = await agent.methods.kolFeed(agent, { limit: 10, action: "buy" });
81
-
82
- // Wallet tracker
83
- const watchlist = await agent.methods.walletTrackerWatchlist(agent);
84
- await agent.methods.walletTrackerAdd(agent, { wallet_address: "WALLET", label: "whale" });
85
- const events = await agent.methods.walletTrackerTrades(agent, { limit: 50 });
86
-
87
- // Or let the LLM trigger actions via natural language
88
- // "What are KOLs buying right now?" β†’ MADEONSOL_KOL_FEED_ACTION
89
- ```
90
-
91
- ## Actions
92
-
93
- | Action | Triggers on |
94
- |---|---|
95
- | `MADEONSOL_KOL_FEED_ACTION` | "kol trades", "what are kols buying" |
96
- | `MADEONSOL_KOL_COORDINATION_ACTION` | "kol convergence", "tokens kols accumulating" |
97
- | `MADEONSOL_KOL_LEADERBOARD_ACTION` | "top kols", "kol rankings" β€” periods: today, 7d, 30d, 90d, 180d |
98
- | `MADEONSOL_DEPLOYER_ALERTS_ACTION` | "deployer alerts", "pump fun launches" |
99
- | `MADEONSOL_KOL_PNL_ACTION` | "kol pnl", "kol profit", "wallet pnl" |
100
- | `MADEONSOL_KOL_TRENDING_TOKENS_ACTION` | "kol trending tokens", "kol volume" |
101
- | `MADEONSOL_KOL_FIRST_TOUCHES_ACTION` | "kol first touch", "first kol buyer", "scout signal" β€” backtested first-mover signal (new in 1.3) |
102
- | `MADEONSOL_WALLET_TRACKER_WATCHLIST_ACTION` | "wallet watchlist", "tracked wallets" |
103
- | `MADEONSOL_WALLET_TRACKER_ADD_ACTION` | "track wallet", "watch wallet", "add to watchlist" |
104
- | `MADEONSOL_WALLET_TRACKER_REMOVE_ACTION` | "untrack wallet", "remove from watchlist" |
105
- | `MADEONSOL_WALLET_TRACKER_TRADES_ACTION` | "wallet tracker trades", "watchlist activity" |
106
- | `MADEONSOL_WALLET_TRACKER_SUMMARY_ACTION` | "wallet tracker summary", "tracked wallet stats" |
107
- | `MADEONSOL_ME_ACTION` | "my api account", "api quota", "remaining requests" β€” tier + quota introspection (new in 1.7) |
108
- | `MADEONSOL_TOKENS_LIST_ACTION` | "filter tokens", "tokens by market cap", "scan tokens" β€” filtered/sortable token directory + momentum/trending sorts, PRO+ (new in 1.7) |
109
- | `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+) |
110
- | `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+) |
111
- | `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+) |
112
- | `MADEONSOL_WALLET_POSITIONS_ACTION` | **New 1.8** Β· "wallet positions", "wallet bags", "open positions" β€” open lots with live unrealized SOL (PRO+) |
113
- | `MADEONSOL_WALLET_TRADES_ACTION` | **New 1.8** Β· "wallet trades", "wallet history" β€” cursor-paginated raw trades with filters (PRO+) |
114
- | `MADEONSOL_TOKEN_FLOW_ACTION` | **New 1.13** Β· "token flow", "net flow", "buy/sell pressure" β€” net buy/sell flow over a 1h/24h window (PRO+) |
115
-
116
- ## Additional methods (v1.0+)
117
-
118
- These are exposed via `agent.methods.*` (no LLM action wrappers β€” call directly):
119
-
120
- ### Alpha Wallet Intelligence
121
-
122
- Scored from 1M+ early-buyer records (wallets seen in the first 20 buyers of Pump.fun tokens).
123
-
124
- ```ts
125
- await agent.methods.alphaLeaderboard(agent, { limit: 100 }); // Free/Pro=100, ULTRA=500 + bot signals
126
- await agent.methods.alphaWallet(agent, { wallet: "WALLET" }); // ULTRA only β€” full breakdown + bot signals
127
- await agent.methods.alphaLinked(agent, { wallet: "WALLET" }); // ULTRA only β€” co-bought 3+ tokens within 2s
128
- ```
129
-
130
- ### Token Quality
131
-
132
- ```ts
133
- await agent.methods.tokenCapTable(agent, { mint: "MINT" }); // PRO=10, ULTRA=20 first non-deployer buyers
134
- await agent.methods.tokenBuyerQuality(agent, { mint: "MINT" }); // 0–100 buyer-quality score (5-min cached)
135
- await agent.methods.tokenRisk(agent, { mint: "MINT" }); // PRO+ 0–100 rug-risk/safety score + band + factors
136
- await agent.methods.tokenCandles(agent, { mint: "MINT", tf: "1h" }); // PRO+ OHLCV candles (1m–1d); ULTRA=+net flow, liquidity, full history
137
- 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
138
- await agent.methods.almostBonded(agent, { min_progress: 90, sort: "eta_asc" }); // PRO+ pre-bond pump.fun tokens by velocity: progress, ETA, stalled, deployer tier
139
- ```
140
-
141
- > 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).
142
-
143
- ### Copy-Trade Rules (PRO/ULTRA)
144
-
145
- Server-side rules that fire signals when a watched source wallet trades. Delivered via webhook (HMAC-signed) and/or WebSocket.
146
-
147
- ```ts
148
- await agent.methods.copyTradeList(agent);
149
- await agent.methods.copyTradeCreate(agent, {
150
- name: "Track Whales",
151
- source_wallets: ["WALLET_A", "WALLET_B"], // 1-50 wallets
152
- sizing_mode: "fixed",
153
- sizing_amount: 0.5, // required
154
- only_action: "buy",
155
- delivery_mode: "webhook",
156
- webhook_url: "https://you.com/hook",
157
- });
158
- await agent.methods.copyTradeSignals(agent, { limit: 50 }); // up to 7 days
159
- ```
160
-
161
- ### KOL Coordination Alerts (PRO/ULTRA β€” v1.1 push signals)
162
-
163
- 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.
164
-
165
- ```ts
166
- const res = await agent.methods.coordinationAlertsCreate(agent, {
167
- name: "fresh pump cluster",
168
- min_kols: 4,
169
- window_minutes: 15, // peak-density window (1-60)
170
- min_score: 70, // 0-100 composite score cutoff
171
- include_majors: false, // filter WIF/BONK/POPCAT
172
- cooldown_min: 60,
173
- score_jump_break: 10,
174
- delivery_mode: "both",
175
- webhook_url: "https://you.com/hooks/coord",
176
- });
177
- // store res.webhook_secret β€” shown ONCE
178
-
179
- await agent.methods.coordinationAlertsList(agent);
180
- await agent.methods.coordinationAlertsGet(agent, { rule_id: "uuid..." });
181
- await agent.methods.coordinationAlertsUpdate(agent, { rule_id: "uuid...", updates: { is_active: false } });
182
- await agent.methods.coordinationAlertsDelete(agent, { rule_id: "uuid..." });
183
- ```
184
-
185
- 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.
186
-
187
- ### KOL First-Touch Signal *(new in 1.3)*
188
-
189
- 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.
190
-
191
- **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).
192
-
193
- ```ts
194
- // REST query β€” also exposed as MADEONSOL_KOL_FIRST_TOUCHES_ACTION for the agent
195
- const { events } = await agent.methods.kolFirstTouches(agent, {
196
- preset: "scout",
197
- min_scout_tier: "S",
198
- limit: 20,
199
- });
200
-
201
- // Webhook subscription (Ultra only) β€” push delivery, HMAC-signed
202
- const res = await agent.methods.firstTouchSubscriptionsCreate(agent, {
203
- name: "S-tier scouts on pump tokens",
204
- filters: { min_scout_tier: "S", mint_suffix: "pump" },
205
- delivery_mode: "webhook",
206
- webhook_url: "https://you.com/hooks/scout",
207
- });
208
- // store res.webhook_secret β€” shown ONCE
209
-
210
- await agent.methods.firstTouchSubscriptionsList(agent);
211
- await agent.methods.firstTouchSubscriptionsGet(agent, { subscription_id: "uuid..." });
212
- await agent.methods.firstTouchSubscriptionsUpdate(agent, { subscription_id: "uuid...", updates: { is_active: false } });
213
- await agent.methods.firstTouchSubscriptionsDelete(agent, { subscription_id: "uuid..." });
214
- ```
215
-
216
- ULTRA only for subscriptions β€” up to 10 active per user.
217
-
218
- > **Don't poll β€” push.** Median lead time before the second KOL is 12 seconds. WebSocket channel: `kol:first_touches` (PRO+).
219
-
220
- ### Price Alerts *(new in 1.9)*
221
-
222
- CRUD for token dip/recovery price alerts. Fires when a token's market cap crosses your threshold. PRO=5 rules, ULTRA=25.
223
-
224
- ```ts
225
- const { alert, webhook_secret } = await agent.methods.priceAlertsCreate(agent, {
226
- name: "SOL dip buy",
227
- token_mint: "So11111111111111111111111111111111111111112",
228
- condition: "below",
229
- threshold_mc_usd: 5_000_000_000,
230
- cooldown_min: 120,
231
- delivery_mode: "both",
232
- webhook_url: "https://you.com/hooks/price",
233
- });
234
- // store webhook_secret β€” shown ONCE
235
-
236
- await agent.methods.priceAlertsList(agent);
237
- await agent.methods.priceAlertsGet(agent, { alert_id: "uuid..." });
238
- await agent.methods.priceAlertsUpdate(agent, { alert_id: "uuid...", updates: { is_active: false } });
239
- await agent.methods.priceAlertsDelete(agent, { alert_id: "uuid..." });
240
- ```
241
-
242
- Also exposed as `MADEONSOL_PRICE_ALERTS_LIST_ACTION` ("my price alerts") and `MADEONSOL_PRICE_ALERTS_CREATE_ACTION` ("alert me when token dips below").
243
-
244
- ### Scout Leaderboard & KOL Consensus *(new in 1.9)*
245
-
246
- | Method / Action | Description |
247
- |---|---|
248
- | `agent.methods.scoutLeaderboard(agent, params)` | Top scout-tier KOLs ranked by first-touch follow-on rate, win rate, and ROI (PRO+) |
249
- | `agent.methods.kolConsensus(agent, params)` | Tokens with the strongest KOL agreement signal (PRO+) |
250
- | `agent.methods.peakHistory(agent, { mint })` | Historical peak-density windows for a token (PRO+) |
251
- | `agent.methods.coordinationHistory(agent, params)` | Global coordination event log (PRO+) |
252
-
253
- ```ts
254
- const { leaderboard } = await agent.methods.scoutLeaderboard(agent, { period: "30d", limit: 25 });
255
- const { tokens } = await agent.methods.kolConsensus(agent, { min_kols: 5, period: "24h" });
256
- ```
257
-
258
- Also exposed as `MADEONSOL_SCOUT_LEADERBOARD_ACTION` and `MADEONSOL_KOL_CONSENSUS_ACTION`.
259
-
260
- ### Wallet Derived Stats *(new in 1.9)*
261
-
262
- `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).
263
-
264
- ```ts
265
- const { stats } = await agent.methods.walletStats(agent, { address: "WALLET_ADDRESS" });
266
- // stats.win_rate, stats.roi, stats.verdict, stats.biggest_miss
267
- ```
268
-
269
- ### Rate-limit headers
270
-
271
- Every successful request populates a module-level `lastRateLimit` (limit / remaining / reset / requestId):
272
-
273
- ```ts
274
- import { lastRateLimit } from "solana-agent-kit-plugin-madeonsol";
275
- await agent.methods.kolFeed(agent, { limit: 10 });
276
- console.log(lastRateLimit); // { limit: "10000", remaining: "9999", reset: "...", requestId: "..." }
277
- ```
278
-
279
- ## Tiers
280
-
281
- | Tier | Price | Wallets tracked | Requests/day |
282
- |------|-------|-----------------|--------------|
283
- | BASIC (free) | $0 | 10 | 200 |
284
- | PRO | $49/mo ($490/yr) | 50 | 10,000 |
285
- | ULTRA | $149/mo ($1,490/yr) | 100 + WS events | 100,000 |
286
-
287
- 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).
288
-
289
- ## Also Available
290
-
291
- | Platform | Package |
292
- |---|---|
293
- | TypeScript SDK | [`madeonsol`](https://www.npmjs.com/package/madeonsol) on npm |
294
- | Rust SDK | [`madeonsol`](https://crates.io/crates/madeonsol) on crates.io |
295
- | Python (LangChain, CrewAI) | [`madeonsol-x402`](https://pypi.org/project/madeonsol-x402/) on PyPI |
296
- | 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) |
297
- | ElizaOS | [`@madeonsol/plugin-madeonsol`](https://www.npmjs.com/package/@madeonsol/plugin-madeonsol) |
298
-
299
- ## License
300
-
301
- 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, 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
@@ -0,0 +1,55 @@
1
+ import { z } from "zod";
2
+ export declare const streamSessionsAction: {
3
+ name: string;
4
+ similes: string[];
5
+ description: string;
6
+ examples: {
7
+ input: {};
8
+ output: {
9
+ status: string;
10
+ };
11
+ explanation: string;
12
+ }[][];
13
+ schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
14
+ handler: (agent: unknown) => Promise<{
15
+ status: string;
16
+ result: any;
17
+ message?: undefined;
18
+ } | {
19
+ status: string;
20
+ message: string;
21
+ result?: undefined;
22
+ }>;
23
+ };
24
+ export declare const streamSessionKillAction: {
25
+ name: string;
26
+ similes: string[];
27
+ description: string;
28
+ examples: {
29
+ input: {
30
+ id: string;
31
+ };
32
+ output: {
33
+ status: string;
34
+ };
35
+ explanation: string;
36
+ }[][];
37
+ schema: z.ZodObject<{
38
+ id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
39
+ }, "strip", z.ZodTypeAny, {
40
+ id: string | number;
41
+ }, {
42
+ id: string | number;
43
+ }>;
44
+ handler: (agent: unknown, input: {
45
+ id: string | number;
46
+ }) => Promise<{
47
+ status: string;
48
+ result: any;
49
+ message?: undefined;
50
+ } | {
51
+ status: string;
52
+ message: string;
53
+ result?: undefined;
54
+ }>;
55
+ };
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ import { streamSessions, streamSessionKill } from "../tools/index.js";
3
+ export const streamSessionsAction = {
4
+ name: "MADEONSOL_STREAM_SESSIONS_ACTION",
5
+ similes: ["list stream sessions", "live websocket sessions", "my streaming connections", "active ws sessions", "who is connected"],
6
+ description: "List your live WebSocket streaming sessions across ws-streaming and dex-stream. Returns { sessions, count }: each session has id, service (ws-streaming|dex-stream), tier, channels[], connected_at, remote_ip, and messages_sent. PRO/ULTRA only.",
7
+ examples: [
8
+ [{ input: {}, output: { status: "success" }, explanation: "Show my active streaming sessions" }],
9
+ ],
10
+ schema: z.object({}),
11
+ handler: async (agent) => {
12
+ try {
13
+ const data = await streamSessions(agent);
14
+ return { status: "success", result: data };
15
+ }
16
+ catch (err) {
17
+ return { status: "error", message: err.message };
18
+ }
19
+ },
20
+ };
21
+ export const streamSessionKillAction = {
22
+ name: "MADEONSOL_STREAM_SESSION_KILL_ACTION",
23
+ similes: ["kill stream session", "disconnect session", "evict websocket session", "close streaming session", "free up a connection slot"],
24
+ description: "Evict (kill) one of your live WebSocket streaming sessions by id β€” frees the connection slot. Returns { evicted: true, id }; 404 if no such session, 400 if id is not a positive integer. PRO/ULTRA only.",
25
+ examples: [
26
+ [{ input: { id: "123" }, output: { status: "success" }, explanation: "Kill a live streaming session to free a slot" }],
27
+ ],
28
+ schema: z.object({
29
+ id: z.union([z.string(), z.number()]).describe("Session id (positive integer)"),
30
+ }),
31
+ handler: async (agent, input) => {
32
+ try {
33
+ const data = await streamSessionKill(agent, input);
34
+ return { status: "success", result: data };
35
+ }
36
+ catch (err) {
37
+ return { status: "error", message: err.message };
38
+ }
39
+ },
40
+ };
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ export declare const tokenRiskBatchAction: {
3
+ name: string;
4
+ similes: string[];
5
+ description: string;
6
+ examples: {
7
+ input: {
8
+ mints: string[];
9
+ };
10
+ output: {
11
+ status: string;
12
+ };
13
+ explanation: string;
14
+ }[][];
15
+ schema: z.ZodObject<{
16
+ mints: z.ZodArray<z.ZodString, "many">;
17
+ }, "strip", z.ZodTypeAny, {
18
+ mints: string[];
19
+ }, {
20
+ mints: string[];
21
+ }>;
22
+ handler: (agent: unknown, input: {
23
+ mints: 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,28 @@
1
+ import { z } from "zod";
2
+ import { tokenRiskBatch } from "../tools/index.js";
3
+ export const tokenRiskBatchAction = {
4
+ name: "MADEONSOL_TOKEN_RISK_BATCH_ACTION",
5
+ similes: ["batch token risk", "bulk rug risk", "score many tokens", "risk score multiple tokens", "rug check list"],
6
+ description: "Bulk 0–100 rug-risk/safety scoring for 1–50 Solana token mints in one call (higher = riskier). Returns { tokens, count }: each tracked mint has the same shape as the single-mint risk score (band, factors[], inputs) plus an `as_of` ISO timestamp; untracked mints come back as { mint, error: \"not_tracked\" } and do NOT fail the batch. Order follows the de-duplicated input; counts as one request against quota. PRO/ULTRA only β€” BASIC receives HTTP 403.",
7
+ examples: [
8
+ [
9
+ {
10
+ input: { mints: ["7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU", "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"] },
11
+ output: { status: "success" },
12
+ explanation: "Score the rug risk of several tokens at once",
13
+ },
14
+ ],
15
+ ],
16
+ schema: z.object({
17
+ mints: z.array(z.string()).min(1).max(50).describe("1-50 token mint addresses (base58)"),
18
+ }),
19
+ handler: async (agent, input) => {
20
+ try {
21
+ const data = await tokenRiskBatch(agent, input);
22
+ return { status: "success", result: data };
23
+ }
24
+ catch (err) {
25
+ return { status: "error", message: err.message };
26
+ }
27
+ },
28
+ };
package/dist/index.d.ts CHANGED
@@ -15,7 +15,9 @@ import { almostBondedAction } from "./actions/almostBonded.js";
15
15
  import { tokenRiskAction } from "./actions/tokenRisk.js";
16
16
  import { tokenCandlesAction } from "./actions/tokenCandles.js";
17
17
  import { tokenFlowAction } from "./actions/tokenFlow.js";
18
- import { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, 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";
18
+ import { tokenRiskBatchAction } from "./actions/tokenRiskBatch.js";
19
+ 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";
19
21
  import { walletStatsAction, walletPnlAction, walletPositionsAction, walletTradesAction } from "./actions/wallet.js";
20
22
  declare const MadeOnSolPlugin: {
21
23
  name: string;
@@ -34,6 +36,8 @@ declare const MadeOnSolPlugin: {
34
36
  deleteWebhook: typeof deleteWebhook;
35
37
  testWebhook: typeof testWebhook;
36
38
  getStreamToken: typeof getStreamToken;
39
+ streamSessions: typeof streamSessions;
40
+ streamSessionKill: typeof streamSessionKill;
37
41
  walletTrackerWatchlist: typeof walletTrackerWatchlist;
38
42
  walletTrackerAdd: typeof walletTrackerAdd;
39
43
  walletTrackerRemove: typeof walletTrackerRemove;
@@ -45,6 +49,7 @@ declare const MadeOnSolPlugin: {
45
49
  tokenCapTable: typeof tokenCapTable;
46
50
  tokenBuyerQuality: typeof tokenBuyerQuality;
47
51
  tokenRisk: typeof tokenRisk;
52
+ tokenRiskBatch: typeof tokenRiskBatch;
48
53
  tokenCandles: typeof tokenCandles;
49
54
  tokenFlow: typeof tokenFlow;
50
55
  copyTradeList: typeof copyTradeList;
@@ -963,6 +968,68 @@ declare const MadeOnSolPlugin: {
963
968
  message: string;
964
969
  result?: undefined;
965
970
  }>;
971
+ } | {
972
+ name: string;
973
+ similes: string[];
974
+ description: string;
975
+ examples: {
976
+ input: {
977
+ mints: string[];
978
+ };
979
+ output: {
980
+ status: string;
981
+ };
982
+ explanation: string;
983
+ }[][];
984
+ schema: import("zod").ZodObject<{
985
+ mints: import("zod").ZodArray<import("zod").ZodString, "many">;
986
+ }, "strip", import("zod").ZodTypeAny, {
987
+ mints: string[];
988
+ }, {
989
+ mints: string[];
990
+ }>;
991
+ handler: (agent: unknown, input: {
992
+ mints: string[];
993
+ }) => Promise<{
994
+ status: string;
995
+ result: any;
996
+ message?: undefined;
997
+ } | {
998
+ status: string;
999
+ message: string;
1000
+ result?: undefined;
1001
+ }>;
1002
+ } | {
1003
+ name: string;
1004
+ similes: string[];
1005
+ description: string;
1006
+ examples: {
1007
+ input: {
1008
+ id: string;
1009
+ };
1010
+ output: {
1011
+ status: string;
1012
+ };
1013
+ explanation: string;
1014
+ }[][];
1015
+ schema: import("zod").ZodObject<{
1016
+ id: import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber]>;
1017
+ }, "strip", import("zod").ZodTypeAny, {
1018
+ id: string | number;
1019
+ }, {
1020
+ id: string | number;
1021
+ }>;
1022
+ handler: (agent: unknown, input: {
1023
+ id: string | number;
1024
+ }) => Promise<{
1025
+ status: string;
1026
+ result: any;
1027
+ message?: undefined;
1028
+ } | {
1029
+ status: string;
1030
+ message: string;
1031
+ result?: undefined;
1032
+ }>;
966
1033
  } | {
967
1034
  name: string;
968
1035
  similes: string[];
@@ -1055,8 +1122,8 @@ declare const MadeOnSolPlugin: {
1055
1122
  initialize(_agent: unknown): void;
1056
1123
  };
1057
1124
  export default MadeOnSolPlugin;
1058
- export { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, 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, };
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, };
1059
1126
  export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction, kolPnlAction, kolTrendingTokensAction, kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction, kolFirstTouchesAction };
1060
1127
  export { walletTrackerWatchlistAction, walletTrackerAddAction, walletTrackerRemoveAction, walletTrackerTradesAction, walletTrackerSummaryAction };
1061
1128
  export { walletStatsAction, walletPnlAction, walletPositionsAction, walletTradesAction };
1062
- export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenCandlesAction, tokenFlowAction };
1129
+ export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenRiskBatchAction, tokenCandlesAction, tokenFlowAction, streamSessionsAction, streamSessionKillAction };
package/dist/index.js CHANGED
@@ -15,7 +15,9 @@ import { almostBondedAction } from "./actions/almostBonded.js";
15
15
  import { tokenRiskAction } from "./actions/tokenRisk.js";
16
16
  import { tokenCandlesAction } from "./actions/tokenCandles.js";
17
17
  import { tokenFlowAction } from "./actions/tokenFlow.js";
18
- import { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, 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";
18
+ import { tokenRiskBatchAction } from "./actions/tokenRiskBatch.js";
19
+ 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";
19
21
  import { walletStatsAction, walletPnlAction, walletPositionsAction, walletTradesAction } from "./actions/wallet.js";
20
22
  const MadeOnSolPlugin = {
21
23
  name: "madeonsol",
@@ -34,6 +36,8 @@ const MadeOnSolPlugin = {
34
36
  deleteWebhook,
35
37
  testWebhook,
36
38
  getStreamToken,
39
+ streamSessions,
40
+ streamSessionKill,
37
41
  walletTrackerWatchlist,
38
42
  walletTrackerAdd,
39
43
  walletTrackerRemove,
@@ -45,6 +49,7 @@ const MadeOnSolPlugin = {
45
49
  tokenCapTable,
46
50
  tokenBuyerQuality,
47
51
  tokenRisk,
52
+ tokenRiskBatch,
48
53
  tokenCandles,
49
54
  tokenFlow,
50
55
  copyTradeList,
@@ -102,8 +107,11 @@ const MadeOnSolPlugin = {
102
107
  tokensListAction,
103
108
  almostBondedAction,
104
109
  tokenRiskAction,
110
+ tokenRiskBatchAction,
105
111
  tokenCandlesAction,
106
112
  tokenFlowAction,
113
+ streamSessionsAction,
114
+ streamSessionKillAction,
107
115
  walletStatsAction,
108
116
  walletPnlAction,
109
117
  walletPositionsAction,
@@ -114,8 +122,8 @@ const MadeOnSolPlugin = {
114
122
  },
115
123
  };
116
124
  export default MadeOnSolPlugin;
117
- export { kolFeed, kolCoordination, kolLeaderboard, deployerAlerts, kolPnl, kolTrendingTokens, kolTokenEntryOrder, kolCompare, kolAlertsRecent, createWebhook, listWebhooks, deleteWebhook, testWebhook, getStreamToken, walletTrackerWatchlist, walletTrackerAdd, walletTrackerRemove, walletTrackerTrades, walletTrackerSummary, alphaLeaderboard, alphaWallet, alphaLinked, tokenCapTable, tokenBuyerQuality, tokenRisk, 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, };
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, };
118
126
  export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction, kolPnlAction, kolTrendingTokensAction, kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction, kolFirstTouchesAction };
119
127
  export { walletTrackerWatchlistAction, walletTrackerAddAction, walletTrackerRemoveAction, walletTrackerTradesAction, walletTrackerSummaryAction };
120
128
  export { walletStatsAction, walletPnlAction, walletPositionsAction, walletTradesAction };
121
- export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenCandlesAction, tokenFlowAction };
129
+ export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenRiskBatchAction, tokenCandlesAction, tokenFlowAction, streamSessionsAction, streamSessionKillAction };
@@ -113,6 +113,19 @@ export declare function testWebhook(agent: Agent, params: {
113
113
  webhook_id: number;
114
114
  }): Promise<any>;
115
115
  export declare function getStreamToken(agent: Agent): Promise<any>;
116
+ /**
117
+ * List your live WebSocket streaming sessions across ws-streaming and dex-stream.
118
+ * Returns `{ sessions, count }`; each session has `id`, `service`, `tier`, `channels[]`,
119
+ * `connected_at`, `remote_ip`, and `messages_sent`. PRO/ULTRA only.
120
+ */
121
+ export declare function streamSessions(agent: Agent): Promise<any>;
122
+ /**
123
+ * Evict (kill) a live WebSocket streaming session by id. Returns `{ evicted: true, id }`;
124
+ * 404 if no such session, 400 if `id` is not a positive integer. PRO/ULTRA only.
125
+ */
126
+ export declare function streamSessionKill(agent: Agent, params: {
127
+ id: string | number;
128
+ }): Promise<any>;
116
129
  export declare function walletTrackerWatchlist(agent: Agent): Promise<any>;
117
130
  export declare function walletTrackerAdd(agent: Agent, params: {
118
131
  wallet_address: string;
@@ -191,6 +204,14 @@ export declare function tokenFlow(agent: Agent, params: {
191
204
  export declare function tokenBuyerQualityBatch(agent: Agent, params: {
192
205
  mints: string[];
193
206
  }): Promise<any>;
207
+ /**
208
+ * Bulk rug-risk/safety scoring for 1–50 mints β€” same per-mint shape as tokenRisk() plus an `as_of` ISO string.
209
+ * Returns `{ tokens, count }` where `tokens` preserves de-duplicated input order; untracked mints come back as
210
+ * `{ mint, error: "not_tracked" }` and do NOT fail the batch. Counts as one request against quota. PRO/ULTRA only.
211
+ */
212
+ export declare function tokenRiskBatch(agent: Agent, params: {
213
+ mints: string[];
214
+ }): Promise<any>;
194
215
  /** Comprehensive per-mint snapshot: price, MC, 24h volume, deployer reputation, KOL activity, age, blacklist status. */
195
216
  export declare function tokenGet(agent: Agent, params: {
196
217
  mint: string;
@@ -182,6 +182,21 @@ export async function testWebhook(agent, params) {
182
182
  export async function getStreamToken(agent) {
183
183
  return restQuery(agent, "POST", "/stream/token");
184
184
  }
185
+ /**
186
+ * List your live WebSocket streaming sessions across ws-streaming and dex-stream.
187
+ * Returns `{ sessions, count }`; each session has `id`, `service`, `tier`, `channels[]`,
188
+ * `connected_at`, `remote_ip`, and `messages_sent`. PRO/ULTRA only.
189
+ */
190
+ export async function streamSessions(agent) {
191
+ return restQuery(agent, "GET", "/stream/sessions");
192
+ }
193
+ /**
194
+ * Evict (kill) a live WebSocket streaming session by id. Returns `{ evicted: true, id }`;
195
+ * 404 if no such session, 400 if `id` is not a positive integer. PRO/ULTRA only.
196
+ */
197
+ export async function streamSessionKill(agent, params) {
198
+ return restQuery(agent, "DELETE", `/stream/sessions/${encodeURIComponent(String(params.id))}`);
199
+ }
185
200
  // ── Wallet Tracker ──
186
201
  export async function walletTrackerWatchlist(agent) {
187
202
  return restQuery(agent, "GET", "/wallet-tracker/watchlist");
@@ -290,6 +305,14 @@ export async function tokenFlow(agent, params) {
290
305
  export async function tokenBuyerQualityBatch(agent, params) {
291
306
  return restQuery(agent, "POST", "/tokens/batch/buyer-quality", { mints: params.mints });
292
307
  }
308
+ /**
309
+ * Bulk rug-risk/safety scoring for 1–50 mints β€” same per-mint shape as tokenRisk() plus an `as_of` ISO string.
310
+ * Returns `{ tokens, count }` where `tokens` preserves de-duplicated input order; untracked mints come back as
311
+ * `{ mint, error: "not_tracked" }` and do NOT fail the batch. Counts as one request against quota. PRO/ULTRA only.
312
+ */
313
+ export async function tokenRiskBatch(agent, params) {
314
+ return restQuery(agent, "POST", "/tokens/batch/risk", { mints: params.mints });
315
+ }
293
316
  // ── Token Intelligence (/token/{mint}) ──
294
317
  /** Comprehensive per-mint snapshot: price, MC, 24h volume, deployer reputation, KOL activity, age, blacklist status. */
295
318
  export async function tokenGet(agent, params) {
package/package.json CHANGED
@@ -1,54 +1,54 @@
1
- {
2
- "name": "solana-agent-kit-plugin-madeonsol",
3
- "version": "1.14.0",
4
- "description": "Solana Agent Kit plugin for MadeOnSol β€” KOL intelligence and deployer analytics via x402 micropayments",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "files": [
9
- "dist",
10
- "README.md"
11
- ],
12
- "scripts": {
13
- "build": "tsc",
14
- "preflight": "bash ../../scripts/preflight-publish.sh",
15
- "prepublishOnly": "npm run preflight && npm run build"
16
- },
17
- "keywords": [
18
- "solana",
19
- "agent-kit",
20
- "solana-agent-kit",
21
- "sendaifun",
22
- "plugin",
23
- "ai-agent",
24
- "x402",
25
- "kol",
26
- "kol-tracker",
27
- "trading",
28
- "memecoin",
29
- "memecoin-tracker",
30
- "pumpfun",
31
- "deployer-hunter",
32
- "alpha",
33
- "alpha-bot",
34
- "smart-money",
35
- "copy-trading",
36
- "madeonsol"
37
- ],
38
- "license": "MIT",
39
- "repository": {
40
- "type": "git",
41
- "url": "https://github.com/LamboPoewert/solana-agent-kit-plugin-madeonsol"
42
- },
43
- "peerDependencies": {
44
- "solana-agent-kit": ">=2.0.0",
45
- "@x402/fetch": ">=0.1.0",
46
- "@x402/core": ">=0.1.0",
47
- "@x402/svm": ">=0.1.0",
48
- "@solana/kit": ">=2.0.0",
49
- "@scure/base": ">=1.0.0"
50
- },
51
- "dependencies": {
52
- "zod": "^3.24.0"
53
- }
54
- }
1
+ {
2
+ "name": "solana-agent-kit-plugin-madeonsol",
3
+ "version": "1.15.0",
4
+ "description": "Solana Agent Kit plugin for MadeOnSol β€” KOL intelligence and deployer analytics via x402 micropayments",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "README.md"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "preflight": "bash ../../scripts/preflight-publish.sh",
15
+ "prepublishOnly": "npm run preflight && npm run build"
16
+ },
17
+ "keywords": [
18
+ "solana",
19
+ "agent-kit",
20
+ "solana-agent-kit",
21
+ "sendaifun",
22
+ "plugin",
23
+ "ai-agent",
24
+ "x402",
25
+ "kol",
26
+ "kol-tracker",
27
+ "trading",
28
+ "memecoin",
29
+ "memecoin-tracker",
30
+ "pumpfun",
31
+ "deployer-hunter",
32
+ "alpha",
33
+ "alpha-bot",
34
+ "smart-money",
35
+ "copy-trading",
36
+ "madeonsol"
37
+ ],
38
+ "license": "MIT",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/LamboPoewert/solana-agent-kit-plugin-madeonsol"
42
+ },
43
+ "peerDependencies": {
44
+ "solana-agent-kit": ">=2.0.0",
45
+ "@x402/fetch": ">=0.1.0",
46
+ "@x402/core": ">=0.1.0",
47
+ "@x402/svm": ">=0.1.0",
48
+ "@solana/kit": ">=2.0.0",
49
+ "@scure/base": ">=1.0.0"
50
+ },
51
+ "dependencies": {
52
+ "zod": "^3.24.0"
53
+ }
54
+ }