InsightSentry MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| INSIGHTSENTRY_API_KEY | Yes | Your InsightSentry API key for accessing financial data |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_symbol_seriesA | Recent Time Series (up to 30k bars) with real-time data option. Retrieve recent historical OHLCV data with real-time data option for a symbol with configurable time intervals and adjustments → Returns {code: string, bar_type: string, bar_end?: number, last_update: number, series: [{time: number, open?: number, high?: number, low?: number, close: number, volume?: number, type?: string}]}. With abbr=true: {code: string, bar_type: string, bar_end?: number, last_update: number, series_keys: string[], series: number[][]} — compact arrays for reduced LLM token usage. Not all bar types include the same fields (e.g., tick data may only have [time, type, close]) — always check series_keys. For intra-day historical data (if you need more than recent 30k bars) use get_symbol_history instead. For real-time streaming, read the insightsentry://docs/websocket resource. |
| get_symbol_historyA | Historical data as far as 20 years+ for intra-day historical data (second/minute/hour). Retrieve historical data for specific time periods with deep archive access → Returns {code: string, bar_type: string, bar_end?: number, last_update: number, series: [{time: number, open?: number, high?: number, low?: number, close: number, volume?: number, type?: string}]}. With abbr=true: {code: string, bar_type: string, bar_end?: number, last_update: number, series_keys: string[], series: number[][]} — compact arrays for reduced LLM token usage. Not all bar types include the same fields (e.g., tick data may only have [time, type, close]) — always check series_keys. Supports second/minute/hour bars only (for daily/weekly/monthly, use get_symbol_series). Returns one month of data per call. Iterate start_date (YYYY-MM) for longer ranges. For recent data (up to 30k bars) use get_symbol_series instead. |
| get_symbol_contractsA | List of contracts and its settlement date for futures symbols. Retrieve list of relatively recent contracts along with their settlement dates for futures symbols → Returns {base_code: string, contracts: [{code: string, settlement_date: string}]}. Use a specific contract code (e.g., CME_MINI:NQH2024) with get_symbol_history for deep history. |
| get_symbol_infoA | Symbol information and metadata. Retrieve detailed information about a symbol including type, currency, market data, splits, option information, and more. Not intended for real-time data. → Returns {code: string, type?: string, name?: string, exchange?: string, currency_code?: string, country_code?: string, sector?: string, industry?: string, description?: string, ceo?: string, website?: string, status?: string, delay_seconds?: number, change?: number, change_percent?: number, open_price?: number, low_price?: number, high_price?: number, prev_close_price?: number, volume?: number, average_volume?: number, market_cap?: number, total_shares_outstanding?: number, splits?: [{time: number, factor: number}], all_time_high?: number, all_time_high_day?: number, all_time_low?: number, all_time_low_day?: number, earnings_per_share_fq?: number, earnings_release_date?: number, earnings_release_next_date?: number, price_earnings_ttm?: number, dividends_yield?: number, beta_1_year?: number, option_info?: [{name: string, type: string, series: [{expiration_date: number, underlying: string, strikes: number[]}]}], has_backadjustment?: boolean, point_value?: number, ...}. Only 'code' is guaranteed — all other fields depend on the asset type. For fundamentals use get_symbol_fundamentals. For option chains use list_options. |
| get_symbol_sessionB | Trading session information. Retrieve trading session details including holidays, trading hours, timezone, and session corrections |
| get_quotesA | Real-time quote data. Retrieve real-time quote data for up to 10 symbols → Returns {total_items: number, data: [{code: string, status?: string, last_price?: number, change?: number, change_percent?: number, volume?: number, bid?: number, ask?: number, bid_size?: number, ask_size?: number, market_cap?: number, open_price?: number, high_price?: number, low_price?: number, prev_close_price?: number, lp_time?: number, delay_seconds?: number, currency_code?: string, unit?: string}]}. For historical data use get_symbol_series. For company details use get_symbol_info. |
| search_symbolsA | Search for symbols. Search for Symbols. To search for a specific type or country, leave query empty. To search for all symbols from a specific exchange, use query like "EXCHANGE:" e.g. "NASDAQ:". → Returns {current_page: number, has_more: boolean, symbols: [{name: string, code: string, type: string, exchange: string, currency_code: string, country: string, description: string}]}. ALWAYS start here to find the correct symbol code unless you already know the correct symbol code. InsightSentry uses EXCHANGE:SYMBOL format (e.g., NASDAQ:AAPL) which differs from other platforms. Do NOT guess codes — search first. Use the returned code with get_quotes, get_symbol_series, get_symbol_info, or any other tool. |
| get_symbol_fundamentalsA | Fundamental data and statistics. Retrieve comprehensive fundamental data including company info, valuation ratios, profitability metrics, balance sheet, cash flow, income statement, and more → Returns {code: string, data: [{id: string, name?: string, category?: string, group?: string, type?: string, period?: string, value?: number|string|array}], last_update: number}. The data array contains hundreds of fields. Use filter to access: data[category='Valuation'] to filter by category, $distinct(data.category) to list categories. If you're unsure which fields exist, call get_fundamentals_meta first. Present only the fields relevant to the user's question — do NOT dump the entire response. For historical fundamentals use get_fundamentals_series. |
| get_fundamentals_seriesA | Fundamental Data in Time Series format. Retrieve historical data for specific indicators. A maximum of 5 Indicator IDs can be requested at a time. The list of available Indicator IDs is provided in the fundamental_series and technical_series fields of the /v3/symbols/fundamentals endpoint. Some parameters may not apply to certain Indicator IDs, and not all indicators are supported for every symbol. → Returns {code: string, total_items: number, last_update: number, data: [{id: string, name: string, data: [{time: number, close: number}]}]} — max 5 indicator IDs per request. If you don't know the available IDs, call get_fundamentals_meta or get_symbol_fundamentals first — both return field objects with {id, name, category} that you can use here. Not all indicators are available for every symbol. |
| get_fundamentals_metaA | Meta data for /fundamentals endpoints. Retrieve the fundamentals schema and metadata. This endpoint returns the layout and definitions only — it does not include actual data, which are provided by /v3/symbols/{symbol}/fundamentals. → Returns {last_update: number, base: [{id: string, name?: string, category?: string, group?: string, type?: string, period?: string}], fundamental_series: [{id: string, name: string}], technical_series: [{id: string, name: string}]}. No values — schema only. Use this to discover and search available fields when you're unsure which field IDs exist (e.g., find cash flow fields, balance sheet metrics, valuation ratios) by scanning names and categories. Then call get_symbol_fundamentals with a specific symbol and filter its response to only the IDs you identified here. Use fundamental_series/technical_series IDs with get_fundamentals_series for historical data. |
| list_optionsA | List available options. Retrieve list of available option contracts for a given symbol. Supports optional filtering by expiration date range and option type. Use the /v3/symbols/quotes endpoint with the returned option codes to get last price and volume (e.g., codes=OPRA:AAPL270617C230.0,OPRA:AAPL270617C260.0, up to 10 codes per request). → Returns {last_update: number, last_price?: number, codes: string[]}. Supports optional filters: expiration_min, expiration_max, type (call/put), range (strike % around last_price). last_price is included when range is provided. Next: use get_options_expiration (filter by date) or get_options_strike (filter by strike) to get chain with Greeks. To get last price and volume of specific option contracts, use get_quotes with the option codes (e.g., codes=OPRA:AAPL270617C230.0,OPRA:AAPL270617C260.0, up to 10 codes). |
| get_options_expirationA | Option chain by expiration. Retrieve option chain data by expiration. Provide either expiration (exact date) or from/to (date range). Use the /v3/symbols/quotes endpoint with the returned option codes to get last price and volume (up to 10 codes per request). → Returns {underlying_code: string, last_update: number, last_price?: number, data: [{code?: string, type: string, strike_price: number, expiration: number, ask_price: number, bid_price: number, delta: number, gamma: number, theta: number, vega: number, rho: number, implied_volatility: number, theoretical_price: number, bid_iv: number, ask_iv: number}]}. Provide expiration for exact date, or from/to for a date range. last_price is included when range is provided. To get last price and volume of option contracts, use get_quotes with the option codes (e.g., codes=OPRA:AAPL270617C230.0,OPRA:AAPL270617C260.0, up to 10). For historical option price data use get_symbol_series. |
| get_options_strikeA | Option chain by strike price. Retrieve option chain data filtered by strike price or price range. Provide either strike (exact match) or range (percentage of current price), or both. Use the /v3/symbols/quotes endpoint with the returned option codes to get last price and volume (up to 10 codes per request). → Returns {underlying_code: string, last_update: number, last_price?: number, data: [{code?: string, type: string, strike_price: number, expiration: number, ask_price: number, bid_price: number, delta: number, gamma: number, theta: number, vega: number, rho: number, implied_volatility: number, theoretical_price: number, bid_iv: number, ask_iv: number}]}. Provide strike for exact match, or range for ±N% of current price (last_price included when range is used). To get last price and volume of option contracts, use get_quotes with the option codes (e.g., codes=OPRA:AAPL270617C230.0,OPRA:AAPL270617C260.0, up to 10). For historical option price data use get_symbol_series. |
| get_dividendsA | Dividend calendar. Retrieve dividend calendar data for a specified time range → Returns {total_count: number, range: string, last_update: number, data: [{code: string, name: string, country: string, currency_code: string, market_cap: number, dividends_yield: number, dividend_ex_date_recent: number, dividend_ex_date_upcoming: number, dividend_payment_date_recent: number, dividend_payment_date_upcoming: number, dividend_amount_recent: number, dividend_amount_upcoming: number}]}. Default: current week. Use 'w' to look ahead (w=2 for next week, w=4 for a month out). Filter by country with 'c' (e.g., 'US'). Filter by symbol with 'code' (e.g., 'NASDAQ:AAPL'). |
| get_earningsA | Earnings calendar. Retrieve earnings calendar data for a specified time range → Returns {total_count: number, range: string, last_update: number, data: [{code: string, name: string, country: string, currency_code: string, market_cap: number, earnings_release_date: number, earnings_release_next_date: number, earnings_per_share_fq: number, earnings_per_share_forecast_fq: number, earnings_per_share_forecast_next_fq: number, eps_surprise_fq: number, eps_surprise_percent_fq: number, revenue_fq: number, revenue_forecast_fq: number, revenue_forecast_next_fq: number, revenue_surprise_fq: number, revenue_surprise_percent_fq: number}]}. Default: current week. Use 'w' to look ahead. Filter by country with 'c'. Filter by symbol with 'code' (e.g., 'NASDAQ:AAPL'). |
| get_iposA | IPO calendar. Retrieve IPO calendar data for a specified time range → Returns {total_count: number, range: string, last_update: number, data: [{code: string, name: string, country: string, currency: string, status: string, offer_time: number, offer_price: number, offered_shares: number, deal_amount: number, price_range: string, market_cap: number}]}. Default: current week. Use 'w' to look ahead. Filter by country with 'c'. Filter by symbol with 'code' (e.g., 'NASDAQ:AAPL'). |
| get_eventsA | Economic events calendar. Retrieve economic events calendar data for a specified time range → Returns {total_count: number, range: string, last_update: number, data: [{title?: string, country?: string, type?: string, currency?: string, importance?: string, date?: string, source_url?: string}]}. Default: current week. Use 'w' to look ahead. Filter by country with 'c'. |
| get_newsfeedB | News feed. Retrieve latest financial news with optional keyword filtering → Returns {last_update: number, total_items: number, current_items: number, page: number, has_next: boolean, data: [{title?: string, content?: string, link?: string, published_at: number, related_symbols?: string[]}]}. |
| get_stock_screener_paramsA | Get available stock screener parameters. Retrieve the list of available fields and parameters for stock screening → Returns {available_fields: string[], available_exchanges: string[], available_countries: string[], sortOrder: string[]}. All arrays are flat string arrays (field names, not objects). Next: use screen_stocks with these fields to filter the market. |
| screen_stocksA | Stock Screener. Retrieve stock data based on specified filter criteria → Returns {hasNext: boolean, current_page: number, total_page: number, current_items: number, data: [{symbol_code: string, name: string, country: string, currency: string, delay_seconds: number, ...requested_fields}]}. WORKFLOW: 1) Call get_stock_screener_params to discover available fields, exchanges, countries. 2) POST with your chosen fields. Tip: Filter by exchanges (e.g., ["NYSE", "NASDAQ"]) to exclude OTC/penny stocks. Example: {"fields":["close","volume","market_cap"],"exchanges":["NYSE","NASDAQ"],"countries":["US","CA"],"page":1,"ignore_invalid":false,"sortBy":"market_cap","sortOrder":"desc"}. Returns up to 1000 results per page. |
| get_etf_screener_paramsA | Get available ETF screener parameters. Retrieve the list of available fields and parameters for ETF screening → Returns {available_fields: string[], available_exchanges: string[], available_countries: string[], sortOrder: string[]}. All arrays are flat string arrays (field names, not objects). Next: use screen_etfs with these fields. |
| screen_etfsA | ETF Screener. Retrieve ETF data based on specified filter criteria → Returns {hasNext: boolean, current_page: number, total_page: number, current_items: number, data: [{symbol_code: string, name: string, country: string, currency: string, delay_seconds: number, ...requested_fields}]}. WORKFLOW: 1) Call get_etf_screener_params to discover available fields. 2) POST with your chosen fields. Example: {"fields":["close","volume","nav"],"exchanges":["NYSE","NASDAQ"],"countries":["US","CA"],"page":1,"sortBy":"nav","sortOrder":"desc"}. |
| get_bond_screener_paramsA | Get available bond screener parameters. Retrieve the list of available fields and parameters for bond screening → Returns {available_fields: string[], available_exchanges: string[], available_countries: string[], sortOrder: string[]}. All arrays are flat string arrays (field names, not objects). Next: use screen_bonds with these fields. |
| screen_bondsA | Bond Screener. Retrieve bond data based on specified filter criteria → Returns {hasNext: boolean, current_page: number, total_page: number, current_items: number, data: [{symbol_code: string, name: string, country: string, currency: string, delay_seconds: number, ...requested_fields}]}. WORKFLOW: 1) Call get_bond_screener_params to discover available fields. 2) POST with your chosen fields. Example: {"fields":["close_percent","yield_to_maturity","volume"],"exchanges":[],"countries":["US"],"page":1,"sortBy":"yield_to_maturity","sortOrder":"desc"}. |
| get_crypto_screener_paramsA | Get available crypto screener parameters. Retrieve the list of available fields and parameters for crypto screening → Returns {available_fields: string[], available_exchanges: string[], sortOrder: string[]}. All arrays are flat string arrays (field names, not objects). No country filter for crypto. Next: use screen_crypto with these fields. |
| screen_cryptoA | Crypto Screener. Retrieve cryptocurrency data based on specified filter criteria → Returns {hasNext: boolean, current_page: number, total_page: number, current_items: number, data: [{symbol_code: string, name: string, currency: string, delay_seconds: number, ...requested_fields}]}. WORKFLOW: 1) Call get_crypto_screener_params to discover available fields. 2) POST with your chosen fields. Note: country filtering NOT supported for crypto. Example: {"fields":["close","volume","market_cap"],"page":1,"sortBy":"market_cap","sortOrder":"desc"}. |
| get_documentsA | List documents for a symbol. Retrieve a list of available documents (filings, transcripts, reports) for a given symbol → Returns [{id: string, title: string, category: string, reported_time: number, is_available: boolean, is_pdf: boolean, fiscal_period?: string, fiscal_year?: number, form?: string}]. Use the id field with get_document to read content. |
| get_documentA | Retrieve a specific document. Retrieve the content of a specific document. Returns JSON with title, published_at, and content for non-PDF documents, or binary PDF data for PDF documents. Use text=true to get extracted text from PDF documents. → Returns {title: string, published_at: number, content: string} for non-PDF documents. For PDF documents, returns binary data by default; use text=true to get extracted text as {title: string, published_at: number, content: string} instead. Always use text=true so you can read the content. Get document IDs from get_documents first. |
| render_chartA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| InsightSentry REST API Guide | Complete REST API reference: authentication, base URL, all endpoints with parameters and response formats |
| InsightSentry Integration Workflows | Step-by-step workflows for common use cases: building trading apps, dashboards, screeners, and WebSocket integrations |
| InsightSentry WebSocket API Guide | Complete WebSocket API documentation: connection, authentication, subscriptions, data formats, keepalive, error handling, and code examples |
| InsightSentry Screener API Guide | Screener API: discover available fields, filter stocks/ETFs/bonds/crypto with custom criteria |
| InsightSentry Options API Guide | Options API: list options, option chains, Greeks, option code format, historical data |
| InsightSentry History Endpoints Guide | Intraday historical data endpoints (second/minute/hour): query parameters, concurrency limits, caching, and when to use history vs series |
| InsightSentry Futures History Guide | How to fetch extensive historical data for futures contracts, including contract month logic |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rezmeplxrf/insight_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server