solana-agent-kit-plugin-madeonsol 1.17.0 → 1.18.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
@@ -11,6 +11,8 @@
11
11
 
12
12
  > Real-time Solana trading intelligence: track 1,069 KOL wallets with <3s latency, score 23,000+ Pump.fun deployers, verify any wallet's CURRENT on-chain holdings straight from its token accounts, 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
13
 
14
+ > **New in 1.18.0** — **Wallet batch classify + token trade tape.** New tool `walletClassify()` + action `MADEONSOL_WALLET_CLASSIFY_ACTION` — bulk reputation flags for 1–100 wallets in one call (`POST /wallet/batch/classify`): per wallet `is_sniper`, `is_bundler` (lifetime flag), `is_dumper` (rolling 42-day window), `is_kol` + `kol_name`, `bot_confidence` (string enum `"none"`/`"low"`/`"medium"`/`"high"` | null — never a number), and `dump_cluster` cohort stats (`dump_cohorts`, `runner_cohorts`, `total_cohorts`, `as_of`). Flags are pump.fun-pipeline scoped — `false` = not observed, NOT verified clean. New tool `tokenTrades()` + action `MADEONSOL_TOKEN_TRADES_ACTION` — the mint-scoped trade tape (`GET /tokens/{mint}/trades`): cursor-paginated raw trades with `price_sol`/`price_usd`, `early_buyer_rank`, and `slot`, filterable by `action`/`wallet`/`since`/`until`; the default window is the **full history** (tape starts 2026-04-12; the response `coverage` block carries `history_start` + `scope`). `walletStats` `flags` gain the same `is_sniper`/`is_bundler`/`is_dumper` + `dump_cluster` fields, and `flags.bot_confidence` is confirmed as a string enum (the old numeric reading never matched a real value — the API returned `null` unconditionally due to a bug, now fixed server-side). Both PRO/ULTRA only.
15
+ >
14
16
  > **New in 1.17.0** — **Verified on-chain wallet holdings.** New tool `walletHoldings()` + action `MADEONSOL_WALLET_HOLDINGS_ACTION` — the wallet's CURRENT holdings read straight from chain: its actual SPL + Token-2022 token accounts and SOL balance, each enriched with `price_usd` / `value_usd` / `market_cap_usd` / `name` / `symbol` / `is_bonded`, plus `transfer_delta` (on-chain amount − trade-derived net position — exposes non-swap flows like airdrops, insider funding, wallet-hopping). Distinct from `walletPositions()` (trade-derived FIFO): this is what the wallet *actually* holds right now. Params: `limit` (1–500, default 200), `min_value_usd` (default 0). Returns `{ address, sol_balance, holdings[], summary, verified_at, trade_window_days, cache_hit, ttl_seconds }`. ULTRA only.
15
17
  >
16
18
  > **New in 1.16.2** — **Per-venue liquidity map + deployer reputation history.** New tool `tokenPools()` + action `MADEONSOL_TOKEN_POOLS_ACTION` — every DEX pool a token trades in (live vs parked), with fragmentation and top-pool share. Returns a `pools[]` list (`pool_address`, `dex`, `quote_mint`, `liquidity_usd`, `last_price_sol`, `last_swap_at`, `amm_id`, `is_active`) and a `summary` (`pool_count`, `active_pool_count`, `dex_count`, `dexes`, `total_liquidity_usd`, `primary_pool`, `primary_dex`, `top_pool_share_pct`). New tool `deployerHistory()` + action `MADEONSOL_DEPLOYER_HISTORY_ACTION` — a deployer's daily reputation time-series to backtest "was this deployer elite when it launched token X?" without look-ahead bias. Returns `{ is_deployer, wallet, snapshots[] }` where each snapshot has `date`, `tier`, `is_tracked`, `total_deployed`, `total_bonded`, `bonding_rate`, `recent_bond_rate`, `avg_peak_mc`, `best_token_peak_mc` (`limit` = 1–365 days, default 90). Both PRO/ULTRA only.
@@ -124,6 +126,8 @@ const events = await agent.methods.walletTrackerTrades(agent, { limit: 50 });
124
126
  | `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+) |
125
127
  | `MADEONSOL_TOKEN_POOLS_ACTION` | **New 1.16.2** · "token pools", "liquidity map", "which dex pools", "pool fragmentation" — per-venue liquidity map (live vs parked pools) + top-pool share (PRO+) |
126
128
  | `MADEONSOL_DEPLOYER_HISTORY_ACTION` | **New 1.16.2** · "deployer history", "deployer reputation over time", "was this deployer elite" — a deployer's daily reputation time-series, backtest without look-ahead bias (PRO+) |
129
+ | `MADEONSOL_TOKEN_TRADES_ACTION` | **New 1.18** · "token trades", "trade tape", "who bought this token" — cursor-paginated raw trade tape with price + early-buyer rank, full history (starts 2026-04-12, pump.fun-pipeline scoped) (PRO+) |
130
+ | `MADEONSOL_WALLET_CLASSIFY_ACTION` | **New 1.18** · "classify wallets", "check wallets for snipers", "are these wallets bots" — bulk reputation flags (sniper/bundler lifetime/dumper 42d/KOL/bot confidence/dump cluster) for 1–100 wallets; false = not observed, NOT verified clean (PRO+) |
127
131
 
128
132
  ## Additional methods (v1.0+)
129
133
 
@@ -150,6 +154,8 @@ await agent.methods.tokenBundle(agent, { mint: "MINT" }); // PRO+
150
154
  await agent.methods.tokenPools(agent, { mint: "MINT" }); // PRO+ per-venue liquidity map: live vs parked pools, fragmentation, top-pool share
151
155
  await agent.methods.tokenCandles(agent, { mint: "MINT", tf: "1h" }); // PRO+ OHLCV candles (1m–1d); ULTRA=+net flow, liquidity, full history
152
156
  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
157
+ await agent.methods.tokenTrades(agent, { mint: "MINT", action: "buy", limit: 100 }); // PRO+ mint-scoped trade tape (full history from 2026-04-12, pump.fun-pipeline scoped); cursor-paginated
158
+ await agent.methods.walletClassify(agent, { wallets: ["W1", "W2"] }); // PRO+ bulk reputation flags for 1–100 wallets: sniper/bundler(lifetime)/dumper(42d)/KOL/bot_confidence/dump_cluster
153
159
  await agent.methods.almostBonded(agent, { min_progress: 90, sort: "eta_asc" }); // PRO+ pre-bond pump.fun tokens by velocity: progress, ETA, stalled, deployer tier
154
160
  await agent.methods.deployerHistory(agent, { wallet: "WALLET", limit: 90 }); // PRO+ deployer daily reputation time-series (1–365d): tier, bonding_rate, peak MC — no look-ahead
155
161
  ```
@@ -0,0 +1,59 @@
1
+ import { z } from "zod";
2
+ export declare const tokenTradesAction: {
3
+ name: string;
4
+ similes: string[];
5
+ description: string;
6
+ examples: {
7
+ input: {
8
+ mint: string;
9
+ limit: number;
10
+ action: string;
11
+ };
12
+ output: {
13
+ status: string;
14
+ };
15
+ explanation: string;
16
+ }[][];
17
+ schema: z.ZodObject<{
18
+ mint: z.ZodString;
19
+ limit: z.ZodOptional<z.ZodNumber>;
20
+ cursor: z.ZodOptional<z.ZodString>;
21
+ action: z.ZodOptional<z.ZodEnum<["buy", "sell"]>>;
22
+ wallet: z.ZodOptional<z.ZodString>;
23
+ since: z.ZodOptional<z.ZodNumber>;
24
+ until: z.ZodOptional<z.ZodNumber>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ mint: string;
27
+ limit?: number | undefined;
28
+ wallet?: string | undefined;
29
+ action?: "buy" | "sell" | undefined;
30
+ cursor?: string | undefined;
31
+ since?: number | undefined;
32
+ until?: number | undefined;
33
+ }, {
34
+ mint: string;
35
+ limit?: number | undefined;
36
+ wallet?: string | undefined;
37
+ action?: "buy" | "sell" | undefined;
38
+ cursor?: string | undefined;
39
+ since?: number | undefined;
40
+ until?: number | undefined;
41
+ }>;
42
+ handler: (agent: unknown, input: {
43
+ mint: string;
44
+ limit?: number;
45
+ cursor?: string;
46
+ action?: "buy" | "sell";
47
+ wallet?: string;
48
+ since?: number;
49
+ until?: number;
50
+ }) => Promise<{
51
+ status: string;
52
+ result: any;
53
+ message?: undefined;
54
+ } | {
55
+ status: string;
56
+ message: string;
57
+ result?: undefined;
58
+ }>;
59
+ };
@@ -0,0 +1,34 @@
1
+ import { z } from "zod";
2
+ import { tokenTrades } from "../tools/index.js";
3
+ export const tokenTradesAction = {
4
+ name: "MADEONSOL_TOKEN_TRADES_ACTION",
5
+ similes: ["token trades", "trade tape", "trade history for token", "who bought this token", "who sold this token", "token transactions"],
6
+ description: "Get the raw trade tape for a Solana token — every captured trade, cursor-paginated newest first. Each trade carries tx_signature, wallet_address, action (buy/sell), sol_amount, token_amount, price_sol/price_usd, early_buyer_rank, slot, block_time. Filter by action, wallet, and since/until (unix seconds); the default window is the FULL history. Coverage honesty: the tape starts 2026-04-12 and is pump.fun-pipeline scoped (see the response coverage block) — trades outside that pipeline are not on the tape. PRO/ULTRA only — BASIC receives HTTP 403.",
7
+ examples: [
8
+ [
9
+ {
10
+ input: { mint: "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU", limit: 100, action: "buy" },
11
+ output: { status: "success" },
12
+ explanation: "Fetch the most recent 100 buys on a token's trade tape",
13
+ },
14
+ ],
15
+ ],
16
+ schema: z.object({
17
+ mint: z.string().describe("Token mint address (base58)"),
18
+ limit: z.number().min(1).max(500).optional().describe("Trades per page (1-500, default 100)"),
19
+ cursor: z.string().optional().describe("Opaque cursor from next_cursor of a previous page"),
20
+ action: z.enum(["buy", "sell"]).optional().describe("Filter by trade direction"),
21
+ wallet: z.string().optional().describe("Filter to a single wallet address"),
22
+ since: z.number().optional().describe("Unix epoch seconds lower bound (default: full history)"),
23
+ until: z.number().optional().describe("Unix epoch seconds upper bound (default: now)"),
24
+ }),
25
+ handler: async (agent, input) => {
26
+ try {
27
+ const data = await tokenTrades(agent, input);
28
+ return { status: "success", result: data };
29
+ }
30
+ catch (err) {
31
+ return { status: "error", message: err.message };
32
+ }
33
+ },
34
+ };
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ export declare const walletClassifyAction: {
3
+ name: string;
4
+ similes: string[];
5
+ description: string;
6
+ examples: {
7
+ input: {
8
+ wallets: string[];
9
+ };
10
+ output: {
11
+ status: string;
12
+ };
13
+ explanation: string;
14
+ }[][];
15
+ schema: z.ZodObject<{
16
+ wallets: z.ZodArray<z.ZodString, "many">;
17
+ }, "strip", z.ZodTypeAny, {
18
+ wallets: string[];
19
+ }, {
20
+ wallets: string[];
21
+ }>;
22
+ handler: (agent: unknown, input: {
23
+ wallets: 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 { walletClassify } from "../tools/index.js";
3
+ export const walletClassifyAction = {
4
+ name: "MADEONSOL_WALLET_CLASSIFY_ACTION",
5
+ similes: ["classify wallets", "batch wallet flags", "check wallets for snipers", "are these wallets bots", "wallet reputation batch", "screen wallet list"],
6
+ description: "Bulk wallet reputation flags for 1-100 Solana wallet addresses in one call. Per wallet: is_sniper, is_bundler (lifetime flag), is_dumper (rolling 42-day window), is_kol + kol_name, bot_confidence (\"none\"|\"low\"|\"medium\"|\"high\"|null), and dump_cluster cohort stats. Flags are pump.fun-pipeline scoped — false means \"not observed by our pipeline\", NOT verified clean. Returns { wallets, count, as_of }. PRO/ULTRA only — BASIC receives HTTP 403.",
7
+ examples: [
8
+ [
9
+ {
10
+ input: { wallets: ["ASVzakePP6GNg9r95d4LPZHJDMXun6L6E4um4pu5ybJk", "7dExkKzy4K3rC4YCVXQrPXtvmBBTnf3AjEHUUE4Kkzy8"] },
11
+ output: { status: "success" },
12
+ explanation: "Screen a list of wallets for sniper/bundler/dumper/KOL/bot reputation flags",
13
+ },
14
+ ],
15
+ ],
16
+ schema: z.object({
17
+ wallets: z.array(z.string()).min(1).max(100).describe("1-100 wallet addresses (base58)"),
18
+ }),
19
+ handler: async (agent, input) => {
20
+ try {
21
+ const data = await walletClassify(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
@@ -19,8 +19,10 @@ import { deployerHistoryAction } from "./actions/deployerHistory.js";
19
19
  import { tokenCandlesAction } from "./actions/tokenCandles.js";
20
20
  import { tokenFlowAction } from "./actions/tokenFlow.js";
21
21
  import { tokenRiskBatchAction } from "./actions/tokenRiskBatch.js";
22
+ import { tokenTradesAction } from "./actions/tokenTrades.js";
23
+ import { walletClassifyAction } from "./actions/walletClassify.js";
22
24
  import { streamSessionsAction, streamSessionKillAction } from "./actions/streamSessions.js";
23
- 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, tokenBundle, tokenPools, tokenCandles, tokenFlow, deployerHistory, 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, walletHoldings, walletTrades, me, tokensList, almostBonded } from "./tools/index.js";
25
+ 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, tokenBundle, tokenPools, tokenCandles, tokenFlow, tokenTrades, deployerHistory, 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, walletHoldings, walletTrades, walletClassify, me, tokensList, almostBonded } from "./tools/index.js";
24
26
  import { walletStatsAction, walletPnlAction, walletPositionsAction, walletHoldingsAction, walletTradesAction } from "./actions/wallet.js";
25
27
  declare const MadeOnSolPlugin: {
26
28
  name: string;
@@ -57,6 +59,7 @@ declare const MadeOnSolPlugin: {
57
59
  tokenPools: typeof tokenPools;
58
60
  tokenCandles: typeof tokenCandles;
59
61
  tokenFlow: typeof tokenFlow;
62
+ tokenTrades: typeof tokenTrades;
60
63
  deployerHistory: typeof deployerHistory;
61
64
  copyTradeList: typeof copyTradeList;
62
65
  copyTradeCreate: typeof copyTradeCreate;
@@ -93,6 +96,7 @@ declare const MadeOnSolPlugin: {
93
96
  walletPositions: typeof walletPositions;
94
97
  walletHoldings: typeof walletHoldings;
95
98
  walletTrades: typeof walletTrades;
99
+ walletClassify: typeof walletClassify;
96
100
  };
97
101
  actions: ({
98
102
  name: string;
@@ -1042,6 +1046,63 @@ declare const MadeOnSolPlugin: {
1042
1046
  message: string;
1043
1047
  result?: undefined;
1044
1048
  }>;
1049
+ } | {
1050
+ name: string;
1051
+ similes: string[];
1052
+ description: string;
1053
+ examples: {
1054
+ input: {
1055
+ mint: string;
1056
+ limit: number;
1057
+ action: string;
1058
+ };
1059
+ output: {
1060
+ status: string;
1061
+ };
1062
+ explanation: string;
1063
+ }[][];
1064
+ schema: import("zod").ZodObject<{
1065
+ mint: import("zod").ZodString;
1066
+ limit: import("zod").ZodOptional<import("zod").ZodNumber>;
1067
+ cursor: import("zod").ZodOptional<import("zod").ZodString>;
1068
+ action: import("zod").ZodOptional<import("zod").ZodEnum<["buy", "sell"]>>;
1069
+ wallet: import("zod").ZodOptional<import("zod").ZodString>;
1070
+ since: import("zod").ZodOptional<import("zod").ZodNumber>;
1071
+ until: import("zod").ZodOptional<import("zod").ZodNumber>;
1072
+ }, "strip", import("zod").ZodTypeAny, {
1073
+ mint: string;
1074
+ limit?: number | undefined;
1075
+ wallet?: string | undefined;
1076
+ action?: "buy" | "sell" | undefined;
1077
+ cursor?: string | undefined;
1078
+ since?: number | undefined;
1079
+ until?: number | undefined;
1080
+ }, {
1081
+ mint: string;
1082
+ limit?: number | undefined;
1083
+ wallet?: string | undefined;
1084
+ action?: "buy" | "sell" | undefined;
1085
+ cursor?: string | undefined;
1086
+ since?: number | undefined;
1087
+ until?: number | undefined;
1088
+ }>;
1089
+ handler: (agent: unknown, input: {
1090
+ mint: string;
1091
+ limit?: number;
1092
+ cursor?: string;
1093
+ action?: "buy" | "sell";
1094
+ wallet?: string;
1095
+ since?: number;
1096
+ until?: number;
1097
+ }) => Promise<{
1098
+ status: string;
1099
+ result: any;
1100
+ message?: undefined;
1101
+ } | {
1102
+ status: string;
1103
+ message: string;
1104
+ result?: undefined;
1105
+ }>;
1045
1106
  } | {
1046
1107
  name: string;
1047
1108
  similes: string[];
@@ -1206,8 +1267,8 @@ declare const MadeOnSolPlugin: {
1206
1267
  initialize(_agent: unknown): void;
1207
1268
  };
1208
1269
  export default MadeOnSolPlugin;
1209
- 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, tokenBundle, tokenPools, tokenCandles, tokenFlow, deployerHistory, 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, walletHoldings, walletTrades, me, tokensList, almostBonded, };
1270
+ 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, tokenBundle, tokenPools, tokenCandles, tokenFlow, tokenTrades, deployerHistory, 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, walletHoldings, walletTrades, walletClassify, me, tokensList, almostBonded, };
1210
1271
  export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction, kolPnlAction, kolTrendingTokensAction, kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction, kolFirstTouchesAction };
1211
1272
  export { walletTrackerWatchlistAction, walletTrackerAddAction, walletTrackerRemoveAction, walletTrackerTradesAction, walletTrackerSummaryAction };
1212
1273
  export { walletStatsAction, walletPnlAction, walletPositionsAction, walletHoldingsAction, walletTradesAction };
1213
- export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenRiskBatchAction, tokenBundleAction, tokenPoolsAction, deployerHistoryAction, tokenCandlesAction, tokenFlowAction, streamSessionsAction, streamSessionKillAction };
1274
+ export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenRiskBatchAction, tokenBundleAction, tokenPoolsAction, deployerHistoryAction, tokenCandlesAction, tokenFlowAction, tokenTradesAction, walletClassifyAction, streamSessionsAction, streamSessionKillAction };
package/dist/index.js CHANGED
@@ -19,8 +19,10 @@ import { deployerHistoryAction } from "./actions/deployerHistory.js";
19
19
  import { tokenCandlesAction } from "./actions/tokenCandles.js";
20
20
  import { tokenFlowAction } from "./actions/tokenFlow.js";
21
21
  import { tokenRiskBatchAction } from "./actions/tokenRiskBatch.js";
22
+ import { tokenTradesAction } from "./actions/tokenTrades.js";
23
+ import { walletClassifyAction } from "./actions/walletClassify.js";
22
24
  import { streamSessionsAction, streamSessionKillAction } from "./actions/streamSessions.js";
23
- 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, tokenBundle, tokenPools, tokenCandles, tokenFlow, deployerHistory, 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, walletHoldings, walletTrades, me, tokensList, almostBonded, } from "./tools/index.js";
25
+ 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, tokenBundle, tokenPools, tokenCandles, tokenFlow, tokenTrades, deployerHistory, 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, walletHoldings, walletTrades, walletClassify, me, tokensList, almostBonded, } from "./tools/index.js";
24
26
  import { walletStatsAction, walletPnlAction, walletPositionsAction, walletHoldingsAction, walletTradesAction } from "./actions/wallet.js";
25
27
  const MadeOnSolPlugin = {
26
28
  name: "madeonsol",
@@ -57,6 +59,7 @@ const MadeOnSolPlugin = {
57
59
  tokenPools,
58
60
  tokenCandles,
59
61
  tokenFlow,
62
+ tokenTrades,
60
63
  deployerHistory,
61
64
  copyTradeList,
62
65
  copyTradeCreate,
@@ -93,6 +96,7 @@ const MadeOnSolPlugin = {
93
96
  walletPositions,
94
97
  walletHoldings,
95
98
  walletTrades,
99
+ walletClassify,
96
100
  },
97
101
  actions: [
98
102
  kolFeedAction,
@@ -120,6 +124,8 @@ const MadeOnSolPlugin = {
120
124
  deployerHistoryAction,
121
125
  tokenCandlesAction,
122
126
  tokenFlowAction,
127
+ tokenTradesAction,
128
+ walletClassifyAction,
123
129
  streamSessionsAction,
124
130
  streamSessionKillAction,
125
131
  walletStatsAction,
@@ -133,8 +139,8 @@ const MadeOnSolPlugin = {
133
139
  },
134
140
  };
135
141
  export default MadeOnSolPlugin;
136
- 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, tokenBundle, tokenPools, tokenCandles, tokenFlow, deployerHistory, 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, walletHoldings, walletTrades, me, tokensList, almostBonded, };
142
+ 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, tokenBundle, tokenPools, tokenCandles, tokenFlow, tokenTrades, deployerHistory, 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, walletHoldings, walletTrades, walletClassify, me, tokensList, almostBonded, };
137
143
  export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction, kolPnlAction, kolTrendingTokensAction, kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction, kolFirstTouchesAction };
138
144
  export { walletTrackerWatchlistAction, walletTrackerAddAction, walletTrackerRemoveAction, walletTrackerTradesAction, walletTrackerSummaryAction };
139
145
  export { walletStatsAction, walletPnlAction, walletPositionsAction, walletHoldingsAction, walletTradesAction };
140
- export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenRiskBatchAction, tokenBundleAction, tokenPoolsAction, deployerHistoryAction, tokenCandlesAction, tokenFlowAction, streamSessionsAction, streamSessionKillAction };
146
+ export { meAction, tokensListAction, almostBondedAction, tokenRiskAction, tokenRiskBatchAction, tokenBundleAction, tokenPoolsAction, deployerHistoryAction, tokenCandlesAction, tokenFlowAction, tokenTradesAction, walletClassifyAction, streamSessionsAction, streamSessionKillAction };
@@ -186,6 +186,17 @@ export declare function walletTrades(agent: Agent, params: {
186
186
  since?: number;
187
187
  until?: number;
188
188
  }): Promise<any>;
189
+ /**
190
+ * Bulk wallet reputation flags for 1–100 addresses in one request (POST /wallet/batch/classify).
191
+ * Each entry matches the `flags` block of walletStats(): `is_sniper`, `is_bundler` (lifetime flag),
192
+ * `is_dumper` (rolling 42-day window), `is_kol` + `kol_name`, `bot_confidence` (STRING enum
193
+ * "none"/"low"/"medium"/"high" | null — never a number), and `dump_cluster` cohort stats
194
+ * ({ dump_cohorts, runner_cohorts, total_cohorts, as_of } | null). Flags are pump.fun-pipeline
195
+ * scoped — `false` means "not observed", NOT verified clean. PRO/ULTRA only.
196
+ */
197
+ export declare function walletClassify(agent: Agent, params: {
198
+ wallets: string[];
199
+ }): Promise<any>;
189
200
  export declare function alphaLeaderboard(agent: Agent, params?: {
190
201
  limit?: number;
191
202
  min_tokens?: number;
@@ -231,6 +242,23 @@ export declare function tokenFlow(agent: Agent, params: {
231
242
  mint: string;
232
243
  window?: "1h" | "24h";
233
244
  }): Promise<any>;
245
+ /**
246
+ * Mint-scoped trade tape — every captured trade for a token, cursor-paginated newest first
247
+ * (GET /tokens/{mint}/trades). Each trade: tx_signature, wallet_address, action, sol_amount,
248
+ * token_amount, price_sol/price_usd, early_buyer_rank, slot, block_time, traded_at. Filter by
249
+ * `action`, `wallet`, `since`/`until` (unix sec); unlike walletTrades (90d default) the default
250
+ * window is the FULL history. Coverage honesty: the tape starts 2026-04-12 and is
251
+ * pump.fun-pipeline scoped — see the response `coverage` block (history_start, scope). PRO/ULTRA only.
252
+ */
253
+ export declare function tokenTrades(agent: Agent, params: {
254
+ mint: string;
255
+ limit?: number;
256
+ cursor?: string;
257
+ action?: "buy" | "sell";
258
+ wallet?: string;
259
+ since?: number;
260
+ until?: number;
261
+ }): Promise<any>;
234
262
  /** Bulk buyer-quality scoring for up to 50 mints. Shares the 5-min LRU cache with the single-mint endpoint. */
235
263
  export declare function tokenBuyerQualityBatch(agent: Agent, params: {
236
264
  mints: string[];
@@ -280,6 +280,17 @@ export async function walletTrades(agent, params) {
280
280
  const query = qs.toString() ? `?${qs.toString()}` : "";
281
281
  return restQuery(agent, "GET", `/wallet/${encodeURIComponent(params.address)}/trades${query}`);
282
282
  }
283
+ /**
284
+ * Bulk wallet reputation flags for 1–100 addresses in one request (POST /wallet/batch/classify).
285
+ * Each entry matches the `flags` block of walletStats(): `is_sniper`, `is_bundler` (lifetime flag),
286
+ * `is_dumper` (rolling 42-day window), `is_kol` + `kol_name`, `bot_confidence` (STRING enum
287
+ * "none"/"low"/"medium"/"high" | null — never a number), and `dump_cluster` cohort stats
288
+ * ({ dump_cohorts, runner_cohorts, total_cohorts, as_of } | null). Flags are pump.fun-pipeline
289
+ * scoped — `false` means "not observed", NOT verified clean. PRO/ULTRA only.
290
+ */
291
+ export async function walletClassify(agent, params) {
292
+ return restQuery(agent, "POST", "/wallet/batch/classify", { wallets: params.wallets });
293
+ }
283
294
  // ── Alpha Wallet Intelligence ──
284
295
  export async function alphaLeaderboard(agent, params = {}) {
285
296
  const qs = new URLSearchParams();
@@ -337,6 +348,31 @@ export async function tokenFlow(agent, params) {
337
348
  const qs = params.window !== undefined ? `?window=${params.window}` : "";
338
349
  return restQuery(agent, "GET", `/tokens/${encodeURIComponent(params.mint)}/flow${qs}`);
339
350
  }
351
+ /**
352
+ * Mint-scoped trade tape — every captured trade for a token, cursor-paginated newest first
353
+ * (GET /tokens/{mint}/trades). Each trade: tx_signature, wallet_address, action, sol_amount,
354
+ * token_amount, price_sol/price_usd, early_buyer_rank, slot, block_time, traded_at. Filter by
355
+ * `action`, `wallet`, `since`/`until` (unix sec); unlike walletTrades (90d default) the default
356
+ * window is the FULL history. Coverage honesty: the tape starts 2026-04-12 and is
357
+ * pump.fun-pipeline scoped — see the response `coverage` block (history_start, scope). PRO/ULTRA only.
358
+ */
359
+ export async function tokenTrades(agent, params) {
360
+ const qs = new URLSearchParams();
361
+ if (params.limit !== undefined)
362
+ qs.set("limit", String(params.limit));
363
+ if (params.cursor)
364
+ qs.set("cursor", params.cursor);
365
+ if (params.action)
366
+ qs.set("action", params.action);
367
+ if (params.wallet)
368
+ qs.set("wallet", params.wallet);
369
+ if (params.since !== undefined)
370
+ qs.set("since", String(params.since));
371
+ if (params.until !== undefined)
372
+ qs.set("until", String(params.until));
373
+ const query = qs.toString() ? `?${qs.toString()}` : "";
374
+ return restQuery(agent, "GET", `/tokens/${encodeURIComponent(params.mint)}/trades${query}`);
375
+ }
340
376
  /** Bulk buyer-quality scoring for up to 50 mints. Shares the 5-min LRU cache with the single-mint endpoint. */
341
377
  export async function tokenBuyerQualityBatch(agent, params) {
342
378
  return restQuery(agent, "POST", "/tokens/batch/buyer-quality", { mints: params.mints });
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "1.17.0";
1
+ export declare const VERSION = "1.18.0";
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // AUTO-GENERATED by ../gen-version.mjs (npm prebuild) from package.json. Do not edit.
2
- export const VERSION = "1.17.0";
2
+ export const VERSION = "1.18.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solana-agent-kit-plugin-madeonsol",
3
- "version": "1.17.0",
3
+ "version": "1.18.0",
4
4
  "description": "Solana Agent Kit plugin for MadeOnSol — KOL intelligence and deployer analytics via x402 micropayments",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",