NseKit-MCP provides 13 NSE market data tools with reasonably consistent naming and decent descriptions. All tools follow a verb_noun pattern (market_*, currency_*, gift_*, all_nse_*) and have non-empty descriptions (avg ~80-120 chars). Input schemas are explicitly defined with proper enums and type constraints. However, several critical issues limit the score: (1) Output schemas are NOT documented, no clear specification of what fields each tool returns, forcing LLMs to guess at response structure; (2) Parameter descriptions often lack actionable constraints (e.g., date format 'DD-MMM-YYYY' is mentioned in one parameter but not all date params are consistent); (3) No error handling guidance, tools return raw API responses without recovery hints; (4) No pagination or result limits documented despite tools returning potentially large datasets (e.g., all_nse_traded_stocks can return hundreds of records with no limit); (5) Tool descriptions are adequate but generic, many lack WHEN to use guidance; (6) Security: no indication of how rate limiting is enforced to prevent agent runaway loops. Strengths: consistent naming, functional schemas with enums, good use of Literal types and Annotated for param descriptions, async safe rate limiting implementation.
Fetch live NSE Price Band Hitters data.
Fetch live traded securities from NSE Cash Market.
NSE's current average order acknowledgement latency in nanoseconds.
Official NSE USD, EUR, GBP, JPY reference rates.
Current Gift Nifty futures price and USDINR rate.
Get all NSE clearing/settlement holidays.
Check if today or given date is clearing holiday.
Output schemas are completely undocumented. No tool specifies what fields it returns, what types those fields are, or how to extract values from DataFrame responses. LLMs cannot reason about downstream operations or field availability.
No result limits or pagination documented. Tools like all_nse_traded_stocks and all_nse_price_band_hitters can return hundreds of records with no mention of max results, pagination, or performance implications. Large result sets blow context windows.
No error handling guidance. Tools return raw NseKit API responses without recovery hints. When market_is_open fails or returns unexpected data, LLM has no instruction on what to do next. Missing pattern:recovery-guide throughout.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 17 | - | v1 |
Check if Capital Market, Currency, Commodity or Debt segment is open.
Check if today or given date is trading holiday.
Live capital market stats: Count of Advances, Declines, Unchanged, 52W High, 52W Low, Upper Circuit, Lower Circuit, Market Cap ₹ Lac Crs.
Get current market status, Nifty50, total mcap, or Gift Nifty value.
Real-time turnover across Equity, F&O, Currency, Commodity segments.
Get all NSE trading holidays for current year.
Date parameter format inconsistency. market_is_trading_holiday and market_is_clearing_holiday document 'DD-MMM-YYYY' format but this constraint is not formalized in schema or validated. Other date-accepting tools may accept different formats without documentation.
Tool descriptions lack WHEN-to-use guidance. Most descriptions state WHAT the tool does but not when an LLM should invoke it instead of similar tools. E.g., market_is_open and market_is_trading_holiday both relate to market status but distinction is unclear.
DataFrame-to-JSON conversion details not documented. df_to_json() helper converts pandas DataFrames to dict records but response format is opaque to consumers. Which fields exist? What are their types? Are nulls possible? Undocumented.
Rate limiting is module-global but not exposed as a capability or constraint. LLMs cannot know that tools have built-in throttling (0.35s between calls). If an agent retries aggressively, it will respect the limit but silently slow down without informing the user.
Enum parameter values could benefit from descriptions. series parameter in all_nse_traded_stocks lists enum values (EQ, BE, BZ, etc.) in the tool docstring but not in the schema enum definitions. The docstring provides context (e.g., 'EQ : Fully paid equity shares / ETFs') but LLM may only see the raw enum.