@madeonsol/plugin-madeonsol 1.0.0 → 1.1.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
@@ -4,6 +4,18 @@ ElizaOS plugin for [MadeOnSol](https://madeonsol.com) — Solana KOL trading int
4
4
 
5
5
  > Real-time Solana trading intelligence: track 1,000+ KOL wallets with <3s latency, score 6,700+ Pump.fun deployers by reputation, detect multi-KOL coordination signals, monitor any Solana wallet for swaps and transfers, and stream every DEX trade. Free tier: 200 requests/day at [madeonsol.com/developer](https://madeonsol.com/developer) — no credit card required.
6
6
 
7
+ ## Quick start (10 seconds)
8
+
9
+ ```bash
10
+ npm install @madeonsol/plugin-madeonsol
11
+ ```
12
+
13
+ ```ts
14
+ import { madeOnSolPlugin } from "@madeonsol/plugin-madeonsol";
15
+ const agent = { plugins: [madeOnSolPlugin], settings: { MADEONSOL_API_KEY: "msk_..." } }; // free key: https://madeonsol.com/developer
16
+ // Then ask the agent: "What are KOLs buying right now?"
17
+ ```
18
+
7
19
  ## Authentication
8
20
 
9
21
  Three options (in priority order):
@@ -20,7 +32,7 @@ Gives your ElizaOS agent access to MadeOnSol's Solana intelligence API.
20
32
  | Action | Description |
21
33
  |--------|-------------|
22
34
  | `GET_KOL_FEED` | Real-time KOL trade feed (1,000+ wallets) |
23
- | `GET_KOL_COORDINATION` | Multi-KOL convergence signals |
35
+ | `GET_KOL_COORDINATION` | Multi-KOL convergence (v1.1 — peak-density, exits, 0-100 score) |
24
36
  | `GET_KOL_LEADERBOARD` | KOL PnL/win-rate rankings (180 days of history) |
25
37
  | `GET_DEPLOYER_ALERTS` | Pump.fun deployer alerts with KOL enrichment |
26
38
  | `WALLET_TRACKER_WATCHLIST` | List your tracked wallets and remaining capacity |
@@ -51,6 +63,30 @@ const agent = {
51
63
  };
52
64
  ```
53
65
 
66
+ ### v1.1 Coordination alerts (programmatic)
67
+
68
+ The `GET_KOL_COORDINATION` action surfaces the v1.1 `coordination_score`, `peak_kols`, and `exited_count` fields. For **push alerts** (fires within ~1s of a qualifying trade via WS `kol:coordination` channel + HMAC-signed webhook), use the client directly from a custom action:
69
+
70
+ ```ts
71
+ import { MadeOnSolClient } from "@madeonsol/plugin-madeonsol";
72
+
73
+ const client = new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY });
74
+ const res = await client.coordinationAlertsCreate({
75
+ name: "fresh pump cluster",
76
+ min_kols: 4,
77
+ window_minutes: 15,
78
+ min_score: 70,
79
+ include_majors: false,
80
+ cooldown_min: 60,
81
+ score_jump_break: 10,
82
+ delivery_mode: "both",
83
+ webhook_url: "https://you.com/hooks/coord",
84
+ });
85
+ // store res.data.webhook_secret — shown ONCE
86
+ ```
87
+
88
+ PRO=5 rules, ULTRA=20. Also available: `coordinationAlertsList()`, `coordinationAlertsGet(id)`, `coordinationAlertsUpdate(id, updates)`, `coordinationAlertsDelete(id)`.
89
+
54
90
  Your agent can then respond to queries like:
55
91
  - "What are KOLs buying right now?"
56
92
  - "Show me the KOL leaderboard this week"
@@ -65,7 +101,7 @@ Your agent can then respond to queries like:
65
101
  |------|-------|-----------------|--------------|
66
102
  | BASIC | Free | 10 | 200 |
67
103
  | PRO | $49/mo | 50 | 10,000 |
68
- | ULTRA | $199/mo | 100 + WS events | 100,000 |
104
+ | ULTRA | $149/mo | 100 + WS events | 100,000 |
69
105
 
70
106
  Get a key at [madeonsol.com/developer](https://madeonsol.com/developer).
71
107
 
@@ -29,7 +29,12 @@ export const kolCoordinationAction = {
29
29
  return undefined;
30
30
  }
31
31
  const data = result.data;
32
- const lines = (data.coordination || []).map((t) => `${t.token_symbol}: ${t.kol_count} KOLs ${t.signal} (${t.net_sol_flow > 0 ? "+" : ""}${t.net_sol_flow.toFixed(2)} SOL net)`);
32
+ const lines = (data.coordination || []).map((t) => {
33
+ const score = t.coordination_score != null ? ` · score ${t.coordination_score}/100` : "";
34
+ const peak = t.peak_kols != null ? ` · peak ${t.peak_kols}` : "";
35
+ const exited = t.exited_count ? ` · ${t.exited_count} exited` : "";
36
+ return `${t.token_symbol}: ${t.kol_count} KOLs ${t.signal} (${t.net_sol_flow > 0 ? "+" : ""}${t.net_sol_flow.toFixed(2)} SOL net)${score}${peak}${exited}`;
37
+ });
33
38
  callback?.({
34
39
  text: `KOL convergence signals (${period}):\n${lines.join("\n") || "No coordination signals found."}`,
35
40
  content: data,
package/dist/client.d.ts CHANGED
@@ -45,6 +45,14 @@ export declare class MadeOnSolClient {
45
45
  period?: string;
46
46
  min_kols?: string;
47
47
  limit?: string;
48
+ /** v1.1 — include WIF/BONK/POPCAT etc. ("true" | "false", default "false") */
49
+ include_majors?: string;
50
+ /** v1.1 — peak-density window in minutes (1-60, default 15) */
51
+ window_minutes?: string;
52
+ /** v1.1 — minimum composite coordination_score (0-100) */
53
+ min_score?: string;
54
+ min_avg_winrate?: string;
55
+ unique_strategies?: string;
48
56
  }): Promise<{
49
57
  data?: unknown;
50
58
  error?: string;
@@ -265,6 +273,41 @@ export declare class MadeOnSolClient {
265
273
  error?: string;
266
274
  status: number;
267
275
  }>;
276
+ coordinationAlertsList(): Promise<{
277
+ data?: unknown;
278
+ error?: string;
279
+ status: number;
280
+ }>;
281
+ coordinationAlertsCreate(params: {
282
+ name?: string;
283
+ min_kols?: number;
284
+ window_minutes?: number;
285
+ min_score?: number;
286
+ include_majors?: boolean;
287
+ cooldown_min?: number;
288
+ score_jump_break?: number;
289
+ delivery_mode?: "websocket" | "webhook" | "both";
290
+ webhook_url?: string;
291
+ }): Promise<{
292
+ data?: unknown;
293
+ error?: string;
294
+ status: number;
295
+ }>;
296
+ coordinationAlertsGet(ruleId: string): Promise<{
297
+ data?: unknown;
298
+ error?: string;
299
+ status: number;
300
+ }>;
301
+ coordinationAlertsUpdate(ruleId: string, updates: Record<string, unknown>): Promise<{
302
+ data?: unknown;
303
+ error?: string;
304
+ status: number;
305
+ }>;
306
+ coordinationAlertsDelete(ruleId: string): Promise<{
307
+ data?: unknown;
308
+ error?: string;
309
+ status: number;
310
+ }>;
268
311
  copyTradeSignals(params?: {
269
312
  rule_id?: string;
270
313
  limit?: string;
package/dist/client.js CHANGED
@@ -26,6 +26,9 @@ export class MadeOnSolClient {
26
26
  }
27
27
  else {
28
28
  this.authMode = "none";
29
+ console.warn("\n[madeonsol] MadeOnSolClient constructed without apiKey or fetchFn — every request will fail.\n" +
30
+ " → Get a free key (200 req/day, no card) at https://madeonsol.com/developer\n" +
31
+ " → Then: new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY })\n");
29
32
  }
30
33
  }
31
34
  captureRateLimit(res) {
@@ -110,7 +113,7 @@ export class MadeOnSolClient {
110
113
  // ── REST helper (used by webhooks, streaming, alpha, copy-trade, wallet-tracker) ──
111
114
  async restRequest(method, path, body) {
112
115
  if (this.authMode !== "madeonsol") {
113
- return { error: "MadeOnSol API key required for this endpoint. Get a free `msk_` key at madeonsol.com/developer", status: 401 };
116
+ return { error: "MadeOnSol API key required for this endpoint. Get a free `msk_` key at https://madeonsol.com/developer", status: 401 };
114
117
  }
115
118
  const res = await this.fetchFn(`${this.baseUrl}/api/v1${path}`, {
116
119
  method,
@@ -212,6 +215,22 @@ export class MadeOnSolClient {
212
215
  copyTradeDelete(ruleId) {
213
216
  return this.restRequest("DELETE", `/copy-trade/rules/${encodeURIComponent(ruleId)}`);
214
217
  }
218
+ // ── Coordination alerts (PRO/ULTRA, v1.1) ──
219
+ coordinationAlertsList() {
220
+ return this.restRequest("GET", "/kol/coordination/alerts");
221
+ }
222
+ coordinationAlertsCreate(params) {
223
+ return this.restRequest("POST", "/kol/coordination/alerts", params);
224
+ }
225
+ coordinationAlertsGet(ruleId) {
226
+ return this.restRequest("GET", `/kol/coordination/alerts/${encodeURIComponent(ruleId)}`);
227
+ }
228
+ coordinationAlertsUpdate(ruleId, updates) {
229
+ return this.restRequest("PATCH", `/kol/coordination/alerts/${encodeURIComponent(ruleId)}`, updates);
230
+ }
231
+ coordinationAlertsDelete(ruleId) {
232
+ return this.restRequest("DELETE", `/kol/coordination/alerts/${encodeURIComponent(ruleId)}`);
233
+ }
215
234
  copyTradeSignals(params) {
216
235
  const qs = new URLSearchParams();
217
236
  if (params)
package/dist/index.js CHANGED
@@ -57,7 +57,9 @@ export const madeOnSolPlugin = {
57
57
  }
58
58
  }
59
59
  else {
60
- console.log("[madeonsol] No auth configured. Set MADEONSOL_API_KEY (free at madeonsol.com/developer) or SVM_PRIVATE_KEY.");
60
+ console.warn("[madeonsol] No auth configured every API call will fail.\n" +
61
+ " → Get a free MADEONSOL_API_KEY (200 req/day, no card) at https://madeonsol.com/developer\n" +
62
+ " → Or set SVM_PRIVATE_KEY for x402 micropayments.");
61
63
  }
62
64
  const madeOnSolClient = new MadeOnSolClient({ baseUrl, apiKey, fetchFn });
63
65
  runtime[MADEONSOL_CLIENT_KEY] = madeOnSolClient;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@madeonsol/plugin-madeonsol",
3
- "version": "1.0.0",
3
+ "version": "1.1.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",
@@ -51,4 +51,4 @@
51
51
  "devDependencies": {
52
52
  "@elizaos/core": "^2.0.0-alpha.77"
53
53
  }
54
- }
54
+ }