kaito-mcp-server 0.2.13 → 0.2.16

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
@@ -130,7 +130,9 @@ These two tools exist specifically so clients that expose tools but not `resourc
130
130
  |------|-------------|
131
131
  | `kaito_smart_followers` | Smart follower count or list for a user |
132
132
  | `kaito_get_twitter_user` | Twitter user profile metadata by user ID |
133
+ | `kaito_twitter_account_type` | Twitter account type classification, smart follower tier, and crypto role |
133
134
  | `kaito_kol_token_mindshare` | Top KOLs ranked by mindshare for a token |
135
+ | `kaito_twitter_official_account` | Official and affiliate Twitter accounts for a token |
134
136
 
135
137
  ### Smart Following
136
138
 
@@ -164,9 +166,11 @@ Practical example:
164
166
 
165
167
  | Prompt | Description |
166
168
  |--------|-------------|
167
- | `analyze_token` | Comprehensive token analysis workflow (sentiment mindshare mentions engagement events KOL mindshare → search) |
168
- | `daily_market_roundup` | Daily roundup: top SE content smart money movements with context → mindshare movers with drivers |
169
- | `discover_trending` | Trending discovery workflow (mindshare arena delta movers smart money signals search) |
169
+ | `analyze_token` | Deep-dive on a single token: top discussions via search, sentiment, mindshare trends, and upcoming events |
170
+ | `market_roundup` | Priority-ranked briefing of top stories with smart account signals, mindshare movers, and catalysts |
171
+ | `discover_trending` | Trending discovery: mindshare arena rankings, delta movers, smart account signals, narrative shifts, and deep-dive search per top gainer |
172
+ | `social_listening` | Full social analysis: key discussions, sentiment, mentions, engagement, KOL mindshare, smart followers, and optional competitor comparison |
173
+ | `watchlist_portfolio` | Monitor developments, upcoming catalysts, and key narratives across a set of tokens with mindshare, sentiment, and events |
170
174
 
171
175
  ## Development
172
176
 
package/build/client.d.ts CHANGED
@@ -3,6 +3,7 @@ export declare class KaitoClient {
3
3
  constructor();
4
4
  request(endpoint: string, params: Record<string, string | undefined>, options?: {
5
5
  requireAuth?: boolean;
6
+ internal?: boolean;
6
7
  }): Promise<unknown>;
7
8
  }
8
9
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAqB;;IAM7B,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC1C,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAClC,OAAO,CAAC,OAAO,CAAC;CAgDpB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAqB;;IAM7B,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC1C,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GACtD,OAAO,CAAC,OAAO,CAAC;CAiDpB"}
package/build/client.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
2
2
  const BASE_URL = "https://api.kaito.ai/api/v1";
3
+ const INTERNAL_BASE_URL = "https://api.kaito.ai/api/internal";
3
4
  export class KaitoClient {
4
5
  apiKey;
5
6
  constructor() {
@@ -10,7 +11,8 @@ export class KaitoClient {
10
11
  if (requireAuth && !this.apiKey) {
11
12
  throw new McpError(ErrorCode.InvalidRequest, "KAITO_API_KEY environment variable is not set. Please configure it to use this tool.");
12
13
  }
13
- const url = new URL(`${BASE_URL}/${endpoint}`);
14
+ const base = options?.internal ? INTERNAL_BASE_URL : BASE_URL;
15
+ const url = new URL(`${base}/${endpoint}`);
14
16
  for (const [key, value] of Object.entries(params)) {
15
17
  if (value !== undefined) {
16
18
  url.searchParams.set(key, value);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,QAAQ,GAAG,6BAA6B,CAAC;AAE/C,MAAM,OAAO,WAAW;IACd,MAAM,CAAqB;IAEnC;QACE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,MAA0C,EAC1C,OAAmC;QAEnC,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;QAEjD,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,cAAc,EACxB,sFAAsF,CACvF,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAE1D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACxB,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,cAAc,EACxB,0BAA0B,QAAQ,CAAC,MAAM,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAC3E,CAAC;gBACJ,KAAK,GAAG;oBACN,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,cAAc,EACxB,4DAA4D,IAAI,EAAE,CACnE,CAAC;gBACJ;oBACE,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,aAAa,EACvB,mBAAmB,QAAQ,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CACrE,CAAC;YACN,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,QAAQ,GAAG,6BAA6B,CAAC;AAC/C,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AAE9D,MAAM,OAAO,WAAW;IACd,MAAM,CAAqB;IAEnC;QACE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,MAA0C,EAC1C,OAAuD;QAEvD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;QAEjD,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,cAAc,EACxB,sFAAsF,CACvF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAE1D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACxB,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,cAAc,EACxB,0BAA0B,QAAQ,CAAC,MAAM,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAC3E,CAAC;gBACJ,KAAK,GAAG;oBACN,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,cAAc,EACxB,4DAA4D,IAAI,EAAE,CACnE,CAAC;gBACJ;oBACE,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,aAAa,EACvB,mBAAmB,QAAQ,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CACrE,CAAC;YACN,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"discover-trending.d.ts","sourceRoot":"","sources":["../../src/prompts/discover-trending.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,QAuG/D"}
1
+ {"version":3,"file":"discover-trending.d.ts","sourceRoot":"","sources":["../../src/prompts/discover-trending.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,QA+G/D"}
@@ -22,7 +22,7 @@ export function registerDiscoverTrendingPrompt(server) {
22
22
 
23
23
  1. **Mindshare Arena**: Call kaito_mindshare_arena with duration="${window}" to get top projects by mindshare.
24
24
  2. **Pre-TGE Arena**: Call kaito_mindshare_arena with duration="${window}", pre_tge=true to find trending pre-token projects.
25
- 3. **Mindshare Movers**: Call kaito_mindshare_delta with duration="${window}" to find biggest gainers and losers.
25
+ 3. **Mindshare Movers**: Call kaito_mindshare_delta with duration="${window}" to find biggest gainers.
26
26
  4. **Smart Account Signals (Organizations)**: Call kaito_market_smart_following with duration="${window}", user_tag_individual_or_organization="Organization", user_web3_relevance="relevant", sort_by="followers_change", sort_order="desc".
27
27
  5. **Smart Account Signals (Individuals)**: Call kaito_market_smart_following with duration="${window}", user_tag_individual_or_organization="Individual", user_web3_relevance="relevant", sort_by="followers_change", sort_order="desc".
28
28
  6. **Trending Content**: Call kaito_advanced_search with sort_by="smart_engagement", sources="Twitter", size=50, min_created_at set to ${window} ago in ISO 8601 (no tokens, no keyword — pure discovery mode).
@@ -34,11 +34,10 @@ export function registerDiscoverTrendingPrompt(server) {
34
34
  a. kaito_advanced_search with keyword="@{handle1} OR @{handle2} OR @{handle3} OR @{handle4} OR @{handle5}", sources="Twitter", size=50, min_created_at set to ${window} ago — what others are saying about them.
35
35
  b. kaito_advanced_search with usernames="{handle1},{handle2},{handle3},{handle4},{handle5}" (comma-separated), sources="Twitter", size=50, min_created_at set to ${window} ago — what they're posting.
36
36
  9. From Step 5, pick the top 5 individuals by followers_change. Run ONE search: kaito_advanced_search with usernames="{handle1},{handle2},{handle3},{handle4},{handle5}" (comma-separated), sources="Twitter", size=50, min_created_at set to ${window} ago — what they've been saying.
37
- 10. **Narrative landscape**: Call kaito_narratives then call kaito_narrative_mindshare for the top 5 narratives by relevance to identify which macro themes are gaining or losing share.
38
37
 
39
38
  ## Output Structure
40
39
 
41
- Synthesize all data into the following structured output. Do NOT use "smart money" — always say "smart accounts" instead.
40
+ Synthesize all data into the following structured output. Do NOT use "smart money" — always say "smart accounts" instead. Tables are optional supporting evidence — the primary format should be insight-driven paragraphs that explain what's happening and why. Every section should tell a story, not just display data.
42
41
 
43
42
  ### Answer
44
43
  This is the PRIMARY output — a comprehensive 2–3 paragraph response that directly tells the reader what's happening in crypto right now and what they should pay attention to.
@@ -49,9 +48,6 @@ Paragraph 2: Identify 2–3 emerging themes that aren't yet consensus — smart
49
48
 
50
49
  Paragraph 3: Suggested follow-up actions (e.g. "run analyze_token on X for a deep dive" or "run social_listening on Y to monitor KOL sentiment").
51
50
 
52
- ### TL;DR
53
- One line per key finding, fact-first, no fluff. 5–7 lines max. Format each line as: "N. What's trending — why it matters (source)." Keep each line under 120 characters. This section should be scannable in under 10 seconds.
54
-
55
51
  ---
56
52
 
57
53
  *Everything below is supporting evidence for the answer above.*
@@ -62,19 +58,20 @@ Top 10 projects from the Mindshare Arena. For each:
62
58
  - One-line context: is this a steady leader or a recent mover? Cross-reference with Step 3 (mindshare delta) to note if it's gaining or losing.
63
59
 
64
60
  ### Biggest Movers
65
- For the top 5 gainers from Step 3, write a short paragraph each:
61
+ For the top 5 gainers from Step 3 (searched in Step 7), write a short paragraph each:
66
62
  - The mindshare change (express as % change, not raw delta)
67
- - What's driving it — synthesize from the Step 7 tweet search results. Attribute to specific tweets/accounts with SE counts.
63
+ - What's driving it — synthesize from the Step 7 tweet search results. Attribute to specific tweets/accounts with URLs and SE counts.
68
64
  - Is this a one-off spike or part of a sustained trend?
69
-
70
- For the top 3 losers, one bullet each: what they lost and any visible reason from the broader data.
65
+ - Cross-reference with other sections: does this token also appear in smart following data, narrative shifts, or catalysts? Connect the dots — if a token is a top gainer, explain whether smart accounts are also rotating in and which narrative it belongs to.
71
66
 
72
67
  ### Smart Account Signals
68
+ Start with a synthesis paragraph: what is the collective signal from smart accounts this period? Are they risk-on or risk-off? Rotating into a specific sector (DeFi, L2, AI, stablecoins)? Reacting to macro events? This paragraph should tell the reader what smart accounts as a group are doing, not just list individuals.
69
+
73
70
  **Organizations gaining smart followers (Step 4):**
74
- For the top 5, describe what's driving the attention using Step 8 results. Include specific tweets and SE counts. Note any patternare smart accounts rotating into a sector (DeFi, L2, AI)?
71
+ For the top 5, describe what's driving the attention using Step 8 results. Include specific tweets with URLs and SE counts. Connect to broader themes if 3 of 5 are DeFi protocols, that's the signal.
75
72
 
76
73
  **Individuals gaining smart followers (Step 5):**
77
- For the top 5, describe what they're talking about using Step 9 results. Are they signaling a theme, calling a trade, or building something?
74
+ For the top 5, describe what they're talking about using Step 9 results. Are they signaling a theme, calling a trade, or building something? Include tweet URLs.
78
75
 
79
76
  ### Pre-TGE Momentum
80
77
  Top 5–10 pre-TGE projects from Step 2. For each:
@@ -83,10 +80,21 @@ Top 5–10 pre-TGE projects from Step 2. For each:
83
80
  - Flag any that also appear in the smart following data (strong conviction signal)
84
81
 
85
82
  ### Narrative Landscape
86
- Using Step 10 results, identify which macro narratives are leading or shifting. For each top narrative:
87
- - Name and current mindshare
88
- - Key tokens driving it
89
- - Whether it's accelerating or fading vs the prior period
83
+ This section has NO dedicated data calls — instead, distill narrative themes entirely from the tweets and data already gathered in all previous steps. Group the tokens, tweets, and signals from Steps 1–9 into macro narrative themes (e.g. AI, DeFi, RWA, Meme, Stablecoins, Prediction Markets, L2s). Do NOT just list narratives with numbers explain what's happening and why. Write a short paragraph per narrative:
84
+ - Name the narrative and estimate whether it's gaining or losing attention based on how many top-mindshare tokens, trending tweets, and smart account signals cluster under it.
85
+ - **What's driving it**: Name the specific events, launches, partnerships, or controversies from the gathered data. E.g. "DeFi is surging — Morpho (#10 mindshare), Uniswap (top 5 gainer), and Resolv Labs (#9) are all climbing, driven by the Coinbase-Morpho deal and Uniswap v4 prediction market primitives" — not just "DeFi is up."
86
+ - **Key tokens within the narrative**: Which projects from the mindshare arena and movers belong to this theme?
87
+ - **Outlook**: Is this narrative accelerating with fresh catalysts, or was it a short-term spike?
88
+
89
+ ---
90
+
91
+ **Writing principles:**
92
+ - Attribute every claim to a specific source (tweet URL, author, article). No unattributed assertions. Every cited tweet must include the URL, not just the @handle.
93
+ - Include smart engagement (SE) and smart follower (SF) counts when citing specific tweets to signal credibility.
94
+ - Lead with what changed, not background. Assume the reader has baseline crypto literacy.
95
+ - Prioritize surprise and non-obvious signals over consensus takes.
96
+ - Cross-reference across sections: if a token appears in multiple datasets (mindshare gainers, smart following, narrative shifts, catalysts), explicitly connect those signals rather than treating each section as isolated. The value is in the connections.
97
+ - If data is thin for any section, say so explicitly rather than over-interpreting.
90
98
 
91
99
  `,
92
100
  },
@@ -1 +1 @@
1
- {"version":3,"file":"discover-trending.js","sourceRoot":"","sources":["../../src/prompts/discover-trending.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,8BAA8B,CAAC,MAAiB;IAC9D,MAAM,CAAC,cAAc,CACnB,mBAAmB,EACnB;QACE,WAAW,EACT,sJAAsJ;QACxJ,UAAU,EAAE;YACV,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CACP,uDAAuD,CACxD;SACJ;KACF,EACD,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC;QAEjC,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wDAAwD,MAAM;;;;oEAId,MAAM;kEACR,MAAM;qEACH,MAAM;iGACsB,MAAM;+FACR,MAAM;yIACoC,MAAM;;;;oSAIqJ,MAAM;;mKAEvI,MAAM;sKACH,MAAM;gPACoE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDrP;qBACY;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"discover-trending.js","sourceRoot":"","sources":["../../src/prompts/discover-trending.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,8BAA8B,CAAC,MAAiB;IAC9D,MAAM,CAAC,cAAc,CACnB,mBAAmB,EACnB;QACE,WAAW,EACT,sJAAsJ;QACxJ,UAAU,EAAE;YACV,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CACP,uDAAuD,CACxD;SACJ;KACF,EACD,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC;QAEjC,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wDAAwD,MAAM;;;;oEAId,MAAM;kEACR,MAAM;qEACH,MAAM;iGACsB,MAAM;+FACR,MAAM;yIACoC,MAAM;;;;oSAIqJ,MAAM;;mKAEvI,MAAM;sKACH,MAAM;gPACoE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DrP;qBACY;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -18,7 +18,7 @@ For ALL responses — whether or not they match a workflow — structure your ou
18
18
  1. **Answer first**: Lead with 2–3 paragraphs of flowing prose that directly and fully answer the user's question. Do NOT start with bullet points, headers, or tables. Write as if the reader will only read this section. Paragraph 1 states the core thesis with specific catalysts. Paragraph 2 supports with data (mindshare %, sentiment direction, smart account signals — always as % change). Paragraph 3 covers forward-looking view if warranted.
19
19
  2. **Supporting evidence after**: Only after the prose answer, add structured sections (Key Developments, Events, Notable Discussions, etc.) as supporting documentation.
20
20
  3. **Metrics as % change**: Always express metrics as % change when comparing across time.
21
- 4. **Attribute every claim**: Cite specific sources (tweet URL, author, article) for every assertion.
21
+ 4. **Attribute every claim**: Cite specific sources (tweet URL, author, article) for every assertion — including in tables and bullet lists, not just prose. Every row in a catalysts/events table must include a source link.
22
22
  5. Lead with developments, not metrics ("Monad joined Mastercard — sentiment surged +64%").
23
23
  6. Rate event source credibility: High (official/on-chain), Medium (credible analyst), Low (speculation). Flag events within 7 days as **imminent**.
24
24
  7. Say "smart accounts", never "smart money". If data is sparse, say so explicitly.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuBpE,wBAAgB,YAAY,IAAI,SAAS,CAsCxC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyBpE,wBAAgB,YAAY,IAAI,SAAS,CAwCxC"}
package/build/server.js CHANGED
@@ -15,6 +15,8 @@ import { registerMindshareArenaTool } from "./tools/mindshare-arena.js";
15
15
  import { registerMindshareDeltaTool } from "./tools/mindshare-delta.js";
16
16
  import { registerEventsTool } from "./tools/events.js";
17
17
  import { registerTweetEngagementInfoTool } from "./tools/tweet-engagement-info.js";
18
+ import { registerTwitterOfficialAccountTool } from "./tools/twitter-official-account.js";
19
+ import { registerTwitterAccountTypeTool } from "./tools/twitter-account-type.js";
18
20
  import { registerReferenceLookupTools } from "./tools/reference-lookup.js";
19
21
  import { registerResources } from "./resources/reference.js";
20
22
  import { registerPrompts } from "./prompts/workflows.js";
@@ -45,6 +47,8 @@ export function createServer() {
45
47
  registerMindshareDeltaTool(server, client);
46
48
  registerEventsTool(server, client);
47
49
  registerTweetEngagementInfoTool(server, client);
50
+ registerTwitterOfficialAccountTool(server, client);
51
+ registerTwitterAccountTypeTool(server, client);
48
52
  // Resources
49
53
  registerResources(server, client);
50
54
  // Prompts
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -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;AAG3C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QAyFxE"}
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;AAG3C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QA2FxE"}
@@ -18,6 +18,8 @@ CATEGORIZE returned events by type:
18
18
 
19
19
  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.
20
20
 
21
+ OUTPUT: Each event includes a references array with source and URL. ALWAYS cite the specific source for every event presented — e.g. "(Source: Token Unlocks — https://token.unlocks.app/...)" or "(Source: Twitter — https://twitter.com/...)". Never present an event without its source attribution.
22
+
21
23
  WORKFLOW PATTERN: Default call — start_date=today, end_date=3 months from today, sort_by="event_date", sort_order="asc". Flag events within 7 days as imminent.
22
24
 
23
25
  WORKFLOWS: Commonly used in analyze_token, watchlist_portfolio, among others. If a matching prompt template exists for your current workflow, call it for the full tool plan.`,
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAmB;IACvE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,GAAG,uBAAuB;;;;;;;;;;;;;;;;;;8KAkBiI;QACxK,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YACjG,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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAmB;IACvE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,GAAG,uBAAuB;;;;;;;;;;;;;;;;;;;;8KAoBiI;QACxK,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YACjG,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,4 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { KaitoClient } from "../client.js";
3
+ export declare function registerTwitterAccountTypeTool(server: McpServer, client: KaitoClient): void;
4
+ //# sourceMappingURL=twitter-account-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twitter-account-type.d.ts","sourceRoot":"","sources":["../../src/tools/twitter-account-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QAyCpF"}
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ export function registerTwitterAccountTypeTool(server, client) {
3
+ server.registerTool("kaito_twitter_account_type", {
4
+ description: `Get Twitter account type classification, smart follower tier, and crypto primary role.
5
+
6
+ RESPONSE FIELDS:
7
+ - id, name, username, bio, icon: Basic profile metadata.
8
+ - smart_followers: Number of smart followers.
9
+ - tier: micro (<100), small (100–299), medium (300–999), large (1000–1999), mega (2000+).
10
+ - role: Crypto primary role (e.g. Investigator, Developer, Investor). Empty string if not available.
11
+ - individual_or_entity: "individual" (person) or "entity" (organization/project).
12
+
13
+ PARAMETERS: Provide either user_id or username. user_id is preferred for reliability.
14
+
15
+ USE CASES:
16
+ - Quickly check a Twitter user's crypto role and influence tier.
17
+ - Determine if an account is an individual or an entity/organization.
18
+ - Assess credibility of a KOL before deeper analysis.
19
+ - Enrich user profiles when investigating token communities.`,
20
+ inputSchema: {
21
+ user_id: z
22
+ .string()
23
+ .optional()
24
+ .describe("Twitter user ID (e.g. 3012852462). Preferred over username."),
25
+ username: z
26
+ .string()
27
+ .optional()
28
+ .describe("Twitter username (e.g. zachxbt). Case-insensitive."),
29
+ },
30
+ annotations: { readOnlyHint: true, openWorldHint: true },
31
+ }, async ({ user_id, username }) => {
32
+ const data = await client.request("twitter_account_type", { user_id, username }, { internal: true });
33
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
34
+ });
35
+ }
36
+ //# sourceMappingURL=twitter-account-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twitter-account-type.js","sourceRoot":"","sources":["../../src/tools/twitter-account-type.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,8BAA8B,CAAC,MAAiB,EAAE,MAAmB;IACnF,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;QACE,WAAW,EAAE;;;;;;;;;;;;;;;6DAe0C;QACvD,WAAW,EAAE;YACX,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,6DAA6D,CAAC;YAC1E,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oDAAoD,CAAC;SAClE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B,sBAAsB,EACtB,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;QACF,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 registerTwitterOfficialAccountTool(server: McpServer, client: KaitoClient): void;
4
+ //# sourceMappingURL=twitter-official-account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twitter-official-account.d.ts","sourceRoot":"","sources":["../../src/tools/twitter-official-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,QAgCxF"}
@@ -0,0 +1,28 @@
1
+ import { z } from "zod";
2
+ import { REQUIRED_TOKEN_GUIDANCE } from "../tool-guidance.js";
3
+ export function registerTwitterOfficialAccountTool(server, client) {
4
+ server.registerTool("kaito_twitter_official_account", {
5
+ description: `${REQUIRED_TOKEN_GUIDANCE}
6
+
7
+ Get the official and affiliate Twitter accounts associated with a cryptocurrency token. Use kaito_tokens to find valid token values.
8
+
9
+ RESPONSE FIELDS:
10
+ - accounts: Official project Twitter accounts (with image_url, name, username, user_id, verified).
11
+ - affiliates: Key affiliated accounts such as founders, team members, support (same fields as accounts).
12
+
13
+ USE CASES:
14
+ - Identify official Twitter accounts for a token project.
15
+ - Find key people (founders, team members) affiliated with a token.
16
+ - Verify which accounts are official vs affiliate.
17
+
18
+ WORKFLOWS: Useful as a starting point before calling kaito_smart_followers or kaito_smart_following on the returned accounts.`,
19
+ inputSchema: {
20
+ token: z.string().describe("Resolved token value from kaito_tokens (e.g. BTC, ETH, BNB)"),
21
+ },
22
+ annotations: { readOnlyHint: true, openWorldHint: true },
23
+ }, async ({ token }) => {
24
+ const data = await client.request("twitter_official_account", { token }, { internal: true });
25
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
26
+ });
27
+ }
28
+ //# sourceMappingURL=twitter-official-account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twitter-official-account.js","sourceRoot":"","sources":["../../src/tools/twitter-official-account.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,UAAU,kCAAkC,CAAC,MAAiB,EAAE,MAAmB;IACvF,MAAM,CAAC,YAAY,CACjB,gCAAgC,EAChC;QACE,WAAW,EAAE,GAAG,uBAAuB;;;;;;;;;;;;;8HAaiF;QACxH,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;SAC1F;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B,0BAA0B,EAC1B,EAAE,KAAK,EAAE,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;QACF,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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kaito-mcp-server",
3
- "version": "0.2.13",
3
+ "version": "0.2.16",
4
4
  "description": "MCP server for Kaito AI crypto market intelligence API",
5
5
  "license": "MIT",
6
6
  "type": "module",