kaito-mcp-server 0.2.9 → 0.2.12
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 +20 -19
- package/build/__tests__/server-consistency.test.js +64 -0
- package/build/__tests__/server-consistency.test.js.map +1 -1
- package/build/__tests__/smoke.test.js +29 -29
- package/build/__tests__/smoke.test.js.map +1 -1
- package/build/prompts/analyze-token.d.ts +3 -0
- package/build/prompts/analyze-token.d.ts.map +1 -0
- package/build/prompts/analyze-token.js +97 -0
- package/build/prompts/analyze-token.js.map +1 -0
- package/build/prompts/discover-trending.d.ts +3 -0
- package/build/prompts/discover-trending.d.ts.map +1 -0
- package/build/prompts/discover-trending.js +98 -0
- package/build/prompts/discover-trending.js.map +1 -0
- package/build/prompts/market-roundup.d.ts +3 -0
- package/build/prompts/market-roundup.d.ts.map +1 -0
- package/build/prompts/market-roundup.js +77 -0
- package/build/prompts/market-roundup.js.map +1 -0
- package/build/prompts/social-listening.d.ts +3 -0
- package/build/prompts/social-listening.d.ts.map +1 -0
- package/build/prompts/social-listening.js +139 -0
- package/build/prompts/social-listening.js.map +1 -0
- package/build/prompts/watchlist-portfolio.d.ts +3 -0
- package/build/prompts/watchlist-portfolio.d.ts.map +1 -0
- package/build/prompts/watchlist-portfolio.js +117 -0
- package/build/prompts/watchlist-portfolio.js.map +1 -0
- package/build/prompts/workflows.d.ts.map +1 -1
- package/build/prompts/workflows.js +10 -80
- package/build/prompts/workflows.js.map +1 -1
- package/build/server-instructions.d.ts +10 -0
- package/build/server-instructions.d.ts.map +1 -0
- package/build/server-instructions.js +37 -0
- package/build/server-instructions.js.map +1 -0
- package/build/server.d.ts.map +1 -1
- package/build/server.js +2 -4
- package/build/server.js.map +1 -1
- package/build/tools/advanced-search.d.ts.map +1 -1
- package/build/tools/advanced-search.js +10 -1
- package/build/tools/advanced-search.js.map +1 -1
- package/build/tools/engagement.d.ts.map +1 -1
- package/build/tools/engagement.js +5 -1
- package/build/tools/engagement.js.map +1 -1
- package/build/tools/events.d.ts.map +1 -1
- package/build/tools/events.js +5 -1
- package/build/tools/events.js.map +1 -1
- package/build/tools/kol-token-mindshare.d.ts.map +1 -1
- package/build/tools/kol-token-mindshare.js +3 -1
- package/build/tools/kol-token-mindshare.js.map +1 -1
- package/build/tools/market-smart-following.d.ts.map +1 -1
- package/build/tools/market-smart-following.js +3 -1
- package/build/tools/market-smart-following.js.map +1 -1
- package/build/tools/mentions.d.ts.map +1 -1
- package/build/tools/mentions.js +35 -4
- package/build/tools/mentions.js.map +1 -1
- package/build/tools/mindshare-arena.d.ts.map +1 -1
- package/build/tools/mindshare-arena.js +5 -1
- package/build/tools/mindshare-arena.js.map +1 -1
- package/build/tools/mindshare-delta.d.ts.map +1 -1
- package/build/tools/mindshare-delta.js +5 -1
- package/build/tools/mindshare-delta.js.map +1 -1
- package/build/tools/mindshare.d.ts.map +1 -1
- package/build/tools/mindshare.js +5 -1
- package/build/tools/mindshare.js.map +1 -1
- package/build/tools/narrative-mindshare.d.ts.map +1 -1
- package/build/tools/narrative-mindshare.js +3 -1
- package/build/tools/narrative-mindshare.js.map +1 -1
- package/build/tools/sentiment.d.ts.map +1 -1
- package/build/tools/sentiment.js +5 -1
- package/build/tools/sentiment.js.map +1 -1
- package/build/tools/smart-followers.d.ts.map +1 -1
- package/build/tools/smart-followers.js +3 -1
- package/build/tools/smart-followers.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -105,45 +105,45 @@ The transport is **stdio**. Use this command in your client's MCP server configu
|
|
|
105
105
|
|
|
106
106
|
These two tools exist specifically so clients that expose tools but not `resources/read` can still resolve valid token and narrative values before calling other Kaito tools.
|
|
107
107
|
|
|
108
|
-
###
|
|
108
|
+
### Search & Discovery
|
|
109
109
|
|
|
110
110
|
| Tool | Description |
|
|
111
111
|
|------|-------------|
|
|
112
|
-
| `
|
|
113
|
-
| `kaito_mindshare` | Daily mindshare time series for a token |
|
|
114
|
-
| `kaito_narrative_mindshare` | Daily mindshare for a crypto narrative |
|
|
115
|
-
| `kaito_mentions` | Daily mention counts by source |
|
|
116
|
-
| `kaito_engagement` | Daily engagement metrics (total + smart) |
|
|
112
|
+
| `kaito_advanced_search` | Ranked crypto feeds with AI summaries and filters |
|
|
117
113
|
|
|
118
|
-
###
|
|
114
|
+
### Mindshare & Sentiment
|
|
119
115
|
|
|
120
116
|
| Tool | Description |
|
|
121
117
|
|------|-------------|
|
|
122
|
-
| `
|
|
118
|
+
| `kaito_mindshare` | Daily mindshare time series for a token |
|
|
119
|
+
| `kaito_sentiment` | Daily sentiment time series for a token |
|
|
120
|
+
| `kaito_narrative_mindshare` | Daily mindshare for a crypto narrative |
|
|
121
|
+
| `kaito_mindshare_arena` | Project rankings by mindshare |
|
|
122
|
+
| `kaito_mindshare_delta` | Top gainers and losers by mindshare change |
|
|
123
|
+
| `kaito_tweet_engagement_info` | Engagement details for a specific tweet |
|
|
124
|
+
| `kaito_mentions` | Daily mention counts by source |
|
|
125
|
+
| `kaito_engagement` | Daily engagement metrics (total + smart) |
|
|
123
126
|
|
|
124
|
-
###
|
|
127
|
+
### KOL Analytics
|
|
125
128
|
|
|
126
129
|
| Tool | Description |
|
|
127
130
|
|------|-------------|
|
|
128
131
|
| `kaito_smart_followers` | Smart follower count or list for a user |
|
|
129
|
-
| `kaito_smart_following` | Latest 100 smart accounts followed by a user |
|
|
130
132
|
| `kaito_get_twitter_user` | Twitter user profile metadata by user ID |
|
|
131
133
|
| `kaito_kol_token_mindshare` | Top KOLs ranked by mindshare for a token |
|
|
132
|
-
| `kaito_market_smart_following` | Accounts that smart followers have recently followed |
|
|
133
134
|
|
|
134
|
-
###
|
|
135
|
+
### Smart Following
|
|
135
136
|
|
|
136
137
|
| Tool | Description |
|
|
137
138
|
|------|-------------|
|
|
138
|
-
| `
|
|
139
|
-
| `
|
|
139
|
+
| `kaito_smart_following` | Accounts that a particular smart person has recently followed |
|
|
140
|
+
| `kaito_market_smart_following` | Accounts that smart people collectively have recently followed |
|
|
140
141
|
|
|
141
|
-
### Events
|
|
142
|
+
### Events & Catalysts
|
|
142
143
|
|
|
143
144
|
| Tool | Description |
|
|
144
145
|
|------|-------------|
|
|
145
|
-
| `kaito_events` | Upcoming catalyst
|
|
146
|
-
| `kaito_tweet_engagement_info` | Engagement details for a specific tweet |
|
|
146
|
+
| `kaito_events` | Upcoming catalyst and unlocks for a token |
|
|
147
147
|
|
|
148
148
|
## Resources
|
|
149
149
|
|
|
@@ -165,6 +165,7 @@ Practical example:
|
|
|
165
165
|
| Prompt | Description |
|
|
166
166
|
|--------|-------------|
|
|
167
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 |
|
|
168
169
|
| `discover_trending` | Trending discovery workflow (mindshare arena → delta movers → smart money signals → search) |
|
|
169
170
|
|
|
170
171
|
## Development
|
|
@@ -182,8 +183,8 @@ Smoke tests hit the real Kaito API to verify all endpoints are reachable:
|
|
|
182
183
|
|
|
183
184
|
```bash
|
|
184
185
|
KAITO_API_KEY=your-key npm test
|
|
185
|
-
KAITO_API_KEY=your-key npm test -- -t "
|
|
186
|
-
KAITO_API_KEY=your-key npm test -- -t "
|
|
186
|
+
KAITO_API_KEY=your-key npm test -- -t "Mindshare & Sentiment"
|
|
187
|
+
KAITO_API_KEY=your-key npm test -- -t "KOL Analytics"
|
|
187
188
|
```
|
|
188
189
|
|
|
189
190
|
Resource and reference-lookup tests run without an API key; authenticated endpoint checks are skipped if `KAITO_API_KEY` is not set.
|
|
@@ -4,6 +4,7 @@ import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
|
|
|
4
4
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
5
5
|
import { CURRENT_VERSION, SERVER_NAME } from "../package-metadata.js";
|
|
6
6
|
import { createServer } from "../server.js";
|
|
7
|
+
import { SERVER_INSTRUCTIONS } from "../server-instructions.js";
|
|
7
8
|
const require = createRequire(import.meta.url);
|
|
8
9
|
const manifest = require("../../manifest.json");
|
|
9
10
|
const pkg = require("../../package.json");
|
|
@@ -59,8 +60,71 @@ describe("server consistency", () => {
|
|
|
59
60
|
expect(prompts.prompts.map((prompt) => prompt.name).sort()).toEqual([
|
|
60
61
|
"analyze_token",
|
|
61
62
|
"discover_trending",
|
|
63
|
+
"market_roundup",
|
|
64
|
+
"social_listening",
|
|
65
|
+
"watchlist_portfolio",
|
|
62
66
|
]);
|
|
63
67
|
});
|
|
68
|
+
it("server instructions contain workflow routing and output format rules", () => {
|
|
69
|
+
const workflowNames = [
|
|
70
|
+
"analyze_token",
|
|
71
|
+
"discover_trending",
|
|
72
|
+
"market_roundup",
|
|
73
|
+
"watchlist_portfolio",
|
|
74
|
+
"social_listening",
|
|
75
|
+
];
|
|
76
|
+
for (const name of workflowNames) {
|
|
77
|
+
expect(SERVER_INSTRUCTIONS).toContain(name);
|
|
78
|
+
}
|
|
79
|
+
expect(SERVER_INSTRUCTIONS).toContain("Workflow Routing");
|
|
80
|
+
expect(SERVER_INSTRUCTIONS).toContain("Output Format");
|
|
81
|
+
expect(SERVER_INSTRUCTIONS).toContain("Answer first");
|
|
82
|
+
expect(SERVER_INSTRUCTIONS).toContain("kaito_tokens");
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
describe("prompts", () => {
|
|
86
|
+
it("market_roundup returns a non-empty user message", async () => {
|
|
87
|
+
const { client } = await connectTestClient();
|
|
88
|
+
const result = await client.getPrompt({
|
|
89
|
+
name: "market_roundup",
|
|
90
|
+
arguments: {},
|
|
91
|
+
});
|
|
92
|
+
expect(result.messages).toHaveLength(1);
|
|
93
|
+
expect(result.messages[0].role).toBe("user");
|
|
94
|
+
expect(result.messages[0].content).toMatchObject({
|
|
95
|
+
type: "text",
|
|
96
|
+
text: expect.stringContaining("market roundup"),
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
it("social_listening returns a prompt with token and default duration", async () => {
|
|
100
|
+
const { client } = await connectTestClient();
|
|
101
|
+
const result = await client.getPrompt({
|
|
102
|
+
name: "social_listening",
|
|
103
|
+
arguments: { token: "HYPERLIQUID" },
|
|
104
|
+
});
|
|
105
|
+
expect(result.messages).toHaveLength(1);
|
|
106
|
+
expect(result.messages[0].role).toBe("user");
|
|
107
|
+
expect(result.messages[0].content).toMatchObject({
|
|
108
|
+
type: "text",
|
|
109
|
+
text: expect.stringContaining("social listening"),
|
|
110
|
+
});
|
|
111
|
+
const text = result.messages[0].content.text;
|
|
112
|
+
expect(text).toContain("HYPERLIQUID");
|
|
113
|
+
expect(text).toContain("24h");
|
|
114
|
+
expect(text).not.toContain("Competitor");
|
|
115
|
+
});
|
|
116
|
+
it("social_listening includes competitor block when competitors provided", async () => {
|
|
117
|
+
const { client } = await connectTestClient();
|
|
118
|
+
const result = await client.getPrompt({
|
|
119
|
+
name: "social_listening",
|
|
120
|
+
arguments: { token: "HYPERLIQUID", competitors: "DYDX,GMX", duration: "7d" },
|
|
121
|
+
});
|
|
122
|
+
const text = result.messages[0].content.text;
|
|
123
|
+
expect(text).toContain("DYDX");
|
|
124
|
+
expect(text).toContain("GMX");
|
|
125
|
+
expect(text).toContain("7d");
|
|
126
|
+
expect(text).toContain("Competitor");
|
|
127
|
+
});
|
|
64
128
|
});
|
|
65
129
|
describe("reference lookup tools", () => {
|
|
66
130
|
it("lists and resolves canonical token values through MCP tool calls", async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-consistency.test.js","sourceRoot":"","sources":["../../src/__tests__/server-consistency.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"server-consistency.test.js","sourceRoot":"","sources":["../../src/__tests__/server-consistency.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,13 @@ const hasApiKey = !!process.env.KAITO_API_KEY;
|
|
|
4
4
|
const client = new KaitoClient();
|
|
5
5
|
// Rate limit protection: 100ms between each test (API limit: 5 req/s)
|
|
6
6
|
beforeEach(() => new Promise((r) => setTimeout(r, 100)));
|
|
7
|
-
describe.skipIf(!hasApiKey)("
|
|
7
|
+
describe.skipIf(!hasApiKey)("Search & Discovery", () => {
|
|
8
|
+
it("advanced_search", async () => {
|
|
9
|
+
const result = await client.request("advanced_search", { tokens: "BTC" });
|
|
10
|
+
expect(result).toBeDefined();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
describe.skipIf(!hasApiKey)("Mindshare & Sentiment", () => {
|
|
8
14
|
it("sentiment", async () => {
|
|
9
15
|
const result = await client.request("sentiment", { token: "BTC" });
|
|
10
16
|
expect(result).toBeDefined();
|
|
@@ -27,23 +33,31 @@ describe.skipIf(!hasApiKey)("Market Data", () => {
|
|
|
27
33
|
const result = await client.request("engagement", { token: "BTC" });
|
|
28
34
|
expect(result).toBeDefined();
|
|
29
35
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
it("mindshare_arena", async () => {
|
|
37
|
+
const result = await client.request("mindshare_arena", {});
|
|
38
|
+
expect(result).toBeDefined();
|
|
39
|
+
});
|
|
40
|
+
it("mindshare_delta", async () => {
|
|
41
|
+
const result = await client.request("mindshare_delta", {});
|
|
42
|
+
expect(result).toBeDefined();
|
|
43
|
+
});
|
|
44
|
+
it("tweet_engagement_info", async () => {
|
|
45
|
+
const result = await client.request("tweet_engagement_info", {
|
|
46
|
+
tweet_id: "2029089398625845359",
|
|
47
|
+
});
|
|
34
48
|
expect(result).toBeDefined();
|
|
35
49
|
});
|
|
36
50
|
});
|
|
37
|
-
describe.skipIf(!hasApiKey)("
|
|
51
|
+
describe.skipIf(!hasApiKey)("KOL Analytics", () => {
|
|
38
52
|
it("smart_followers", async () => {
|
|
39
53
|
const result = await client.request("smart_followers", {
|
|
40
54
|
username: "VitalikButerin",
|
|
41
55
|
});
|
|
42
56
|
expect(result).toBeDefined();
|
|
43
57
|
});
|
|
44
|
-
it("
|
|
45
|
-
const result = await client.request("
|
|
46
|
-
|
|
58
|
+
it("get_twitter_user", async () => {
|
|
59
|
+
const result = await client.request("get_twitter_user", {
|
|
60
|
+
user_id: "950486928784228352",
|
|
47
61
|
});
|
|
48
62
|
expect(result).toBeDefined();
|
|
49
63
|
});
|
|
@@ -53,9 +67,11 @@ describe.skipIf(!hasApiKey)("Social", () => {
|
|
|
53
67
|
});
|
|
54
68
|
expect(result).toBeDefined();
|
|
55
69
|
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
70
|
+
});
|
|
71
|
+
describe.skipIf(!hasApiKey)("Smart Following", () => {
|
|
72
|
+
it("smart_following", async () => {
|
|
73
|
+
const result = await client.request("smart_following", {
|
|
74
|
+
username: "VitalikButerin",
|
|
59
75
|
});
|
|
60
76
|
expect(result).toBeDefined();
|
|
61
77
|
});
|
|
@@ -64,27 +80,11 @@ describe.skipIf(!hasApiKey)("Social", () => {
|
|
|
64
80
|
expect(result).toBeDefined();
|
|
65
81
|
});
|
|
66
82
|
});
|
|
67
|
-
describe.skipIf(!hasApiKey)("
|
|
68
|
-
it("mindshare_arena", async () => {
|
|
69
|
-
const result = await client.request("mindshare_arena", {});
|
|
70
|
-
expect(result).toBeDefined();
|
|
71
|
-
});
|
|
72
|
-
it("mindshare_delta", async () => {
|
|
73
|
-
const result = await client.request("mindshare_delta", {});
|
|
74
|
-
expect(result).toBeDefined();
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
describe.skipIf(!hasApiKey)("Events", () => {
|
|
83
|
+
describe.skipIf(!hasApiKey)("Events & Catalysts", () => {
|
|
78
84
|
it("events", async () => {
|
|
79
85
|
const result = await client.request("events", { token: "BTC" });
|
|
80
86
|
expect(result).toBeDefined();
|
|
81
87
|
});
|
|
82
|
-
it("tweet_engagement_info", async () => {
|
|
83
|
-
const result = await client.request("tweet_engagement_info", {
|
|
84
|
-
tweet_id: "2029089398625845359",
|
|
85
|
-
});
|
|
86
|
-
expect(result).toBeDefined();
|
|
87
|
-
});
|
|
88
88
|
});
|
|
89
89
|
describe("Resources (no auth)", () => {
|
|
90
90
|
it("tokens", async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smoke.test.js","sourceRoot":"","sources":["../../src/__tests__/smoke.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAE9C,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;AAEjC,sEAAsE;AACtE,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzD,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"smoke.test.js","sourceRoot":"","sources":["../../src/__tests__/smoke.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-token.d.ts","sourceRoot":"","sources":["../../src/prompts/analyze-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,QAyG3D"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerAnalyzeTokenPrompt(server) {
|
|
3
|
+
server.registerPrompt("analyze_token", {
|
|
4
|
+
description: "Deep-dive analysis of a crypto token: top discussions, sentiment, mindshare, and events with trend comparison. Use when: 'what happened to X?', 'why is X up/down?', 'catch me up on X', 'deep dive on X', 'what's driving X right now?'",
|
|
5
|
+
argsSchema: {
|
|
6
|
+
token: z
|
|
7
|
+
.string()
|
|
8
|
+
.describe("Project name, ticker, or resolved token value (e.g. Bitcoin, BTC, HYPERLIQUID)"),
|
|
9
|
+
duration: z
|
|
10
|
+
.enum(["24h", "7d", "30d"])
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Time horizon for analysis: 24h, 7d, 30d (default: 30d). If the chosen horizon yields insufficient data, expand to the next tier."),
|
|
13
|
+
},
|
|
14
|
+
}, ({ token, duration }) => {
|
|
15
|
+
const horizon = duration || "30d";
|
|
16
|
+
// 2x lookback mapping for trend comparison
|
|
17
|
+
const lookbackDays = { "24h": 2, "7d": 14, "30d": 60 };
|
|
18
|
+
const days = lookbackDays[horizon];
|
|
19
|
+
return {
|
|
20
|
+
messages: [
|
|
21
|
+
{
|
|
22
|
+
role: "user",
|
|
23
|
+
content: {
|
|
24
|
+
type: "text",
|
|
25
|
+
text: `Perform a comprehensive analysis of the crypto token "${token}" over a ${horizon} time horizon. Follow these steps exactly — do not skip or shortcut any step.
|
|
26
|
+
|
|
27
|
+
## Phase 1 — Token Resolution
|
|
28
|
+
|
|
29
|
+
1. **Resolve token**: Call kaito_tokens with query="${token}".
|
|
30
|
+
- If a match is found, save the first returned token value as RESOLVED_TOKEN.
|
|
31
|
+
- **If no match or wrong match**: Ask the user in a single message: "Did you mean A, B, ... or none of the above? If none, please provide the project's common name and X handle (e.g. Rain AI, @rain_xyz)."
|
|
32
|
+
- If the user provides a name and handle instead of picking a match, this becomes an **unindexed token**. In Phase 2, only Steps 2 and 6 apply (using keyword="{project_name} OR @{x_handle}" instead of tokens=). Steps 3–5 are skipped. In Phase 3, clearly note that structured metrics are unavailable and the analysis is based on tweet content only.
|
|
33
|
+
|
|
34
|
+
## Phase 2 — Data Gathering
|
|
35
|
+
|
|
36
|
+
Run ALL of the following calls in parallel. Compute dates relative to today.
|
|
37
|
+
|
|
38
|
+
2. **Top tweets**: Call kaito_advanced_search with tokens=RESOLVED_TOKEN, sources="Twitter", sort_by="smart_engagement", size=50, min_created_at set to ${horizon} ago in ISO 8601.
|
|
39
|
+
3. **Mindshare trend (2x lookback)**: Call kaito_mindshare for RESOLVED_TOKEN with start_date=${days} days ago, end_date=tomorrow.
|
|
40
|
+
4. **Sentiment trend (2x lookback)**: Call kaito_sentiment for RESOLVED_TOKEN with start_date=${days} days ago, end_date=tomorrow.
|
|
41
|
+
5. **Upcoming events**: Call kaito_events for RESOLVED_TOKEN with start_date=today, end_date=3 months from today, sort_by="event_date", sort_order="asc".
|
|
42
|
+
6. **News & cross-platform discussion**: Call kaito_advanced_search with tokens=RESOLVED_TOKEN, sort_by="relevance", size=30, min_created_at set to ${horizon} ago in ISO 8601 (no sources filter — captures News, Podcast, Research, etc.).
|
|
43
|
+
|
|
44
|
+
If Step 2 returns fewer than 10 results for the ${horizon} horizon, expand to the next tier (24h → 7d → 30d) and re-run Step 2 only.
|
|
45
|
+
|
|
46
|
+
## Phase 3 — Analysis & Output
|
|
47
|
+
|
|
48
|
+
Synthesize all data into the following structured output. Do NOT use "smart money" — always say "smart accounts" instead.
|
|
49
|
+
|
|
50
|
+
### Answer
|
|
51
|
+
This is the PRIMARY output — a comprehensive 2–3 paragraph response that directly and fully answers the user's question. Do NOT list categories or jump to bullet points here. Write in flowing prose as if briefing someone who will only read this section and skip everything below.
|
|
52
|
+
|
|
53
|
+
Paragraph 1: State the core thesis — why is this token up/down/notable? Name the specific catalysts (partnerships, launches, macro events, regulatory shifts) and explain how they connect. This should read like a concise investment memo, not a table of contents.
|
|
54
|
+
|
|
55
|
+
Paragraph 2: Support with data — weave in mindshare trajectory (% change vs prior period), sentiment direction, and smart account conviction. Always express metrics as % change. Reference specific voices or events that validate the thesis.
|
|
56
|
+
|
|
57
|
+
Paragraph 3 (if warranted): Forward-looking view — upcoming catalysts, risks, or open questions. End with suggested follow-up actions (e.g. "run social_listening for deeper engagement analysis" or "run watchlist_portfolio to compare against competitors").
|
|
58
|
+
|
|
59
|
+
If data is thin, say so explicitly rather than over-interpreting.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
*Everything below is supporting evidence for the answer above.*
|
|
64
|
+
|
|
65
|
+
### Key Developments
|
|
66
|
+
5–7 bullet points of the most important findings. **Lead with what happened or changed, not metrics.** Each bullet should start with a development (partnership, launch, upgrade, narrative shift, controversy), then cite mindshare/sentiment data as supporting evidence.
|
|
67
|
+
- **Always express metrics as % change** when comparing across time. Raw values alone are meaningless to the reader. Write "mindshare up +35% from 2.1% to 2.8% over 7 days" instead of just stating numbers.
|
|
68
|
+
- Compare the current ${horizon} window against the prior ${horizon} (available from the 2x lookback data) to identify acceleration, deceleration, or reversals.
|
|
69
|
+
- Attribute every claim to a specific source (tweet, article, account). No unattributed assertions.
|
|
70
|
+
|
|
71
|
+
### Events & Catalysts
|
|
72
|
+
|
|
73
|
+
Compile all events from Step 5 into a date-sorted view:
|
|
74
|
+
|
|
75
|
+
| Date | Event | Source | Credibility & Impact |
|
|
76
|
+
|------|-------|--------|----------------------|
|
|
77
|
+
|
|
78
|
+
For each event:
|
|
79
|
+
- **Source**: Include the author and link from the event data. For token unlocks sourced from Tokenomist or DefiLlama, these are on-chain data sources and inherently high credibility. For tweet-sourced events, assess credibility based on the author identity.
|
|
80
|
+
- **Credibility**: Rate as High (official account or on-chain data), Medium (credible analyst), or Low (speculation/unverifiable).
|
|
81
|
+
- **Impact**: Categorize as supply-side (unlocks, vesting), product (mainnet, feature launch), governance (votes, proposals), or visibility (conferences, AMAs). Flag events within the next 7 days as **imminent**.
|
|
82
|
+
- If no events are found, explicitly state "No scheduled events."
|
|
83
|
+
|
|
84
|
+
### Notable Discussions
|
|
85
|
+
Highlight 5–10 of the most impactful tweets and articles from Steps 2 and 6. For each:
|
|
86
|
+
- Content summary (truncated to 280 chars if needed) with URL
|
|
87
|
+
- Author (@username, SF count), smart engagement count
|
|
88
|
+
- Why it matters — what signal does this piece of content carry?
|
|
89
|
+
|
|
90
|
+
Prioritize surprise and non-obvious signals over consensus takes. Include cross-platform content (News, Podcast, Research) alongside Twitter when available.`,
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=analyze-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-token.js","sourceRoot":"","sources":["../../src/prompts/analyze-token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,cAAc,CACnB,eAAe,EACf;QACE,WAAW,EACT,0OAA0O;QAC5O,UAAU,EAAE;YACV,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CACP,gFAAgF,CACjF;YACH,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CACP,kIAAkI,CACnI;SACJ;KACF,EACD,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,QAAQ,IAAI,KAAK,CAAC;QAElC,2CAA2C;QAC3C,MAAM,YAAY,GAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC/E,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAEnC,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yDAAyD,KAAK,YAAY,OAAO;;;;sDAI/C,KAAK;;;;;;;;;0JAS+F,OAAO;gGACjE,IAAI;gGACJ,IAAI;;sJAEkD,OAAO;;kDAE3G,OAAO;;;;;;;;;;;;;;;;;;;;;;;;wBAwBjC,OAAO,6BAA6B,OAAO;;;;;;;;;;;;;;;;;;;;;;6JAsB0F;qBAChJ;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerDiscoverTrendingPrompt(server) {
|
|
3
|
+
server.registerPrompt("discover_trending", {
|
|
4
|
+
description: "Discover trending crypto projects and narratives: mindshare rankings, biggest movers, smart account signals, pre-TGE momentum, and narrative shifts.",
|
|
5
|
+
argsSchema: {
|
|
6
|
+
duration: z
|
|
7
|
+
.enum(["24h", "7d", "30d"])
|
|
8
|
+
.optional()
|
|
9
|
+
.describe("Time window for rankings: 24h, 7d, 30d (default: 24h)"),
|
|
10
|
+
},
|
|
11
|
+
}, ({ duration }) => {
|
|
12
|
+
const window = duration || "24h";
|
|
13
|
+
return {
|
|
14
|
+
messages: [
|
|
15
|
+
{
|
|
16
|
+
role: "user",
|
|
17
|
+
content: {
|
|
18
|
+
type: "text",
|
|
19
|
+
text: `Discover what's trending in crypto right now using a ${window} time window. Follow these steps exactly — do not skip or shortcut any step.
|
|
20
|
+
|
|
21
|
+
## Batch 1 — Run these six calls in parallel (no dependencies):
|
|
22
|
+
|
|
23
|
+
1. **Mindshare Arena**: Call kaito_mindshare_arena with duration="${window}" to get top projects by mindshare.
|
|
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.
|
|
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
|
+
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
|
+
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).
|
|
29
|
+
|
|
30
|
+
## Batch 2 — Run after Batch 1 completes (depends on Batch 1 results). All steps can run in parallel with each other:
|
|
31
|
+
|
|
32
|
+
7. From Step 3, for the top 5 mindshare gainers: call kaito_advanced_search for each with tokens="{ticker_id}" (use the ticker_id value directly from the mindshare_delta response — no need to call kaito_tokens), sort_by="smart_engagement", sources="Twitter", size=20, min_created_at set to ${window} ago in ISO 8601 to understand what's driving the move. These CANNOT be combined because the tokens parameter uses AND logic — run all 5 in parallel.
|
|
33
|
+
8. From Step 4, pick the top 5 organization accounts by followers_change. Run TWO searches:
|
|
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
|
+
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
|
+
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
|
+
|
|
39
|
+
## Output Structure
|
|
40
|
+
|
|
41
|
+
Synthesize all data into the following structured output. Do NOT use "smart money" — always say "smart accounts" instead.
|
|
42
|
+
|
|
43
|
+
### Answer
|
|
44
|
+
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.
|
|
45
|
+
|
|
46
|
+
Paragraph 1: Lead with the single most important signal or theme emerging from the data. Name specific projects, catalysts, and why they matter. Write as if the reader will only read this section.
|
|
47
|
+
|
|
48
|
+
Paragraph 2: Identify 2–3 emerging themes that aren't yet consensus — smart account rotations, narrative shifts, or pre-TGE momentum that most people are missing. Reference specific data points.
|
|
49
|
+
|
|
50
|
+
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
|
+
|
|
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
|
+
---
|
|
56
|
+
|
|
57
|
+
*Everything below is supporting evidence for the answer above.*
|
|
58
|
+
|
|
59
|
+
### Mindshare Rankings
|
|
60
|
+
Top 10 projects from the Mindshare Arena. For each:
|
|
61
|
+
- Rank, project name, mindshare score
|
|
62
|
+
- 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
|
+
|
|
64
|
+
### Biggest Movers
|
|
65
|
+
For the top 5 gainers from Step 3, write a short paragraph each:
|
|
66
|
+
- 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.
|
|
68
|
+
- 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.
|
|
71
|
+
|
|
72
|
+
### Smart Account Signals
|
|
73
|
+
**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 pattern — are smart accounts rotating into a sector (DeFi, L2, AI)?
|
|
75
|
+
|
|
76
|
+
**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?
|
|
78
|
+
|
|
79
|
+
### Pre-TGE Momentum
|
|
80
|
+
Top 5–10 pre-TGE projects from Step 2. For each:
|
|
81
|
+
- Project name and mindshare score
|
|
82
|
+
- One-line context on what the project does and why it's gaining attention
|
|
83
|
+
- Flag any that also appear in the smart following data (strong conviction signal)
|
|
84
|
+
|
|
85
|
+
### 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
|
|
90
|
+
|
|
91
|
+
`,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=discover-trending.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-roundup.d.ts","sourceRoot":"","sources":["../../src/prompts/market-roundup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,QA4E5D"}
|