@madeonsol/plugin-madeonsol 1.8.1 → 1.9.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
@@ -129,6 +129,47 @@ ULTRA only for subscriptions — up to 10 active. CRUD: `firstTouchSubscriptions
129
129
 
130
130
  > **Don't poll — push.** Median lead time before the second KOL is 12 seconds. WebSocket channel: `kol:first_touches`.
131
131
 
132
+ ### Price alerts *(new in 1.9)*
133
+
134
+ CRUD for token dip/recovery price alerts. Fires when a token's market cap crosses your threshold. PRO=5 rules, ULTRA=25.
135
+
136
+ | Action | Description |
137
+ |---|---|
138
+ | `PRICE_ALERTS_LIST` | List your price alert rules |
139
+ | `PRICE_ALERTS_CREATE` | Create a dip/recovery alert rule |
140
+ | `PRICE_ALERTS_DELETE` | Delete a price alert rule |
141
+
142
+ ```ts
143
+ import { MadeOnSolClient } from "@madeonsol/plugin-madeonsol";
144
+ const client = new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY });
145
+
146
+ const { alert, webhook_secret } = await client.priceAlertsCreate({
147
+ name: "SOL dip buy",
148
+ token_mint: "So11111111111111111111111111111111111111112",
149
+ condition: "below",
150
+ threshold_mc_usd: 5_000_000_000,
151
+ cooldown_min: 120,
152
+ delivery_mode: "both",
153
+ webhook_url: "https://you.com/hooks/price",
154
+ });
155
+ // store webhook_secret — shown ONCE
156
+ ```
157
+
158
+ Also available: `priceAlertsList()`, `priceAlertsGet(id)`, `priceAlertsUpdate(id, updates)`, `priceAlertsDelete(id)`.
159
+
160
+ ### Scout leaderboard & KOL consensus *(new in 1.9)*
161
+
162
+ | Action | Description |
163
+ |---|---|
164
+ | `SCOUT_LEADERBOARD` | Top scout-tier KOLs ranked by first-touch follow-on rate, win rate, and ROI (PRO+) |
165
+ | `KOL_CONSENSUS` | Tokens with the strongest KOL agreement signal (PRO+) |
166
+ | `PEAK_HISTORY` | Historical peak-density windows for a token (PRO+) |
167
+ | `COORDINATION_HISTORY` | Global coordination event log (PRO+) |
168
+
169
+ ### Wallet derived stats *(new in 1.9)*
170
+
171
+ `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).
172
+
132
173
  Your agent can then respond to queries like:
133
174
  - "What are KOLs buying right now?"
134
175
  - "Show me the KOL leaderboard this week"
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
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "@madeonsol/plugin-madeonsol",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "ElizaOS plugin for MadeOnSol — Solana KOL intelligence and deployer analytics via x402 micropayments",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",