Every tool advertised by NSE’s two MCP servers via tools/list on 2026-10-06. Nothing is
omitted. Columns:
M automated test against the mock MCP server (recorded live responses) · L executed successfully against the live NSE server through this app on 2026-10-06.All parameters are declared required by NSE; “default” values are passed as 0 or "".
https://mcp.nseindia.in/cmmkt/mcp| Capability | MCP Tool | Description | Parameters | Response | Implemented | Demonstrated | Tested | Notes |
|---|---|---|---|---|---|---|---|---|
| Gainers/losers feed freshness | cm_get_data_status |
When the gainers/losers cache was last crawled | — | {indices:{gainers,loosers:{available,lastCrawled}}, crawlIntervalMinutes, redisTtlMinutes} |
✅ status view | E | M · L | Crawl every 5 min |
| All-stocks cache status | cm_get_allstocks_status |
Freshness + per-segment security counts | — | {available,lastCrawled,crawlIntervalMinutes,segmentCounts{EQUITY,SME,CALL_AUCTION,BONDS,TOTAL}} |
✅ status view | E | M · L | Crawl every 1 min |
| Live quote | cm_get_stock_quote |
Latest quote for one exact symbol, any segment | symbol string |
{updatedAt, stock{symbol,series,open/high/low/preClose/lastTradedPrice,change,perChange,volume,value(₹Cr),fiftyTwoWeekHigh/Low,perChange30d,latestTimestamp}} |
✅ quote card + 52W bar | E, R | M · L | Unknown symbol → soft error |
| Top gainers & losers (sorted) | nse_get_market_movers |
Sorted top N gainers and losers, all securities or one index | indexName “” / NIFTY / BANKNIFTY / NIFTYNEXT50; limit (0→10, max 50) |
{segment, gainersUpdatedAt, losersUpdatedAt, gainers[], losers[]} rows: symbol, series, ltp, prev_price, net_price, perChange, trade_quantity, turnover(₹ lakh) |
✅ ranked bars + tables | E, R | M · L | NSE’s “primary tool” for movers |
| Top gainers (flattened) | nse_get_gainers |
Top N gainers across indices | limit (0→10, max 50) |
Intended: ranked list. Actual: {"index":"gainers","error":"Failed to parse cached data: … ArrayList cannot be cast to … Map"} |
✅ (shows soft error + known-issue banner) | — | M (reproduces bug) · L: soft error every call | Blocked by NSE — server-side bug. Use nse_get_market_movers. |
| Top losers (flattened) | nse_get_losers |
Top N losers across indices | limit |
Same server-side error as above | ✅ (soft error + banner) | — | M · L: soft error every call | Blocked by NSE — server-side bug |
| Raw gainers by segment | cm_get_live_gainers |
NSE’s raw, unsorted gainers feed per segment | — | {index, updatedAt, totalStocks, data{legends[], NIFTY{data[],timestamp}, BANKNIFTY, NIFTYNEXT50, SecGtr20, SecLwr20, FOSec, allSec}} |
✅ segment picker + table | — | M · L | ~40 KB response |
| Raw losers by segment | cm_get_live_losers |
Raw losers feed per segment | — | Same shape | ✅ segment picker | — | M · L | ~40 KB |
| Raw movers by type | cm_get_live_market_data |
Raw feed selected by index |
index “gainers” / “loosers” |
Same shape | ✅ segment picker | — | M · L | NSE spells it “loosers” |
| Equity listing | cm_get_equity_stocks |
Live data for EQ, BE, BL, BT, IL, IQ series | limit (0→100, max 500), symbolFilter prefix |
{segment, updatedAt, returned, stocks[]} (quote rows) |
✅ table + % bars | — | M · L | |
| SME listing | cm_get_sme_stocks |
Live data for SME (SM, ST) | limit, symbolFilter |
Same | ✅ | E | M · L | OHLC can be 0 before first trade |
| Bonds & other instruments | cm_get_bond_stocks |
Every non-equity/SME/call-auction series: bonds, G-secs, SGBs, InvITs/REITs, T-bills | limit, symbolFilter |
Same | ✅ | E | M · L | |
| Call auction listing | cm_get_call_auction_stocks |
Call-auction session securities | limit, symbolFilter |
Same | ✅ | — | M · L |
https://mcp.nseindia.in/bhavcopy/cm/mcp| Capability | MCP Tool | Description | Parameters | Response | Implemented | Demonstrated | Tested | Notes |
|---|---|---|---|---|---|---|---|---|
| Symbol lookup | nse_lookup_symbol |
Tickers matching a partial name | query |
{count, symbols[]} |
✅ chips | E | M · L | Cheapest call |
| Symbol search with prices | search_symbols |
Matches + last close, % change, last date | query |
{count, results[{symbol,last_close,pct_change,last_date}]} |
✅ table | E | M · L | Includes delisted symbols |
| Daily OHLCV history | get_stock_history |
≤ 3 months per call; chain via next_end_date |
symbol, months (0→3, max 3), endDate (“today”/date) |
{symbol, from_date, to_date, trading_days, summary{…}, data[{date,open,high,low,close,prevClose,volume,totalTradedValue,deliveryQty…}], next_end_date} |
✅ price+SMA+volume chart, table | E, R | M · L | Unadjusted; deliveryQty always 0 |
| Close on a date | get_ltp_by_date |
Close for a date (or previous trading day) | symbol, date |
bare number | ✅ stat | E | M · L | Not JSON |
| Bulk EOD quotes | get_bulk_quote |
EOD snapshot for up to 50 symbols | symbols[] |
{quotes[{symbol,open,high,low,close,prev_close,pct_change,volume,date}]} |
✅ table + bars | E, R | M · L | |
| Top movers on a date | get_top_movers |
Top N gainers/losers for a date | date, n (≤50), direction gain/loss |
{date, requested_date, direction, count, stocks[]} |
✅ ranked bars | E | M · L | Silent fallback to nearest/latest trading day |
| Most active on a date | get_top_by_volume |
Top N by volume or turnover | date, n, sortBy volume/value |
{date, requested_date, sort_by, count, stocks[]} |
✅ table | E | M · L | |
| Volume analysis | get_volume_analysis |
Avg/max/min volume, spikes (>2×), last 5 days | symbol, days (5–252, clamped) |
{avg_volume, max_volume, min_volume, last_volume, last_vs_avg_pct, volume_spike_days, recent_5_days[]} |
✅ stats + bars | E, R | M · L | |
| Market breadth | get_market_breadth |
Advances/declines/unchanged, A/D ratio | date |
{date,total_stocks,advances,declines,unchanged,ad_ratio,total_volume} |
✅ stacked bar | E, R | M · L | A/D > 1.5 bullish, < 0.7 bearish |
| Simple moving average | moving_average |
SMA of closes over N days | symbol, days |
bare number | ✅ stat | E | M · L | Unadjusted |
| 52-week high/low | get_52_week_high_low |
Extremes with dates and position in range | symbol |
{last_close, 52w_high, 52w_high_date, 52w_low, 52w_low_date, position_in_range_pct, from_52w_high_pct, from_52w_low_pct, trading_days} |
✅ range bar | E, R | M · L | Unadjusted |
| Compare stocks | compare_stocks |
Return % and max drawdown, ranked | symbols[] (≤10), months (1–24) |
{from_date, to_date, months, stocks[{symbol,start_price,end_price,return_pct,max_drawdown,trading_days}]} |
✅ bars + table | E, R | M · L | Unadjusted |
| Corporate actions | get_corporate_actions |
Splits, bonuses, dividends with ex-dates and adjustment factors | symbol, fromDate, toDate (“” → last 5 years) |
{symbol, from, to, count, actions[{exDate, actionType, purpose, adjustmentFactor}]} |
✅ table | E, R | M · L | First call per symbol ~2 s; 24 h cache |
| Capability | Status | Notes |
|---|---|---|
Prompts (prompts/list) |
Declared, empty | Checked at connect time; dashboard shows 0 |
Resources (resources/list, templates) |
Declared, empty | Dashboard shows 0 |
| Logging / completions | Declared | Not used by NSE tools |
| Server-initiated messages (GET SSE) | Accepted, idle | NSE never pushes |
| Session termination (DELETE) | Not supported (Akamai rejects) | Python SDK: terminate_on_close=False |
| Area | Status |
|---|---|
| Delivery data / delivery % | Not available — deliveryQty always 0 |
| Derivatives: F&O, option chains, futures, OI | Not exposed |
| Index levels / index history | Not exposed (index names only filter movers) |
| Corporate announcements, board meetings, results | Not exposed (only corporate-action ex-dates) |
| Explicit market status (open/closed) | Not exposed (cm_get_data_status is a freshness proxy) |
| Intraday candles, tick data, order book depth | Not exposed (mentioned on NSE’s marketing page) |
“Price performance & returns” tool (get_price_performance) |
Listed on NSE’s page and referenced in a tool description, not exposed |
| Count | |
|---|---|
| Tools discovered | 26 (13 + 13) |
| Implemented in the Explorer | 26 |
| Demonstrated in guided examples / recipes | 19 (not: the 2 broken tools, the 3 raw segment feeds, equity and call-auction listings — all 26 are still runnable with visual output in the Explorer and available to the agent) |
| Tested against mock (automated) | 26 |
| Executed successfully live through this app | 24 |
| Blocked by NSE (server-side bug) | 2 — nse_get_gainers, nse_get_losers |