solana-agent-kit-plugin-madeonsol 1.2.0 → 1.3.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 +34 -0
- package/dist/actions/kolFirstTouches.d.ts +82 -0
- package/dist/actions/kolFirstTouches.js +47 -0
- package/dist/index.d.ts +90 -3
- package/dist/index.js +11 -3
- package/dist/tools/index.d.ts +38 -0
- package/dist/tools/index.js +25 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -71,6 +71,7 @@ const events = await agent.methods.walletTrackerTrades(agent, { limit: 50 });
|
|
|
71
71
|
| `MADEONSOL_DEPLOYER_ALERTS_ACTION` | "deployer alerts", "pump fun launches" |
|
|
72
72
|
| `MADEONSOL_KOL_PNL_ACTION` | "kol pnl", "kol profit", "wallet pnl" |
|
|
73
73
|
| `MADEONSOL_KOL_TRENDING_TOKENS_ACTION` | "kol trending tokens", "kol volume" |
|
|
74
|
+
| `MADEONSOL_KOL_FIRST_TOUCHES_ACTION` | "kol first touch", "first kol buyer", "scout signal" — backtested first-mover signal (new in 1.3) |
|
|
74
75
|
| `MADEONSOL_WALLET_TRACKER_WATCHLIST_ACTION` | "wallet watchlist", "tracked wallets" |
|
|
75
76
|
| `MADEONSOL_WALLET_TRACKER_ADD_ACTION` | "track wallet", "watch wallet", "add to watchlist" |
|
|
76
77
|
| `MADEONSOL_WALLET_TRACKER_REMOVE_ACTION` | "untrack wallet", "remove from watchlist" |
|
|
@@ -139,6 +140,39 @@ await agent.methods.coordinationAlertsDelete(agent, { rule_id: "uuid..." });
|
|
|
139
140
|
|
|
140
141
|
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.
|
|
141
142
|
|
|
143
|
+
### KOL First-Touch Signal *(new in 1.3)*
|
|
144
|
+
|
|
145
|
+
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.
|
|
146
|
+
|
|
147
|
+
**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).
|
|
148
|
+
|
|
149
|
+
```ts
|
|
150
|
+
// REST query — also exposed as MADEONSOL_KOL_FIRST_TOUCHES_ACTION for the agent
|
|
151
|
+
const { events } = await agent.methods.kolFirstTouches(agent, {
|
|
152
|
+
preset: "scout",
|
|
153
|
+
min_scout_tier: "S",
|
|
154
|
+
limit: 20,
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Webhook subscription (Ultra only) — push delivery, HMAC-signed
|
|
158
|
+
const res = await agent.methods.firstTouchSubscriptionsCreate(agent, {
|
|
159
|
+
name: "S-tier scouts on pump tokens",
|
|
160
|
+
filters: { min_scout_tier: "S", mint_suffix: "pump" },
|
|
161
|
+
delivery_mode: "webhook",
|
|
162
|
+
webhook_url: "https://you.com/hooks/scout",
|
|
163
|
+
});
|
|
164
|
+
// store res.webhook_secret — shown ONCE
|
|
165
|
+
|
|
166
|
+
await agent.methods.firstTouchSubscriptionsList(agent);
|
|
167
|
+
await agent.methods.firstTouchSubscriptionsGet(agent, { subscription_id: "uuid..." });
|
|
168
|
+
await agent.methods.firstTouchSubscriptionsUpdate(agent, { subscription_id: "uuid...", updates: { is_active: false } });
|
|
169
|
+
await agent.methods.firstTouchSubscriptionsDelete(agent, { subscription_id: "uuid..." });
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
ULTRA only for subscriptions — up to 10 active per user.
|
|
173
|
+
|
|
174
|
+
> **Don't poll — push.** Median lead time before the second KOL is 12 seconds. WebSocket channel: `kol:first_touches` (PRO+).
|
|
175
|
+
|
|
142
176
|
### Rate-limit headers
|
|
143
177
|
|
|
144
178
|
Every successful request populates a module-level `lastRateLimit` (limit / remaining / reset / requestId):
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const kolFirstTouchesAction: {
|
|
3
|
+
name: string;
|
|
4
|
+
similes: string[];
|
|
5
|
+
description: string;
|
|
6
|
+
examples: {
|
|
7
|
+
input: {
|
|
8
|
+
preset: string;
|
|
9
|
+
limit: number;
|
|
10
|
+
};
|
|
11
|
+
output: {
|
|
12
|
+
status: string;
|
|
13
|
+
};
|
|
14
|
+
explanation: string;
|
|
15
|
+
}[][];
|
|
16
|
+
schema: z.ZodObject<{
|
|
17
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
18
|
+
since: z.ZodOptional<z.ZodString>;
|
|
19
|
+
before: z.ZodOptional<z.ZodString>;
|
|
20
|
+
kol: z.ZodOptional<z.ZodString>;
|
|
21
|
+
min_kol_winrate_7d: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
min_scout_tier: z.ZodOptional<z.ZodEnum<["S", "A", "B", "C"]>>;
|
|
23
|
+
min_n_touches: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
strategy: z.ZodOptional<z.ZodEnum<["scalper", "day_trader", "swing_trader", "hodler", "mixed"]>>;
|
|
25
|
+
token_age_max_min: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
min_first_buy_sol: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
mint_suffix: z.ZodOptional<z.ZodString>;
|
|
28
|
+
preset: z.ZodOptional<z.ZodEnum<["scout", "fresh_launch"]>>;
|
|
29
|
+
include: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
limit: number;
|
|
32
|
+
before?: string | undefined;
|
|
33
|
+
since?: string | undefined;
|
|
34
|
+
kol?: string | undefined;
|
|
35
|
+
min_kol_winrate_7d?: number | undefined;
|
|
36
|
+
min_scout_tier?: "S" | "A" | "B" | "C" | undefined;
|
|
37
|
+
min_n_touches?: number | undefined;
|
|
38
|
+
strategy?: "scalper" | "day_trader" | "swing_trader" | "hodler" | "mixed" | undefined;
|
|
39
|
+
token_age_max_min?: number | undefined;
|
|
40
|
+
min_first_buy_sol?: number | undefined;
|
|
41
|
+
mint_suffix?: string | undefined;
|
|
42
|
+
preset?: "scout" | "fresh_launch" | undefined;
|
|
43
|
+
include?: string | undefined;
|
|
44
|
+
}, {
|
|
45
|
+
limit?: number | undefined;
|
|
46
|
+
before?: string | undefined;
|
|
47
|
+
since?: string | undefined;
|
|
48
|
+
kol?: string | undefined;
|
|
49
|
+
min_kol_winrate_7d?: number | undefined;
|
|
50
|
+
min_scout_tier?: "S" | "A" | "B" | "C" | undefined;
|
|
51
|
+
min_n_touches?: number | undefined;
|
|
52
|
+
strategy?: "scalper" | "day_trader" | "swing_trader" | "hodler" | "mixed" | undefined;
|
|
53
|
+
token_age_max_min?: number | undefined;
|
|
54
|
+
min_first_buy_sol?: number | undefined;
|
|
55
|
+
mint_suffix?: string | undefined;
|
|
56
|
+
preset?: "scout" | "fresh_launch" | undefined;
|
|
57
|
+
include?: string | undefined;
|
|
58
|
+
}>;
|
|
59
|
+
handler: (agent: unknown, input: {
|
|
60
|
+
limit?: number;
|
|
61
|
+
since?: string;
|
|
62
|
+
before?: string;
|
|
63
|
+
kol?: string;
|
|
64
|
+
min_kol_winrate_7d?: number;
|
|
65
|
+
min_scout_tier?: "S" | "A" | "B" | "C";
|
|
66
|
+
min_n_touches?: number;
|
|
67
|
+
strategy?: "scalper" | "day_trader" | "swing_trader" | "hodler" | "mixed";
|
|
68
|
+
token_age_max_min?: number;
|
|
69
|
+
min_first_buy_sol?: number;
|
|
70
|
+
mint_suffix?: string;
|
|
71
|
+
preset?: "scout" | "fresh_launch";
|
|
72
|
+
include?: string;
|
|
73
|
+
}) => Promise<{
|
|
74
|
+
status: string;
|
|
75
|
+
result: any;
|
|
76
|
+
message?: undefined;
|
|
77
|
+
} | {
|
|
78
|
+
status: string;
|
|
79
|
+
message: string;
|
|
80
|
+
result?: undefined;
|
|
81
|
+
}>;
|
|
82
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { kolFirstTouches } from "../tools/index.js";
|
|
3
|
+
export const kolFirstTouchesAction = {
|
|
4
|
+
name: "MADEONSOL_KOL_FIRST_TOUCHES_ACTION",
|
|
5
|
+
similes: [
|
|
6
|
+
"kol first touch",
|
|
7
|
+
"first kol buyer",
|
|
8
|
+
"scout signal",
|
|
9
|
+
"smart money first buyer",
|
|
10
|
+
"kol scout alert",
|
|
11
|
+
"first buy by kol",
|
|
12
|
+
],
|
|
13
|
+
description: "Get the most recent first-KOL-touch events on Solana tokens — the moment a tracked KOL was the first to buy a given mint. Filterable by scout tier (S/A/B/C from mv_kol_scout_score), KOL winrate, token age, mint suffix. Backtest: top scouts attract >=3 follow-on KOLs within 4h ~50% of the time vs ~14% baseline.",
|
|
14
|
+
examples: [
|
|
15
|
+
[
|
|
16
|
+
{
|
|
17
|
+
input: { preset: "scout", limit: 10 },
|
|
18
|
+
output: { status: "success" },
|
|
19
|
+
explanation: "Fetch 10 recent first-touch events from B-tier-or-better scouts on tokens younger than 60 minutes",
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
],
|
|
23
|
+
schema: z.object({
|
|
24
|
+
limit: z.number().min(1).max(100).default(20).describe("Number of events (1-100)"),
|
|
25
|
+
since: z.string().optional().describe("ISO timestamp — events strictly newer than this"),
|
|
26
|
+
before: z.string().optional().describe("ISO timestamp — events strictly older than this (pagination cursor)"),
|
|
27
|
+
kol: z.string().optional().describe("Single KOL wallet address (base58)"),
|
|
28
|
+
min_kol_winrate_7d: z.number().min(0).max(100).optional(),
|
|
29
|
+
min_scout_tier: z.enum(["S", "A", "B", "C"]).optional().describe("Scout tier S/A/B/C (S = highest)"),
|
|
30
|
+
min_n_touches: z.number().min(1).optional(),
|
|
31
|
+
strategy: z.enum(["scalper", "day_trader", "swing_trader", "hodler", "mixed"]).optional(),
|
|
32
|
+
token_age_max_min: z.number().min(1).optional().describe("Only events on tokens younger than N minutes"),
|
|
33
|
+
min_first_buy_sol: z.number().min(0).optional(),
|
|
34
|
+
mint_suffix: z.string().optional().describe("Suffix-filter the token mint (e.g. 'pump')"),
|
|
35
|
+
preset: z.enum(["scout", "fresh_launch"]).optional(),
|
|
36
|
+
include: z.string().optional().describe("Comma-separated includes — currently 'followers_4h'"),
|
|
37
|
+
}),
|
|
38
|
+
handler: async (agent, input) => {
|
|
39
|
+
try {
|
|
40
|
+
const data = await kolFirstTouches(agent, input);
|
|
41
|
+
return { status: "success", result: data };
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
return { status: "error", message: err.message };
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ import { walletTrackerWatchlistAction, walletTrackerAddAction, walletTrackerRemo
|
|
|
8
8
|
import { kolTokenEntryOrderAction } from "./actions/kolTokenEntryOrder.js";
|
|
9
9
|
import { kolCompareAction } from "./actions/kolCompare.js";
|
|
10
10
|
import { kolAlertsRecentAction } from "./actions/kolAlertsRecent.js";
|
|
11
|
-
import {
|
|
11
|
+
import { kolFirstTouchesAction } from "./actions/kolFirstTouches.js";
|
|
12
|
+
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, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete } from "./tools/index.js";
|
|
12
13
|
declare const MadeOnSolPlugin: {
|
|
13
14
|
name: string;
|
|
14
15
|
methods: {
|
|
@@ -47,6 +48,12 @@ declare const MadeOnSolPlugin: {
|
|
|
47
48
|
coordinationAlertsGet: typeof coordinationAlertsGet;
|
|
48
49
|
coordinationAlertsUpdate: typeof coordinationAlertsUpdate;
|
|
49
50
|
coordinationAlertsDelete: typeof coordinationAlertsDelete;
|
|
51
|
+
kolFirstTouches: typeof kolFirstTouches;
|
|
52
|
+
firstTouchSubscriptionsList: typeof firstTouchSubscriptionsList;
|
|
53
|
+
firstTouchSubscriptionsCreate: typeof firstTouchSubscriptionsCreate;
|
|
54
|
+
firstTouchSubscriptionsGet: typeof firstTouchSubscriptionsGet;
|
|
55
|
+
firstTouchSubscriptionsUpdate: typeof firstTouchSubscriptionsUpdate;
|
|
56
|
+
firstTouchSubscriptionsDelete: typeof firstTouchSubscriptionsDelete;
|
|
50
57
|
};
|
|
51
58
|
actions: ({
|
|
52
59
|
name: string;
|
|
@@ -564,10 +571,90 @@ declare const MadeOnSolPlugin: {
|
|
|
564
571
|
message: string;
|
|
565
572
|
result?: undefined;
|
|
566
573
|
}>;
|
|
574
|
+
} | {
|
|
575
|
+
name: string;
|
|
576
|
+
similes: string[];
|
|
577
|
+
description: string;
|
|
578
|
+
examples: {
|
|
579
|
+
input: {
|
|
580
|
+
preset: string;
|
|
581
|
+
limit: number;
|
|
582
|
+
};
|
|
583
|
+
output: {
|
|
584
|
+
status: string;
|
|
585
|
+
};
|
|
586
|
+
explanation: string;
|
|
587
|
+
}[][];
|
|
588
|
+
schema: import("zod").ZodObject<{
|
|
589
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
590
|
+
since: import("zod").ZodOptional<import("zod").ZodString>;
|
|
591
|
+
before: import("zod").ZodOptional<import("zod").ZodString>;
|
|
592
|
+
kol: import("zod").ZodOptional<import("zod").ZodString>;
|
|
593
|
+
min_kol_winrate_7d: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
594
|
+
min_scout_tier: import("zod").ZodOptional<import("zod").ZodEnum<["S", "A", "B", "C"]>>;
|
|
595
|
+
min_n_touches: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
596
|
+
strategy: import("zod").ZodOptional<import("zod").ZodEnum<["scalper", "day_trader", "swing_trader", "hodler", "mixed"]>>;
|
|
597
|
+
token_age_max_min: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
598
|
+
min_first_buy_sol: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
599
|
+
mint_suffix: import("zod").ZodOptional<import("zod").ZodString>;
|
|
600
|
+
preset: import("zod").ZodOptional<import("zod").ZodEnum<["scout", "fresh_launch"]>>;
|
|
601
|
+
include: import("zod").ZodOptional<import("zod").ZodString>;
|
|
602
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
603
|
+
limit: number;
|
|
604
|
+
before?: string | undefined;
|
|
605
|
+
since?: string | undefined;
|
|
606
|
+
kol?: string | undefined;
|
|
607
|
+
min_kol_winrate_7d?: number | undefined;
|
|
608
|
+
min_scout_tier?: "S" | "A" | "B" | "C" | undefined;
|
|
609
|
+
min_n_touches?: number | undefined;
|
|
610
|
+
strategy?: "scalper" | "day_trader" | "swing_trader" | "hodler" | "mixed" | undefined;
|
|
611
|
+
token_age_max_min?: number | undefined;
|
|
612
|
+
min_first_buy_sol?: number | undefined;
|
|
613
|
+
mint_suffix?: string | undefined;
|
|
614
|
+
preset?: "scout" | "fresh_launch" | undefined;
|
|
615
|
+
include?: string | undefined;
|
|
616
|
+
}, {
|
|
617
|
+
limit?: number | undefined;
|
|
618
|
+
before?: string | undefined;
|
|
619
|
+
since?: string | undefined;
|
|
620
|
+
kol?: string | undefined;
|
|
621
|
+
min_kol_winrate_7d?: number | undefined;
|
|
622
|
+
min_scout_tier?: "S" | "A" | "B" | "C" | undefined;
|
|
623
|
+
min_n_touches?: number | undefined;
|
|
624
|
+
strategy?: "scalper" | "day_trader" | "swing_trader" | "hodler" | "mixed" | undefined;
|
|
625
|
+
token_age_max_min?: number | undefined;
|
|
626
|
+
min_first_buy_sol?: number | undefined;
|
|
627
|
+
mint_suffix?: string | undefined;
|
|
628
|
+
preset?: "scout" | "fresh_launch" | undefined;
|
|
629
|
+
include?: string | undefined;
|
|
630
|
+
}>;
|
|
631
|
+
handler: (agent: unknown, input: {
|
|
632
|
+
limit?: number;
|
|
633
|
+
since?: string;
|
|
634
|
+
before?: string;
|
|
635
|
+
kol?: string;
|
|
636
|
+
min_kol_winrate_7d?: number;
|
|
637
|
+
min_scout_tier?: "S" | "A" | "B" | "C";
|
|
638
|
+
min_n_touches?: number;
|
|
639
|
+
strategy?: "scalper" | "day_trader" | "swing_trader" | "hodler" | "mixed";
|
|
640
|
+
token_age_max_min?: number;
|
|
641
|
+
min_first_buy_sol?: number;
|
|
642
|
+
mint_suffix?: string;
|
|
643
|
+
preset?: "scout" | "fresh_launch";
|
|
644
|
+
include?: string;
|
|
645
|
+
}) => Promise<{
|
|
646
|
+
status: string;
|
|
647
|
+
result: any;
|
|
648
|
+
message?: undefined;
|
|
649
|
+
} | {
|
|
650
|
+
status: string;
|
|
651
|
+
message: string;
|
|
652
|
+
result?: undefined;
|
|
653
|
+
}>;
|
|
567
654
|
})[];
|
|
568
655
|
initialize(_agent: unknown): void;
|
|
569
656
|
};
|
|
570
657
|
export default MadeOnSolPlugin;
|
|
571
|
-
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, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, };
|
|
572
|
-
export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction, kolPnlAction, kolTrendingTokensAction, kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction };
|
|
658
|
+
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, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, };
|
|
659
|
+
export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction, kolPnlAction, kolTrendingTokensAction, kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction, kolFirstTouchesAction };
|
|
573
660
|
export { walletTrackerWatchlistAction, walletTrackerAddAction, walletTrackerRemoveAction, walletTrackerTradesAction, walletTrackerSummaryAction };
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,8 @@ import { walletTrackerWatchlistAction, walletTrackerAddAction, walletTrackerRemo
|
|
|
8
8
|
import { kolTokenEntryOrderAction } from "./actions/kolTokenEntryOrder.js";
|
|
9
9
|
import { kolCompareAction } from "./actions/kolCompare.js";
|
|
10
10
|
import { kolAlertsRecentAction } from "./actions/kolAlertsRecent.js";
|
|
11
|
-
import {
|
|
11
|
+
import { kolFirstTouchesAction } from "./actions/kolFirstTouches.js";
|
|
12
|
+
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, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, } from "./tools/index.js";
|
|
12
13
|
const MadeOnSolPlugin = {
|
|
13
14
|
name: "madeonsol",
|
|
14
15
|
methods: {
|
|
@@ -47,6 +48,12 @@ const MadeOnSolPlugin = {
|
|
|
47
48
|
coordinationAlertsGet,
|
|
48
49
|
coordinationAlertsUpdate,
|
|
49
50
|
coordinationAlertsDelete,
|
|
51
|
+
kolFirstTouches,
|
|
52
|
+
firstTouchSubscriptionsList,
|
|
53
|
+
firstTouchSubscriptionsCreate,
|
|
54
|
+
firstTouchSubscriptionsGet,
|
|
55
|
+
firstTouchSubscriptionsUpdate,
|
|
56
|
+
firstTouchSubscriptionsDelete,
|
|
50
57
|
},
|
|
51
58
|
actions: [
|
|
52
59
|
kolFeedAction,
|
|
@@ -58,6 +65,7 @@ const MadeOnSolPlugin = {
|
|
|
58
65
|
kolTokenEntryOrderAction,
|
|
59
66
|
kolCompareAction,
|
|
60
67
|
kolAlertsRecentAction,
|
|
68
|
+
kolFirstTouchesAction,
|
|
61
69
|
walletTrackerWatchlistAction,
|
|
62
70
|
walletTrackerAddAction,
|
|
63
71
|
walletTrackerRemoveAction,
|
|
@@ -69,6 +77,6 @@ const MadeOnSolPlugin = {
|
|
|
69
77
|
},
|
|
70
78
|
};
|
|
71
79
|
export default MadeOnSolPlugin;
|
|
72
|
-
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, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, };
|
|
73
|
-
export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction, kolPnlAction, kolTrendingTokensAction, kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction };
|
|
80
|
+
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, copyTradeList, copyTradeCreate, copyTradeGet, copyTradeUpdate, copyTradeDelete, copyTradeSignals, coordinationAlertsList, coordinationAlertsCreate, coordinationAlertsGet, coordinationAlertsUpdate, coordinationAlertsDelete, kolFirstTouches, firstTouchSubscriptionsList, firstTouchSubscriptionsCreate, firstTouchSubscriptionsGet, firstTouchSubscriptionsUpdate, firstTouchSubscriptionsDelete, };
|
|
81
|
+
export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction, kolPnlAction, kolTrendingTokensAction, kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction, kolFirstTouchesAction };
|
|
74
82
|
export { walletTrackerWatchlistAction, walletTrackerAddAction, walletTrackerRemoveAction, walletTrackerTradesAction, walletTrackerSummaryAction };
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -202,6 +202,44 @@ export declare function coordinationAlertsUpdate(agent: Agent, params: {
|
|
|
202
202
|
export declare function coordinationAlertsDelete(agent: Agent, params: {
|
|
203
203
|
rule_id: string;
|
|
204
204
|
}): Promise<any>;
|
|
205
|
+
export declare function kolFirstTouches(agent: Agent, params?: {
|
|
206
|
+
since?: string;
|
|
207
|
+
before?: string;
|
|
208
|
+
limit?: number;
|
|
209
|
+
kol?: string;
|
|
210
|
+
min_kol_winrate_7d?: number;
|
|
211
|
+
min_scout_tier?: "S" | "A" | "B" | "C";
|
|
212
|
+
min_n_touches?: number;
|
|
213
|
+
strategy?: "scalper" | "day_trader" | "swing_trader" | "hodler" | "mixed";
|
|
214
|
+
token_age_max_min?: number;
|
|
215
|
+
min_first_buy_sol?: number;
|
|
216
|
+
mint_suffix?: string;
|
|
217
|
+
preset?: "scout" | "fresh_launch";
|
|
218
|
+
include?: string;
|
|
219
|
+
}): Promise<any>;
|
|
220
|
+
export declare function firstTouchSubscriptionsList(agent: Agent): Promise<any>;
|
|
221
|
+
export declare function firstTouchSubscriptionsCreate(agent: Agent, params: {
|
|
222
|
+
name?: string;
|
|
223
|
+
filters?: {
|
|
224
|
+
kol?: string;
|
|
225
|
+
mint_suffix?: string;
|
|
226
|
+
min_first_buy_sol?: number;
|
|
227
|
+
min_scout_tier?: "S" | "A" | "B" | "C";
|
|
228
|
+
min_n_touches?: number;
|
|
229
|
+
};
|
|
230
|
+
delivery_mode?: "websocket" | "webhook" | "both";
|
|
231
|
+
webhook_url?: string;
|
|
232
|
+
}): Promise<any>;
|
|
233
|
+
export declare function firstTouchSubscriptionsGet(agent: Agent, params: {
|
|
234
|
+
subscription_id: string;
|
|
235
|
+
}): Promise<any>;
|
|
236
|
+
export declare function firstTouchSubscriptionsUpdate(agent: Agent, params: {
|
|
237
|
+
subscription_id: string;
|
|
238
|
+
updates: Record<string, unknown>;
|
|
239
|
+
}): Promise<any>;
|
|
240
|
+
export declare function firstTouchSubscriptionsDelete(agent: Agent, params: {
|
|
241
|
+
subscription_id: string;
|
|
242
|
+
}): Promise<any>;
|
|
205
243
|
export declare function copyTradeSignals(agent: Agent, params?: {
|
|
206
244
|
rule_id?: string;
|
|
207
245
|
limit?: number;
|
package/dist/tools/index.js
CHANGED
|
@@ -278,6 +278,31 @@ export async function coordinationAlertsUpdate(agent, params) {
|
|
|
278
278
|
export async function coordinationAlertsDelete(agent, params) {
|
|
279
279
|
return restQuery(agent, "DELETE", `/kol/coordination/alerts/${encodeURIComponent(params.rule_id)}`);
|
|
280
280
|
}
|
|
281
|
+
// ── First-Touch Signal ──
|
|
282
|
+
export async function kolFirstTouches(agent, params = {}) {
|
|
283
|
+
const qs = new URLSearchParams();
|
|
284
|
+
for (const [k, v] of Object.entries(params)) {
|
|
285
|
+
if (v !== undefined)
|
|
286
|
+
qs.set(k, String(v));
|
|
287
|
+
}
|
|
288
|
+
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
289
|
+
return restQuery(agent, "GET", `/kol/first-touches${query}`);
|
|
290
|
+
}
|
|
291
|
+
export async function firstTouchSubscriptionsList(agent) {
|
|
292
|
+
return restQuery(agent, "GET", "/kol/first-touches/subscriptions");
|
|
293
|
+
}
|
|
294
|
+
export async function firstTouchSubscriptionsCreate(agent, params) {
|
|
295
|
+
return restQuery(agent, "POST", "/kol/first-touches/subscriptions", params);
|
|
296
|
+
}
|
|
297
|
+
export async function firstTouchSubscriptionsGet(agent, params) {
|
|
298
|
+
return restQuery(agent, "GET", `/kol/first-touches/subscriptions/${encodeURIComponent(params.subscription_id)}`);
|
|
299
|
+
}
|
|
300
|
+
export async function firstTouchSubscriptionsUpdate(agent, params) {
|
|
301
|
+
return restQuery(agent, "PATCH", `/kol/first-touches/subscriptions/${encodeURIComponent(params.subscription_id)}`, params.updates);
|
|
302
|
+
}
|
|
303
|
+
export async function firstTouchSubscriptionsDelete(agent, params) {
|
|
304
|
+
return restQuery(agent, "DELETE", `/kol/first-touches/subscriptions/${encodeURIComponent(params.subscription_id)}`);
|
|
305
|
+
}
|
|
281
306
|
export async function copyTradeSignals(agent, params = {}) {
|
|
282
307
|
const qs = new URLSearchParams();
|
|
283
308
|
for (const [k, v] of Object.entries(params)) {
|
package/package.json
CHANGED