@insightsentry/mcp 1.2.5 → 1.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { z } from "zod";
4
+ import jsonata from "jsonata";
3
5
  import { ApiClient } from "./api-client.js";
4
6
  import { toolDefinitions } from "./tool-definitions.js";
5
7
  import { docResources } from "./resources.js";
@@ -8,15 +10,14 @@ const INSTRUCTIONS = `You are connected to the InsightSentry financial data API.
8
10
  ## IMPORTANT: Symbol Code Format
9
11
  InsightSentry uses EXCHANGE:SYMBOL format for all symbol codes. This is NOT the same as ticker symbols used by brokers or Google Finance.
10
12
 
11
- **ALWAYS use \`search_symbols\` first** to find the correct code before calling any other tool. Do NOT guess symbol codes.
13
+ **Use \`search_symbols\` first** to find the correct code before calling any other tool. Do NOT guess symbol codes.
12
14
 
13
15
  Examples of correct codes:
14
16
  - NASDAQ:AAPL (not just "AAPL")
15
17
  - NYSE:TSLA (not "TSLA")
16
18
  - BINANCE:BTCUSDT (not "BTC" or "BTCUSD")
17
19
  - CME_MINI:NQ1! (not "NQ" or "/NQ")
18
- - OPRA:AAPL260417P325.0 (option codes)
19
- - COMEX:GC1! (not "GC" or "GOLD")
20
+ - COMEX:GCH2026 (not "GC26" or "GOLD")
20
21
 
21
22
  If you're unsure about a symbol code, search for it: \`search_symbols({ query: "apple" })\`
22
23
 
@@ -25,24 +26,24 @@ If you're unsure about a symbol code, search for it: \`search_symbols({ query: "
25
26
  ### "Get me data on a stock/crypto/asset"
26
27
  1. \`search_symbols\` — **Always start here.** Find the correct EXCHANGE:SYMBOL code.
27
28
  2. Then use any combination of:
28
- - \`get_quotes\` — Current price, change, bid/ask, volume (up to 10 symbols at once)
29
- - \`get_symbol_series\` — OHLCV bars (tick/second/minute/hour/day/week/month, up to 30k bars, with real-time option)
30
- - \`get_symbol_info\` — Metadata: sector, industry, market cap, P/E, dividends, splits, option chains
31
- - \`get_symbol_fundamentals\` — Deep fundamentals: valuation, profitability, balance sheet, income statement (call \`get_fundamentals_meta\` first to discover field IDs)
29
+ - \`get_quotes\` — Last price, change, bid/ask, volume, market status, market cap (up to 10 symbols at once)
30
+ - \`get_symbol_series\` — OHLCV bars (tick/second/minute/hour/day/week/month, up to 30k bars, with real-time long_poll option). Use \`filter\` to compute aggregates or extract specific bars instead of consuming all data.
31
+ - \`get_symbol_info\` — Metadata: sector, industry, market cap, P/E, dividends, splits, option chains. Response is large — use \`filter: "$keys($)"\` to discover fields, then pick only what's needed.
32
+ - \`get_symbol_fundamentals\` — Deep fundamentals: valuation, profitability, balance sheet, income statement. Returns hundreds of fields — use \`filter\` to list categories or grab specific ones (see examples below).
32
33
 
33
34
  ### "Screen/filter the market"
34
35
  1. \`get_stock_screener_params\` (or etf/bond/crypto) — Discover available fields, exchanges, countries
35
- 2. \`screen_stocks\` (or etf/bond/crypto) — POST with fields, filters, sorting. Returns paginated results (1000/page).
36
+ 2. \`screen_stocks\` (or etf/bond/crypto) — POST with fields, sorting. Returns up to 1000 results/page — use \`filter\` to narrow results, compute aggregates, or extract only matching rows (see Screener Recipes below).
36
37
 
37
38
  ### "Options analysis"
38
39
  1. \`search_symbols\` — Find the underlying
39
- 2. \`list_options\` — Get available option contracts
40
- 3. \`get_options_expiration\` or \`get_options_strike\` — Get chain with Greeks (delta, gamma, theta, vega, IV)
41
- 4. \`get_quotes\` — Real-time option quotes (use the OPRA:... option code)
42
- 5. \`get_symbol_series\` — Historical option price data
40
+ 2. \`list_options\` — Get available option contracts. Narrow with API params: \`type\` (call/put), \`range\` (strike ±N% of price), \`expiration_min\`/\`expiration_max\` (date range).
41
+ 3. \`get_options_expiration\` or \`get_options_strike\` — Get chain with Greeks (delta, gamma, theta, vega, IV). API params: \`range\`, \`type\`, \`from\`/\`to\` (date range), \`sortBy\` (delta, implied_volatility, strike_price, etc.), \`sort\` (asc/desc). Use these to narrow at the API level, then \`filter\` to refine by Greeks (e.g., delta range, IV threshold).
42
+ 4. \`get_quotes\` — Real-time option quotes (use the OPRA:... or Futures option code)
43
+ 5. \`get_symbol_series\` — Historical option price data (Only available for OPRA)
43
44
 
44
45
  ### "What's happening in the market?"
45
- - \`get_newsfeed\` — Latest financial news (filter by keywords)
46
+ - \`get_newsfeed\` — Latest financial news (filter by keywords). Use \`filter\` to limit results (e.g., first N headlines with title+date only).
46
47
  - \`get_earnings\` — Upcoming/recent earnings
47
48
  - \`get_dividends\` — Dividend calendar
48
49
  - \`get_ipos\` — IPO calendar
@@ -54,13 +55,12 @@ If you're unsure about a symbol code, search for it: \`search_symbols({ query: "
54
55
  - For extensive futures history, use specific contract codes (e.g., CME_MINI:NQH2024), not continuous (CME_MINI:NQ1!)
55
56
 
56
57
  ### "Fundamental analysis" (e.g., "What's Apple's free cash flow?", "Show me Tesla's balance sheet")
57
- 1. \`get_fundamentals_meta\` — Call first if unsure which fields exist. Returns all available fields as \`{id, name, category, type, period}\` without values. Lightweight, no symbol needed. Skip if you already know the field IDs.
58
- 2. Search the meta response to find relevant field IDs (e.g., search for "cash flow" \`free_cash_flow_fq\`, \`free_cash_flow_fy\`).
59
- 3. \`get_symbol_fundamentals\` — Returns the same fields but with \`value\` included. **Filter the response** to only the relevant fields — do NOT dump hundreds of fields to the user.
60
- 4. (Optional) \`get_fundamentals_series\` — For historical trends of specific indicators (max 5 IDs per request).
58
+ 1. \`get_fundamentals_meta\` — Call with \`filter\` to discover fields: \`filter: "base[$contains($lowercase(name), \\"cash flow\\")].{ \\"id\\": id, \\"name\\": name }"\` or \`filter: "$distinct(base.category)"\`. Lightweight, no symbol needed. Skip if you already know the field IDs.
59
+ 2. \`get_symbol_fundamentals\` Returns hundreds of fields. **Always use \`filter\`** to extract only what's needed: \`filter: "$[category='Valuation'].{ \\"id\\": id, \\"name\\": name, \\"value\\": value }"\`. Never return the full response.
60
+ 3. (Optional) \`get_fundamentals_series\` — For historical trends of specific indicators (max 5 IDs per request).
61
61
 
62
62
  ### "SEC filings and transcripts"
63
- 1. \`get_documents\` — List available filings for a symbol
63
+ 1. \`get_documents\` — List available filings for a symbol. Use \`filter\` to narrow by form type (e.g., \`filter: "$[form=\\"10-K\\" or form=\\"10-Q\\"]"\`).
64
64
  2. \`get_document\` — Read a specific document's content
65
65
 
66
66
  ### "Help the user build an app with our API"
@@ -76,8 +76,48 @@ Read the documentation resources for comprehensive guides:
76
76
  - **Symbol format**: Always \`EXCHANGE:SYMBOL\` (e.g., NASDAQ:AAPL, BINANCE:BTCUSDT, CME_MINI:NQ1!)
77
77
  - **Option codes**: \`OPRA:AAPL260417P325.0\` = OPRA exchange, AAPL, expires 2026-04-17, Put, $325 strike
78
78
  - **Screeners**: First GET to discover fields, then POST to filter. Fields are case-insensitive.
79
- - **Time series**: \`bar_type\` (tick/second/minute/hour/day/week/month) + \`bar_interval\` (1-1440). Use \`dp\` to control data points (default 3000, max 30000). **Always use \`abbr=true\`** on \`get_symbol_series\` and \`get_symbol_history\` it returns compact arrays instead of objects, significantly reducing token usage. Check \`series_keys\` for column order as it varies by bar type.
79
+ - **Time series**: \`bar_type\` (tick/second/minute/hour/day/week/month) + \`bar_interval\` (1-1440). Use \`dp\` to control data points (default 3000, max 30000). When using \`filter\`, skip \`abbr\` — named keys (e.g., \`series.close\`) are more reliable than positional indices. Use \`abbr=true\` only when returning raw series without a filter.
80
80
  - **WebSocket**: For real-time streaming, read the websocket resource. Two endpoints: /live (market data) and /newsfeed (news).
81
+
82
+ ## Handling Large Responses — Use \`filter\` (JSONata)
83
+ API responses can be large (e.g., 30k bars of time series, hundreds of fundamental fields, full screener pages). **Every tool supports an optional \`filter\` parameter** that accepts a [JSONata](https://jsonata.org) expression. The filter is applied server-side before the response reaches you, so you only receive the data you need — drastically reducing token usage.
84
+
85
+ **Always use \`filter\` when you don't need the full response.** Only omit it when the user explicitly asks for raw data or when debugging.
86
+
87
+ Examples:
88
+ - \`get_symbol_series({ symbol: "NASDAQ:AAPL", bar_type: "day", dp: 2000, filter: "{ \"code\": code, \"avg_close\": $average(series.close), \"max_high\": $max(series.high), \"min_low\": $min(series.low) }" })\` — compute aggregates server-side instead of consuming all bars
89
+ - \`get_symbol_fundamentals({ symbol: "NASDAQ:AAPL", filter: "$distinct($.category)" })\` — list available categories first
90
+ - \`get_symbol_fundamentals({ symbol: "NASDAQ:AAPL", filter: "$.{ \"id\": id, \"name\": name }" })\` — list all field id+name pairs (without values, lightweight overview)
91
+ - \`get_symbol_fundamentals({ symbol: "NASDAQ:AAPL", filter: "$[category='Valuation'].{ \"id\": id, \"name\": name, \"value\": value }" })\` — then grab specific category with values
92
+ - \`screen_stocks({ fields: ["close", "volume", "market_cap"], filter: "$sum(data.market_cap)" })\` — aggregate instead of listing rows
93
+ - \`get_symbol_info({ symbol: "NASDAQ:AAPL", filter: "$keys($)" })\` — list all available fields first
94
+ - \`get_symbol_info({ symbol: "NASDAQ:AAPL", filter: "{ \"sector\": sector, \"industry\": industry, \"market_cap\": market_cap, \"ceo\": ceo }" })\` — then pick specific fields
95
+ - \`get_newsfeed({ keywords: "tesla", filter: "data[[0..2]].{ \"title\": title, \"published_at\": published_at }" })\` — first 3 headlines only
96
+ - \`get_fundamentals_meta({ filter: "base[$contains($lowercase(name), \"cash flow\")].{ \"id\": id, \"name\": name, \"period\": period }" })\` — search available fields by keyword
97
+ - \`get_fundamentals_meta({ filter: "$distinct(base.category)" })\` — list all available categories
98
+ - \`get_fundamentals_meta({ filter: "$distinct(base.group)" })\` — list all available groups
99
+ - \`get_fundamentals_meta({ filter: "fundamental_series[$contains($lowercase(name), \"cash\") or $contains($lowercase(name), \"income\")].id" })\` — find series IDs for use with get_fundamentals_series
100
+ - \`get_options_expiration({ code: "NASDAQ:AAPL", expiration: "2026-06-17", range: 10, type: "call", filter: "data[$abs(delta) >= 0.4 and $abs(delta) <= 0.6].{ \"code\": code, \"strike\": strike_price, \"delta\": delta, \"iv\": implied_volatility }" })\` — API narrows to ±10% strikes + calls, then filter refines by delta
101
+ - \`get_symbol_series({ symbol: "NASDAQ:AAPL", bar_type: "day", dp: 300, filter: "{ \"code\": code, \"period_return_pct\": $round((series[-1].close - series[0].open) / series[0].open * 100, 2), \"total_volume\": $sum(series.volume) }" })\` — compute period return and total volume
102
+ - \`screen_stocks({ fields: ["close", "volume", "market_cap", "change_percent"], filter: "data[change_percent > 0].{ \"name\": name, \"change_percent\": change_percent }" })\` — only gainers
103
+ - \`get_documents({ code: "NASDAQ:AAPL", filter: "$[form=\"10-K\" or form=\"10-Q\"].{ \"id\": id, \"title\": title, \"form\": form }" })\` — only SEC filings (10-K/10-Q)
104
+
105
+ Also prefer API-level filtering when available (screener field selection, option \`type\`/\`range\` filters) — combine with \`filter\` for maximum efficiency.
106
+
107
+ ### Screener Recipes
108
+ Screener fields are limited to 10 per request — pick the most relevant ones and use \`filter\` to narrow and reshape results.
109
+
110
+ **Value screen** — low P/E, cheap on cash flow:
111
+ \`screen_stocks({ fields: ["close", "market_cap", "price_earnings_ttm", "price_free_cash_flow_ttm", "dividends_yield", "enterprise_value_ebitda_ttm"], exchanges: ["NYSE", "NASDAQ"], sortBy: "market_cap", sortOrder: "desc", filter: "data[price_earnings_ttm > 0 and price_earnings_ttm < 15 and price_free_cash_flow_ttm < 10].{ \"name\": name, \"code\": symbol_code, \"pe\": price_earnings_ttm, \"p_fcf\": price_free_cash_flow_ttm, \"div_yield\": dividends_yield, \"ev_ebitda\": enterprise_value_ebitda_ttm }" })\`
112
+
113
+ **Momentum screen** — strong 3-month performance + unusual volume:
114
+ \`screen_stocks({ fields: ["close", "market_cap", "change_percent_1W", "performance_3_month", "relative_volume_intraday", "average_volume_30d"], exchanges: ["NYSE", "NASDAQ"], sortBy: "performance_3_month", sortOrder: "desc", filter: "data[performance_3_month > 20 and relative_volume_intraday > 1.5].{ \"name\": name, \"code\": symbol_code, \"perf_3m\": performance_3_month, \"chg_1w\": change_percent_1W, \"rvol\": relative_volume_intraday }" })\`
115
+
116
+ **Quality screen** — high ROIC, low leverage, strong margins:
117
+ \`screen_stocks({ fields: ["close", "market_cap", "return_on_invested_capital_fq", "debt_to_equity_fq", "operating_margin_ttm", "free_cash_flow_margin_ttm", "gross_margin_ttm"], exchanges: ["NYSE", "NASDAQ"], sortBy: "market_cap", sortOrder: "desc", filter: "data[return_on_invested_capital_fq > 20 and debt_to_equity_fq < 1 and operating_margin_ttm > 25].{ \"name\": name, \"code\": symbol_code, \"roic\": return_on_invested_capital_fq, \"d_e\": debt_to_equity_fq, \"op_margin\": operating_margin_ttm, \"fcf_margin\": free_cash_flow_margin_ttm }" })\`
118
+
119
+ **Volatility + volume spike** — unusual activity detection:
120
+ \`screen_stocks({ fields: ["close", "market_cap", "volatility_week", "volatility_month", "relative_volume_intraday", "gap", "change_percent"], exchanges: ["NYSE", "NASDAQ"], sortBy: "relative_volume_intraday", sortOrder: "desc", filter: "data[relative_volume_intraday > 2 and volatility_week > 3].{ \"name\": name, \"code\": symbol_code, \"vol_w\": volatility_week, \"rvol\": relative_volume_intraday, \"gap\": gap, \"chg\": change_percent }" })\`
81
121
  `;
82
122
  const apiKey = process.env.INSIGHTSENTRY_API_KEY?.trim();
83
123
  function isJwt(token) {
@@ -110,7 +150,11 @@ else {
110
150
  const server = new McpServer({ name: "insightsentry", version: "1.0.0" }, { instructions: INSTRUCTIONS });
111
151
  // Register all API tools with Zod schemas for type-safe parameter validation
112
152
  for (const tool of toolDefinitions) {
113
- server.registerTool(tool.name, { description: tool.description, inputSchema: tool.schema }, async (args) => {
153
+ const schema = {
154
+ ...tool.schema,
155
+ filter: z.string().describe("(Optional) JSONata expression to filter/transform the API response server-side before it reaches you. Use this to extract only the fields or rows you need, reducing token usage. See https://jsonata.org for syntax.").optional(),
156
+ };
157
+ server.registerTool(tool.name, { description: tool.description, inputSchema: schema }, async (args) => {
114
158
  if (!client) {
115
159
  return {
116
160
  content: [
@@ -123,10 +167,16 @@ for (const tool of toolDefinitions) {
123
167
  };
124
168
  }
125
169
  try {
126
- const result = await client.request(tool.method, tool.pathTemplate, args);
127
- const content = typeof result === "string"
128
- ? result
129
- : JSON.stringify(result, null, 2);
170
+ const { filter: filterExpr, ...apiArgs } = args;
171
+ const result = await client.request(tool.method, tool.pathTemplate, apiArgs);
172
+ let output = result;
173
+ if (filterExpr && typeof filterExpr === "string") {
174
+ const expr = jsonata(filterExpr);
175
+ output = await expr.evaluate(result);
176
+ }
177
+ const content = typeof output === "string"
178
+ ? output
179
+ : JSON.stringify(output, null, 2);
130
180
  return {
131
181
  content: [{ type: "text", text: content }],
132
182
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@insightsentry/mcp",
3
- "version": "1.2.5",
3
+ "version": "1.2.6",
4
4
  "description": "MCP server for InsightSentry financial data API - provides AI-accessible tools for market data, screening, options, and comprehensive API documentation resources",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -21,17 +21,16 @@
21
21
  },
22
22
  "keywords": [
23
23
  "mcp",
24
- "model-context-protocol",
25
24
  "insightsentry",
26
25
  "financial-data",
27
26
  "stock-market",
28
- "api",
29
- "websocket",
30
- "ai"
27
+ "financial analysis",
28
+ "ai financial analysis"
31
29
  ],
32
30
  "license": "MIT",
33
31
  "dependencies": {
34
32
  "@modelcontextprotocol/sdk": "^1.12.1",
33
+ "jsonata": "^2.1.0",
35
34
  "zod": "^4.3.6"
36
35
  },
37
36
  "devDependencies": {