@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 +74 -24
- package/dist/index.js.map +1 -1
- package/package.json +4 -5
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
|
-
**
|
|
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
|
-
-
|
|
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\` —
|
|
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
|
|
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,
|
|
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
|
|
58
|
-
2.
|
|
59
|
-
3. \`
|
|
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).
|
|
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
|
-
|
|
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
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
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.
|
|
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
|
-
"
|
|
29
|
-
"
|
|
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": {
|