DalalOS: Indian Stock Market Research (NSE/BSE)
Filing-grounded Indian stock research (NSE/BSE): financials, ratios, screens. Sourced and dated.
Connect it
Settings → Connectors → Add custom connector
URL: https://mcp.dalalos.in/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://mcp.dalalos.in/mcp{
"mcpServers": {
"mcp": {
"url": "https://mcp.dalalos.in/mcp"
}
}
}claude mcp add --transport http mcp https://mcp.dalalos.in/mcp{
"servers": {
"mcp": {
"type": "http",
"url": "https://mcp.dalalos.in/mcp"
}
}
}61 tools, pulled live
pingread-onlyUse this only to confirm the DalalOS connection is working. DalalOS health check. Returns a success envelope to confirm the server is reachable.
get_filing_extractUse this when the user asks for the contents or a summary of one specific BSE filing of an Indian company, using a news_id from get_stock_events. It may queue processing and use a small daily allowance. Get the cached PDF-extraction for one BSE corporate filing. Accepts NSE symbol, ISIN, or BSE code + a BSE news_id. Obtain the `news_id` from get_stock_events, which lists a security's rece
get_filing_extractsUse this when the user wants summaries of several filings of one Indian company at once (up to 10 news_ids from get_stock_events). It may queue processing and use allowance. Get the cached PDF-extractions for several BSE filings of ONE company in one call. Accepts NSE symbol, ISIN, or BSE code + a list of up to 10 BSE news_ids (from get_stock_events). Use this instead of calling get_fili
get_market_fii_dii_flowread-onlyUse this when the user asks what FIIs and DIIs have been buying or selling in Indian equities day by day across the whole market. Not for a company's ownership percentage; use get_shareholding. Market-wide DAILY FII/DII net cash-flow (Rs crore), NSE cash (Capital Market) segment. NOT the shareholding data: get_shareholding gives per-company QUARTERLY FII/DII holding PERCENTAGES; this giv
get_stock_fii_flowread-onlyUse this when the user asks about daily FII transaction flow in one Indian stock in the historical CDSL data, which stops at March 2025. Per-stock DAILY FII/FPI transaction flow (raw Rs) -- daily series + trailing-30d summary. Accepts NSE symbol, ISIN, or BSE code. `days` (1..1825, default 90) bounds the daily `series`; `summary` is always the trailing-30d figure (the SAME single-source
get_watchlistread-onlyUse this when the user asks what is on their DalalOS watchlist, a saved list of stock symbols (not brokerage holdings). Get the caller's DalalOS watchlist: bare stock symbols, no quantity/cost-basis. Use this whenever the user asks what's on their (DalalOS) watchlist, or before adding/ removing symbols to check current state. This is DalalOS's own watchlist, tied to the caller's Dala
add_to_watchlistUse this when the user asks to add, watch or track Indian stocks in their DalalOS watchlist. Changes only the user's own saved list. Add one or more stocks to the caller's DalalOS watchlist, accepting a pasted list. Use this when the user says "watch X", "track X", "add X to my watchlist", or asks to save stocks they just searched/screened/analyzed via DalalOS for later. This writes to D
remove_from_watchlistcan modifyUse this when the user asks to remove stocks from their DalalOS watchlist. Changes only the user's own saved list. Remove one or more stock symbols from the caller's DalalOS watchlist in a single call. Use this when the user says "stop watching X", "remove X from my watchlist", or "clear my watchlist" (call get_watchlist first, then pass every returned symbol here in one call). This
search_stocksread-onlyUse this when the user names an Indian company, NSE symbol, BSE code or ISIN and you need to identify the listed security before calling another tool. Not for US or other non-Indian stocks. Find Indian stocks by company name, NSE symbol, BSE code, or ISIN. Returns matching securities with their ISIN, internal company_id, name, and both exchange codes. Use this first when a ticker is unkn
get_stock_quoteread-onlyUse this when the user asks for the price, trading volume, 52-week range, PE or PB of an Indian company listed on NSE or BSE. Prices are end-of-day, not live. Not for non-Indian stocks or live intraday prices. Get the latest end-of-day quote (price, OHLC, volume) for an Indian stock. Accepts an NSE symbol, ISIN, or BSE code. Prices are EOD from the NSE bhavcopy. Carries `currency` ("INR"
get_batch_quotesread-onlyUse this when the user wants end-of-day prices or ratios for several Indian stocks at once (up to 20), for example to line up peers. Get EOD quotes for up to 20 Indian stocks in one call (peer benchmarking). Each item carries the same fields as get_stock_quote (currency, vwap, bse_reported, any valuation_notes/ratios_caveat/dividend fields) plus `status` and `error` keys, so an unres
get_financialsread-onlyUse this when the user asks how an Indian company listed on NSE or BSE has performed financially: revenue, profit, margins, balance sheet, cash flow or growth, quarterly or annual. Not for non-Indian companies; for a period-by-period growth series use get_financial_trends. Get consolidated financials (P&L + balance sheet), TTM, and computed margins. Accepts an NSE symbol, ISIN, or BSE code.
get_company_profileread-onlyUse this when the user asks what an Indian company listed on NSE or BSE is: its sector, industry, market cap and a headline financial summary. Get a company profile: identity, sector/industry, market snapshot, and TTM summary. Assembled from cached security master + quotes + financials. Accepts NSE symbol, ISIN, or BSE code. `fundamentals` is None when no financials are cached yet; `mark
get_company_reportread-onlyUse this when the user wants a sourced overview of an Indian company listed on NSE or BSE: identity, key facts, recent disclosures and calculations in one report, each linked to its source. Get a source-linked, read-only canonical company report for one security. Accepts an NSE symbol, ISIN, BSE code, or company name. `days` (1-365, default 90) is the reporting window that selects which
get_peer_comparisonread-onlyUse this when the user compares an Indian company listed on NSE or BSE with similar companies on valuation, margins, returns or debt (PE, PB, debt-to-equity, ROE). For an explainable peer set rather than a table use get_relevant_peers. Compare a stock against its sector/industry peers on valuation metrics. Auto-identifies the peer group and returns a side-by-side table (Mkt Cap, PE, PB,
get_shareholdingread-onlyUse this when the user asks who owns an Indian company listed on NSE or BSE: promoter, FII, DII, mutual fund and public holding percentages by quarter. Not for daily buying or selling; for daily FII/DII flow use get_market_fii_dii_flow or get_stock_fii_flow. Get the promoter / FII / DII / public shareholding-pattern time series for a stock. Accepts an NSE symbol, ISIN, or BSE code. `limit` c
get_price_historyread-onlyUse this when the user wants past share prices of an Indian company listed on NSE or BSE over a period, daily, weekly or monthly, for example to chart or compare a move. Get the OHLC + volume price-history series for an Indian stock. Accepts NSE symbol, ISIN, or BSE code. `days` (1..1825) bounds the lookback window. Set `adjusted=True` for split/bonus-adjusted closes; default is raw clos
get_valuation_historyread-onlyUse this when the user asks how an Indian stock's PE or price-to-sales ratio has changed over time. Get point-in-time P/E and price-to-sales history for an Indian stock. Each point uses only the TTM filing that was public on that trade date. `days` accepts 1..1825; `interval` is daily, weekly, or monthly. P/S is null where the filing lacks a usable top line or disclosed share count.
get_returnsread-onlyUse this when the user asks how much an Indian stock has returned over a period (1 week to max), or about its volatility or drawdown. Get mechanical return statistics over standard windows for an Indian stock. Accepts NSE symbol, ISIN, or BSE code. Returns period returns (1W/1M/3M/6M/1Y/YTD/max), CAGR, annualized volatility, max drawdown, and 52-week high/low — all computed from the
get_technical_indicatorsread-onlyUse this when the user asks for moving averages, RSI, MACD, Bollinger Bands, beta or circuit-limit data for an Indian stock. Get moving averages, RSI, MACD, Bollinger Bands, beta, and circuit-filter band/hit-days for an Indian stock. Accepts NSE symbol, ISIN, or BSE code. Moving averages (sma_50/sma_100/sma_200), `rsi_14` (Wilder's 14-period RSI), `macd` (12/26/9 EMA line/signal/hist
get_delivery_trendsread-onlyUse this when the user asks how much of an Indian stock's traded volume was taken for delivery, and how that has trended. Get the delivery-volume / delivery-percentage trend for an Indian stock. Accepts NSE symbol, ISIN, or BSE code. `days` (1..1825) bounds the lookback window. Returns the raw delivery quantity and delivery % time series from the NSE bhavcopy.
get_dividendsread-onlyUse this when the user asks whether and when an Indian company paid or declared a dividend, or about its dividend yield. Get the cash-dividend history for an Indian stock. Accepts NSE symbol, ISIN, or BSE code. `years` (1..15, default 5) bounds the window. Returns disclosed dividend amounts per share with ex-dates. Raw disclosures only. `annual_totals` (fiscal-year, Apr-Mar buckets)
get_brsrread-onlyUse this when the user asks about an Indian company's BRSR (Business Responsibility and Sustainability Report) or ESG disclosures. Get BRSR (Business Responsibility & Sustainability Report) ESG disclosures for a stock. Accepts NSE symbol, ISIN, or BSE code. `years` (1..10, default 3) caps fiscal years returned, newest first. Each year gives curated KPIs grouped as `emissions` (Scope 1/2
get_bulk_block_dealsread-onlyUse this when the user asks about bulk or block trades in an Indian stock on the NSE. Get NSE bulk/block trade disclosures for an Indian stock. Accepts NSE symbol, ISIN, or BSE code. `deal_type` optionally narrows to "bulk" or "block" (omitted returns both); `days` (1..1825, default 90) bounds the trailing window; `limit` (1..500, default 100) caps rows returned, newest first. E
get_derivatives_positioningread-onlyUse this when the user asks about open interest, put-call ratio or futures and options positioning for an Indian stock or an index such as NIFTY or BANKNIFTY. Get NSE F&O (futures & options) positioning for one underlying. Accepts an NSE symbol, ISIN, or BSE code for a stock, OR a raw F&O underlying/index name (e.g. "NIFTY", "BANKNIFTY") that has no security-master row of its own. R
get_fo_participant_activityread-onlyUse this when the user asks how FIIs, DIIs, proprietary traders or clients are positioned in NSE futures and options across the whole market. Get NSE participant-wise (FII/DII/Pro/Client) F&O open interest & volume — market-wide. `days` (1..366, default 30) bounds the trailing window. Each row is one (trade_date, client_type) pair with raw long/short contract counts across futures-index,
get_fno_ban_listread-onlyUse this when the user asks which Indian stocks are in the NSE futures-and-options ban period today. Get the full NSE F&O securities-in-ban list for the most-recently-published trading day. Market-wide, not per-underlying — no `query` argument. This is the whole-list companion to `get_derivatives_positioning`'s per-symbol `in_ban_list` flag: use this tool when you want everything cur
get_corporate_actionsread-onlyUse this when the user asks about an Indian company's past splits, bonuses, dividends or other corporate actions. For upcoming events across the market use get_market_calendar. Get the disclosed corporate-action timeline for ONE STOCK, HISTORICAL (splits, bonuses, dividends, etc.) — the per-stock, backward-looking sibling of get_market_calendar (whole- market, any window, all event types
get_stock_eventsUse this when the user asks what an Indian company has announced or filed on the exchange recently: results, orders, board meetings, fundraising, acquisitions or other disclosures. Get recent BSE corporate announcements (SEBI Reg-30 disclosures) for an Indian stock. Accepts NSE symbol, ISIN, or BSE code. `days` (1..365, default 30) bounds the trailing window over filing date; `category`
search_company_disclosuresread-onlyUse this when the user needs historical detail from an Indian company's earlier filings, for example a prior order value or commissioning date. Search this company's already cached official filings, page by page. Use after get_stock_events/get_filing_extract when you need historical context, such as a prior commissioning date, original order announcement, customer, project, or tender. Th
get_event_contextread-onlyUse this after get_filing_extract when the user wants the earlier state behind an order, capacity or similar event in a filing. Return cached prior-state context for a canonicalized filing event. Use after get_filing_extract for an order, capacity or other supported event. The result retains source quotes and reports only deterministic historical links; it does not infer price correl
get_company_operating_metricsread-onlyUse this when the user asks for an Indian company's disclosed operating figures such as order book, order inflow, capacity or other business KPIs over time. Return cached, source-grounded operating KPI history for one company. Coverage distinguishes company-disclosed values from ``not_disclosed`` fields. It never infers a current order book from a new order and never fetches or writes on
get_company_macro_exposuresread-onlyUse this when the user asks how an Indian company is exposed to a macro factor such as crude oil, rates or currency, with official context signals. Return cached company macro pathway evidence and eligible official context signals. Signals are emitted only when an active, reviewed, sourced company exposure passes the factor policy against a complete official PPAC Indian Basket or FBIL US
get_company_exposuresread-onlyUse this when the user asks which macro or commodity factors an Indian company depends on, based on reviewed exposure mappings. Return one company's REVIEWED macro-factor exposures, labelled via the factor catalog. Cache-only, read-only: the company's reviewed ``company_exposures`` rows joined to the ``factor_registry`` catalog, so each exposure carries its factor label/description/dimen
get_relevant_peersread-onlyUse this when the user asks who an Indian company's real peers or competitors are and why. For a valuation table of peers use get_peer_comparison. Return an explainable peer set for operating, financial, or valuation comparison. Uses reviewed, provenance-backed business tags and overrides plus cached factual metrics. The existing get_peer_comparison table remains the broader SEBI-classif
list_announcement_bucketsread-onlyUse this when the user wants to browse market-wide disclosure types, such as order receipts or fundraises, before calling get_announcement_bucket. List the market-wide BSE announcement discovery buckets (id + label). Each bucket groups a real-world disclosure type (e.g. "order-receipts", "fundraise", "credit-rating", "acquisitions", "management-changes") across the WHOLE market — the inv
get_announcement_bucketUse this when the user asks which Indian companies recently announced a given kind of disclosure, for example order wins or fundraises, across the whole market. Get every company that filed a matching BSE announcement in a trailing window, market-wide. `bucket` is one of the ids from list_announcement_buckets (e.g. "order-receipts", "fundraise"). `days` (1..90, default 7) bounds the trai
screen_stocksread-onlyUse this when the user asks for Indian stocks matching numeric criteria such as PE, PB, market cap, ROE, margins or debt, optionally within an index such as NIFTY 50. For OR logic or arithmetic between metrics use screen_by_query. Screen the Indian security universe by user-supplied mechanical criteria. All `filters` keys are optional and AND-combined. `sort_by`/`order` order the result set;
screen_by_queryread-onlyUse this when the user's screen needs OR logic, arithmetic between two metrics or a Screener.in-style expression that screen_stocks filters cannot express. Screen the Indian security universe with one free-form Screener.in-style expression. Reach for this instead of screen_stocks when the ask needs OR, arithmetic between two metrics, or a comparison screen_stocks' fixed `<metric>_min`/`_
get_sector_overviewread-onlyUse this when the user asks how an Indian sector or industry looks in aggregate: number of companies, market cap, valuation and returns. Get an aggregate market overview by sector (or a finer SEBI grain). Omit `sector` to list all groups; pass one to drill in. `grain` is "sector" (default), "igroup" (SEBI Industry), or "isubgroup" (SEBI Basic Industry, the finest grain). Returns coun
list_index_constituentsread-onlyUse this when the user asks which stocks are in an Indian index such as NIFTY 50 or NIFTY Bank. List the constituent stocks of an Indian market index (e.g. NIFTY 50, NIFTY 500). `index` is matched exactly to a known index name — get the valid names from list_indices. `limit` (1..500) caps the returned constituents. Returns the member securities with identifiers (each `nse_symbol`/`is
list_indicesread-onlyUse this when the user needs the list of Indian market indices DalalOS covers. List the market indices for which constituent membership is cached.
get_market_heatmapread-onlyUse this when the user wants valuation and returns across the stocks in an Indian index at a glance. Not for ranking by return; use get_top_movers. Get valuation + multi-horizon returns for the constituents of an Indian market index. `index` is matched exactly to a known index name (e.g. NIFTY 50, NIFTY 500) — get the valid names from list_indices. `limit` (1..500) caps the returned cons
get_top_moversread-onlyUse this when the user asks which Indian stocks gained or lost the most, or traded the most, in the last completed session. Raw ranked gainers/losers/most-active for an index over one completed EOD session. `index` defaults to 'NIFTY 500' — get valid names from list_indices. `metric` picks the raw sort field: 'pct_change' (day % change, default), 'change' (absolute price change, Rs),
list_preset_screensread-onlyUse this when the user asks what ready-made screens are available, before calling run_preset_screen. List the fixed, nightly-precomputed preset screens (name/description/cache freshness). Presets are FIXED mechanical filter combinations (never live-queried, never ranked or labelled as a recommendation) — a discovery starting point a caller can further filter via screen_stocks itself.
run_preset_screenread-onlyUse this when the user wants the latest result of a named ready-made screen from list_preset_screens. Return the last nightly-precomputed result for one registered preset screen. `name` must be one of the names returned by list_preset_screens. A preset that has never been computed yet returns an empty result with reason_code "no_data". Cache-only — this is the stored output of an equ
get_upcoming_resultsread-onlyUse this when the user asks which Indian companies report results soon, optionally by sector. For a past window or other event types use get_market_calendar. List companies with an upcoming board-meeting / results date — WHOLE-MARKET, FORWARD-ONLY. This is a forward-only, sector-filterable CONVENIENCE view over the same results_calendar data get_market_calendar also reads — equivalent to
get_index_valuationread-onlyUse this when the user asks for an Indian index's PE, PB or dividend yield over time, for example whether NIFTY 50 is expensive relative to its history. NSE's own daily OHLC + P/E + P/B + Div Yield time series for one named index. `index` is matched case-insensitively against NSE's own published index names (e.g. "Nifty 50", "Nifty Bank", "Nifty IT", "Nifty Auto", "Nifty FMCG", "India VI
list_index_valuationsread-onlyUse this when the user needs the names of Indian indices that have PE, PB and dividend-yield history. List every NSE index name tracked (headline, broad-market, sector/thematic, India VIX). Each entry carries `{index_name, latest_trade_date, latest_close}`. Powers get_index_valuation's `available_indices_hint` and lets you discover NSE's exact index-name spelling before calling it.
get_india_vixread-onlyUse this when the user asks about the India VIX, the NSE volatility index, today or over a period. NSE's daily India VIX (volatility index) OHLC time series. `from_date`/`to_date` are optional ISO dates (default: trailing ~30 days; window capped at 1825 days). Each row is `{trade_date, open, high, low, close, points_change, pct_change}` — VIX has no P/E, P/B, dividend yield, volume,
get_market_breadthread-onlyUse this when the user asks how many Indian stocks advanced, declined or were unchanged on a trading day. Whole-market advance/decline/unchanged breadth: how many NSE-listed securities moved up/down/flat on a trading day. `from_date`/`to_date` are optional ISO dates (default: trailing ~30 days; window capped at 366 days). Each row is `{trade_date, advances, declines, unchanged, total
get_macro_indicatorsread-onlyUse this when the user asks for official Indian macro data: CPI inflation, WPI, IIP, GDP or the crude-oil basket price. Official macro/sector indicators: MOSPI CPI, WPI, IIP (monthly), GDP (annual), and PPAC's Indian Basket crude-oil price (monthly). `dataset` is required: `"cpi"` (headline Consumer Price Index by sector/division), `"wpi"` (headline Wholesale Price Index — overall +
get_fx_reference_ratesread-onlyUse this when the user asks for official FBIL reference rates of the rupee against USD, GBP, EUR, JPY or AED, for example the USD to INR rate. Daily FBIL INR reference rates (USD/GBP/EUR/JPY/AED/IDR against INR). `currency_pair` optionally filters to one pair (e.g. `"USD/INR"`, case-insensitive). `from_date`/`to_date` are optional ISO dates (default: trailing 30 days). Each row is `{
get_sector_fii_flowread-onlyUse this when the user asks about daily FII flow by sector in the historical CDSL data, which stops at March 2025. For current sector flows use get_sector_fpi_investment. Daily FII/FPI net flow (raw Rs), aggregated by sector -- the #74 sector-wise breakdown. Scope-keyed alongside its siblings (issue #285): get_market_fii_dii_flow is market-wide with no sector dimension; get_stock_fii_flo
get_sector_fpi_investmentread-onlyUse this when the user asks which Indian sectors foreign portfolio investors are buying or selling, using fortnightly NSDL data. Fortnightly FPI net investment and assets under custody by sector, from NSDL's Fortnightly Sector-wise FPI Investment data. Covers every FPI across BOTH depositories (NSDL and CDSL), 2012 onward -- the current sector-level FPI source; get_sector_fii_flow's C
get_fii_activityread-onlyDeprecated alias of get_stock_fii_flow; use get_stock_fii_flow for per-stock daily FII transaction flow. DEPRECATED (issue #285) — renamed to `get_stock_fii_flow`; use that instead. Kept as a thin back-compat alias for this release only (no removal date committed yet): delegates to the exact same query function as `get_stock_fii_flow`, so the response is byte-for-byte identical for t
get_market_calendarread-onlyUse this when the user asks what events are scheduled or happened across Indian markets in any date window: results, board meetings, dividends, splits. Get a unified, WHOLE-MARKET calendar of disclosed events across all NSE/BSE securities, over an ARBITRARY window (past or future). Use this instead of get_upcoming_results when you need a past window or multiple event types together;
get_iposread-onlyUse this when the user asks about Indian IPOs: upcoming, open, awaiting listing or recently listed. List IPO/public-issue records: upcoming, open, listing pending, or recently listed. `status` optionally filters to `upcoming`, `open`, `listing_pending`, or `listed` (omitted returns all four); an unknown value is a bad_request. Unlike most fields, `status` is derived at READ TIME from
get_financial_trendsread-onlyUse this when the user asks for quarter-on-quarter or year-on-year growth and margin trends of an Indian company period by period. Get multi-period growth and margin trends for an Indian stock. Levels-vs-deltas division: this tool returns a PER-PERIOD time series (QoQ/YoY growth, `net_margin_delta`, `fcf_growth`, and per-period reportable-segment breakdowns, one row per displayed per
get_pledge_trendread-onlyUse this when the user asks how much of an Indian company's promoter holding is pledged and how that has changed. Get the promoter share-pledge percentage trend for an Indian stock. Accepts NSE symbol, ISIN, or BSE code. `limit` (1..16) caps the most-recent periods. Returns the reported pledged-percentage time series. Raw disclosures only. Each period carries `pledge_disclosed`: fals
get_data_freshnessread-onlyUse this when the user asks how recent DalalOS data is, or when a figure looks stale. Report cache freshness: last successful refresh per data domain and overall health. Every scraper-backed domain (including fii_dii and the ipos family) carries a staleness threshold matched to its real refresh cadence, so a domain whose scraper job silently stops running gets flagged stale rather th
Alternatives in Finance & Payments
Compare →PAPayqrA
European payment QR — SPAYD (CZ/SK) & EPC/GiroCode (SEPA), plus text/WiFi/vCard. Local, free.
ADAdisA
Czech VAT-payer reliability (ADIS / nespolehlivý plátce DPH) + registered bank accounts by DIČ.
CNCnbA
Official ČNB exchange rates — daily & historical CZK vs EUR, USD, 30+ currencies. For accounting.
ISIsirA
Czech insolvency register (ISIR) — active/historical insolvency & bankruptcy by IČO or person.
OPOpenAccountantsA
Open-source AI accounting skills verified by licensed accountants (tax, VAT, payroll).
TRTradingMCPA
Market analysis for AI assistants: screeners, multi-timeframe analysis, backtests, in-chat charts.