@madeonsol/plugin-madeonsol 1.8.1 → 1.9.1
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 +49 -4
- package/dist/client.d.ts +70 -0
- package/dist/client.js +51 -1
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -9,8 +9,12 @@
|
|
|
9
9
|
|
|
10
10
|
ElizaOS plugin for [MadeOnSol](https://madeonsol.com) — Solana KOL trading intelligence, deployer analytics, and wallet tracking.
|
|
11
11
|
|
|
12
|
-
> Real-time Solana trading intelligence: track 1,
|
|
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
13
|
|
|
14
|
+
> **New in 1.9** — **Price alerts, scout leaderboard, coordination history, wallet derived stats.** `PRICE_ALERTS_*` actions (PRO=5, ULTRA=25 rules). `SCOUT_LEADERBOARD`, `KOL_CONSENSUS`, `PEAK_HISTORY`, `COORDINATION_HISTORY`. `WALLET_STATS` now returns `derived`: win_rate, roi, verdict, biggest_miss.
|
|
15
|
+
>
|
|
16
|
+
> **New in 1.8** — **Universal Wallet API.** `WALLET_STATS`, `WALLET_PNL`, `WALLET_POSITIONS`, `WALLET_TRADES` — FIFO cost-basis PnL and raw trades for any Solana wallet. PRO+. Cache hits free.
|
|
17
|
+
>
|
|
14
18
|
> **New in 1.7.0** *(2026-05-12)* — **Account introspection + token scanner actions.** Two new actions: `meAction` (`GET_MADEONSOL_ACCOUNT`) reports the caller's tier, daily/burst quota, and webhook / copy-trade / coord-rule slot counts; `tokensListAction` (`LIST_MADEONSOL_TOKENS`) scans the Solana token universe by MC, liquidity, 1h momentum, and primary DEX. New client methods: `client.getMe()` and `client.getTokensList(params)`. Token responses now expose **velocity / MEV-share enrichment** fields. The `/tokens` scanner applies a default `min_liq=2000` so the agent isn't drowned in dust pools by default. `/token/{mint}` HTTP 400s now return structured `code` / `reason` / `example` / `docs` so the agent can self-correct bad mints. Deprecated `avg_entry_mc_usd` has been removed from all leaderboard payloads.
|
|
15
19
|
|
|
16
20
|
## Quick start (10 seconds)
|
|
@@ -129,6 +133,47 @@ ULTRA only for subscriptions — up to 10 active. CRUD: `firstTouchSubscriptions
|
|
|
129
133
|
|
|
130
134
|
> **Don't poll — push.** Median lead time before the second KOL is 12 seconds. WebSocket channel: `kol:first_touches`.
|
|
131
135
|
|
|
136
|
+
### Price alerts *(new in 1.9)*
|
|
137
|
+
|
|
138
|
+
CRUD for token dip/recovery price alerts. Fires when a token's market cap crosses your threshold. PRO=5 rules, ULTRA=25.
|
|
139
|
+
|
|
140
|
+
| Action | Description |
|
|
141
|
+
|---|---|
|
|
142
|
+
| `PRICE_ALERTS_LIST` | List your price alert rules |
|
|
143
|
+
| `PRICE_ALERTS_CREATE` | Create a dip/recovery alert rule |
|
|
144
|
+
| `PRICE_ALERTS_DELETE` | Delete a price alert rule |
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
import { MadeOnSolClient } from "@madeonsol/plugin-madeonsol";
|
|
148
|
+
const client = new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY });
|
|
149
|
+
|
|
150
|
+
const { alert, webhook_secret } = await client.priceAlertsCreate({
|
|
151
|
+
name: "SOL dip buy",
|
|
152
|
+
token_mint: "So11111111111111111111111111111111111111112",
|
|
153
|
+
condition: "below",
|
|
154
|
+
threshold_mc_usd: 5_000_000_000,
|
|
155
|
+
cooldown_min: 120,
|
|
156
|
+
delivery_mode: "both",
|
|
157
|
+
webhook_url: "https://you.com/hooks/price",
|
|
158
|
+
});
|
|
159
|
+
// store webhook_secret — shown ONCE
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Also available: `priceAlertsList()`, `priceAlertsGet(id)`, `priceAlertsUpdate(id, updates)`, `priceAlertsDelete(id)`.
|
|
163
|
+
|
|
164
|
+
### Scout leaderboard & KOL consensus *(new in 1.9)*
|
|
165
|
+
|
|
166
|
+
| Action | Description |
|
|
167
|
+
|---|---|
|
|
168
|
+
| `SCOUT_LEADERBOARD` | Top scout-tier KOLs ranked by first-touch follow-on rate, win rate, and ROI (PRO+) |
|
|
169
|
+
| `KOL_CONSENSUS` | Tokens with the strongest KOL agreement signal (PRO+) |
|
|
170
|
+
| `PEAK_HISTORY` | Historical peak-density windows for a token (PRO+) |
|
|
171
|
+
| `COORDINATION_HISTORY` | Global coordination event log (PRO+) |
|
|
172
|
+
|
|
173
|
+
### Wallet derived stats *(new in 1.9)*
|
|
174
|
+
|
|
175
|
+
`WALLET_STATS` 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).
|
|
176
|
+
|
|
132
177
|
Your agent can then respond to queries like:
|
|
133
178
|
- "What are KOLs buying right now?"
|
|
134
179
|
- "Show me the KOL leaderboard this week"
|
|
@@ -141,9 +186,9 @@ Your agent can then respond to queries like:
|
|
|
141
186
|
|
|
142
187
|
| Tier | Price | Wallets tracked | Requests/day |
|
|
143
188
|
|------|-------|-----------------|--------------|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
189
|
+
| BASIC (free) | $0 | 10 | 200 |
|
|
190
|
+
| PRO | $49/mo ($490/yr) | 50 | 10,000 |
|
|
191
|
+
| ULTRA | $149/mo ($1,490/yr) | 100 + WS events | 100,000 |
|
|
147
192
|
|
|
148
193
|
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).
|
|
149
194
|
|
package/dist/client.d.ts
CHANGED
|
@@ -455,4 +455,74 @@ export declare class MadeOnSolClient {
|
|
|
455
455
|
error?: string;
|
|
456
456
|
status: number;
|
|
457
457
|
}>;
|
|
458
|
+
priceAlertsList(): Promise<{
|
|
459
|
+
data?: unknown;
|
|
460
|
+
error?: string;
|
|
461
|
+
status: number;
|
|
462
|
+
}>;
|
|
463
|
+
priceAlertsCreate(params: {
|
|
464
|
+
token_mint: string;
|
|
465
|
+
drop_pct: number;
|
|
466
|
+
recovery_pct?: number;
|
|
467
|
+
name?: string;
|
|
468
|
+
delivery_mode?: "webhook" | "websocket" | "both";
|
|
469
|
+
webhook_url?: string;
|
|
470
|
+
}): Promise<{
|
|
471
|
+
data?: unknown;
|
|
472
|
+
error?: string;
|
|
473
|
+
status: number;
|
|
474
|
+
}>;
|
|
475
|
+
priceAlertsGet(id: number | string): Promise<{
|
|
476
|
+
data?: unknown;
|
|
477
|
+
error?: string;
|
|
478
|
+
status: number;
|
|
479
|
+
}>;
|
|
480
|
+
priceAlertsUpdate(id: number | string, updates: Record<string, unknown>): Promise<{
|
|
481
|
+
data?: unknown;
|
|
482
|
+
error?: string;
|
|
483
|
+
status: number;
|
|
484
|
+
}>;
|
|
485
|
+
priceAlertsDelete(id: number | string): Promise<{
|
|
486
|
+
data?: unknown;
|
|
487
|
+
error?: string;
|
|
488
|
+
status: number;
|
|
489
|
+
}>;
|
|
490
|
+
priceAlertsEvents(params?: {
|
|
491
|
+
alert_id?: number;
|
|
492
|
+
event_type?: string;
|
|
493
|
+
since?: string;
|
|
494
|
+
limit?: number;
|
|
495
|
+
}): Promise<{
|
|
496
|
+
data?: unknown;
|
|
497
|
+
error?: string;
|
|
498
|
+
status: number;
|
|
499
|
+
}>;
|
|
500
|
+
scoutLeaderboard(params?: {
|
|
501
|
+
limit?: number;
|
|
502
|
+
scout_tier?: string;
|
|
503
|
+
sort?: string;
|
|
504
|
+
}): Promise<{
|
|
505
|
+
data?: unknown;
|
|
506
|
+
error?: string;
|
|
507
|
+
status: number;
|
|
508
|
+
}>;
|
|
509
|
+
coordinationHistory(params?: {
|
|
510
|
+
limit?: number;
|
|
511
|
+
since?: string;
|
|
512
|
+
min_score?: number;
|
|
513
|
+
}): Promise<{
|
|
514
|
+
data?: unknown;
|
|
515
|
+
error?: string;
|
|
516
|
+
status: number;
|
|
517
|
+
}>;
|
|
518
|
+
kolConsensus(mint: string): Promise<{
|
|
519
|
+
data?: unknown;
|
|
520
|
+
error?: string;
|
|
521
|
+
status: number;
|
|
522
|
+
}>;
|
|
523
|
+
peakHistory(mint: string): Promise<{
|
|
524
|
+
data?: unknown;
|
|
525
|
+
error?: string;
|
|
526
|
+
status: number;
|
|
527
|
+
}>;
|
|
458
528
|
}
|
package/dist/client.js
CHANGED
|
@@ -19,7 +19,7 @@ export class MadeOnSolClient {
|
|
|
19
19
|
this.authHeaders = {};
|
|
20
20
|
if (options.apiKey) {
|
|
21
21
|
this.authMode = "madeonsol";
|
|
22
|
-
this.authHeaders = { Authorization: `Bearer ${options.apiKey}
|
|
22
|
+
this.authHeaders = { Authorization: `Bearer ${options.apiKey}`, "User-Agent": "plugin-madeonsol/1.9.0" };
|
|
23
23
|
}
|
|
24
24
|
else if (options.fetchFn) {
|
|
25
25
|
this.authMode = "x402";
|
|
@@ -327,4 +327,54 @@ export class MadeOnSolClient {
|
|
|
327
327
|
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
328
328
|
return this.restRequest("GET", `/copy-trade/signals${query}`);
|
|
329
329
|
}
|
|
330
|
+
// ── Price alerts (PRO/ULTRA, v1.9) ──
|
|
331
|
+
priceAlertsList() {
|
|
332
|
+
return this.restRequest("GET", "/price-alerts");
|
|
333
|
+
}
|
|
334
|
+
priceAlertsCreate(params) {
|
|
335
|
+
return this.restRequest("POST", "/price-alerts", params);
|
|
336
|
+
}
|
|
337
|
+
priceAlertsGet(id) {
|
|
338
|
+
return this.restRequest("GET", `/price-alerts/${id}`);
|
|
339
|
+
}
|
|
340
|
+
priceAlertsUpdate(id, updates) {
|
|
341
|
+
return this.restRequest("PATCH", `/price-alerts/${id}`, updates);
|
|
342
|
+
}
|
|
343
|
+
priceAlertsDelete(id) {
|
|
344
|
+
return this.restRequest("DELETE", `/price-alerts/${id}`);
|
|
345
|
+
}
|
|
346
|
+
priceAlertsEvents(params) {
|
|
347
|
+
const qs = new URLSearchParams();
|
|
348
|
+
if (params)
|
|
349
|
+
for (const [k, v] of Object.entries(params))
|
|
350
|
+
if (v !== undefined)
|
|
351
|
+
qs.set(k, String(v));
|
|
352
|
+
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
353
|
+
return this.restRequest("GET", `/price-alerts/events${query}`);
|
|
354
|
+
}
|
|
355
|
+
// ── v1.9 new endpoints ──
|
|
356
|
+
scoutLeaderboard(params) {
|
|
357
|
+
const qs = new URLSearchParams();
|
|
358
|
+
if (params)
|
|
359
|
+
for (const [k, v] of Object.entries(params))
|
|
360
|
+
if (v !== undefined)
|
|
361
|
+
qs.set(k, String(v));
|
|
362
|
+
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
363
|
+
return this.restRequest("GET", `/kol/scouts/leaderboard${query}`);
|
|
364
|
+
}
|
|
365
|
+
coordinationHistory(params) {
|
|
366
|
+
const qs = new URLSearchParams();
|
|
367
|
+
if (params)
|
|
368
|
+
for (const [k, v] of Object.entries(params))
|
|
369
|
+
if (v !== undefined)
|
|
370
|
+
qs.set(k, String(v));
|
|
371
|
+
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
372
|
+
return this.restRequest("GET", `/kol/coordination/history${query}`);
|
|
373
|
+
}
|
|
374
|
+
kolConsensus(mint) {
|
|
375
|
+
return this.restRequest("GET", `/tokens/${encodeURIComponent(mint)}/kol-consensus`);
|
|
376
|
+
}
|
|
377
|
+
peakHistory(mint) {
|
|
378
|
+
return this.restRequest("GET", `/tokens/${encodeURIComponent(mint)}/peak-history`);
|
|
379
|
+
}
|
|
330
380
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@madeonsol/plugin-madeonsol",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.1",
|
|
4
4
|
"description": "ElizaOS plugin for MadeOnSol — Solana KOL intelligence and deployer analytics via x402 micropayments",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/LamboPoewert/plugin-madeonsol"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://madeonsol.com/solana-api",
|
|
5
10
|
"type": "module",
|
|
6
11
|
"main": "dist/index.js",
|
|
7
12
|
"types": "dist/index.d.ts",
|