DI

DalalOS: Indian Stock Market Research (NSE/BSE)

in.dalalos/mcp

Filing-grounded Indian stock research (NSE/BSE): financials, ratios, screens. Sourced and dated.

Yes, your AI can use this right now.Answered a live MCP handshake in 439 ms with no sign-in needed and exposes 61 tools.
Is this your server? Claim the listing. Verified adds a vendor-confirmed mark on this page and matching app pages.
Claim with Verified — $49/moWant it in front of people comparing Finance & Payments tools? Feature it — $149/mo

Connect it

Settings → Connectors → Add custom connector
URL: https://mcp.dalalos.in/mcp

61 tools, pulled live

Pulled straight from the server with tools/list on 2026-10-27.
pingread-only

Use this only to confirm the DalalOS connection is working. DalalOS health check. Returns a success envelope to confirm the server is reachable.

get_filing_extract

Use 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_extracts

Use 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-only

Use 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-only

Use 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-only

Use 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_watchlist

Use 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 modify

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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_events

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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_bucket

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Deprecated 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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-only

Use 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 →
Try “Notion”, “Stripe”, “create invoice”, “browser”