@flowframe22/mcp-server 0.2.0 → 0.2.3

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.
@@ -0,0 +1,44 @@
1
+ /**
2
+ * `defineTool` — DRY wrapper for the FlowFrame MCP tool registration pattern.
3
+ *
4
+ * Every tool in `tools.ts` repeats the same skeleton:
5
+ *
6
+ * server.tool(name, description, inputSchema, async (args) => {
7
+ * try {
8
+ * const env = await client.get<...>(path, query);
9
+ * return formatEnvelope(title, env, body);
10
+ * } catch (err) {
11
+ * return formatError(err as FlowFrameApiError);
12
+ * }
13
+ * });
14
+ *
15
+ * `defineTool` factors out the try/catch + `formatError` boilerplate so a
16
+ * tool definition is just: input schema + `fetch(client, args)` + `format(env, args)`.
17
+ *
18
+ * Intentionally a thin helper. We do NOT take over input validation
19
+ * (zod still runs via `server.tool`), URL building (the FlowFrameClient
20
+ * already handles that), or formatting (callers still produce the
21
+ * `ToolResult` so each tool keeps its bespoke prose). The win is purely
22
+ * removing duplicated error-handling code from each tool.
23
+ */
24
+ import { z, ZodRawShape } from 'zod';
25
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
26
+ import { FlowFrameClient, type Envelope } from './client.js';
27
+ import { type ToolResult } from './formatter.js';
28
+ interface DefineToolConfig<Shape extends ZodRawShape, T> {
29
+ name: string;
30
+ description: string;
31
+ inputSchema: Shape;
32
+ /**
33
+ * Make the actual `/v1/*` call via the shared FlowFrameClient.
34
+ * Throwing FlowFrameApiError (or anything) routes through formatError.
35
+ */
36
+ fetch: (client: FlowFrameClient, args: z.objectOutputType<Shape, z.ZodTypeAny>) => Promise<Envelope<T>>;
37
+ /**
38
+ * Project the envelope into a ToolResult (text + structuredContent).
39
+ * Use the `formatEnvelope` / `formatPlain` helpers from `./formatter.js`.
40
+ */
41
+ format: (env: Envelope<T>, args: z.objectOutputType<Shape, z.ZodTypeAny>) => ToolResult;
42
+ }
43
+ export declare function defineTool<Shape extends ZodRawShape, T>(server: McpServer, client: FlowFrameClient, config: DefineToolConfig<Shape, T>): void;
44
+ export {};
@@ -0,0 +1,44 @@
1
+ /**
2
+ * `defineTool` — DRY wrapper for the FlowFrame MCP tool registration pattern.
3
+ *
4
+ * Every tool in `tools.ts` repeats the same skeleton:
5
+ *
6
+ * server.tool(name, description, inputSchema, async (args) => {
7
+ * try {
8
+ * const env = await client.get<...>(path, query);
9
+ * return formatEnvelope(title, env, body);
10
+ * } catch (err) {
11
+ * return formatError(err as FlowFrameApiError);
12
+ * }
13
+ * });
14
+ *
15
+ * `defineTool` factors out the try/catch + `formatError` boilerplate so a
16
+ * tool definition is just: input schema + `fetch(client, args)` + `format(env, args)`.
17
+ *
18
+ * Intentionally a thin helper. We do NOT take over input validation
19
+ * (zod still runs via `server.tool`), URL building (the FlowFrameClient
20
+ * already handles that), or formatting (callers still produce the
21
+ * `ToolResult` so each tool keeps its bespoke prose). The win is purely
22
+ * removing duplicated error-handling code from each tool.
23
+ */
24
+ import { formatError } from './formatter.js';
25
+ export function defineTool(server, client, config) {
26
+ // The MCP SDK's `server.tool` is heavily overloaded and TypeScript can't
27
+ // narrow our generic `Shape extends ZodRawShape` to the exact `ZodRawShape`
28
+ // shape its `BaseToolCallback` wants. The runtime contract is correct
29
+ // (zod schema in, ToolResult out), so we cast the callback to satisfy
30
+ // the picker. Don't widen this `any` — keep it scoped to the callback.
31
+ const cb = async (args) => {
32
+ try {
33
+ const env = await config.fetch(client, args);
34
+ return config.format(env, args);
35
+ }
36
+ catch (err) {
37
+ return formatError(err);
38
+ }
39
+ };
40
+ server.tool(config.name, config.description, config.inputSchema,
41
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
+ cb);
43
+ }
44
+ //# sourceMappingURL=defineTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineTool.js","sourceRoot":"","sources":["../src/defineTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,EAAE,WAAW,EAAmB,MAAM,gBAAgB,CAAC;AAwB9D,MAAM,UAAU,UAAU,CACxB,MAAiB,EACjB,MAAuB,EACvB,MAAkC;IAElC,yEAAyE;IACzE,4EAA4E;IAC5E,sEAAsE;IACtE,sEAAsE;IACtE,uEAAuE;IACvE,MAAM,EAAE,GAAG,KAAK,EAAE,IAA6C,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAwB,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC;IACF,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,WAAW;IAClB,8DAA8D;IAC9D,EAAS,CACV,CAAC;AACJ,CAAC"}
package/dist/tools.js CHANGED
@@ -7,7 +7,8 @@
7
7
  * server and one Claude ignores.
8
8
  */
9
9
  import { z } from "zod";
10
- import { formatEnvelope, formatError, fmtPct, fmtPrice, fmtUsd, sampleEvenly } from "./formatter.js";
10
+ import { defineTool } from "./defineTool.js";
11
+ import { formatEnvelope, formatError, fmtPct, fmtPrice, fmtUsd } from "./formatter.js";
11
12
  const SPEAKER_SLUGS = [
12
13
  "donald-trump",
13
14
  "jd-vance",
@@ -22,11 +23,14 @@ export function registerTools(server, client) {
22
23
  // ─────────────────────────────────────────────────────────────────────────
23
24
  // Ping — install/health check
24
25
  // ─────────────────────────────────────────────────────────────────────────
25
- server.tool("flowframe_ping", "Health check for the FlowFrame MCP server. Confirms that FLOWFRAME_API_KEY is " +
26
- "configured correctly and that the FlowFrame API is reachable. Returns the key id " +
27
- "and tier on success. Use this first if any other FlowFrame tool is failing.", {}, async () => {
28
- try {
29
- const env = await client.get("/_ping");
26
+ defineTool(server, client, {
27
+ name: "flowframe_ping",
28
+ description: "Health check for the FlowFrame MCP server. Confirms that FLOWFRAME_API_KEY is " +
29
+ "configured correctly and that the FlowFrame API is reachable. Returns the key id " +
30
+ "and tier on success. Use this first if any other FlowFrame tool is failing.",
31
+ inputSchema: {},
32
+ fetch: (c) => c.get("/_ping"),
33
+ format: (env) => {
30
34
  const d = env.data;
31
35
  const body = [
32
36
  `OK — FlowFrame API is reachable.`,
@@ -34,38 +38,38 @@ export function registerTools(server, client) {
34
38
  `Tier: ${d.tier}`,
35
39
  ].join("\n");
36
40
  return formatEnvelope("FlowFrame ping:", env, body);
37
- }
38
- catch (err) {
39
- return formatError(err);
40
- }
41
+ },
41
42
  });
42
43
  // ─────────────────────────────────────────────────────────────────────────
43
44
  // Pulse — FlowFrame's own market analysis feed
44
45
  // ─────────────────────────────────────────────────────────────────────────
45
- server.tool("flowframe_list_pulse", "List recent FlowFrame Pulse items — short-form analysis written by FlowFrame about " +
46
- "specific Polymarket and Kalshi markets. Use when the user asks 'what's new on FlowFrame', " +
47
- "'what is FlowFrame saying about prediction markets lately', or wants original analysis " +
48
- "rather than raw market data. Returns title, source, publish date, content, the underlying " +
49
- "Polymarket conditionId (if any), and a permalink. Sorted newest first. " +
50
- "Do NOT use for market price data use flowframe_polymarket_movers for that.", {
51
- limit: z
52
- .number()
53
- .int()
54
- .min(1)
55
- .max(50)
56
- .optional()
57
- .describe("Number of items to return (default 10, max 50)."),
58
- source: z
59
- .string()
60
- .optional()
61
- .describe("Filter by source name (e.g., 'Polymarket', 'Kalshi'). Optional."),
62
- since: z
63
- .string()
64
- .optional()
65
- .describe("ISO 8601 timestamp; only return items published after this time."),
66
- }, async ({ limit, source, since }) => {
67
- try {
68
- const env = await client.get("/pulse", { limit: limit ?? 10, source, since });
46
+ defineTool(server, client, {
47
+ name: "flowframe_list_pulse",
48
+ description: "List recent FlowFrame Pulse items short-form analysis written by FlowFrame about " +
49
+ "specific Polymarket and Kalshi markets. Use when the user asks 'what's new on FlowFrame', " +
50
+ "'what is FlowFrame saying about prediction markets lately', or wants original analysis " +
51
+ "rather than raw market data. Returns title, source, publish date, content, the underlying " +
52
+ "Polymarket conditionId (if any), and a permalink. Sorted newest first. " +
53
+ "Do NOT use for market price data — use flowframe_polymarket_movers for that.",
54
+ inputSchema: {
55
+ limit: z
56
+ .number()
57
+ .int()
58
+ .min(1)
59
+ .max(50)
60
+ .optional()
61
+ .describe("Number of items to return (default 10, max 50)."),
62
+ source: z
63
+ .string()
64
+ .optional()
65
+ .describe("Filter by source name (e.g., 'Polymarket', 'Kalshi'). Optional."),
66
+ since: z
67
+ .string()
68
+ .optional()
69
+ .describe("ISO 8601 timestamp; only return items published after this time."),
70
+ },
71
+ fetch: (c, { limit, source, since }) => c.get("/pulse", { limit: limit ?? 10, source, since }),
72
+ format: (env) => {
69
73
  if (env.data.length === 0) {
70
74
  return formatEnvelope("No FlowFrame Pulse items match those filters.", env, "");
71
75
  }
@@ -82,22 +86,22 @@ export function registerTools(server, client) {
82
86
  })
83
87
  .join("\n\n");
84
88
  return formatEnvelope(`FlowFrame Pulse — ${env.data.length} most recent item(s):`, env, body);
85
- }
86
- catch (err) {
87
- return formatError(err);
88
- }
89
+ },
89
90
  });
90
- server.tool("flowframe_get_pulse_item", "Fetch a single FlowFrame Pulse item by its slug or uuid. Use after flowframe_list_pulse " +
91
- "when the user says 'open that one', 'show me the full text', or 'summarize the second " +
92
- "item' the slug from the list result goes here. Returns the full content (not truncated), " +
93
- "title, source, publish date, conditionId, and permalink.", {
94
- identifier: z
95
- .string()
96
- .min(1)
97
- .describe("The Pulse item slug (preferred — looks like 'trump-china-tariff-2026-04-01') or its uuid."),
98
- }, async ({ identifier }) => {
99
- try {
100
- const env = await client.get(`/pulse/${encodeURIComponent(identifier)}`);
91
+ defineTool(server, client, {
92
+ name: "flowframe_get_pulse_item",
93
+ description: "Fetch a single FlowFrame Pulse item by its slug or uuid. Use after flowframe_list_pulse " +
94
+ "when the user says 'open that one', 'show me the full text', or 'summarize the second " +
95
+ "item' — the slug from the list result goes here. Returns the full content (not truncated), " +
96
+ "title, source, publish date, conditionId, and permalink.",
97
+ inputSchema: {
98
+ identifier: z
99
+ .string()
100
+ .min(1)
101
+ .describe("The Pulse item slug (preferred — looks like 'trump-china-tariff-2026-04-01') or its uuid."),
102
+ },
103
+ fetch: (c, { identifier }) => c.get(`/pulse/${encodeURIComponent(identifier)}`),
104
+ format: (env) => {
101
105
  const item = env.data;
102
106
  const date = new Date(item.publishedAt).toISOString().slice(0, 10);
103
107
  const body = [
@@ -108,23 +112,23 @@ export function registerTools(server, client) {
108
112
  (item.content ?? "").trim(),
109
113
  ].join("\n");
110
114
  return formatEnvelope("FlowFrame Pulse item:", env, body);
111
- }
112
- catch (err) {
113
- return formatError(err);
114
- }
115
+ },
115
116
  });
116
- server.tool("flowframe_get_pulse_for_market", "Get all FlowFrame Pulse items written about a specific Polymarket market, identified by " +
117
- "its conditionId (a 0x-prefixed hex string from polymarket.com URLs or any Polymarket API). " +
118
- "Use when the user references a specific market and asks 'what does FlowFrame say about this'. " +
119
- "Returns up to 100 items, newest first. Returns an empty list if FlowFrame hasn't covered " +
120
- "that market or if it's a Kalshi-only market (Kalshi markets aren't matched by conditionId).", {
121
- conditionId: z
122
- .string()
123
- .min(3)
124
- .describe("Polymarket conditionId, e.g. '0x1234...'. Required."),
125
- }, async ({ conditionId }) => {
126
- try {
127
- const env = await client.get(`/pulse/by-market/${encodeURIComponent(conditionId)}`);
117
+ defineTool(server, client, {
118
+ name: "flowframe_get_pulse_for_market",
119
+ description: "Get all FlowFrame Pulse items written about a specific Polymarket market, identified by " +
120
+ "its conditionId (a 0x-prefixed hex string from polymarket.com URLs or any Polymarket API). " +
121
+ "Use when the user references a specific market and asks 'what does FlowFrame say about this'. " +
122
+ "Returns up to 100 items, newest first. Returns an empty list if FlowFrame hasn't covered " +
123
+ "that market or if it's a Kalshi-only market (Kalshi markets aren't matched by conditionId).",
124
+ inputSchema: {
125
+ conditionId: z
126
+ .string()
127
+ .min(3)
128
+ .describe("Polymarket conditionId, e.g. '0x1234...'. Required."),
129
+ },
130
+ fetch: (c, { conditionId }) => c.get(`/pulse/by-market/${encodeURIComponent(conditionId)}`),
131
+ format: (env, { conditionId }) => {
128
132
  if (env.data.length === 0) {
129
133
  return formatEnvelope(`No FlowFrame Pulse coverage for market ${conditionId}.`, env, "");
130
134
  }
@@ -136,35 +140,35 @@ export function registerTools(server, client) {
136
140
  })
137
141
  .join("\n\n");
138
142
  return formatEnvelope(`FlowFrame Pulse coverage for market ${conditionId} (${env.data.length} item(s)):`, env, body);
139
- }
140
- catch (err) {
141
- return formatError(err);
142
- }
143
+ },
143
144
  });
144
145
  // ─────────────────────────────────────────────────────────────────────────
145
146
  // Movers — Polymarket / Kalshi
146
147
  // ─────────────────────────────────────────────────────────────────────────
147
- server.tool("flowframe_polymarket_movers", "Top Polymarket markets by recent price change. Use when the user asks 'what's moving on " +
148
- "Polymarket', 'biggest movers in the last X hours', or wants to find markets where " +
149
- "consensus has shifted. Returns market title, current price, price at start of window, " +
150
- "delta in percentage points, 24h volume, and the polymarket.com URL. Sorted by " +
151
- "abs(delta) descending.", {
152
- window: WindowEnum.optional().describe("Lookback window: 1h, 4h, 12h, or 24h. Default 24h."),
153
- direction: DirectionEnum.optional().describe("'up' = only markets that moved up, 'down' = only down, 'both' = either direction (default)."),
154
- limit: z
155
- .number()
156
- .int()
157
- .min(1)
158
- .max(50)
159
- .optional()
160
- .describe("Number of markets to return (default 10, max 50)."),
161
- }, async ({ window, direction, limit }) => {
162
- try {
163
- const env = await client.get("/movers/polymarket", {
164
- window: window ?? "24h",
165
- direction: direction ?? "both",
166
- limit: limit ?? 10,
167
- });
148
+ defineTool(server, client, {
149
+ name: "flowframe_polymarket_movers",
150
+ description: "Top Polymarket markets by recent price change. Use when the user asks 'what's moving on " +
151
+ "Polymarket', 'biggest movers in the last X hours', or wants to find markets where " +
152
+ "consensus has shifted. Returns market title, current price, price at start of window, " +
153
+ "delta in percentage points, 24h volume, and the polymarket.com URL. Sorted by " +
154
+ "abs(delta) descending.",
155
+ inputSchema: {
156
+ window: WindowEnum.optional().describe("Lookback window: 1h, 4h, 12h, or 24h. Default 24h."),
157
+ direction: DirectionEnum.optional().describe("'up' = only markets that moved up, 'down' = only down, 'both' = either direction (default)."),
158
+ limit: z
159
+ .number()
160
+ .int()
161
+ .min(1)
162
+ .max(50)
163
+ .optional()
164
+ .describe("Number of markets to return (default 10, max 50)."),
165
+ },
166
+ fetch: (c, { window, direction, limit }) => c.get("/movers/polymarket", {
167
+ window: window ?? "24h",
168
+ direction: direction ?? "both",
169
+ limit: limit ?? 10,
170
+ }),
171
+ format: (env, { window }) => {
168
172
  if (env.data.length === 0) {
169
173
  return formatEnvelope("No Polymarket movers match those filters.", env, "");
170
174
  }
@@ -178,10 +182,7 @@ export function registerTools(server, client) {
178
182
  })
179
183
  .join("\n\n");
180
184
  return formatEnvelope(`Top ${env.data.length} Polymarket movers (${env.meta.window ?? window ?? "24h"} window):`, env, body);
181
- }
182
- catch (err) {
183
- return formatError(err);
184
- }
185
+ },
185
186
  });
186
187
  server.tool("flowframe_kalshi_movers", "Top Kalshi markets by recent price change. Use when the user asks 'what's moving on " +
187
188
  "Kalshi'. Returns market title, current price, delta, volume, and Kalshi URL. " +
@@ -221,30 +222,33 @@ export function registerTools(server, client) {
221
222
  // ─────────────────────────────────────────────────────────────────────────
222
223
  // Smart Money Skew
223
224
  // ─────────────────────────────────────────────────────────────────────────
224
- server.tool("flowframe_smart_money_skew", "Find Polymarket markets where the top 30 most-profitable traders (last 30d, ranked by P&L " +
225
- "from predicting.top) are positioned disproportionately on one side compared to the market " +
226
- "price. Use this to find markets where 'smart money' disagrees with the consensus. " +
227
- "Returns: market title, current market price, smart-money implied fair value, edge (in " +
228
- "percentage points), composite skew score, and per-tier dollar positions (Sharp = top 10, " +
229
- "Profitable = 11-20, Recreational = 21-30). Sorted by composite score descending. " +
230
- "For a single market's full breakdown by conditionId, use flowframe_smart_money_skew_for_market.", {
231
- limit: z
232
- .number()
233
- .int()
234
- .min(1)
235
- .max(50)
236
- .optional()
237
- .describe("Number of markets to return (default 10, max 50)."),
238
- minScore: z
239
- .number()
240
- .optional()
241
- .describe("Filter to markets with composite skew score ≥ this value. Optional."),
242
- }, async ({ limit, minScore }) => {
243
- try {
244
- const env = await client.get("/smart-money/skew", {
245
- limit: limit ?? 10,
246
- minScore,
247
- });
225
+ defineTool(server, client, {
226
+ name: "flowframe_smart_money_skew",
227
+ description: "Find Polymarket markets where the top 30 most-profitable traders (last 30d, ranked by P&L " +
228
+ "from predicting.top) are positioned disproportionately on one side compared to the market " +
229
+ "price. Use this to find markets where 'smart money' disagrees with the consensus. " +
230
+ "Returns: market title, current market price, smart-money implied fair value, edge (in " +
231
+ "percentage points), composite skew score, and per-tier dollar positions (Sharp = top 10, " +
232
+ "Profitable = 11-20, Recreational = 21-30). Sorted by composite score descending. " +
233
+ "For a single market's full breakdown by conditionId, use flowframe_smart_money_skew_for_market.",
234
+ inputSchema: {
235
+ limit: z
236
+ .number()
237
+ .int()
238
+ .min(1)
239
+ .max(50)
240
+ .optional()
241
+ .describe("Number of markets to return (default 10, max 50)."),
242
+ minScore: z
243
+ .number()
244
+ .optional()
245
+ .describe("Filter to markets with composite skew score ≥ this value. Optional."),
246
+ },
247
+ fetch: (c, { limit, minScore }) => c.get("/smart-money/skew", {
248
+ limit: limit ?? 10,
249
+ minScore,
250
+ }),
251
+ format: (env) => {
248
252
  if (env.data.length === 0) {
249
253
  return formatEnvelope("No smart-money skew signals match those filters.", env, "");
250
254
  }
@@ -258,19 +262,19 @@ export function registerTools(server, client) {
258
262
  })
259
263
  .join("\n\n");
260
264
  return formatEnvelope(`Top ${env.data.length} smart-money skew signal(s):`, env, body);
261
- }
262
- catch (err) {
263
- return formatError(err);
264
- }
265
+ },
265
266
  });
266
- server.tool("flowframe_smart_money_skew_for_market", "Get the full smart-money skew breakdown for a single Polymarket market by conditionId, " +
267
- "including per-tier (Sharp / Profitable / Recreational) dollar positions and which side " +
268
- "each tier is on. Use after flowframe_smart_money_skew when the user wants to drill into " +
269
- "one specific market.", {
270
- conditionId: z.string().min(3).describe("Polymarket conditionId. Required."),
271
- }, async ({ conditionId }) => {
272
- try {
273
- const env = await client.get(`/smart-money/skew/${encodeURIComponent(conditionId)}`);
267
+ defineTool(server, client, {
268
+ name: "flowframe_smart_money_skew_for_market",
269
+ description: "Get the full smart-money skew breakdown for a single Polymarket market by conditionId, " +
270
+ "including per-tier (Sharp / Profitable / Recreational) dollar positions and which side " +
271
+ "each tier is on. Use after flowframe_smart_money_skew when the user wants to drill into " +
272
+ "one specific market.",
273
+ inputSchema: {
274
+ conditionId: z.string().min(3).describe("Polymarket conditionId. Required."),
275
+ },
276
+ fetch: (c, { conditionId }) => c.get(`/smart-money/skew/${encodeURIComponent(conditionId)}`),
277
+ format: (env) => {
274
278
  const m = env.data;
275
279
  const tiers = m.tiers ?? {};
276
280
  const tierLine = (name, t) => {
@@ -300,10 +304,7 @@ export function registerTools(server, client) {
300
304
  .filter(Boolean)
301
305
  .join("\n");
302
306
  return formatEnvelope("Smart-money skew detail:", env, body);
303
- }
304
- catch (err) {
305
- return formatError(err);
306
- }
307
+ },
307
308
  });
308
309
  // ─────────────────────────────────────────────────────────────────────────
309
310
  // Mentions Hub — political speech transcripts
@@ -334,8 +335,9 @@ export function registerTools(server, client) {
334
335
  "context. Use when the user asks 'when did X talk about Y', 'has Powell mentioned tariffs', " +
335
336
  "or wants verbatim quotes. Each result includes the transcript title, date, source, event " +
336
337
  "format (rally / press conference / interview / etc.), the number of times the keyword " +
337
- "appears in that transcript, and up to several snippets. Call flowframe_list_speakers first " +
338
- "if you don't know the available speaker slugs.", {
338
+ "appears in that transcript, and every keyword snippet from that transcript (no per-result " +
339
+ "snippet cap — if a rally has 12 hits, you get all 12 quoted). Call flowframe_list_speakers " +
340
+ "first if you don't know the available speaker slugs.", {
339
341
  q: z
340
342
  .string()
341
343
  .min(2)
@@ -361,8 +363,13 @@ export function registerTools(server, client) {
361
363
  }
362
364
  const body = env.data
363
365
  .map((r, i) => {
366
+ // Render every snippet the API returned. Previously capped at 3
367
+ // (May 2026), which silently dropped quotes when a single
368
+ // transcript contained many hits — e.g. a rally where the
369
+ // speaker said the keyword 12 times only surfaced 3 of them.
370
+ // Snippet count is already bounded server-side per transcript,
371
+ // and the API caps `limit` at 50 transcripts.
364
372
  const snippets = (r.snippets ?? [])
365
- .slice(0, 3)
366
373
  .map((s) => ` "${s.trim()}"`)
367
374
  .join("\n");
368
375
  return [
@@ -386,15 +393,15 @@ export function registerTools(server, client) {
386
393
  // Polymarket microstructure snapshot history
387
394
  // ─────────────────────────────────────────────────────────────────────────
388
395
  const SnapshotIntervalEnum = z.enum(["30m", "1h", "4h", "1d"]);
389
- server.tool("flowframe_polymarket_snapshot_history", "Historical Polymarket microstructure for a single market: per-snapshot YES/NO price, " +
396
+ server.tool("flowframe_polymarket_snapshot_history", "[FlowFrame Pro upgrade at https://flowframe.xyz/pro] " +
397
+ "Historical Polymarket microstructure for a single market: per-snapshot YES/NO price, " +
390
398
  "best bid/ask, spread percent, 24h volume, per-hour volume rate, cumulative volume, " +
391
399
  "and liquidity. Underlying snapshots are taken every 30 minutes by FlowFrame; pick a " +
392
400
  "wider interval (1h/4h/1d) to downsample. Use when the user asks 'how has liquidity " +
393
401
  "evolved', 'when did the spread blow out', 'show me the price + volume history', or " +
394
402
  "wants any time-series view of a specific Polymarket conditionId. Returns 404 if " +
395
403
  "FlowFrame is not currently tracking that market. " +
396
- "This endpoint is free when called via the FlowFrame MCP server (no paid tier needed) " +
397
- "but requires a paid tier for direct REST access.", {
404
+ "Requires FlowFrame Pro or API Starter free-tier API keys will get a 402 response.", {
398
405
  conditionId: z
399
406
  .string()
400
407
  .min(3)
@@ -425,9 +432,14 @@ export function registerTools(server, client) {
425
432
  if (env.data.length === 0) {
426
433
  return formatEnvelope(`No snapshot history available for ${conditionId}.`, env, "");
427
434
  }
428
- // Show first, last, and a few sampled rows so context stays manageable
429
- const sample = sampleEvenly(env.data, 8);
430
- const body = sample
435
+ // Render the full series in the text body so LLM clients that
436
+ // don't surface structuredContent (most of them, in practice) can
437
+ // do real correlation analysis. The user already chose interval
438
+ // + limit + since, which bound the result size; we shouldn't
439
+ // second-guess them by sub-sampling on top of that. The API
440
+ // hard-caps `limit` at 500, so worst case is ~500 rows ≈ 40KB
441
+ // ≈ 10K tokens — fine for any modern context window.
442
+ const body = env.data
431
443
  .map((p) => ` ${p.timestamp.slice(0, 16).replace("T", " ")} ` +
432
444
  `yes=${fmtPrice(p.yesPrice)} ` +
433
445
  `spread=${p.spreadPercent === null ? "—" : `${p.spreadPercent.toFixed(2)}%`} ` +
@@ -439,7 +451,7 @@ export function registerTools(server, client) {
439
451
  `Interval: ${meta.interval} | Points: ${meta.count} | ` +
440
452
  `${(meta.firstAt ?? "").slice(0, 10)} → ${(meta.lastAt ?? "").slice(0, 10)}` +
441
453
  (meta.polymarketUrl ? `\n${meta.polymarketUrl}` : "") +
442
- `\n\nSampled ${sample.length} of ${env.data.length} points:`;
454
+ `\n\nAll ${env.data.length} points:`;
443
455
  return formatEnvelope(summary, env, body);
444
456
  }
445
457
  catch (err) {
@@ -449,7 +461,8 @@ export function registerTools(server, client) {
449
461
  // ─────────────────────────────────────────────────────────────────────────
450
462
  // Cross-venue: Polymarket × Hyperliquid joined time series
451
463
  // ─────────────────────────────────────────────────────────────────────────
452
- server.tool("flowframe_cross_venue", "Joined Polymarket × Hyperliquid time series. Pairs a prediction-market's price/spread/volume " +
464
+ server.tool("flowframe_cross_venue", "[FlowFrame Pro upgrade at https://flowframe.xyz/pro] " +
465
+ "Joined Polymarket × Hyperliquid time series. Pairs a prediction-market's price/spread/volume " +
453
466
  "with the Hyperliquid perp(s) for the underlying asset(s), bucket-aligned on the 30-minute " +
454
467
  "snapshot schedule that FlowFrame runs against both venues. Rows are anchored on Polymarket " +
455
468
  "buckets; if a Hyperliquid snapshot is missing for a bucket, that symbol is simply absent " +
@@ -460,8 +473,7 @@ export function registerTools(server, client) {
460
473
  "(BTC, ETH, SOL, HYPE) — for equities/FX/commodities, pass an explicit `symbols` argument " +
461
474
  "(e.g. 'xyz:AAPL', 'xyz:GOLD'). Returns 404 if FlowFrame isn't tracking the market, or " +
462
475
  "400 if no symbol can be auto-detected and none was supplied. " +
463
- "This endpoint is free when called via the FlowFrame MCP server (no paid tier needed) " +
464
- "but requires a paid tier for direct REST access.", {
476
+ "Requires FlowFrame Pro or API Starter free-tier API keys will get a 402 response.", {
465
477
  conditionId: z
466
478
  .string()
467
479
  .min(3)
@@ -494,8 +506,16 @@ export function registerTools(server, client) {
494
506
  return formatEnvelope(`No cross-venue series available for ${conditionId}.`, env, "");
495
507
  }
496
508
  const symList = meta.symbols ?? [];
497
- const sample = sampleEvenly(env.data, 6);
498
- const body = sample
509
+ // Render the full series in the text body — same reasoning as
510
+ // snapshot_history above. The user picked `days` (1-30) and
511
+ // `interval` deliberately; sub-sampling on top of that strips
512
+ // away the intraday extremes that matter for funding-rate
513
+ // correlation analysis. Worst case (30d × 30m ≈ 1440 rows × 2
514
+ // lines) ≈ 60K tokens — fine for any current context window.
515
+ // If they want it smaller, they can shrink `days` or use a
516
+ // wider `interval`. Full series also remains in
517
+ // structuredContent.data.
518
+ const body = env.data
499
519
  .map((p) => {
500
520
  const pm = p.polymarket ?? {};
501
521
  const hlPart = symList
@@ -519,7 +539,7 @@ export function registerTools(server, client) {
519
539
  `Symbols: ${symList.join(", ")}${meta.symbolsAutoDetected ? " (auto-detected)" : ""} | ` +
520
540
  `Interval: ${meta.interval} | Days: ${meta.days} | Points: ${meta.count}` +
521
541
  (meta.polymarketUrl ? `\n${meta.polymarketUrl}` : "") +
522
- `\n\nSampled ${sample.length} of ${env.data.length} points:`;
542
+ `\n\nAll ${env.data.length} points:`;
523
543
  return formatEnvelope(summary, env, body);
524
544
  }
525
545
  catch (err) {
@@ -559,6 +579,124 @@ export function registerTools(server, client) {
559
579
  }
560
580
  });
561
581
  // ─────────────────────────────────────────────────────────────────────────
582
+ // Volume-velocity breakout signal (paid)
583
+ // ─────────────────────────────────────────────────────────────────────────
584
+ server.tool("flowframe_breakout_signal", "[FlowFrame Pro — upgrade at https://flowframe.xyz/pro] " +
585
+ "Polymarket markets ranked by volume velocity — markets where 24h volume is large " +
586
+ "relative to all-time volume, i.e. catching fire right now. Tiers: 'breaking' (>6%), " +
587
+ "'trending' (3-6%), 'heating-up' (1-3%). Use when the user asks 'what's catching fire', " +
588
+ "'what's breaking out', 'where is unusual activity', or wants early signals before a " +
589
+ "market shows up in the standard movers feed. Excludes already-resolved markets " +
590
+ "(>95% / <5%), evergreen BTC/ETH price markets, and 2028 presidential markets to keep " +
591
+ "the signal clean. " +
592
+ "Requires FlowFrame Pro or API Starter — free-tier API keys will get a 402 response.", {
593
+ limit: z
594
+ .number()
595
+ .int()
596
+ .min(1)
597
+ .max(100)
598
+ .optional()
599
+ .describe("Max markets to return (1-100, default 25)."),
600
+ minVelocityPercent: z
601
+ .number()
602
+ .min(0)
603
+ .max(100)
604
+ .optional()
605
+ .describe("Minimum velocity (24h vol / total vol × 100). Default 1. Raise to 3+ to filter for trending/breaking only."),
606
+ minVolume24h: z
607
+ .number()
608
+ .min(0)
609
+ .optional()
610
+ .describe("Minimum 24h USDC volume floor. Default 10000."),
611
+ }, async ({ limit, minVelocityPercent, minVolume24h }) => {
612
+ try {
613
+ const env = await client.get("/signals/breakout", {
614
+ limit: limit ?? 25,
615
+ minVelocityPercent: minVelocityPercent ?? 1,
616
+ minVolume24h: minVolume24h ?? 10000,
617
+ });
618
+ if (env.data.length === 0) {
619
+ return formatEnvelope("No markets match those breakout filters.", env, "");
620
+ }
621
+ const body = env.data
622
+ .map((m, i) => {
623
+ const tierTag = m.tier ? `[${m.tier}]` : "";
624
+ const yesPart = m.currentYesPrice == null ? "" : ` yes=${fmtPrice(m.currentYesPrice)}`;
625
+ const chgPart = m.priceChange24hYes == null ? "" : ` Δ24h=${fmtPct(m.priceChange24hYes)}`;
626
+ return [
627
+ `${i + 1}. ${tierTag} velocity=${m.velocityPercent.toFixed(2)}% vol24h=${fmtUsd(m.volume24h)} / total=${fmtUsd(m.volumeTotal)}`,
628
+ ` ${m.marketTitle ?? "(untitled)"}${yesPart}${chgPart}`,
629
+ ` ${m.polymarketUrl ?? ""}`,
630
+ ].join("\n");
631
+ })
632
+ .join("\n\n");
633
+ const meta = env.meta;
634
+ return formatEnvelope(`${env.data.length} breakout markets (>=${meta.minVelocityPercent}% velocity, >=${fmtUsd(meta.minVolume24h)} vol24h):`, env, body);
635
+ }
636
+ catch (err) {
637
+ return formatError(err);
638
+ }
639
+ });
640
+ // ─────────────────────────────────────────────────────────────────────────
641
+ // Spread-widening fragility signal (paid)
642
+ // ─────────────────────────────────────────────────────────────────────────
643
+ server.tool("flowframe_spread_widening_signal", "[FlowFrame Pro — upgrade at https://flowframe.xyz/pro] " +
644
+ "Polymarket markets whose current bid-ask spread is at least N× their 7-day baseline — " +
645
+ "a pre-move fragility precursor. Widening spreads often lead price (market makers pull " +
646
+ "quotes when they think they're about to be picked off). Use when the user asks 'what's " +
647
+ "about to move', 'what's getting fragile', 'where is liquidity drying up', or wants " +
648
+ "leading indicators rather than lagging movers. " +
649
+ "Requires FlowFrame Pro or API Starter — free-tier API keys will get a 402 response.", {
650
+ limit: z
651
+ .number()
652
+ .int()
653
+ .min(1)
654
+ .max(100)
655
+ .optional()
656
+ .describe("Max markets to return (1-100, default 25)."),
657
+ minRatio: z
658
+ .number()
659
+ .min(1.05)
660
+ .optional()
661
+ .describe("Minimum widening ratio (current / baseline). Default 1.5. Raise to 2-3 for the most extreme cases."),
662
+ min24hVolume: z
663
+ .number()
664
+ .min(0)
665
+ .optional()
666
+ .describe("Minimum 24h USDC volume floor. Default 5000."),
667
+ minLiquidity: z
668
+ .number()
669
+ .min(0)
670
+ .optional()
671
+ .describe("Minimum on-book liquidity floor. Default 2000."),
672
+ }, async ({ limit, minRatio, min24hVolume, minLiquidity }) => {
673
+ try {
674
+ const env = await client.get("/signals/spread-widening", {
675
+ limit: limit ?? 25,
676
+ minRatio: minRatio ?? 1.5,
677
+ min24hVolume: min24hVolume ?? 5000,
678
+ minLiquidity: minLiquidity ?? 2000,
679
+ });
680
+ if (env.data.length === 0) {
681
+ return formatEnvelope("No markets match those spread-widening filters.", env, "");
682
+ }
683
+ const body = env.data
684
+ .map((m, i) => {
685
+ return [
686
+ `${i + 1}. ratio=${m.wideningRatio.toFixed(2)}× — current ${m.currentSpreadPercent.toFixed(2)}% vs 7d baseline ${m.baselineSpreadPercent.toFixed(2)}%`,
687
+ ` ${m.marketTitle ?? "(untitled)"} yes=${fmtPrice(m.yesPrice)} vol24h=${fmtUsd(m.volume24h)} liq=${fmtUsd(m.liquidity)}`,
688
+ ` ${m.polymarketUrl ?? ""}`,
689
+ ].join("\n");
690
+ })
691
+ .join("\n\n");
692
+ const meta = env.meta;
693
+ return formatEnvelope(`${env.data.length} markets with spread ≥${meta.minRatio}× their 7d baseline:`, env, body);
694
+ }
695
+ catch (err) {
696
+ return formatError(err);
697
+ }
698
+ });
699
+ // ─────────────────────────────────────────────────────────────────────────
562
700
  // Recent large trades from FlowFrame's tracked top-trader wallets
563
701
  // ─────────────────────────────────────────────────────────────────────────
564
702
  server.tool("flowframe_recent_whale_trades", "Live feed of recent large trades from FlowFrame's tracked top-trader wallets on Polymarket, " +
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowframe22/mcp-server",
3
- "version": "0.2.0",
3
+ "version": "0.2.3",
4
4
  "description": "Model Context Protocol server for FlowFrame — bring prediction-market intelligence (Polymarket movers, smart-money skew, FlowFrame Pulse, political mentions) into Claude and any MCP-compatible client.",
5
5
  "license": "MIT",
6
6
  "type": "module",