@insightsentry/mcp 1.2.7 → 1.2.9
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/chart.d.ts +3 -0
- package/dist/chart.d.ts.map +1 -0
- package/dist/chart.js +24 -0
- package/dist/chart.js.map +1 -0
- package/dist/index.js +111 -9
- package/dist/index.js.map +1 -1
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +0 -16
- package/dist/resources.js.map +1 -1
- package/package.json +4 -2
package/dist/chart.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../src/chart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAsBnD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,KAAK,GAAE,MAAsB,EAC7B,MAAM,GAAE,MAAuB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAIjB"}
|
package/dist/chart.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ChartJSNodeCanvas } from "chartjs-node-canvas";
|
|
2
|
+
const DEFAULT_WIDTH = 800;
|
|
3
|
+
const DEFAULT_HEIGHT = 400;
|
|
4
|
+
// Cache canvases by dimension to avoid re-creating them
|
|
5
|
+
const canvasCache = new Map();
|
|
6
|
+
function getCanvas(width, height) {
|
|
7
|
+
const key = `${width}x${height}`;
|
|
8
|
+
let canvas = canvasCache.get(key);
|
|
9
|
+
if (!canvas) {
|
|
10
|
+
canvas = new ChartJSNodeCanvas({
|
|
11
|
+
width,
|
|
12
|
+
height,
|
|
13
|
+
backgroundColour: "white",
|
|
14
|
+
});
|
|
15
|
+
canvasCache.set(key, canvas);
|
|
16
|
+
}
|
|
17
|
+
return canvas;
|
|
18
|
+
}
|
|
19
|
+
export async function renderChart(config, width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT) {
|
|
20
|
+
const canvas = getCanvas(width, height);
|
|
21
|
+
const buffer = await canvas.renderToBuffer(config);
|
|
22
|
+
return buffer.toString("base64");
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,wDAAwD;AACxD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEzD,SAAS,SAAS,CAAC,KAAa,EAAE,MAAc;IAC9C,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;IACjC,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,iBAAiB,CAAC;YAC7B,KAAK;YACL,MAAM;YACN,gBAAgB,EAAE,OAAO;SAC1B,CAAC,CAAC;QACH,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAA0B,EAC1B,QAAgB,aAAa,EAC7B,SAAiB,cAAc;IAE/B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import jsonata from "jsonata";
|
|
|
5
5
|
import { ApiClient } from "./api-client.js";
|
|
6
6
|
import { toolDefinitions } from "./tool-definitions.js";
|
|
7
7
|
import { docResources } from "./resources.js";
|
|
8
|
+
import { renderChart } from "./chart.js";
|
|
8
9
|
const INSTRUCTIONS = `You are connected to the InsightSentry financial data API. You have access to real-time and historical market data for equities, futures, options, crypto, forex, and more.
|
|
9
10
|
|
|
10
11
|
## IMPORTANT: Symbol Code Format
|
|
@@ -56,7 +57,7 @@ If you're unsure about a symbol code, search for it: \`search_symbols({ query: "
|
|
|
56
57
|
|
|
57
58
|
### "Fundamental analysis" (e.g., "What's Apple's free cash flow?", "Show me Tesla's balance sheet")
|
|
58
59
|
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 {code, data: [...hundreds of fields...], last_update}. **Always use \`filter\`** to extract only what's needed: \`filter: "data[category='
|
|
60
|
+
2. \`get_symbol_fundamentals\` — Returns {code, data: [...hundreds of fields...], last_update}. **Always use \`filter\`** to extract only what's needed: \`filter: "data[category='Statistics'].{ \\"id\\": id, \\"name\\": name, \\"value\\": value }"\`. Never return the full response.
|
|
60
61
|
3. (Optional) \`get_fundamentals_series\` — For historical trends of specific indicators (max 5 IDs per request).
|
|
61
62
|
|
|
62
63
|
### "SEC filings and transcripts"
|
|
@@ -76,7 +77,7 @@ Read the documentation resources for comprehensive guides:
|
|
|
76
77
|
- **Symbol format**: Always \`EXCHANGE:SYMBOL\` (e.g., NASDAQ:AAPL, BINANCE:BTCUSDT, CME_MINI:NQ1!)
|
|
77
78
|
- **Option codes**: \`OPRA:AAPL260417P325.0\` = OPRA exchange, AAPL, expires 2026-04-17, Put, $325 strike
|
|
78
79
|
- **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).
|
|
80
|
+
- **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). Use \`filter\` to compute aggregates or extract specific fields from the series (e.g., \`series.close\`).
|
|
80
81
|
- **WebSocket**: For real-time streaming, read the websocket resource. Two endpoints: /live (market data) and /newsfeed (news).
|
|
81
82
|
|
|
82
83
|
## Handling Large Responses — Use \`filter\` (JSONata)
|
|
@@ -88,8 +89,8 @@ Examples:
|
|
|
88
89
|
- \`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
90
|
- \`get_symbol_fundamentals({ symbol: "NASDAQ:AAPL", filter: "$distinct(data.category)" })\` — list available categories first
|
|
90
91
|
- \`get_symbol_fundamentals({ symbol: "NASDAQ:AAPL", filter: "data.{ \"id\": id, \"name\": name }" })\` — list all field id+name pairs (without values, lightweight overview)
|
|
91
|
-
- \`get_symbol_fundamentals({ symbol: "NASDAQ:AAPL", filter: "data[category='
|
|
92
|
-
- \`screen_stocks({ fields: ["close", "volume", "market_cap"], filter: "$sum(data.market_cap)" })\` — aggregate instead of listing rows
|
|
92
|
+
- \`get_symbol_fundamentals({ symbol: "NASDAQ:AAPL", filter: "data[category='Statistics'].{ \"id\": id, \"name\": name, \"value\": value }" })\` — then grab specific category with values
|
|
93
|
+
- \`screen_stocks({ fields: ["close", "volume", "market_cap"], filter: "$sum(data[market_cap != null].market_cap)" })\` — aggregate instead of listing rows (filter nulls first, as some rows may lack a field)
|
|
93
94
|
- \`get_stock_screener_params({ filter: "available_fields[$contains($, \\"volume\\")]" })\` — search screener fields by keyword (available_fields is a flat string array, not objects)
|
|
94
95
|
- \`get_symbol_info({ symbol: "NASDAQ:AAPL", filter: "$keys($)" })\` — list all available fields first
|
|
95
96
|
- \`get_symbol_info({ symbol: "NASDAQ:AAPL", filter: "{ \"sector\": sector, \"industry\": industry, \"market_cap\": market_cap, \"ceo\": ceo }" })\` — then pick specific fields
|
|
@@ -100,7 +101,7 @@ Examples:
|
|
|
100
101
|
- \`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
|
|
101
102
|
- \`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
|
|
102
103
|
- \`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
|
|
103
|
-
- \`screen_stocks({ fields: ["close", "volume", "market_cap", "change_percent"], filter: "data[change_percent > 0].{ \"name\": name, \"change_percent\": change_percent }" })\` — only gainers
|
|
104
|
+
- \`screen_stocks({ fields: ["close", "volume", "market_cap", "change_percent"], filter: "data[change_percent][change_percent > 0].{ \"name\": name, \"change_percent\": change_percent }" })\` — only gainers (first predicate filters out nulls)
|
|
104
105
|
- \`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)
|
|
105
106
|
|
|
106
107
|
Also prefer API-level filtering when available (screener field selection, option \`type\`/\`range\` filters) — combine with \`filter\` for maximum efficiency.
|
|
@@ -109,16 +110,59 @@ Also prefer API-level filtering when available (screener field selection, option
|
|
|
109
110
|
Screener fields are limited to 10 per request — pick the most relevant ones and use \`filter\` to narrow and reshape results.
|
|
110
111
|
|
|
111
112
|
**Value screen** — low P/E, cheap on cash flow:
|
|
112
|
-
\`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 }" })\`
|
|
113
|
+
\`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][price_free_cash_flow_ttm][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 }" })\`
|
|
113
114
|
|
|
114
115
|
**Momentum screen** — strong 3-month performance + unusual volume:
|
|
115
|
-
\`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 }" })\`
|
|
116
|
+
\`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][relative_volume_intraday][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 }" })\`
|
|
116
117
|
|
|
117
118
|
**Quality screen** — high ROIC, low leverage, strong margins:
|
|
118
|
-
\`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 }" })\`
|
|
119
|
+
\`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][debt_to_equity_fq][operating_margin_ttm][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 }" })\`
|
|
119
120
|
|
|
120
121
|
**Volatility + volume spike** — unusual activity detection:
|
|
121
|
-
\`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 }" })\`
|
|
122
|
+
\`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][volatility_week][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 }" })\`
|
|
123
|
+
|
|
124
|
+
## Charting with \`render_chart\`
|
|
125
|
+
|
|
126
|
+
Use \`render_chart\` to visualize data as PNG images. It accepts a full [Chart.js](https://www.chartjs.org/docs/) configuration as a JSON string. Combine with \`get_symbol_series\` or \`get_symbol_history\` using \`filter\` to extract chart-ready arrays.
|
|
127
|
+
|
|
128
|
+
### Series response format
|
|
129
|
+
\`get_symbol_series\` and \`get_symbol_history\` return:
|
|
130
|
+
\`\`\`json
|
|
131
|
+
{ "code": "NASDAQ:AAPL", "bar_type": "1d", "series": [{ "time": 1733432340, "open": 242.89, "high": 243.09, "low": 242.82, "close": 243.08, "volume": 533779 }, ...] }
|
|
132
|
+
\`\`\`
|
|
133
|
+
Use \`filter\` to extract parallel arrays for charting — e.g., \`filter: "{ \"labels\": series.$fromMillis(time * 1000, \"[M01]/[D01]\"), \"close\": series.close }"\`.
|
|
134
|
+
|
|
135
|
+
### Example: Line chart — daily closing prices
|
|
136
|
+
Step 1: Fetch data with filter to extract labels and values:
|
|
137
|
+
\`get_symbol_series({ symbol: "NASDAQ:AAPL", bar_type: "day", dp: 30, filter: "{ \"labels\": series.$fromMillis(time * 1000, \"[M01]/[D01]\"), \"close\": series.close }" })\`
|
|
138
|
+
→ returns \`{ "labels": ["03/01", "03/02", ...], "close": [242.5, 243.1, ...] }\`
|
|
139
|
+
|
|
140
|
+
Step 2: Pass to render_chart:
|
|
141
|
+
\`render_chart({ config: "{ \"type\": \"line\", \"data\": { \"labels\": [\"03/01\", \"03/02\", ...], \"datasets\": [{ \"label\": \"AAPL Close\", \"data\": [242.5, 243.1, ...], \"borderColor\": \"rgb(59,130,246)\", \"fill\": false, \"pointRadius\": 0 }] }, \"options\": { \"plugins\": { \"title\": { \"display\": true, \"text\": \"AAPL Daily Close (30 days)\" } } } }" })\`
|
|
142
|
+
|
|
143
|
+
### Example: Bar chart — daily volume
|
|
144
|
+
\`get_symbol_series({ symbol: "NASDAQ:AAPL", bar_type: "day", dp: 30, filter: "{ \"labels\": series.$fromMillis(time * 1000, \"[M01]/[D01]\"), \"volume\": series.volume }" })\`
|
|
145
|
+
\`render_chart({ config: "{ \"type\": \"bar\", \"data\": { \"labels\": [...], \"datasets\": [{ \"label\": \"Volume\", \"data\": [...], \"backgroundColor\": \"rgba(59,130,246,0.5)\" }] }, \"options\": { \"plugins\": { \"title\": { \"display\": true, \"text\": \"AAPL Daily Volume\" } } } }" })\`
|
|
146
|
+
|
|
147
|
+
### Example: Multi-line — comparing two symbols
|
|
148
|
+
Fetch both series (can be parallel), then combine into one chart:
|
|
149
|
+
\`render_chart({ config: "{ \"type\": \"line\", \"data\": { \"labels\": [...dates...], \"datasets\": [{ \"label\": \"AAPL\", \"data\": [...], \"borderColor\": \"rgb(59,130,246)\", \"pointRadius\": 0 }, { \"label\": \"MSFT\", \"data\": [...], \"borderColor\": \"rgb(239,68,68)\", \"pointRadius\": 0 }] }, \"options\": { \"plugins\": { \"title\": { \"display\": true, \"text\": \"AAPL vs MSFT\" } } } }" })\`
|
|
150
|
+
|
|
151
|
+
### Example: Candlestick-style OHLC using floating bars
|
|
152
|
+
Chart.js doesn't have a native candlestick type, but you can approximate with floating bar charts:
|
|
153
|
+
\`get_symbol_series({ symbol: "NASDAQ:AAPL", bar_type: "day", dp: 20, filter: "{ \"labels\": series.$fromMillis(time * 1000, \"[M01]/[D01]\"), \"open\": series.open, \"close\": series.close, \"high\": series.high, \"low\": series.low }" })\`
|
|
154
|
+
Use the \`open\` and \`close\` arrays as \`[low, high]\` pairs in a floating bar dataset, with color conditional on open vs close.
|
|
155
|
+
|
|
156
|
+
### Example: Intraday chart from history
|
|
157
|
+
\`get_symbol_history({ symbol: "NASDAQ:AAPL", bar_type: "minute", bar_interval: 5, start_date: "2026-03", filter: "{ \"labels\": series.$fromMillis(time * 1000, \"[H01]:[m01]\"), \"close\": series.close }" })\`
|
|
158
|
+
Then pass labels and close arrays to \`render_chart\` as a line chart.
|
|
159
|
+
|
|
160
|
+
### Tips
|
|
161
|
+
- Use \`filter\` with \`$fromMillis(time * 1000, \"[pattern]\")\` to format Unix timestamps as readable labels. The \`time\` field is in seconds — multiply by 1000 for milliseconds.
|
|
162
|
+
- Set \`pointRadius: 0\` on line charts with many data points for cleaner output.
|
|
163
|
+
- For large datasets (hundreds of points), use \`dp\` to limit data points or increase chart \`width\`.
|
|
164
|
+
- Supported chart types: line, bar, pie, doughnut, radar, polarArea, bubble, scatter.
|
|
165
|
+
- Default dimensions: 800×400px. Use \`width\`/\`height\` params to customize (200–2000px).
|
|
122
166
|
`;
|
|
123
167
|
const apiKey = process.env.INSIGHTSENTRY_API_KEY?.trim();
|
|
124
168
|
function isJwt(token) {
|
|
@@ -192,6 +236,64 @@ for (const tool of toolDefinitions) {
|
|
|
192
236
|
}
|
|
193
237
|
});
|
|
194
238
|
}
|
|
239
|
+
// Register chart rendering tool
|
|
240
|
+
server.registerTool("render_chart", {
|
|
241
|
+
description: "Render a Chart.js chart and return the PNG image. Accepts a full Chart.js configuration object (type, data, options). Supports all Chart.js chart types: line, bar, pie, doughnut, radar, polarArea, bubble, scatter. Use this after fetching market data to visualize trends, comparisons, or distributions.",
|
|
242
|
+
inputSchema: {
|
|
243
|
+
config: z
|
|
244
|
+
.string()
|
|
245
|
+
.describe('Chart.js configuration as a JSON string. Must include "type" and "data" fields. Example: {"type":"line","data":{"labels":["Jan","Feb"],"datasets":[{"label":"Price","data":[100,105]}]},"options":{}}'),
|
|
246
|
+
width: z
|
|
247
|
+
.number()
|
|
248
|
+
.int()
|
|
249
|
+
.min(200)
|
|
250
|
+
.max(2000)
|
|
251
|
+
.default(800)
|
|
252
|
+
.describe("Chart width in pixels (default: 800)")
|
|
253
|
+
.optional(),
|
|
254
|
+
height: z
|
|
255
|
+
.number()
|
|
256
|
+
.int()
|
|
257
|
+
.min(200)
|
|
258
|
+
.max(2000)
|
|
259
|
+
.default(400)
|
|
260
|
+
.describe("Chart height in pixels (default: 400)")
|
|
261
|
+
.optional(),
|
|
262
|
+
},
|
|
263
|
+
}, async (args) => {
|
|
264
|
+
try {
|
|
265
|
+
const config = JSON.parse(args.config);
|
|
266
|
+
if (!config.type || !config.data) {
|
|
267
|
+
return {
|
|
268
|
+
content: [
|
|
269
|
+
{
|
|
270
|
+
type: "text",
|
|
271
|
+
text: 'Error: Chart config must include "type" and "data" fields.',
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
isError: true,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
const base64 = await renderChart(config, args.width, args.height);
|
|
278
|
+
return {
|
|
279
|
+
content: [
|
|
280
|
+
{
|
|
281
|
+
type: "image",
|
|
282
|
+
data: base64,
|
|
283
|
+
mimeType: "image/png",
|
|
284
|
+
},
|
|
285
|
+
],
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
return {
|
|
290
|
+
content: [
|
|
291
|
+
{ type: "text", text: `Error: ${error.message}` },
|
|
292
|
+
],
|
|
293
|
+
isError: true,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
});
|
|
195
297
|
// Register documentation resources
|
|
196
298
|
for (const doc of docResources) {
|
|
197
299
|
server.registerResource(doc.name, doc.uri, { mimeType: doc.mimeType, description: doc.description }, async () => ({
|
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;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/resources.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAAE,WAAW,EA+
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAAE,WAAW,EA+qFrC,CAAC"}
|
package/dist/resources.js
CHANGED
|
@@ -102,22 +102,6 @@ Use the \`search_symbols\` tool to find symbol codes.
|
|
|
102
102
|
}
|
|
103
103
|
\`\`\`
|
|
104
104
|
|
|
105
|
-
### Compact format (abbr=true)
|
|
106
|
-
Add \`abbr=true\` to get arrays instead of objects — smaller response, same data.
|
|
107
|
-
**Important:** Not all bar types include the same fields. Tick data may only have \`[time, type, close]\` or \`[time, type, close, volume]\`. Always check \`series_keys\` to know the column order.
|
|
108
|
-
\`\`\`json
|
|
109
|
-
{
|
|
110
|
-
"code": "NASDAQ:AAPL",
|
|
111
|
-
"bar_end": 1733432399.0,
|
|
112
|
-
"last_update": 1733432399820,
|
|
113
|
-
"bar_type": "1m",
|
|
114
|
-
"series_keys": ["time", "open", "high", "low", "close", "volume"],
|
|
115
|
-
"series": [
|
|
116
|
-
[1733432340.0, 242.89, 243.09, 242.82, 243.08, 533779.0]
|
|
117
|
-
]
|
|
118
|
-
}
|
|
119
|
-
\`\`\`
|
|
120
|
-
|
|
121
105
|
## Response Format: Quote Data
|
|
122
106
|
\`\`\`json
|
|
123
107
|
{
|
package/dist/resources.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,kFAAkF;AAClF,kEAAkE;AAClE,uCAAuC;AAUvC,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC;QACE,GAAG,EAAE,+BAA+B;QACpC,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,2GAA2G;QACxH,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.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.9",
|
|
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",
|
|
@@ -30,6 +30,8 @@
|
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
33
|
+
"chart.js": "^4.5.1",
|
|
34
|
+
"chartjs-node-canvas": "^5.0.0",
|
|
33
35
|
"jsonata": "^2.1.0",
|
|
34
36
|
"zod": "^4.3.6"
|
|
35
37
|
},
|
|
@@ -41,4 +43,4 @@
|
|
|
41
43
|
"engines": {
|
|
42
44
|
"node": ">=18"
|
|
43
45
|
}
|
|
44
|
-
}
|
|
46
|
+
}
|