kaito-mcp-server 0.2.5 → 0.2.6
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/build/server.d.ts.map +1 -1
- package/build/server.js +33 -12
- package/build/server.js.map +1 -1
- package/build/tools/advanced-search.d.ts +4 -0
- package/build/tools/advanced-search.d.ts.map +1 -0
- package/build/tools/{search.js → advanced-search.js} +47 -7
- package/build/tools/advanced-search.js.map +1 -0
- package/build/tools/engagement.d.ts +4 -0
- package/build/tools/engagement.d.ts.map +1 -0
- package/build/tools/engagement.js +37 -0
- package/build/tools/engagement.js.map +1 -0
- package/build/tools/events.d.ts +1 -1
- package/build/tools/events.d.ts.map +1 -1
- package/build/tools/events.js +16 -14
- package/build/tools/events.js.map +1 -1
- package/build/tools/get-twitter-user.d.ts +4 -0
- package/build/tools/get-twitter-user.d.ts.map +1 -0
- package/build/tools/get-twitter-user.js +24 -0
- package/build/tools/get-twitter-user.js.map +1 -0
- package/build/tools/kol-token-mindshare.d.ts +4 -0
- package/build/tools/kol-token-mindshare.d.ts.map +1 -0
- package/build/tools/kol-token-mindshare.js +35 -0
- package/build/tools/kol-token-mindshare.js.map +1 -0
- package/build/tools/market-smart-following.d.ts +4 -0
- package/build/tools/market-smart-following.d.ts.map +1 -0
- package/build/tools/market-smart-following.js +73 -0
- package/build/tools/market-smart-following.js.map +1 -0
- package/build/tools/mentions.d.ts +4 -0
- package/build/tools/mentions.d.ts.map +1 -0
- package/build/tools/mentions.js +38 -0
- package/build/tools/mentions.js.map +1 -0
- package/build/tools/mindshare-arena.d.ts +4 -0
- package/build/tools/mindshare-arena.d.ts.map +1 -0
- package/build/tools/{rankings.js → mindshare-arena.js} +9 -28
- package/build/tools/mindshare-arena.js.map +1 -0
- package/build/tools/mindshare-delta.d.ts +4 -0
- package/build/tools/mindshare-delta.d.ts.map +1 -0
- package/build/tools/mindshare-delta.js +35 -0
- package/build/tools/mindshare-delta.js.map +1 -0
- package/build/tools/{rankings.d.ts → mindshare.d.ts} +2 -2
- package/build/tools/mindshare.d.ts.map +1 -0
- package/build/tools/mindshare.js +41 -0
- package/build/tools/mindshare.js.map +1 -0
- package/build/tools/narrative-mindshare.d.ts +4 -0
- package/build/tools/narrative-mindshare.d.ts.map +1 -0
- package/build/tools/narrative-mindshare.js +40 -0
- package/build/tools/narrative-mindshare.js.map +1 -0
- package/build/tools/sentiment.d.ts +4 -0
- package/build/tools/sentiment.d.ts.map +1 -0
- package/build/tools/sentiment.js +60 -0
- package/build/tools/sentiment.js.map +1 -0
- package/build/tools/smart-followers.d.ts +4 -0
- package/build/tools/smart-followers.d.ts.map +1 -0
- package/build/tools/smart-followers.js +43 -0
- package/build/tools/smart-followers.js.map +1 -0
- package/build/tools/smart-following.d.ts +4 -0
- package/build/tools/smart-following.d.ts.map +1 -0
- package/build/tools/smart-following.js +34 -0
- package/build/tools/smart-following.js.map +1 -0
- package/build/tools/tweet-engagement-info.d.ts +4 -0
- package/build/tools/tweet-engagement-info.d.ts.map +1 -0
- package/build/tools/tweet-engagement-info.js +21 -0
- package/build/tools/tweet-engagement-info.js.map +1 -0
- package/package.json +1 -1
- package/build/tools/market-data.d.ts +0 -4
- package/build/tools/market-data.d.ts.map +0 -1
- package/build/tools/market-data.js +0 -148
- package/build/tools/market-data.js.map +0 -1
- package/build/tools/rankings.d.ts.map +0 -1
- package/build/tools/rankings.js.map +0 -1
- package/build/tools/search.d.ts +0 -4
- package/build/tools/search.d.ts.map +0 -1
- package/build/tools/search.js.map +0 -1
- package/build/tools/social.d.ts +0 -4
- package/build/tools/social.d.ts.map +0 -1
- package/build/tools/social.js +0 -155
- package/build/tools/social.js.map +0 -1
package/build/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBpE,wBAAgB,YAAY,IAAI,SAAS,CAyCxC"}
|
package/build/server.js
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { KaitoClient } from "./client.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import { registerSentimentTool } from "./tools/sentiment.js";
|
|
4
|
+
import { registerMindshareTool } from "./tools/mindshare.js";
|
|
5
|
+
import { registerNarrativeMindshareTool } from "./tools/narrative-mindshare.js";
|
|
6
|
+
import { registerMentionsTool } from "./tools/mentions.js";
|
|
7
|
+
import { registerEngagementTool } from "./tools/engagement.js";
|
|
8
|
+
import { registerAdvancedSearchTool } from "./tools/advanced-search.js";
|
|
9
|
+
import { registerSmartFollowersTool } from "./tools/smart-followers.js";
|
|
10
|
+
import { registerSmartFollowingTool } from "./tools/smart-following.js";
|
|
11
|
+
import { registerGetTwitterUserTool } from "./tools/get-twitter-user.js";
|
|
12
|
+
import { registerKolTokenMindshareTool } from "./tools/kol-token-mindshare.js";
|
|
13
|
+
import { registerMarketSmartFollowingTool } from "./tools/market-smart-following.js";
|
|
14
|
+
import { registerMindshareArenaTool } from "./tools/mindshare-arena.js";
|
|
15
|
+
import { registerMindshareDeltaTool } from "./tools/mindshare-delta.js";
|
|
16
|
+
import { registerEventsTool } from "./tools/events.js";
|
|
17
|
+
import { registerTweetEngagementInfoTool } from "./tools/tweet-engagement-info.js";
|
|
8
18
|
import { registerResources } from "./resources/reference.js";
|
|
9
19
|
import { registerPrompts } from "./prompts/workflows.js";
|
|
10
20
|
export function createServer() {
|
|
@@ -13,16 +23,27 @@ export function createServer() {
|
|
|
13
23
|
version: "0.1.0",
|
|
14
24
|
}, {
|
|
15
25
|
instructions: "When any tool requires a 'token' parameter, you MUST first read the kaito://tokens resource to obtain a valid token ticker before calling that tool. " +
|
|
26
|
+
"When any tool requires a 'tokens' parameter, you MUST first read the kaito://tokens resource to obtain valid token tickers before calling that tool. " +
|
|
16
27
|
"When any tool requires a 'narrative' parameter, you MUST first read the kaito://narratives resource to obtain a valid narrative ID before calling that tool. " +
|
|
17
|
-
"Never guess or assume token tickers or narrative IDs
|
|
28
|
+
"Never guess or assume token tickers or narrative IDs; always resolve them from the appropriate resource first.",
|
|
18
29
|
});
|
|
19
30
|
const client = new KaitoClient();
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
// 15 Tools
|
|
32
|
+
registerSentimentTool(server, client);
|
|
33
|
+
registerMindshareTool(server, client);
|
|
34
|
+
registerNarrativeMindshareTool(server, client);
|
|
35
|
+
registerMentionsTool(server, client);
|
|
36
|
+
registerEngagementTool(server, client);
|
|
37
|
+
registerAdvancedSearchTool(server, client);
|
|
38
|
+
registerSmartFollowersTool(server, client);
|
|
39
|
+
registerSmartFollowingTool(server, client);
|
|
40
|
+
registerGetTwitterUserTool(server, client);
|
|
41
|
+
registerKolTokenMindshareTool(server, client);
|
|
42
|
+
registerMarketSmartFollowingTool(server, client);
|
|
43
|
+
registerMindshareArenaTool(server, client);
|
|
44
|
+
registerMindshareDeltaTool(server, client);
|
|
45
|
+
registerEventsTool(server, client);
|
|
46
|
+
registerTweetEngagementInfoTool(server, client);
|
|
26
47
|
// 2 Resources
|
|
27
48
|
registerResources(server, client);
|
|
28
49
|
// 2 Prompts
|
package/build/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EACV,uJAAuJ;YACvJ,uJAAuJ;YACvJ,+JAA+J;YAC/J,gHAAgH;KACnH,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAEjC,WAAW;IACX,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,8BAA8B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,gCAAgC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,+BAA+B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhD,cAAc;IACd,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,YAAY;IACZ,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced-search.d.ts","sourceRoot":"","sources":["../../src/tools/advanced-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QA8LhF"}
|
|
@@ -1,17 +1,57 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
export function
|
|
2
|
+
export function registerAdvancedSearchTool(server, client) {
|
|
3
3
|
server.registerTool("kaito_advanced_search", {
|
|
4
|
-
description:
|
|
4
|
+
description: `TOOL CALLING: If you provide the tokens parameter, you MUST first read kaito://tokens and use valid token tickers from that resource. Never guess token values.
|
|
5
|
+
|
|
6
|
+
Search ranked crypto feeds (Twitter & News) with AI summaries, sentiment scores, and extensive filters.
|
|
7
|
+
|
|
8
|
+
DISCOVERY MODE: Omit all tokens/query/keyword/usernames for unfiltered trending content - pure discovery feed ranked by relevance.
|
|
9
|
+
|
|
10
|
+
TIME RANGE: When the user specifies a time range (e.g. 'today', 'past week'), you MUST convert it to ISO 8601 timestamps and pass min_created_at / max_created_at accordingly.
|
|
11
|
+
|
|
12
|
+
PRIMARY TEXT INPUT:
|
|
13
|
+
- Use ONE main text field per call: either query or keyword.
|
|
14
|
+
- query is the main user-facing field. Write it as a compact bag of 2-6 high-signal words or a short phrase cluster that should co-occur in relevant results.
|
|
15
|
+
- keyword is kept for backward compatibility and can be used the same way as query.
|
|
16
|
+
- The backend handles query and keyword on the same search path, so do NOT split intent across them. If both are present, keep them aligned.
|
|
17
|
+
- Good style: entity + topic + event/action, e.g. "hyperliquid validator hack", "solana meme coin launch", "btc etf inflow".
|
|
18
|
+
- Remove filler words, generic words like "crypto" or "news", and temporal phrases from query/keyword. Pass time with min_created_at / max_created_at instead.
|
|
19
|
+
|
|
20
|
+
SEARCH BEHAVIOR — AND LOGIC:
|
|
21
|
+
- Kaito ANDs all top-level fields together. More fields = fewer results. Adding parameters narrows, never broadens.
|
|
22
|
+
- Use structured fields for tokens, usernames, sources, time, language, sentiment, and engagement thresholds instead of burying them in query/keyword.
|
|
23
|
+
- Default to ONE main question, topic, or comparison frame per call.
|
|
24
|
+
- It is OK to include multiple entities when they belong to the same frame, such as "Hyperliquid vs Lighter", "ETH vs SOL fees", or "BTC gold correlation".
|
|
25
|
+
- Split into multiple searches only when the user is combining unrelated topics, time windows, or objectives in one request.
|
|
26
|
+
- If a project name is ambiguous or a ticker exists, use tokens for disambiguation.
|
|
27
|
+
- Do NOT rely on tokens alone for major tickers (BTC, ETH, SOL) when the user wants a specific topic. Pair tokens with query/keyword.
|
|
28
|
+
|
|
29
|
+
QUERY CONSTRUCTION:
|
|
30
|
+
- Start with the smallest high-signal query/keyword that captures the user intent.
|
|
31
|
+
- Do NOT manually add long OR chains, synonym lists, plural variants, ticker variants, or handle variants by default. The backend already broadens recall through a secondary retrieval path.
|
|
32
|
+
- Use quotes or explicit AND/OR/NOT only when the user explicitly wants exact phrase matching or literal boolean logic.
|
|
33
|
+
- If results are sparse, relax the weakest qualifier or widen the time range instead of adding more terms.
|
|
34
|
+
- Default to sort_by: relevance unless the user explicitly asks for recency or another ranking.
|
|
35
|
+
- sentiment_type filters overall tweet sentiment, NOT sentiment about a specific token. Pair it with tokens when you need entity-scoped sentiment.
|
|
36
|
+
|
|
37
|
+
OUTPUT NOTES:
|
|
38
|
+
- smart_engagement is an integer (count of smart accounts that engaged) — NOT sentiment_score.
|
|
39
|
+
- Always show smart_engagement (SE) and kaito_smart_followers (SF) for cited tweets.
|
|
40
|
+
- author_user_id from results can be used with kaito_get_twitter_user for profile enrichment.
|
|
41
|
+
- NEVER fabricate details beyond what the API returns. Attribute every claim to a specific result with URL.`,
|
|
5
42
|
inputSchema: {
|
|
6
43
|
tokens: z
|
|
7
44
|
.string()
|
|
8
45
|
.optional()
|
|
9
|
-
.describe("Comma-separated token tickers (e.g. BTC,ETH)"),
|
|
10
|
-
keyword: z
|
|
46
|
+
.describe("Comma-separated token tickers for entity disambiguation or entity-scoped filtering (e.g. BTC,ETH)"),
|
|
47
|
+
keyword: z
|
|
48
|
+
.string()
|
|
49
|
+
.optional()
|
|
50
|
+
.describe("Legacy-compatible primary text query. Use the same style as query: 2-6 high-signal words or a short phrase cluster."),
|
|
11
51
|
query: z
|
|
12
52
|
.string()
|
|
13
53
|
.optional()
|
|
14
|
-
.describe("
|
|
54
|
+
.describe("Primary user-facing text query. Use 2-6 high-signal words or a short phrase cluster (e.g. 'hyperliquid validator hack', 'btc etf inflow'). Avoid filler words and time expressions."),
|
|
15
55
|
usernames: z
|
|
16
56
|
.string()
|
|
17
57
|
.optional()
|
|
@@ -59,7 +99,7 @@ export function registerSearchTools(server, client) {
|
|
|
59
99
|
sentiment_type: z
|
|
60
100
|
.enum(["bullish", "bearish", "neutral"])
|
|
61
101
|
.optional()
|
|
62
|
-
.describe("Twitter only: sentiment filter"),
|
|
102
|
+
.describe("Twitter only: sentiment filter. Filters on overall tweet sentiment, NOT sentiment about a specific token — pair with tokens param to scope."),
|
|
63
103
|
author_type: z
|
|
64
104
|
.enum(["Organization", "Individual"])
|
|
65
105
|
.optional()
|
|
@@ -138,4 +178,4 @@ export function registerSearchTools(server, client) {
|
|
|
138
178
|
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
139
179
|
});
|
|
140
180
|
}
|
|
141
|
-
//# sourceMappingURL=search.js.map
|
|
181
|
+
//# sourceMappingURL=advanced-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced-search.js","sourceRoot":"","sources":["../../src/tools/advanced-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engagement.d.ts","sourceRoot":"","sources":["../../src/tools/engagement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QAsC5E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerEngagementTool(server, client) {
|
|
3
|
+
server.registerTool("kaito_engagement", {
|
|
4
|
+
description: `TOOL CALLING: If you provide the token parameter, you MUST first read kaito://tokens and use a valid token ticker from that resource. Never guess token values.
|
|
5
|
+
|
|
6
|
+
Get daily engagement metrics (total + smart/KOL engagement) for a token or keyword.
|
|
7
|
+
|
|
8
|
+
INTERPRETATION GUIDE:
|
|
9
|
+
- Engagement measures total interactions (likes, retweets, replies, quotes) plus a breakdown of smart/KOL engagement. Smart engagement specifically counts interactions from Kaito-classified smart accounts — a high smart-to-total ratio signals institutional interest.
|
|
10
|
+
- Use the 30-day default for recent trend checks. For questions requiring historical context (baseline comparison, high/low/average, trend reversals), use a 12-month lookback.
|
|
11
|
+
- Always compare current engagement to the period average — a single value alone is meaningless without context.
|
|
12
|
+
- Spike detection: flag any day exceeding >2x the period average as a significant engagement spike. Note spike timing for cross-referencing with events or price moves.
|
|
13
|
+
- Cross-reference spikes with kaito_events to identify potential catalysts behind engagement surges.`,
|
|
14
|
+
inputSchema: {
|
|
15
|
+
token: z.string().optional().describe("Token ticker (e.g. BTC, ETH)"),
|
|
16
|
+
keyword: z.string().optional().describe("Search keyword"),
|
|
17
|
+
start_date: z
|
|
18
|
+
.string()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Start date YYYY-MM-DD (default: 30 days ago, earliest: 2023-01-01)"),
|
|
21
|
+
end_date: z
|
|
22
|
+
.string()
|
|
23
|
+
.optional()
|
|
24
|
+
.describe("End date YYYY-MM-DD (default: tomorrow)"),
|
|
25
|
+
},
|
|
26
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
27
|
+
}, async ({ token, keyword, start_date, end_date }) => {
|
|
28
|
+
const data = await client.request("engagement", {
|
|
29
|
+
token,
|
|
30
|
+
keyword,
|
|
31
|
+
start_date,
|
|
32
|
+
end_date,
|
|
33
|
+
});
|
|
34
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=engagement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engagement.js","sourceRoot":"","sources":["../../src/tools/engagement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAmB;IAC3E,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE;;;;;;;;;qGASkF;QAC/F,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACzD,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;YACjF,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;SACvD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;YAC9C,KAAK;YACL,OAAO;YACP,UAAU;YACV,QAAQ;SACT,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/build/tools/events.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { KaitoClient } from "../client.js";
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function registerEventsTool(server: McpServer, client: KaitoClient): void;
|
|
4
4
|
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QAqFxE"}
|
package/build/tools/events.js
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
export function
|
|
2
|
+
export function registerEventsTool(server, client) {
|
|
3
3
|
server.registerTool("kaito_events", {
|
|
4
|
-
description:
|
|
4
|
+
description: `TOOL CALLING: Before calling this tool, you MUST first read kaito://tokens and use a valid token ticker from that resource for the token parameter. Never guess token values.
|
|
5
|
+
|
|
6
|
+
Get upcoming catalyst events for a token, with filtering by event type, source, and date range. Use the tokens resource to find valid tickers.
|
|
7
|
+
|
|
8
|
+
INTERPRETATION GUIDE:
|
|
9
|
+
- Events are upcoming catalysts (token unlocks, launches, governance votes, conferences) sourced from multiple platforms. They represent scheduled, forward-looking information — not historical data.
|
|
10
|
+
|
|
11
|
+
CATEGORIZE returned events by type:
|
|
12
|
+
- Token unlocks = supply-side catalysts (dilution risk)
|
|
13
|
+
- Mainnet/testnet releases = product milestones
|
|
14
|
+
- Governance votes = protocol-level decisions (may be contentious)
|
|
15
|
+
- Conference appearances = visibility events
|
|
16
|
+
- Tokenomics updates = structural changes
|
|
17
|
+
|
|
18
|
+
If no events found, say so explicitly — "No scheduled events found" is valid output. When investigating a specific time window, flag events that fall within or near it as potential catalysts.`,
|
|
5
19
|
inputSchema: {
|
|
6
20
|
token: z.string().describe("Token ticker (e.g. BTC, ETH)"),
|
|
7
21
|
start_date: z
|
|
@@ -52,17 +66,5 @@ export function registerEventsTools(server, client) {
|
|
|
52
66
|
});
|
|
53
67
|
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
54
68
|
});
|
|
55
|
-
server.registerTool("kaito_tweet_engagement_info", {
|
|
56
|
-
description: "Get detailed engagement metrics for a specific tweet including likes, retweets, replies, views, and smart engagement count.",
|
|
57
|
-
inputSchema: {
|
|
58
|
-
tweet_id: z.string().describe("Twitter tweet ID (numeric string)"),
|
|
59
|
-
},
|
|
60
|
-
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
61
|
-
}, async ({ tweet_id }) => {
|
|
62
|
-
const data = await client.request("tweet_engagement_info", {
|
|
63
|
-
tweet_id,
|
|
64
|
-
});
|
|
65
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
66
|
-
});
|
|
67
69
|
}
|
|
68
70
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAmB;IACvE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE;;;;;;;;;;;;;;gMAc6K;QAC1L,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC1D,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yDAAyD,CAAC;YACtE,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0DAA0D,CAAC;YACvE,qBAAqB,EAAE,CAAC;iBACrB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0CAA0C,CAAC;YACvD,qBAAqB,EAAE,CAAC;iBACrB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0CAA0C,CAAC;YACvD,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,4LAA4L,CAC7L;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,kHAAkH,CACnH;YACH,OAAO,EAAE,CAAC;iBACP,IAAI,CAAC,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;iBACvE,QAAQ,EAAE;iBACV,QAAQ,CAAC,YAAY,CAAC;YACzB,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;iBACrB,QAAQ,EAAE;iBACV,QAAQ,CAAC,YAAY,CAAC;SAC1B;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EACL,KAAK,EACL,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,OAAO,EACP,OAAO,EACP,UAAU,GACX,EAAE,EAAE;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC1C,KAAK;YACL,UAAU;YACV,QAAQ;YACR,qBAAqB;YACrB,qBAAqB;YACrB,WAAW;YACX,OAAO;YACP,OAAO;YACP,UAAU;SACX,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-twitter-user.d.ts","sourceRoot":"","sources":["../../src/tools/get-twitter-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QAyBhF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerGetTwitterUserTool(server, client) {
|
|
3
|
+
server.registerTool("kaito_get_twitter_user", {
|
|
4
|
+
description: `Get Twitter user profile metadata by user ID, including display name, username, bio, profile image, follower stats, and account classification.
|
|
5
|
+
|
|
6
|
+
IMPORTANT: Requires numeric user_id (available from search results as author_user_id). Cannot look up by username.
|
|
7
|
+
- Bio is self-reported — frame as "describes themselves as", not verified fact.
|
|
8
|
+
- Run in parallel with kaito_smart_followers (by username) for the same account to avoid extra latency.
|
|
9
|
+
- Profile metadata enriches but does not replace smart follower count as the primary credibility signal. A high-follower account with low smart followers is retail-popular, not credible among smart accounts.
|
|
10
|
+
- Never assume roles (founder, investor, insider) unless bio or verified sources explicitly state it.`,
|
|
11
|
+
inputSchema: {
|
|
12
|
+
user_id: z
|
|
13
|
+
.string()
|
|
14
|
+
.describe("Twitter user ID to look up (for example: 950486928784228352)."),
|
|
15
|
+
},
|
|
16
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
17
|
+
}, async ({ user_id }) => {
|
|
18
|
+
const data = await client.request("get_twitter_user", {
|
|
19
|
+
user_id,
|
|
20
|
+
});
|
|
21
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=get-twitter-user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-twitter-user.js","sourceRoot":"","sources":["../../src/tools/get-twitter-user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,MAAmB;IAC/E,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EAAE;;;;;;sGAMmF;QAChG,WAAW,EAAE;YACX,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,CAAC,+DAA+D,CAAC;SAC7E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACpD,OAAO;SACR,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kol-token-mindshare.d.ts","sourceRoot":"","sources":["../../src/tools/kol-token-mindshare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QAoCnF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerKolTokenMindshareTool(server, client) {
|
|
3
|
+
server.registerTool("kaito_kol_token_mindshare", {
|
|
4
|
+
description: `TOOL CALLING: Before calling this tool, you MUST first read kaito://tokens and use a valid token ticker from that resource for the token parameter. Never guess token values.
|
|
5
|
+
|
|
6
|
+
Get top KOLs ranked by mindshare for a given token. Shows which key opinion leaders are driving the conversation around a specific project.
|
|
7
|
+
|
|
8
|
+
INTERPRETATION GUIDE:
|
|
9
|
+
- KOL token mindshare ranks individual key opinion leaders by their share of conversation about a specific token. Each result includes name, username, mindshare proportion, and rank.
|
|
10
|
+
- Top KOLs are the primary narrative drivers for a token — their posts disproportionately shape market perception.
|
|
11
|
+
- Cross-reference top KOLs with kaito_smart_followers to assess their credibility. A high-mindshare KOL with low smart followers may be high-volume but low-signal.
|
|
12
|
+
- Default 12m shows long-term narrative drivers. Use 7d/30d to see who is driving the current conversation.
|
|
13
|
+
- If all-zero data is returned for a ticker, retry with the full project name (e.g. HYPE → HYPERLIQUID). Some entities are indexed by name, not ticker.`,
|
|
14
|
+
inputSchema: {
|
|
15
|
+
token: z.string().describe("Token ticker (e.g. BTC, ETH)"),
|
|
16
|
+
duration: z
|
|
17
|
+
.enum(["24h", "48h", "7d", "30d", "3m", "6m", "12m", "all"])
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("Time window for mindshare calculation (default: 12m)."),
|
|
20
|
+
top_n: z
|
|
21
|
+
.number()
|
|
22
|
+
.optional()
|
|
23
|
+
.describe("Number of top KOLs to return (default: 100)."),
|
|
24
|
+
},
|
|
25
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
26
|
+
}, async ({ token, duration, top_n }) => {
|
|
27
|
+
const data = await client.request("kol_token_mindshare", {
|
|
28
|
+
token,
|
|
29
|
+
duration,
|
|
30
|
+
top_n: top_n?.toString(),
|
|
31
|
+
});
|
|
32
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=kol-token-mindshare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kol-token-mindshare.js","sourceRoot":"","sources":["../../src/tools/kol-token-mindshare.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,MAAmB;IAClF,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EAAE;;;;;;;;;wJASqI;QAClJ,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC1D,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;iBAC3D,QAAQ,EAAE;iBACV,QAAQ,CAAC,uDAAuD,CAAC;YACpE,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8CAA8C,CAAC;SAC5D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE;YACvD,KAAK;YACL,QAAQ;YACR,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;SACzB,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { KaitoClient } from "../client.js";
|
|
3
|
+
export declare function registerMarketSmartFollowingTool(server: McpServer, client: KaitoClient): void;
|
|
4
|
+
//# sourceMappingURL=market-smart-following.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-smart-following.d.ts","sourceRoot":"","sources":["../../src/tools/market-smart-following.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QA0EtF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerMarketSmartFollowingTool(server, client) {
|
|
3
|
+
server.registerTool("kaito_market_smart_following", {
|
|
4
|
+
description: `Get accounts that smart followers have recently followed — a market-level social signal showing where smart money attention is flowing.
|
|
5
|
+
|
|
6
|
+
RECOMMENDED DEFAULTS for early-stage signal discovery:
|
|
7
|
+
- user_tag_individual_or_organization: Organization
|
|
8
|
+
- user_web3_relevance: relevant
|
|
9
|
+
- filter_smart_followers_operator: lte, filter_smart_followers_value: 100 (low SF = early-stage)
|
|
10
|
+
- sort_by: followers_change, sort_order: desc (biggest gainers = freshest signal)
|
|
11
|
+
This combination filters for emerging projects gaining institutional attention, not established players.
|
|
12
|
+
|
|
13
|
+
Limit analysis to top 15 results for signal-to-noise. If 401 error (requires higher API tier), suggest using top smart_engagement authors from kaito_advanced_search as a proxy.`,
|
|
14
|
+
inputSchema: {
|
|
15
|
+
duration: z
|
|
16
|
+
.enum(["24h", "48h", "7d", "30d", "all_dates"])
|
|
17
|
+
.optional()
|
|
18
|
+
.describe("Time range (default: 24h). all_dates covers from 2024-01-01."),
|
|
19
|
+
from: z
|
|
20
|
+
.number()
|
|
21
|
+
.optional()
|
|
22
|
+
.describe("Pagination offset (default: 0)."),
|
|
23
|
+
sort_by: z
|
|
24
|
+
.enum(["earliest_time", "smart_followers", "followers_change", "change_ratio"])
|
|
25
|
+
.optional()
|
|
26
|
+
.describe("Field to sort by (default sort direction is desc when sort_by is set)."),
|
|
27
|
+
sort_order: z
|
|
28
|
+
.enum(["asc", "desc"])
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("Sort direction (default: desc)."),
|
|
31
|
+
filter_smart_followers_operator: z
|
|
32
|
+
.enum(["gte", "lte"])
|
|
33
|
+
.optional()
|
|
34
|
+
.describe("Filter operator for smart follower count: gte (≥) or lte (≤). Must be paired with filter_smart_followers_value."),
|
|
35
|
+
filter_smart_followers_value: z
|
|
36
|
+
.number()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe("Integer threshold for smart follower count. Must be paired with filter_smart_followers_operator."),
|
|
39
|
+
user_status: z
|
|
40
|
+
.enum(["new", "existing", "all"])
|
|
41
|
+
.optional()
|
|
42
|
+
.describe("Filter by user status: new = first followed within selected duration (default: all)."),
|
|
43
|
+
user_tag_individual_or_organization: z
|
|
44
|
+
.enum(["Individual", "Organization", "all"])
|
|
45
|
+
.optional()
|
|
46
|
+
.describe("Filter by account type (default: Organization)."),
|
|
47
|
+
user_type: z
|
|
48
|
+
.enum(["kkol", "non_kkol", "all"])
|
|
49
|
+
.optional()
|
|
50
|
+
.describe("Filter by KOL classification: kkol = Kaito-classified KOLs only (default: all)."),
|
|
51
|
+
user_web3_relevance: z
|
|
52
|
+
.enum(["relevant", "irrelevant"])
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("Filter by Web3 relevance (omit to include all)."),
|
|
55
|
+
},
|
|
56
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
57
|
+
}, async ({ duration, from, sort_by, sort_order, filter_smart_followers_operator, filter_smart_followers_value, user_status, user_tag_individual_or_organization, user_type, user_web3_relevance }) => {
|
|
58
|
+
const data = await client.request("market_smart_following", {
|
|
59
|
+
duration,
|
|
60
|
+
from: from?.toString(),
|
|
61
|
+
sort_by,
|
|
62
|
+
sort_order,
|
|
63
|
+
filter_smart_followers_operator,
|
|
64
|
+
filter_smart_followers_value: filter_smart_followers_value?.toString(),
|
|
65
|
+
user_status,
|
|
66
|
+
user_tag_individual_or_organization,
|
|
67
|
+
user_type,
|
|
68
|
+
user_web3_relevance,
|
|
69
|
+
});
|
|
70
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=market-smart-following.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-smart-following.js","sourceRoot":"","sources":["../../src/tools/market-smart-following.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,gCAAgC,CAAC,MAAiB,EAAE,MAAmB;IACrF,MAAM,CAAC,YAAY,CACjB,8BAA8B,EAC9B;QACE,WAAW,EAAE;;;;;;;;;iLAS8J;QAC3K,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;iBAC9C,QAAQ,EAAE;iBACV,QAAQ,CAAC,8DAA8D,CAAC;YAC3E,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iCAAiC,CAAC;YAC9C,OAAO,EAAE,CAAC;iBACP,IAAI,CAAC,CAAC,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC;iBAC9E,QAAQ,EAAE;iBACV,QAAQ,CAAC,wEAAwE,CAAC;YACrF,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;iBACrB,QAAQ,EAAE;iBACV,QAAQ,CAAC,iCAAiC,CAAC;YAC9C,+BAA+B,EAAE,CAAC;iBAC/B,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;iBACpB,QAAQ,EAAE;iBACV,QAAQ,CAAC,iHAAiH,CAAC;YAC9H,4BAA4B,EAAE,CAAC;iBAC5B,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,kGAAkG,CAAC;YAC/G,WAAW,EAAE,CAAC;iBACX,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;iBAChC,QAAQ,EAAE;iBACV,QAAQ,CAAC,sFAAsF,CAAC;YACnG,mCAAmC,EAAE,CAAC;iBACnC,IAAI,CAAC,CAAC,YAAY,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;iBAC3C,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,SAAS,EAAE,CAAC;iBACT,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;iBACjC,QAAQ,EAAE;iBACV,QAAQ,CAAC,iFAAiF,CAAC;YAC9F,mBAAmB,EAAE,CAAC;iBACnB,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;iBAChC,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;SAC/D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,WAAW,EAAE,mCAAmC,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,EAAE;QACjM,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE;YAC1D,QAAQ;YACR,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,OAAO;YACP,UAAU;YACV,+BAA+B;YAC/B,4BAA4B,EAAE,4BAA4B,EAAE,QAAQ,EAAE;YACtE,WAAW;YACX,mCAAmC;YACnC,SAAS;YACT,mBAAmB;SACpB,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mentions.d.ts","sourceRoot":"","sources":["../../src/tools/mentions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QAuC1E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerMentionsTool(server, client) {
|
|
3
|
+
server.registerTool("kaito_mentions", {
|
|
4
|
+
description: `TOOL CALLING: If you provide the token parameter, you MUST first read kaito://tokens and use a valid token ticker from that resource. Never guess token values.
|
|
5
|
+
|
|
6
|
+
Get daily mention counts for a token or keyword, broken down by source (Twitter, Discord, News, etc.).
|
|
7
|
+
|
|
8
|
+
INTERPRETATION GUIDE:
|
|
9
|
+
- Mentions are raw counts of how many times a token or keyword appeared across sources (Twitter, Discord, News, etc.). Unlike sentiment or mindshare, mentions measure volume of discussion without weighting for tone or relative share.
|
|
10
|
+
- Use the 30-day default for recent trend checks. For questions requiring historical context (baseline comparison, high/low/average, trend reversals), use a 12-month lookback.
|
|
11
|
+
- Always compare current volume to the period average — a single value alone is meaningless without context.
|
|
12
|
+
- Spike detection: flag any day exceeding >2x the period average as a significant volume spike. Note spike timing for cross-referencing with events or price moves.
|
|
13
|
+
- If no spikes found, say so explicitly — "No significant volume spikes detected" is valid output.
|
|
14
|
+
- Cross-reference spikes with kaito_events to identify potential catalysts behind volume surges.`,
|
|
15
|
+
inputSchema: {
|
|
16
|
+
token: z.string().optional().describe("Token ticker (e.g. BTC, ETH)"),
|
|
17
|
+
keyword: z.string().optional().describe("Search keyword"),
|
|
18
|
+
start_date: z
|
|
19
|
+
.string()
|
|
20
|
+
.optional()
|
|
21
|
+
.describe("Start date YYYY-MM-DD (default: 30 days ago, earliest: 2023-01-01)"),
|
|
22
|
+
end_date: z
|
|
23
|
+
.string()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe("End date YYYY-MM-DD (default: tomorrow)"),
|
|
26
|
+
},
|
|
27
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
28
|
+
}, async ({ token, keyword, start_date, end_date }) => {
|
|
29
|
+
const data = await client.request("mentions", {
|
|
30
|
+
token,
|
|
31
|
+
keyword,
|
|
32
|
+
start_date,
|
|
33
|
+
end_date,
|
|
34
|
+
});
|
|
35
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=mentions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mentions.js","sourceRoot":"","sources":["../../src/tools/mentions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAmB;IACzE,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EAAE;;;;;;;;;;iGAU8E;QAC3F,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACzD,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;YACjF,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;SACvD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE;YAC5C,KAAK;YACL,OAAO;YACP,UAAU;YACV,QAAQ;SACT,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mindshare-arena.d.ts","sourceRoot":"","sources":["../../src/tools/mindshare-arena.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QAwDhF"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
export function
|
|
2
|
+
export function registerMindshareArenaTool(server, client) {
|
|
3
3
|
server.registerTool("kaito_mindshare_arena", {
|
|
4
|
-
description:
|
|
4
|
+
description: `Get project rankings by mindshare score, with optional category and time window filters. Returns up to 100 projects sorted by mindshare. To get Pre-TGE (pre-token generation event) rankings, set pre_tge=true without categories — this returns the same results as a dedicated pre-TGE arena view.
|
|
5
|
+
|
|
6
|
+
INTERPRETATION GUIDE:
|
|
7
|
+
- Mindshare arena is a ranked leaderboard of all projects by their share of crypto Twitter conversation within a time window. Each result includes ticker, fullname, mindshare (as a decimal proportion), and rank.
|
|
8
|
+
- Rank interpretation: Top 10 = dominant, Top 20 = strong, Top 50 = moderate, >50 = niche.
|
|
9
|
+
- Mindshare values are proportions (e.g. 0.118 = 11.8% of all crypto conversation). Compare across ranks, not in isolation.
|
|
10
|
+
- Default 24h is best for current snapshot. Use 7d/30d for recent trends, 3m/6m/12m for structural dominance over longer horizons.`,
|
|
5
11
|
inputSchema: {
|
|
6
12
|
duration: z
|
|
7
13
|
.enum(["all", "24h", "48h", "7d", "30d", "3m", "6m", "12m"])
|
|
@@ -45,30 +51,5 @@ export function registerRankingsTools(server, client) {
|
|
|
45
51
|
});
|
|
46
52
|
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
47
53
|
});
|
|
48
|
-
server.registerTool("kaito_mindshare_delta", {
|
|
49
|
-
description: "Get top gainers and losers by mindshare change over a time window. Use sort_type='desc' for biggest gainers, 'asc' for biggest losers.",
|
|
50
|
-
inputSchema: {
|
|
51
|
-
duration: z
|
|
52
|
-
.enum(["24h", "48h", "7d", "30d", "3m", "6m", "12m", "all"])
|
|
53
|
-
.optional()
|
|
54
|
-
.describe("Time window (default: 24h)"),
|
|
55
|
-
sort_type: z
|
|
56
|
-
.enum(["desc", "asc"])
|
|
57
|
-
.optional()
|
|
58
|
-
.describe("'desc' for gainers, 'asc' for losers (default: desc)"),
|
|
59
|
-
limit: z
|
|
60
|
-
.number()
|
|
61
|
-
.optional()
|
|
62
|
-
.describe("Number of results to return"),
|
|
63
|
-
},
|
|
64
|
-
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
65
|
-
}, async ({ duration, sort_type, limit }) => {
|
|
66
|
-
const data = await client.request("mindshare_delta", {
|
|
67
|
-
duration,
|
|
68
|
-
sort_type,
|
|
69
|
-
limit: limit?.toString(),
|
|
70
|
-
});
|
|
71
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
72
|
-
});
|
|
73
54
|
}
|
|
74
|
-
//# sourceMappingURL=
|
|
55
|
+
//# sourceMappingURL=mindshare-arena.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mindshare-arena.js","sourceRoot":"","sources":["../../src/tools/mindshare-arena.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,MAAmB;IAC/E,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EAAE;;;;;;mIAMgH;QAC7H,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC3D,QAAQ,EAAE;iBACV,QAAQ,CAAC,4BAA4B,CAAC;YACzC,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;iBACzC,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;YAC7C,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;iBAC7B,QAAQ,EAAE;iBACV,QAAQ,CAAC,sCAAsC,CAAC;YACnD,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,qCAAqC,CAAC;YAClD,WAAW,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,oDAAoD,CAAC;YACjE,QAAQ,EAAE,CAAC;iBACR,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,4CAA4C,CAAC;YACzD,GAAG,EAAE,CAAC;iBACH,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,uCAAuC,CAAC;SACrD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;QAChF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACnD,QAAQ;YACR,QAAQ;YACR,UAAU;YACV,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC5B,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE;YACpC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAC9B,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;SACrB,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
|