Tapetide - Indian Stock Market MCP
Tapetide is an MCP server for Indian stock market research (NSE/BSE), giving AI assistants live quotes, financials, screening, market-wide flows, derivatives data, filings and portfolio tools across ~8,000 listed stocks.
Find stocks —
search_stocksresolves names, symbols, BSE codes, ISINs, brand names and rename aliases (Zomato→ETERNAL).Analyze companies — profiles with pros/cons, fundamentals, technicals, analyst ratings, peer comparisons, live quotes and batch quotes (up to 20 symbols).
Review financials — quarterly/annual P&L, balance sheet, cash flow, ratios (with point-in-time
available_fromdates), shareholding patterns and analyst forecasts vs actuals.Screen the market — fundamental screener over 326 ratios with AND/OR queries, real-time technical screener (RSI, MACD, crossovers, volume), and
get_screener_ratiosto look up exact ratio names.Track price history — daily/weekly OHLCV with delivery %, up to 2,000 sessions per call and cursor-based paging further back.
Follow market-wide flows — FII/DII daily flows, F&O participant OI, FPI sector allocation, India VIX, Nifty valuations, market news and 7 daily feeds (deals, F&O ban, deliveries, IPOs, MTF, SLBM, signals).
Use index data — ~140 indices: constituent heatmaps, level history with PE/PB/DY, and weekly/monthly return rankings by sector.
Assess derivatives — index option chains with IV, Greeks, OI, max pain and PCR; ATM IV history, IV rank/percentile and realized vol for ~556 underlyings including stocks.
Check governance & risk — promoter pledge trends, credit-rating actions, bulk/block/insider/SAST deals, and a deterministic 0–100 Tapetide Score with pillar sub-scores plus a score-based screener.
Read filings as text — list parsed documents, get AI digests, and read page-addressed Markdown of concalls, annual reports, presentations and IPO docs.
Build bias-aware backtests — split/bonus adjustment factors, per-day observation status, as-of index membership, and historical symbol/ISIN resolution.
Manage portfolio & watchlist — view holdings with live P&L, add/update/remove positions (broker CSV import), and follow or unfollow stocks.
Get guided usage —
read_mereturns the full in-session guide, plus aliases (scan_movers,get_live_quote,get_stock_news,get_corporate_actions) and a redirect tool for preset screens.
Supports importing portfolio holdings from Zerodha broker CSV files, enabling portfolio management and tracking.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Tapetide - Indian Stock Market MCPWhat's the current price of Reliance Industries?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Tapetide is an Indian stock market MCP server that gives AI assistants live, structured data on every NSE and BSE listed company, from Nifty 50 and Sensex heavyweights to SME stocks. Connect it to Claude, ChatGPT, Cursor, VS Code, Codex or Gemini CLI and ask in plain English for share prices, quarterly financials, a 326-ratio stock screener, technical indicators, FII/DII flows, option chains and IV, corporate filings, IPOs, bulk deals and your portfolio P&L.
One-line install (Claude Code, with a free token from tapetide.com/settings/tokens):
claude mcp add tapetide -e TAPETIDE_TOKEN=your_token_here -- npx -y tapetide-mcpOr skip the install entirely and add the remote server URL https://mcp.tapetide.com/mcp in claude.ai, ChatGPT, Grok or any client that supports remote MCP. You sign in with Google.
48 tools (55 including aliases) · about 8,000 NSE/BSE stocks · Remote (OAuth) or local (npx / uvx) · Free: 50 tool calls a day · Setup guides for 16 clients
Works with
Step-by-step setup guides for every major MCP client:
Chat apps | Code editors & IDEs | Terminal agents |
Any other client that speaks the Model Context Protocol works too, over remote HTTP or local stdio.
Related MCP server: India Market MCP
Quick Start
Option 1: Remote MCP (No install — claude.ai, chatgpt.com, Grok, Gemini)
Add this URL directly in your AI chat app:
https://mcp.tapetide.com/mcpAuthentication happens automatically via Google OAuth. No token needed.
Option 2: Remote MCP with Token (Claude Code, VS Code, Kiro, Zed)
For code editors that support URL-based MCP servers with custom headers:
Get a free token at tapetide.com/settings/tokens
Add to your MCP config:
{
"mcpServers": {
"tapetide": {
"type": "url",
"url": "https://mcp.tapetide.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN_HERE"
}
}
}
}Option 3: Local MCP via npm (Claude Code, Codex, Cursor, Windsurf, VS Code, Gemini CLI, Kiro, OpenCode)
For stdio-based MCP clients. No cloning or building required — runs via npx:
Get a free token at tapetide.com/settings/tokens
Add to your MCP config:
{
"mcpServers": {
"tapetide": {
"command": "npx",
"args": ["-y", "tapetide-mcp"],
"env": {
"TAPETIDE_TOKEN": "your_token_here"
}
}
}
}Node.js 18+ required for the local option. Run
node --versionto check.
Gemini CLI extension
gemini extensions install https://github.com/Tapetide-hq/nse-bse-indian-stock-market-data-mcpYou'll be prompted for your Tapetide token on install.
Install as a Claude Code plugin
This repo is also a one-plugin Claude Code marketplace. Run these two commands inside Claude Code:
/plugin marketplace add Tapetide-hq/nse-bse-indian-stock-market-data-mcp
/plugin install tapetide-indian-stock-market@tapetideOn Claude Code 2.1.275 or later, one line does both:
/plugin install tapetide-indian-stock-market --marketplace Tapetide-hq/nse-bse-indian-stock-market-data-mcpThe plugin connects to the remote server at https://mcp.tapetide.com/mcp, so there is nothing to install locally. Run /mcp and pick tapetide to sign in with Google the first time.
Prefer a local stdio server with a personal token instead? Skip the plugin and add the npm package directly (get a free token):
claude mcp add tapetide -e TAPETIDE_TOKEN=your_token_here -- npx -y tapetide-mcpOption 4: Local MCP via Python (uvx / pip)
Same bridge, packaged for Python 3.10+ — tapetide-mcp on PyPI (source):
{
"mcpServers": {
"tapetide": {
"command": "uvx",
"args": ["tapetide-mcp"],
"env": {
"TAPETIDE_TOKEN": "your_token_here"
}
}
}
}How It Works
┌─────────────────┐ stdio (JSON-RPC) ┌──────────────────┐ HTTPS ┌─────────────────────┐
│ AI Assistant │ ◄──────────────────────► │ tapetide-mcp │ ◄────────────► │ mcp.tapetide.com │
│ (Claude, etc.) │ │ (npm package) │ │ (Cloudflare Worker) │
└─────────────────┘ └──────────────────┘ └─────────────────────┘The npm package is a lightweight stdio bridge with zero runtime dependencies. It:
Reads JSON-RPC from stdin, forwards to the remote Tapetide MCP server, writes responses to stdout
Auto-detects framing: Content-Length (VS Code, Claude Desktop) or newline-delimited JSON (Kiro, Claude Code)
Exchanges your refresh token for a 1-hour HMAC access token, auto-refreshes before expiry
Handles SSE responses from the remote server
Identifies your MCP client to the remote via
User-Agent, and echoes the negotiated protocol versionWarns on stderr when the server rate-limits a call, naming the retry delay
Replays the
Mcp-Session-Idthe server mints atinitializeon every later request, so the remote can tie a session's calls togetherForwards MCP Apps traffic untouched —
resources/list,resources/readand the_meta.uihints onget_price_history,market_heatmapandscreen_stocksreach your client exactly as the server sends them
All tools and their logic run on the remote server — the npm package is just the transport layer. Because it forwards JSON-RPC verbatim, tools shipped on the remote are available immediately without upgrading this package.
Authentication
Method | How it works | Best for |
Google OAuth | Browser sign-in, automatic token refresh | AI chat apps (Claude.ai, ChatGPT, Grok, Gemini) |
Personal Token (remote) |
| Code editors with URL-based MCP (VS Code, Kiro, Zed) |
Personal Token (local) |
| stdio MCP clients (Cursor, Windsurf, Claude Desktop, Codex) |
Generate a free personal token at tapetide.com/settings/tokens. Works for both remote and local MCP.
Tools
Tip: ask your assistant to call
read_mefirst. It returns the full in-session guide — every tool by category, usage patterns, and the rules the server expects clients to follow.Three tools carry an interactive view for hosts that support MCP Apps (Claude, Claude Desktop, VS Code Copilot):
get_price_historyrenders the price and volume chart,market_heatmapthe index treemap, andscreen_stocksthe sortable results table. Text-only hosts get the same JSON result with nothing missing.
🔍 Discovery & Screening (5 tools)
Tool | Description |
| Resolve a company to its symbol by name, symbol, BSE code, or ISIN — including brand names and post-rename aliases ( |
| Fundamental screener over 326 ratios — PE, ROCE, sales growth, debt/equity, Piotroski score. Plain-English query syntax with AND/OR logic and cross-field comparisons. |
| Real-time technical screener — RSI, MACD, SMA/EMA crossovers, Bollinger Bands, ADX, volume, momentum. Supports |
| Search or browse the full 326-ratio catalog to get exact ratio names for a query. |
| Today's top gainers, losers, and most-active stocks from the Nifty 500. |
📊 Company Analysis (9 tools)
Tool | Description |
| Full overview — sector, business summary, pros/cons, fundamentals, growth metrics, current quote. Optionally add technicals (20+ indicators), analyst ratings, and peers in the same call. |
| Live price — LTP, change %, volume, market cap, PE, PB, 52-week high/low. |
| Up to 20 stock quotes in a single call. |
| Daily or weekly OHLCV with delivery %. Up to 2,000 sessions per call, pageable further back. |
| Quarterly + annual P&L, balance sheet, cash flow, and ratios. Each period is stamped with when it was actually published, so backtests can avoid look-ahead bias. |
| Promoter, FII, DII, and public holdings quarter by quarter. |
| Analyst EPS, revenue, EBITDA, net income, ROA, and ROE estimates against actuals — for spotting earnings surprises. |
| Sentiment-tagged news, corporate actions (dividends, splits, bonuses, AGMs), and filings (results, presentations, concall transcripts, annual reports). |
| Dividend history with yields + which mutual fund schemes hold the stock and at what share of AUM. |
🏛️ Market-Wide Data (11 tools)
Tool | Description |
| The at-a-glance daily snapshot — FII/DII net flows, Nifty 50 valuations, and India VIX in one call. |
| 30 days of daily cash-market flows, F&O participant long/short OI, weekly/monthly/yearly aggregates, buy/sell streaks, cumulative net flows. |
| Alias of |
| FPI investment by sector — AUM share, fortnightly change, 1-year cumulative flow. |
| Market-wide news across categories with sentiment and related symbols. |
| One dispatcher for seven daily feeds via |
| Every constituent of an index with market cap, PE, PB, returns from 1d to 5y, volume, sector — 16 indices. |
| Index PE, PB, and dividend yield over time. Up to 20 years. |
| The India VIX fear gauge — latest level, daily change, recent history. |
| Rank ~140 NSE indices by return over completed weeks or months. Filter to sectoral, broad, thematic, or strategy families — the right answer to "which sector led last month". |
| OHLC level series plus PE/PB/dividend yield for a single index. The index counterpart of |
🎲 Derivatives & Risk (5 tools)
Tool | Description |
| Per-strike index option chain with IV, full Greeks, bid/ask, open interest, max pain, PCR. NIFTY, BANKNIFTY, FINNIFTY, MIDCPNIFTY — a stamped end-of-day snapshot. |
| Session-by-session ATM IV, IV rank, IV percentile, realised vol, PCR, max pain, 25-delta skew for ~556 underlyings, individual stocks included. |
| Latest per-expiry aggregates — ATM IV, IV rank/percentile, realised vol, PCR by OI and volume, max pain, skew, call/put OI. |
| Promoter share-pledge percentage by quarter plus pledge/release events — a standard governance red-flag check. |
| Credit-rating actions by agency with rating, action, and outlook over time. |
🔬 Research & Scoring (4 tools)
Tool | Description |
| Bulk, block, insider, and substantial-acquisition (SAST) disclosures per stock, with counterparty, side, quantity, value. |
| The deterministic 0-100 Tapetide Score for one stock with its six pillar sub-scores, band, percentile, data confidence, and any governance caps or red flags. |
| Rank and filter the scored universe by band, size bucket, sector, score window, and confidence, with cursor pagination. |
| Structured digest of recent earnings-call transcripts and investor presentations — highlights, risks, guidance, headline metrics. |
📄 Filing Text (3 tools)
Parsed filings as text — read the annual report or transcript itself, not just a digest.
Tool | Description |
| Index of a company's parsed filings — concall transcripts, annual reports, investor presentations, IPO documents — with |
| Investor digest of one filing by |
| The Markdown text of a filing by |
⏳ Point-in-Time & Backtest Safety (5 tools)
Tool | Description |
| Split and bonus adjustment timeline for reconstructing raw prices — plus the rights and demerger events that carry no reliable factor at all. |
| Per-calendar-day reason a price is present or missing: traded, weekend, holiday, pre-listing, delisted, or no print. A missing day is not a zero return. |
| Was a stock in an index on a given date? Answers |
| Map a historical symbol or ISIN to the company that held it on a date, for old holdings files and recycled tickers. |
| The reverse lookup — which symbol and ISIN a company traded under at a point in time. |
💼 Portfolio (4 tools)
Requires a connected Tapetide account.
Tool | Description |
| Holdings with live prices, absolute and % P&L, invested value, weight, sector, market-cap class. |
| Add holdings singly or in bulk, including rows parsed from a broker CSV or screenshot. Duplicates merge on a weighted-average price. |
| Update quantity and average price after a top-up or partial sell. |
| Remove holdings from the portfolio. |
👁️ Watchlist (3 tools)
Requires a connected Tapetide account.
Tool | Description |
| Every followed stock with sector and industry. |
| Follow one or many stocks. Idempotent. |
| Unfollow one or many stocks. |
📖 Guide & Aliases (6 tools)
Tool | Description |
| The full in-session guide — every tool by category, the SEBI disclaimer rule, portfolio-first behaviour, parallel-call patterns. Assistants should call it first. |
| Alias of |
| Alias of |
| Alias of |
| Alias of |
| Redirect that points a preset-screen request at the screener tool that can actually answer it. |
Retired tool names
These names were removed. Calling one returns a message naming its replacement, so a client can recover in the same turn — but new integrations should use the replacement directly.
Retired | Replacement |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example Prompts
Stock Research
"Give me a complete analysis of Reliance Industries — financials, debt trend,
analyst target price, and what mutual funds are holding it"
"Compare HDFC Bank and ICICI Bank — quarterly profit growth, ROE, shareholding
changes, and analyst consensus"
"Pull the last 4 quarters of TCS financials — revenue growth, margin trend,
and cash flow. How does it compare to Infosys?"Stock Screening
"Find mid-cap stocks where FII holding increased last quarter, ROE > 15%,
and RSI below 40 — accumulation candidates"
"Screen for stocks with MACD bullish crossover, volume 2x average, and
within 10% of 52-week high"
"Which small-caps have debt-to-equity below 0.5, operating margin above 20%,
and PE below 15?"Institutional Flows
"FIIs have been selling for 5 days — show me daily numbers and which sectors
they're pulling out of"
"Compare FII vs DII flows for the last month with Nifty 50 PE — are we near
a historical bottom?"
"Show F&O participant-wise open interest — are FIIs net long or short in
index futures?"Portfolio & Watchlist
"Add these to my portfolio: 10 RELIANCE at ₹1350, 50 TCS at ₹3800,
25 HDFCBANK at ₹1650"
"I bought 10 more RELIANCE at ₹1400 — update my portfolio and show
my new average cost"
"Which of my holdings are technically weak? Show RSI and MACD for each"
"Watch TATAMOTORS, MARUTI, M&M — compare their PE ratios and quarterly
sales growth"Derivatives & Volatility
"Is RELIANCE implied volatility high right now? Show IV rank and percentile
versus realised vol over the last year"
"Show the NIFTY option chain around ATM — open interest by strike, max pain,
and the put-call ratio"
"Which sectors led the last 3 completed weeks? Rank the sectoral indices"Scoring & Risk Screens
"What's the Tapetide Score for TATASTEEL and why — break down the pillars"
"Show me Strong-band pharma stocks among large and mid caps"
"Any governance red flags on this stock? Check promoter pledge trend and
recent credit rating actions"Backtest Safety
"Was IDEA in the Nifty 500 on 2019-03-31? I need point-in-time membership,
not today's list"
"This stock shows a 60% single-day move in 2022 — was that a split or a real
return? Check the adjustment factors"Daily Market Briefing
"Full market briefing — FII/DII flows, F&O ban stocks, bulk deals above
50 crores, top delivery stocks, and breakout signals"
"Is the market overvalued? Show Nifty 50 PE vs 5-year and 10-year averages"
"Show the Nifty 50 heatmap — which sectors dragged the index today?"Data Coverage
Category | What's included |
Stocks | About 8,000 NSE and BSE listed companies, including SME |
Price data | Daily OHLCV up to 2,000 days + weekly aggregation + delivery % |
Financials | Quarterly + annual P&L, balance sheet, cash flow, 50+ ratios |
Screener | 326 fundamental ratios + real-time technical indicators + cross-field comparisons |
Technicals | RSI, SMA, EMA, MACD, Bollinger Bands, ADX, ATR, Supertrend, Stochastic, CCI, pivot points, 8 candlestick patterns |
Institutional | FII/DII daily cash flows, F&O participant OI, FPI sector-wise allocation, buy/sell streaks |
Market data | Bulk/block deals, F&O ban, IPOs, delivery %, MTF, SLBM, heatmaps, signals |
Indices | ~140 NSE indices — level history with PE/PB/DY, plus weekly/monthly return rankings by sector, broad, thematic, and strategy family |
Derivatives | Index option chains with IV and full Greeks, OI, max pain, PCR; IV rank/percentile and realised-vol history for ~556 underlyings including single stocks; India VIX |
Analyst | Buy/hold/sell consensus + EPS/revenue/EBITDA/ROE forecasts with actuals vs estimates |
Ownership | Shareholding patterns (quarterly), dividend history, mutual fund scheme-level holdings |
Large trades | Bulk, block, insider (designated-person), and SAST disclosures with counterparty and value |
Governance & risk | Promoter share-pledge history and events, credit-rating actions by agency with outlook |
Scoring | Tapetide Score — deterministic 0-100 rating with six pillar sub-scores, band, percentile, data confidence, governance caps |
Point-in-time | Split/bonus adjustment factors, per-day observation status, as-of index membership, historical symbol/ISIN resolution — for survivorship-bias-aware backtests |
News & Events | Sentiment-tagged news, corporate actions, filings (annual reports, concall transcripts), AI digests of earnings calls and investor presentations |
Filing text | Concall transcripts, annual reports, investor presentations and IPO documents parsed to page-addressed Markdown, with per-document summaries and PDF/Markdown download links |
Portfolio | Live P&L tracking, sector breakdown, broker CSV import (10+ Indian brokers) |
Environment Variables
Variable | Required | Default | Description |
| Yes (local) | — | Personal API token from tapetide.com/settings/tokens |
| No |
| Override remote server URL |
| No |
| Set to |
Rate Limits
Limits are per Tapetide account and identical across all three access methods (OAuth, remote token, and this npm bridge) — they follow your plan, not your transport.
Scope | Free plan | Paid plans |
Per day | 50 tool calls | Per your plan, see tapetide.com/pricing |
Per calendar month | No monthly cap | Per your plan (unlimited on enterprise) |
Burst | 60 tool calls per minute | 60 tool calls per minute |
Only successful tool calls consume quota. Protocol traffic (initialize, tools/list) and
burst-denied calls are free. Daily and monthly windows reset on IST boundaries.
When a limit is hit, the server replies with a normal JSON-RPC result carrying isError: true and a
message naming the binding cap and its reset time, so your assistant relays it instead of retrying.
Responses carry X-RateLimit-Reset, and denials add Retry-After. The numeric quota itself is not
exposed as a header — check current usage at
tapetide.com/settings/tokens.
Troubleshooting
Problem | Solution |
| The bridge starts without a token so tools can be listed, but calls need one. Add it to the |
| Token expired. Generate a new one at tapetide.com/settings/tokens |
| Wait for reset (shown in error) or check usage at tapetide.com/settings/tokens |
Server not responding | Ensure Node.js 18+ is installed ( |
Slow first request | Normal — pre-authenticates on startup. Subsequent requests are fast |
Network errors | Check internet. The bridge needs to reach |
Set TAPETIDE_DEBUG=1 for detailed logging to stderr.
Links
tapetide.com — Web platform
tapetide.com/mcp — MCP documentation & setup guide
mcp.tapetide.com — Remote MCP endpoint
npm: tapetide-mcp — npm package
PyPI: tapetide-mcp — Python package (source)
@tapetide_hq — X (Twitter)
GitHub — Source code
Glama — MCP directory listing
Contributing
Issues and pull requests are welcome. For bugs, include the error message and your MCP client name/version.
License
MIT — free to use, modify, and distribute.
Available Tools
55 toolsadd_portfolio_stocksAdd Stocks to PortfolioADestructiveInspect
Add one or more stocks to the user's portfolio, merging duplicates by weighted-average price. Accepts a single add, a bulk list, or holdings the user pasted from a broker CSV/table (parse it into the holdings array yourself). Example: "Add RELIANCE 10 shares at ₹1,350" → holdings:[{symbol:"RELIANCE",quantity:10,avg_price:1350}]. STRIP exchange suffixes before calling — -EQ, -BE, -SM, -ST, -BZ, -BL, -RE, -IV, -RR, .NS, .BO — and pass plain NSE symbols (APS-SM → APS; SME stocks are supported). When the user has stated symbol, quantity and price, add them directly. When you PARSED or inferred the holdings (broker CSV, a pasted table, a screenshot), show the parsed rows for confirmation first, and ask rather than guess a missing or ambiguous field. Use search_stocks if a symbol does not resolve. Call read_me for the full broker-CSV procedure.
| Name | Required | Description | Default |
|---|---|---|---|
| holdings | Yes | Array of stocks to add (1-100 items) |
add_to_watchlistAdd Stocks to WatchlistAIdempotentInspect
Add one or more stocks to the user's watchlist. Idempotent — adding a stock that's already followed is a no-op.
Use cases: • User says "Watch RELIANCE" → single add • User says "Add all Nifty IT stocks to my watchlist" → you look up the symbols, then add them • User says "Track TCS, INFY, WIPRO" → bulk add
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Stock symbols to add to watchlist (e.g. ['RELIANCE', 'TCS']) |
get_adjustment_factorsPrice Adjustment FactorsARead-onlyIdempotentInspect
Get the split/bonus adjustment-factor timeline for a stock, so a raw (unadjusted) price series can be reconstructed from the adjusted one. Returns per-event factor and cumulative factor with ex-dates, plus the reconstruction formula in meta. USE THIS when a price move looks impossibly large and you need to know whether it was a corporate action rather than a real return, or when the user asks for raw/unadjusted prices, or asks how to adjust for splits and bonuses. CRITICAL: the response also carries unquantified_events — rights issues and demergers that are KNOWN but have NO reliable numeric factor (a rights adjustment needs the subscription price; a demerger is not a single number). Never invent a factor for those; tell the user those ex-dates should be excluded or treated with caution. NOTE: factors cover splits and bonuses only. The adjusted series is PRICE-return, not total-return — dividends are not included.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE" or "TRENT". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_batch_quotesBatch Stock QuotesARead-onlyIdempotentInspect
Get current price quotes for multiple stocks at once. Max 20 symbols per request. More efficient than calling get_stock_quote repeatedly.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | REQUIRED. Array of up to 20 stock symbols, e.g. ["RELIANCE","TCS","HDFCBANK"]. Over 20, split across calls. |
get_company_profileCompany ProfileARead-onlyIdempotentInspect
Get detailed company overview — sector, about, pros/cons, fundamentals (PE, PB, market cap, ROE, ROCE, debt/equity), growth metrics, and current quote. Default response is ~3KB.
Use the 'include' param to add optional sections via parallel API calls:
"technicals": RSI, SMA, EMA, MACD, Bollinger Bands, ATR, ADX (~20 indicators)
"ratings": Analyst buy/hold/sell consensus with counts and percentages
"peers": Comparable-company table — the stock's published peer cohort with price, day change, market cap, P/E, P/B, dividend yield, ROE, ROCE, ROA, OPM, debt/equity, TTM sales and net profit, YoY quarterly growth, and promoter holding, plus a per-column median across the cohort. The stock itself is included and flagged
is_self, so it can be ranked against its own peers on any column. Anullmetric means the figure is not published for that company — never treat it as 0.
Example: include ["technicals", "ratings"] for a full analysis view.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE", "TCS", or "HDFCBANK". | |
| ticker | No | Alias for `symbol`. | |
| include | No | Optional extra sections, a list of: technicals, ratings, peers. Fundamentals, growth and pros/cons are already in the base profile; statements are get_financials. | |
| identifier | No | Alias for `symbol`. |
get_corporate_actionsCorporate Actions (alias)BRead-onlyIdempotentInspect
Alias for get_stock_events with type:"corporate_actions". Dividends, splits, bonuses, AGMs for one stock. Example: {"symbol":"ITC"}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20, max 50) | |
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_credit_ratingsCredit RatingsARead-onlyIdempotentInspect
Get credit-rating actions for a company — agency, rating, action (upgrade/downgrade/reaffirm), and outlook over time. A rating change is a forward-looking signal on credit/solvency risk. Use for risk assessment and debt-investor research.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. Stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_document_summaryDocument SummaryARead-onlyIdempotentInspect
Investor digest of ONE parsed filing: summary, highlights, risks, guidance, key metrics, plus links to the PDF and full Markdown. Pass doc_id from list_company_documents, or doc_type for the newest of that type. For the text itself use read_document or download links.markdown_url.
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | No | From list_company_documents. | |
| symbol | No | REQUIRED. Stock symbol, e.g. "RELIANCE". | |
| ticker | No | Alias for `symbol`. | |
| doc_type | No | Newest of this type when doc_id is omitted. | |
| identifier | No | Alias for `symbol`. |
get_earnings_call_summaryEarnings Call SummaryARead-onlyIdempotentInspect
Get AI-generated investor digests of a company's recent earnings (concall) transcripts and investor presentations — a structured summary plus key highlights, risks, management guidance, and headline metrics, grounded in the company's own filings. Use for qualitative fundamental research beyond the numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of recent summaries (default 2, max 5) | |
| symbol | No | REQUIRED. Stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_fii_dii_detailFII/DII Institutional FlowsARead-onlyIdempotentInspect
Get detailed FII/DII institutional flow data:
Daily cash market flows for last 30 trading days (buy/sell/net in crores)
F&O participant positioning (FII/DII/Pro/Client long/short OI)
Weekly, monthly, yearly aggregates
Buy/sell streaks and 5d/30d/1yr cumulative net flows
Optional: cumulative flow chart data with interval param
Essential for understanding institutional money flow in Indian markets.
| Name | Required | Description | Default |
|---|---|---|---|
| chart_interval | No | Include cumulative flow chart data for this interval |
get_fii_dii_flowsFII/DII Flows (alias for get_fii_dii_detail)ARead-onlyIdempotentInspect
Alias for get_fii_dii_detail. Get detailed FII/DII institutional flow data — daily cash market flows, F&O positioning, weekly/monthly/yearly aggregates, buy/sell streaks.
| Name | Required | Description | Default |
|---|---|---|---|
| chart_interval | No | Include cumulative flow chart data for this interval |
get_financialsFinancial StatementsARead-onlyIdempotentInspect
Get financial statements for one company. Sections: quarterly (quarterly P&L, ~13 quarters), profit_loss (annual P&L), balance_sheet, cash_flow, ratios (all annual). Pass section for one statement with every period we hold; omit it to get all sections trimmed to the latest 5 periods each (use periods to widen, e.g. {"symbol":"TCS","section":"quarterly","periods":12}). Each section carries periods (oldest first), data {row: {period: value}}, pct_changes, row_order, and an availability array giving the point-in-time available_from date per period (the real result-declaration date where known, basis:\"reported\", otherwise a regulatory-lag estimate, basis:\"estimated\"). Use available_from for backtests to avoid look-ahead bias. NOTE: available_from reflects original declaration timing only; the values are the latest reported figures and may include later restatements. One symbol per call; for many companies call once per symbol (get_batch_quotes is prices only). ETFs, index funds and bonds have no financial statements.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| periods | No | Latest N periods per section (max 40). Default: all periods when a section is named, 5 per section when it is not. | |
| section | No | One of: quarterly, profit_loss, balance_sheet, cash_flow, ratios. `quarterly` is the quarterly P&L; the other four are annual. Omit for all sections. | |
| quarters | No | Alias for `periods`. | |
| identifier | No | Alias for `symbol`. |
get_forecastsAnalyst ForecastsARead-onlyIdempotentInspect
Get analyst forecasts — EPS, revenue, EBITDA, net income, ROA, ROE, and price estimates. Both quarterly and annual periods with actuals vs estimates comparison, and each estimate's analyst range in bands (low/high). EPS actuals are restated for splits and bonuses; meta.eps_adjustments lists what was rescaled. Useful for understanding market expectations and earnings surprises.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_fpi_sectorsFPI Sector-wise FlowsARead-onlyIdempotentInspect
Get FPI (Foreign Portfolio Investor) sector-wise investment data. Returns AUM share per sector, fortnight change, 1-year cumulative flow, and sparkline data. Sorted three ways: by AUM, by fortnight change, and by 1Y flow. Useful for understanding which sectors foreign investors are buying/selling.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
get_identifiers_asofIdentifiers Held By a Stock As-Of a DateARead-onlyIdempotentInspect
The REVERSE of resolve_identifier_asof: given a stock_id and a date, return which symbol and ISIN that company held at that time. USE THIS to label historical output correctly — e.g. reporting a 2019 backtest position under the ticker it actually traded as then, rather than its current name. Also useful for explaining a rename to a user who is confused why a symbol they remember no longer resolves. stock_id comes from other tools' meta.stock_id; this tool does not accept a symbol. Coverage bounds are stated in the response — outside them the answer is out_of_coverage, not 'no identifiers'.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | As-of date, YYYY-MM-DD. Defaults to today (IST) when omitted. | |
| stock_id | No | REQUIRED. The internal stock id, as returned in other tools' meta.stock_id. |
get_index_historyIndex Level HistoryARead-onlyIdempotentInspect
Get the historical LEVEL series (OHLC + PE/PB/dividend yield) for a single NSE INDEX — Nifty 50, Nifty Bank, Nifty IT, Nifty Oil & Gas, India VIX, and ~140 more. Official NSE index data. Use for 'what did Nifty IT close at on ', 'Nifty Bank level history', 'India VIX over the last month', or index valuation trend. This is the INDEX counterpart of get_price_history (which handles individual stocks only). To rank or compare MULTIPLE indices by return, use get_index_performance instead.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Alias for `interval`: a lookback in calendar days, mapped to the smallest served window that covers it. | |
| index | No | Alias for `index_name`. | |
| range | No | Alias for `interval`. | |
| symbol | No | Alias for `index_name`. | |
| interval | No | LOOKBACK window, one of 1m, 3m, 6m, 1y, 2y, max (default 3m). Bars are daily up to 1y, weekly for 2y/max. Not a bar size: intraday is not served. | |
| index_name | No | REQUIRED. Index name, e.g. 'Nifty 50', 'Nifty IT', 'Nifty Oil & Gas' |
get_index_membership_asofIndex Membership As-Of a DateARead-onlyIdempotentInspect
Was a stock a constituent of an index on a specific historical date? Returns a FOUR-STATE answer, never a bare yes/no: present (proven in range), uncertain (inside an unobserved bracket around a join/leave — plausible but NOT proven), absent (proven not a member, within coverage), or out_of_coverage (outside the observed window — we cannot answer). USE THIS for any 'was X in the Nifty 50/500 on ' question, and for point-in-time universe construction or survivorship-bias-aware backtests. Do NOT infer historical membership from today's constituent list — that is exactly the survivorship bias this tool exists to avoid. REPORT UNCERTAINTY HONESTLY: treat uncertain and out_of_coverage as NOT tradeable signal and say so; never silently collapse either into absent. The response states its own meta.coverage window plus meta.freshness.lag_days — trust answers only up to coverage.answerable_through.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | As-of date, YYYY-MM-DD. Defaults to today (IST) when omitted. | |
| index | No | REQUIRED. Index name, e.g. "Nifty 50", "Nifty 500", "Nifty Midcap 150". | |
| symbol | No | REQUIRED. The stock symbol, e.g. "TRENT". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_index_performanceIndex Performance RankingARead-onlyIdempotentInspect
Rank NSE indices by RETURN over recent completed weeks or months, using official NSE index closing levels. Returns per-period % plus cumulative % for each index, sorted best-to-worst. Covers ~140 indices: all sectoral (IT, Bank, Auto, Pharma, FMCG, Metal, Realty, Energy, Oil & Gas, PSU Bank, Private Bank, Media, Healthcare, Consumer Durables, Power, Insurance, Telecom, Chemicals, Cement, Capital Goods, NBFC, Retail and more), plus broad market/size, thematic and strategy/factor indices. USE THIS for 'rank sectoral indices by 3-week return', 'which sector performed best last month', 'top gaining sectors', or weekly close-to-close index returns — do NOT compute a sector return from its constituents, which is only an approximation. Only COMPLETED periods are counted; the in-progress week/month is excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max indices to return after ranking (1-50) | |
| order | No | 'gainers' = best cumulative first, 'losers' = worst first | gainers |
| periods | No | How many COMPLETED periods to measure (1-12, e.g. 3 = last 3 completed weeks) | |
| category | No | Restrict to one index family. Use 'sectoral' for sector rankings — that is almost always what a 'which sector' question means. Omit for all indices. | |
| granularity | No | Period length: 'week' = weekly close-to-close, 'month' = monthly | week |
| index_names | No | Explicit index names, e.g. ['Nifty IT','Nifty Bank']. Overrides category. Matched case-insensitively against the catalog. |
get_india_vixIndia VIX (Volatility Index)ARead-onlyIdempotentInspect
Get the India VIX — the market's expected near-term volatility (the 'fear gauge'). Returns the latest value, daily change, and recent history. Rising VIX = rising fear/uncertainty; falling VIX = calm. Use for market-timing and risk context.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
get_live_quoteLive Quote (alias)ARead-onlyIdempotentInspect
Alias for get_stock_quote. Latest price for one symbol. Example: {"symbol":"RELIANCE"}.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_market_dataMarket Data FeedsARead-onlyIdempotentInspect
Get one of today's market-wide data feeds. Pass dataset to choose:
deals — bulk & block deals for the last 7 days (symbol, name, client, buy/sell, qty, price, value), newest and largest first.
fno_ban — F&O ban list: stocks at or above 80% of MWPL, with mwpl_pct and status (in_ban from the exchange's published ban list, else near_ban).
deliveries — latest session's highest delivery-% stocks (>=50%, traded value >= Rs 1 Cr), indicating genuine buying over speculation.
ipo — current and upcoming IPOs: dates, price band, issue size, and subscription by category.
mtf — Margin Trading Facility: most-funded stocks with funded qty/value in Rs crore and change vs the previous session (market-wide book not available).
slbm — Stock Lending & Borrowing: lent stocks with lending yield and traded qty. High yield = strong short-selling demand.
signals — technical signals from the latest session: 52-week highs/lows, RSI extremes, MACD, volume spikes, 200-day trend. For index PE/PB valuation history use market_valuations; for an index's constituent heatmap use market_heatmap; for a single stock's own deal history use get_stock_deals.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset | No | REQUIRED. Which feed to fetch: deals, fno_ban, deliveries, ipo, mtf, slbm, signals. |
get_market_newsMarket NewsARead-onlyIdempotentInspect
Get latest market-wide news across all categories. Returns sentiment-tagged articles (positive/negative/neutral) with category, source URL, and related stock symbols.
Categories include: companies, global, markets, ipo, government-policy-and-regulation, debt-markets, equity-markets, investment-ideas, technology, real-estate, infrastructure.
Use this for broad market news. For stock-specific news, use get_stock_events with type "news" instead.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20, max 50) | |
| category | No | Filter by category (e.g. 'global', 'markets', 'ipo', 'companies') | |
| sentiment | No | Filter by sentiment |
get_market_pulseMarket PulseARead-onlyIdempotentInspect
Get today's market snapshot — FII/DII net flows (buy/sell/net in crores), Nifty 50 valuations (PE/PB/DY), and the India VIX volatility gauge. This is the quick daily-overview tool. For the technical signal scanner (52-week highs/lows, RSI extremes, MACD, volume spikes) use get_market_data with dataset: "signals"; for top gainers/losers/most-active use get_trending_stocks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
get_observation_statusPer-Day Observation StatusARead-onlyIdempotentInspect
For every CALENDAR day in a lookback window, get why a price is or is not present: traded, weekend, holiday, pre_listing, delisted, or no_print. USE THIS when a price series has gaps and the user needs to know whether a missing day was a market holiday, a suspension, a pre-listing date, or genuinely missing data — and ESPECIALLY before computing returns over a gappy series. A missing price is NOT a zero return: no_print means a listed trading day with no print and should be treated as not-a-return (carry forward or mask), never as 0%. HONESTY LIMITS in the response's classification_limits: no_print deliberately does NOT distinguish an illiquid no-trade from a suspension from missing data (no per-day suspension feed exists, so a specific reason would be fabricated), and pre_listing can only be asserted where a listing date is known — its absence is not evidence the stock was trading.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Calendar days to look back (default 365, max 10000) | |
| symbol | No | REQUIRED. The stock symbol, e.g. "TRENT". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_option_chainIndex Option Chain (IV, Greeks, OI by strike)ARead-onlyIdempotentInspect
Get the INDEX OPTION CHAIN with implied volatility, Greeks, bid/ask and open interest by strike. Use for any option-chain, IV, Greeks, open-interest, PCR or max-pain question — 'show me the NIFTY option chain', 'what is the ATM IV', 'where is max pain', 'put-call ratio', 'OI by strike'. Covers NIFTY, BANKNIFTY, FINNIFTY, MIDCPNIFTY ONLY — we do not collect a chain for individual stocks, so for a stock-option question say the chain covers index options only rather than implying we have no options data at all; get_option_iv_history DOES cover ~556 underlyings including stocks. IMPORTANT: this is an END-OF-DAY STAMPED snapshot, not a streaming live tick. Read snapshot_ts and state it (e.g. 'as of the 7 Aug close') — never imply an intraday real-time quote. iv_pct and atm_iv_pct are PERCENT (10.87 means 10.87%), not decimals. NULLS ARE UNPUBLISHED, NEVER ZERO: a leg flagged iv_unsolved has null IV and Greeks (the solver skips deep-in-the-money legs), illiquid means no OI/volume so its premium is indicative only, and pcr_undefined means the put/call ratio cannot be computed. Render these as '—'; never state a 0% IV, a 0 delta or a PCR of 0. Also read atm_offset (signed strike distance from ATM) and available_expiries. Present the chain as data: report the numbers and what they describe. Do NOT recommend a strike, a strategy, or a direction to trade.
| Name | Required | Description | Default |
|---|---|---|---|
| expiry | No | Expiry as YYYY-MM-DD. Omit for the nearest expiry in the snapshot. | |
| symbol | No | REQUIRED. Index underlying: NIFTY | BANKNIFTY | FINNIFTY | MIDCPNIFTY (index options only). | |
| ticker | No | Alias for `symbol`. | |
| strikes | No | Strikes to return EACH SIDE of ATM (default 11, max 25) | |
| identifier | No | Alias for `symbol`. |
get_option_iv_historyOption IV History (ATM IV, IV rank, PCR series)ARead-onlyIdempotentInspect
Get the HISTORICAL option-analytics time series for an underlying — ATM implied volatility, IV rank, IV percentile, realised vol, put-call ratio (OI and volume), max pain and 25-delta skew, one point per session. Use for 'is IV high right now', 'IV rank of RELIANCE', 'has volatility been rising', or any volatility-regime / IV-vs-realised comparison. Covers ~556 underlyings INCLUDING individual stocks (unlike get_option_chain, which is index-only). UNITS: every IV field is a PERCENT (10.55 means 10.55% annualised) — never multiply by 100 again. iv_rank_pct and iv_percentile_pct are percents too, not 0-1 scores, and they are DIFFERENT measures: rank is position in the trailing high-low band, percentile is the share of sessions below the current reading. Read bar_interval — ranges of 2y+ are rolled up WEEKLY, so counting points as trading days will be wrong; one call returns at most the 400 most recent bars, so quote the from_date/to_date returned rather than assuming full history. The response also states its own coverage and flags spot_is_proxy — respect both. Report the numbers and what they describe. Do NOT recommend a trade, a strike, or a volatility position.
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | Lookback window (default 1y). 2y and longer return WEEKLY bars — read `bar_interval`. | |
| symbol | No | REQUIRED. Underlying symbol — a stock like "RELIANCE" or an index like "NIFTY". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_options_analyticsOptions & Derivatives AnalyticsARead-onlyIdempotentInspect
Get derivatives analytics for a stock — implied volatility (ATM IV, IV rank, IV percentile), realized volatility, put-call ratio (OI and volume), max pain strike, 25-delta skew, and call/put open interest, broken down per expiry. Use for options strategy, volatility analysis, and gauging derivatives-market positioning.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. Stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_price_historyPrice History (OHLCV)ARead-onlyIdempotentInspect
Get OHLCV price history as row-per-day format — date, open, high, low, close, volume, delivery %. Supports configurable lookback days and daily/weekly aggregation. Default 365 days (max 2000). Use this for price analysis, trend detection, and technical calculations. IMPORTANT: days is CAPPED at 2000, so a longer request is silently shortened unless you read meta.window. Always check meta.window.truncated before treating the series as the full requested history — when it is true, meta.window.requested_days tells you what you asked for and meta.window.next_cursor gives the end_date to pass on a follow-up call to page further back. For a full multi-year series, page with end_date until truncated is false.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to look back (default 365, max 2000 — larger values are capped, see meta.window.truncated) | |
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| end_date | No | Optional YYYY-MM-DD upper bound (inclusive) for the window — the cursor for paging further back through history. Pass the `meta.window.next_cursor` from a truncated response to fetch the preceding page. Omit for the most recent window. | |
| interval | No | Bar size: "daily" (default) or "weekly" — the AGGREGATION of each row, NOT the length of the window. Use `days` for the window (e.g. days:5 for the last 5 sessions). Only end-of-day bars exist: intraday values like "1m"/"5m"/"15m"/"1h" and "monthly" are NOT supported and return an explanatory error. | daily |
| identifier | No | Alias for `symbol`. |
get_promoter_pledgePromoter Share PledgeARead-onlyIdempotentInspect
Get the promoter share-pledge history for a stock — the percentage of promoter holding pledged over recent quarters plus recent pledge creation/release events. High or rising pledge levels are a classic governance red flag. Use to assess promoter financial stress and risk.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. Stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_screener_ratiosScreener Ratio LookupARead-onlyIdempotentInspect
Search or list available financial ratios for the screen_stocks tool. Pass a keyword to search (e.g., 'cash flow', 'debt', 'promoter') or omit for the full catalog of 326 ratios. Returns the exact ratio names that screen_stocks queries accept.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search keyword (e.g., 'cash', 'debt', 'growth'). Omit for full catalog. |
get_stock_dealsBulk, Block & Insider DealsARead-onlyIdempotentInspect
Get large-trade history for a stock — bulk deals, block deals, insider (designated-person) trades, and SAST (substantial acquisition) disclosures, with the counterparty name, buy/sell side, quantity, price, and value. Answers 'who has been buying or selling X?'. Optionally filter by deal type.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter to a single deal type. Omit for all types. | |
| limit | No | Max deals (default 25, max 100) | |
| symbol | No | REQUIRED. Stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_stock_eventsStock EventsARead-onlyIdempotentInspect
Get stock events — news, corporate actions, or company filings. Filter by type to get only what you need.
Types:
"news": Sentiment-tagged news (positive/negative/neutral) with category and source URL
"corporate_actions": Dividends, stock splits, bonuses, AGMs, rights issues with ex-date and LTP
"filings": Quarterly results, investor presentations, concall transcripts/audio, annual reports, credit ratings, regulatory announcements. Doc types include 'result', 'investor_presentation', 'concall_transcript', 'concall_audio', 'concall' (legacy), 'annual_report', 'announcement', 'credit_rating'. Combines two filing catalogues, so the latest quarter and exact filing dates are covered.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Event type to fetch. Defaults to "news" when omitted. | news |
| limit | No | Max results (default 20, max 50) | |
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_stock_newsStock News (alias)ARead-onlyIdempotentInspect
Alias for get_stock_events with type:"news". Sentiment-tagged news for one stock. Example: {"symbol":"TCS"}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20, max 50) | |
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_stock_ownershipStock OwnershipBRead-onlyIdempotentInspect
Get ownership data for a stock — dividend history and mutual fund holdings. Dividends include ex-date, amount, type (interim/final), and yield. MF holdings show which schemes hold this stock, their quantity, and % of AUM.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_stock_quoteStock QuoteARead-onlyIdempotentInspect
Get the current/latest stock price quote — LTP, change, change %, volume, market cap, PE, PB, 52-week high/low. For multiple stocks, use get_batch_quotes instead.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. The stock symbol to quote, e.g. "RELIANCE" or "TCS". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_tapetide_scoreTapetide Score (one stock)ARead-onlyIdempotentInspect
Get the Tapetide Score for ONE stock — a deterministic, non-LLM 0-100 composite rating from the latest complete scoring run, plus the six pillar sub-scores (quality, valuation, growth, momentum, financial_health, ownership), their weights, the coarse band and its label, the percentile within that run, data-confidence, coverage, and any governance caps or red flags. USE THIS for 'what is Tapetide's score for X', 'why is X rated Y', or as the rating input to a fundamental write-up. HOW TO READ IT: (1) the band matters more than the exact number — the score distribution is narrow and a 1-3 point gap is inside the noise; (2) a pillar can be null, meaning the underlying data is unavailable — it is NOT a zero, so never average over it or call the company weak on that pillar; (3) status: "insufficient_data" means no score is publishable for this stock — report that, do not substitute a number from elsewhere; (4) caps_applied / red_flags mean a governance overlay limited the score, which is itself worth saying; (5) there is deliberately NO category label — say what the pillar numbers show, in your own words, not a stock phrase. Decision-support only. The Tapetide Score is data analysis, not investment advice. Tapetide is not a SEBI-registered research analyst or investment adviser. Bands are intentionally coarse; small point differences may not be meaningful.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | REQUIRED. The stock symbol, e.g. "RELIANCE" or "NATIONALUM". | |
| ticker | No | Alias for `symbol`. | |
| identifier | No | Alias for `symbol`. |
get_trending_stocksTrending StocksARead-onlyIdempotentInspect
Get trending stock summary — top gainers, losers, and high-volume stocks from Nifty 500. Quick snapshot of market movers today.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
get_user_portfolioUser Portfolio HoldingsARead-onlyIdempotentInspect
Get the authenticated user's current stock portfolio with live prices. Returns each holding's symbol, company name, quantity, average buy price, current market price, P&L (absolute + %), invested value, portfolio weight %, sector, industry, market cap, PE ratio, dividend yield, and company classification (large/mid/small cap), plus portfolio-level totals.
Returns an empty list when the user has not added any holdings. Holdings can be added with add_portfolio_stocks, including from a pasted broker CSV export.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
get_watchlistUser WatchlistARead-onlyIdempotentInspect
Get the user's stock watchlist — the stocks they are following, newest first. Returns symbol, company name, sector, industry and the live quote (price, change, change %, previous close; null when unpriced) for each stock, plus a gainers/losers/unchanged tally of the whole list in movers. Paged: up to 50 stocks per call; when has_more is true, call again with offset: next_offset to get the rest (do this before acting on "all" of a long watchlist).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Stocks per page (default and max 50; larger values are clamped). | |
| offset | No | Start position for paging (default 0). Pass `next_offset` from the previous page. |
list_company_documentsList Company DocumentsARead-onlyIdempotentInspect
Index of a company's filings parsed to text (concall transcripts, annual reports, presentations, IPO documents): doc_id, type, period, date, num_pages, flags, and per-document links (raw PDF, full Markdown, summary Markdown). No prose. The doc_id is the input get_document_summary and read_document take; the links let the user open or download the document. Newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No | Only filings on/after YYYY-MM-DD. | |
| symbol | No | REQUIRED. Stock symbol, e.g. "RELIANCE". | |
| ticker | No | Alias for `symbol`. | |
| doc_types | No | Restrict to these types (default all). | |
| identifier | No | Alias for `symbol`. |
market_heatmapStock HeatmapARead-onlyIdempotentInspect
Get a stock heatmap for an index — all constituent stocks with market cap, PE, PB, price changes (1d/1w/1m/3m/6m/1y/5y), volume, and sector.
Available indices: see the index parameter (Nifty broad, size and sector indices plus Sensex).
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Index slug (default nifty-50). One of: nifty-50, sensex, nifty-next-50, nifty-100, nifty-200, nifty-500, nifty-midcap-50, nifty-midcap-100, nifty-midcap-150, nifty-midcap-select, nifty-total-market, nifty-smallcap-50, nifty-smallcap-100, nifty-smallcap-250, nifty-microcap-250, nifty-midsmallcap-400, nifty-auto, nifty-bank, nifty-financial, nifty-fmcg, nifty-healthcare, nifty-it, nifty-media, nifty-metal, nifty-pharma, nifty-private-bank, nifty-psu-bank, nifty-realty, nifty-consumer-durables, nifty-commodities, nifty-cpse, nifty-energy, nifty-infra, nifty-mnc, nifty-pse, nifty-services. |
market_valuationsMarket ValuationsARead-onlyIdempotentInspect
Get index valuation metrics (PE, PB, Dividend Yield) over time. Default: Nifty 50, weekly data, 5 years. Useful for assessing whether the market is overvalued or undervalued relative to historical averages.
index_code accepts EITHER a slug (recommended, like market_heatmap) or a raw numeric code: nifty-50 (13), nifty-500 (19), nifty-bank (25), nifty-midcap-50 (51), nifty-it (27), nifty-next-50 (53).
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | Years of history (default 5, max 20) | |
| index_code | No | Index as a slug ("nifty-50", "nifty-bank", "nifty-it", "nifty-500", "nifty-midcap-50", "nifty-next-50") or its numeric code. Default "nifty-50". | nifty-50 |
read_documentRead Document TextARead-onlyIdempotentInspect
Markdown text of a parsed filing by doc_id and page range, with markers to cite. Max 12 pages / 24000 chars per call (max_chars up to 60000); the result states pages_returned, next_pages, and links to the full Markdown and PDF. Annual reports run 100-400 pages: read the sections you need, or download links.markdown_url to search the whole file.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | 1-based inclusive range: "1-8", "12", "40-". Default "1-12". | |
| doc_id | Yes | From list_company_documents. | |
| symbol | No | REQUIRED. Stock symbol, e.g. "RELIANCE". | |
| ticker | No | Alias for `symbol`. | |
| max_chars | No | ||
| identifier | No | Alias for `symbol`. |
read_meTapetide MCP GuideARead-onlyIdempotentInspect
Returns the complete guide to this server — all tools organised by category, the SEBI disclaimer requirement, and usage patterns for common research tasks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
remove_from_watchlistRemove Stocks from WatchlistADestructiveIdempotentInspect
Remove one or more stocks from the user's watchlist.
Use cases: • User says "Stop watching INFY" → single remove • User says "Clear my watchlist" → remove all (get watchlist first, paging with next_offset until has_more is false, then remove all symbols)
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Stock symbols to remove from watchlist (e.g. ['INFY', 'TCS']) |
remove_portfolio_stocksRemove Stocks from PortfolioADestructiveIdempotentInspect
Remove one or more stocks from the user's portfolio entirely.
Use cases: • User says "Remove INFY from my portfolio" → single delete • User says "Remove all IT stocks" → you identify the symbols from get_user_portfolio, then delete them • User says "Clear my portfolio" → remove all symbols
IMPORTANT: Always confirm with the user before removing stocks. This action cannot be undone. For partial sells (reducing quantity), use update_portfolio_stock instead.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Array of stock symbols to remove (e.g. ['INFY', 'TCS']) |
resolve_identifier_asofResolve a Symbol/ISIN As-Of a DateARead-onlyIdempotentInspect
Resolve a historical symbol or ISIN to the company that held it ON a given date. USE THIS when working with old data whose ticker may since have been renamed, reused, or reassigned — e.g. a 2018 holdings file, an old research note, or a backtest that must not treat one company as two securities (or worse, merge two different companies because a ticker was recycled after a delisting). Returns present | uncertain | not_found | out_of_coverage with certainty ranges. uncertain means the date falls in an open bracket around a rename/ISIN change — quarantine it rather than asserting the mapping. The response states its own coverage window; a date outside it returns out_of_coverage and must not be reported as 'no such symbol'.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | As-of date, YYYY-MM-DD. Defaults to today (IST) when omitted. | |
| kind | No | Which identifier kind `value` is (default nse_symbol) | nse_symbol |
| value | No | REQUIRED. The identifier value, e.g. "TRENT" or "INE849A01020". |
run_preset_screenFind the right screening toolARead-onlyIdempotentInspect
Not a standalone tool. For ready-made movers use get_trending_stocks; for custom fundamental screens use screen_stocks; for technical screens use screen_stocks_technical.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | No | Ignored — see the redirect message. |
scan_moversMarket Movers (alias)ARead-onlyIdempotentInspect
Alias for get_trending_stocks. Top gainers, losers, and most-active stocks today.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
screen_stocksStock Screener (Fundamental)ARead-onlyIdempotentInspect
Screen Indian stocks by fundamental criteria using 326 financial ratios (valuation, profitability, growth, balance sheet, cash flow, shareholding, with 3Y/5Y/10Y history). For technical screens (RSI, MACD, moving averages), use screen_stocks_technical instead.
QUERY SYNTAX: {Ratio Name} {operator} {value}[%] Operators: >, <, =, >=, <= Connectors: AND, OR (each on its own line) Cross-field comparison is allowed: Current price > DMA 200 Max length 1500 characters. Ratio names must be EXACT.
COMMON RATIO NAMES: Market Capitalization, Current price, Price to Earning, Price to book value, Dividend yield, Return on equity, Return on capital employed, OPM, EPS, Net profit, Sales, Sales growth 3Years, Profit growth 3Years, Debt to equity, Current ratio, Promoter holding, FII holding, Pledged percentage, DMA 50, DMA 200, RSI, Piotroski score, Altman Z Score, Number of equity shares. Call get_screener_ratios (searchable, full 326-ratio catalog) for anything not listed — do not guess a name.
EXAMPLE: "Market Capitalization > 5000 AND\nPrice to Earning < 15 AND\nReturn on capital employed > 22"
Note: "last year" in a ratio name means the most recent annual result. To identify an unknown stock from partial financials, call read_me for the disambiguation procedure.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| sort | No | Sort by ratio name (e.g., 'Market Capitalization') | |
| limit | No | Results per page (default 25, max 50 — higher values are clamped) | |
| order | No | Sort direction | |
| query | No | REQUIRED. Screener query using ratio names, operators, and AND/OR connectors. Example: "Market Capitalization > 5000 AND Return on capital employed > 22". | |
| latest | No | Only companies with latest quarter results |
screen_stocks_technicalStock Screener (Technical)ARead-onlyIdempotentInspect
Screen Indian stocks by technical indicators (RSI, MACD, moving averages, crossovers, volume, momentum) on real-time data. For fundamental screening (PE, ROCE, Sales, Growth), use screen_stocks instead.
Each filter is { left: field, operation, right: number | field }. Operations: "greater", "less", "equal", "in_range" (right is [min,max]), "crosses_above", "crosses_below" (crossover today).
FIELDS: close, open, high, low, volume, change, change_abs, market_cap_basic | SMA5/10/20/50/100/200, EMA5/10/20/50/100/200 | RSI, RSI[1], MACD.macd, MACD.signal, Stoch.K, Stoch.D, CCI20, ADX, AO, Mom, ATR | BB.upper, BB.lower | Pivot.M.Classic.R1/R2/S1/S2 | Recommend.All (-1..1), Recommend.MA, Recommend.Other | Perf.W, Perf.1M, Perf.3M, Perf.6M, Perf.Y, Perf.YTD | average_volume_10d_calc, average_volume_30d_calc, relative_volume_10d_calc | price_earnings_ttm, price_book_fq, dividend_yield_recent
⚠️ market_cap_basic is absolute ₹, NOT Cr (1 Cr = 10,000,000), so 5000 Cr = 50000000000.
EXAMPLE — oversold large-caps: [{"left":"RSI","operation":"less","right":30},{"left":"market_cap_basic","operation":"greater","right":50000000000}]
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| columns | No | Fields to return | |
| filters | No | REQUIRED. Filter conditions (AND logic). Example: [{"left":"RSI","operation":"less","right":30}] | |
| sort_by | No | Sort field | market_cap_basic |
| sort_order | No | desc |
screen_tapetide_scoresScreen & Rank by Tapetide ScoreARead-onlyIdempotentInspect
List and rank stocks by the Tapetide Score, filtered by size bucket, band, score window, sector, minimum data-confidence and symbol/name search. Rows come back in the server's final order with score, band, pillars, sector, size, market cap and a next-page cursor. USE THIS for 'which large caps score highest', 'show me Strong-band pharma stocks', or any rank/filter-by-Tapetide-Score question — same data and ordering as the tapetide.com ranking page. IMPORTANT, or you will describe the results wrongly: (1) present rows by BAND, never as an ordinal '#1, #2, #3' leaderboard — nothing has ever scored above 76 and neighbouring scores are not meaningfully different; (2) the DEFAULT view is large+mid cap at confidence >= 75, a filtered slice and not the whole market, so state the active filters (meta.counts) alongside any ranking; (3) sizes:["all"] adds small/micro caps — flag their liquidity risk (market cap is a size proxy, not liquidity); (4) quote meta.snapshot.score_date and reuse next_cursor to stay on that run. These are stocks matching the given Tapetide Score criteria, NOT investment recommendations. Decision-support only. The Tapetide Score is data analysis, not investment advice. Tapetide is not a SEBI-registered research analyst or investment adviser. Bands are intentionally coarse; small point differences may not be meaningful.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Substring search on symbol or company name. | |
| sort | No | Sort key, default "band" (coarse tiers first — the honest default). "score" is exact composite order; also confidence, market_cap, name. | |
| bands | No | Score bands to include: "70-plus" (Strong), "60-69" (Good), "50-59" (Average), "30-49" (Weak), "below-30" (Poor). Omit for all bands. There is no 80+ band. | |
| limit | No | Rows per page (default 50, max 100). | |
| order | No | Direction, default "desc". | |
| sizes | No | Size buckets. Default ["large","mid"]. Use ["all"] for the full scored universe (dominated by micro caps by count — mention the liquidity caveat if you do). | |
| cursor | No | Pass `meta.next_cursor` from the previous response to get the next page. The run date is embedded in it, so paging stays pinned to one scoring run. | |
| sectors | No | Sector names as returned in `meta.facets.sectors` (e.g. "Metals & Mining"). Omit for all sectors. | |
| max_score | No | Maximum composite score. | |
| min_score | No | Minimum composite score. | |
| min_confidence | No | Minimum data-confidence, default 75. Lowering it admits stocks with thinner data; the response reports how many the bar excluded. |
search_stocksSearch Indian StocksARead-onlyIdempotentInspect
Search ~8,200 Indian stocks by name, symbol, BSE code, or ISIN. Also matches common/brand names and post-rename aliases (e.g. 'Zomato'→ETERNAL, 'Infosys'→INFY). Listed companies rank first, then by match (exact symbol/code > prefix > word > contains), larger companies first within each; queries of 4+ characters tolerate typos. Each result's symbol is what the per-stock tools take as input.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 10, max 50) | |
| query | No | REQUIRED. The search text — a company name, symbol, BSE code, or ISIN. Example: "reliance" or "TCS". | |
| sector | No | Filter by sector (e.g. 'Information Technology') | |
| industry | No | Filter by industry (e.g. 'Private Bank') |
update_portfolio_stockUpdate Portfolio StockADestructiveInspect
Update the quantity and/or average price of an existing stock in the user's portfolio.
Use cases: • User says "I bought 10 more RELIANCE at ₹1,400" → you must calculate the new total qty and weighted avg price, then call this tool • User says "Change my TCS quantity to 50" → direct update • User says "I sold 5 shares of INFY" → reduce quantity (calculate new qty = old - 5)
IMPORTANT workflow for additional purchases:
First call get_user_portfolio to get current quantity and avg_price
Calculate: new_qty = old_qty + additional_qty
Calculate: new_avg = (old_qty × old_avg + additional_qty × purchase_price) / new_qty
Call this tool with the NEW total quantity and NEW weighted average price
For partial sells:
new_qty = old_qty - sold_qty (avg_price stays the same)
If new_qty = 0, use remove_portfolio_stocks instead
Both quantity and avg_price are required — always provide the final values.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock symbol to update (e.g. RELIANCE) | |
| quantity | Yes | New TOTAL quantity (not the additional amount) | |
| avg_price | Yes | New average buy price per share in ₹ |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
55 tool updates
v1.0.9- First observed
add_portfolio_stocks - First observed
add_to_watchlist - First observed
get_adjustment_factors - First observed
get_batch_quotes - First observed
get_company_profile - First observed
get_corporate_actions - First observed
get_credit_ratings - First observed
get_document_summary - First observed
get_earnings_call_summary - First observed
get_fii_dii_detail - First observed
get_fii_dii_flows - First observed
get_financials - First observed
get_forecasts - First observed
get_fpi_sectors - First observed
get_identifiers_asof - First observed
get_index_history - First observed
get_index_membership_asof - First observed
get_index_performance - First observed
get_india_vix - First observed
get_live_quote - First observed
get_market_data - First observed
get_market_news - First observed
get_market_pulse - First observed
get_observation_status - First observed
get_option_chain - First observed
get_option_iv_history - First observed
get_options_analytics - First observed
get_price_history - First observed
get_promoter_pledge - First observed
get_screener_ratios - First observed
get_shareholding - First observed
get_stock_deals - First observed
get_stock_events - First observed
get_stock_news - First observed
get_stock_ownership - First observed
get_stock_quote - First observed
get_tapetide_score - First observed
get_trending_stocks - First observed
get_user_portfolio - First observed
get_watchlist - First observed
list_company_documents - First observed
market_heatmap - First observed
market_valuations - First observed
read_document - First observed
read_me - First observed
remove_from_watchlist - First observed
remove_portfolio_stocks - First observed
resolve_identifier_asof - First observed
run_preset_screen - First observed
scan_movers - First observed
screen_stocks - First observed
screen_stocks_technical - First observed
screen_tapetide_scores - First observed
search_stocks - First observed
update_portfolio_stock
TDQS
Scored across 55 tools
Most core tools target distinct resources (quotes, financials, options, documents, point-in-time data), but there are five explicit aliases (scan_movers, get_live_quote, get_stock_news, get_corporate_actions, get_fii_dii_flows) plus run_preset_screen that duplicate other tools, and market-wide tools like get_market_pulse/get_market_data/get_trending_stocks overlap. Descriptions do label the aliases clearly, which mitigates but does not eliminate the confusion.
Names are consistently snake_case, largely following get_/list_/screen_/add_/remove_ verb_noun patterns. Minor deviations exist where some tools drop the verb (market_valuations, market_heatmap) or use bare imperatives (read_me, read_document), but the convention is otherwise predictable.
At 55 tools this is well past the heavy threshold, and the count is inflated by five pure aliases and a non-standalone redirect tool (run_preset_screen). The domain is broad enough to justify many tools, but the surface is too large and includes redundant entries that should have been consolidated.
Coverage is exceptionally thorough: full read surface for quotes, fundamentals, technicals, options/derivatives, ownership, deals, credit, filings, plus point-in-time/survivorship-aware tools, and full CRUD for portfolio and watchlist. No obvious dead ends for the stated domain.
Maintenance
Related MCP Connectors
Live crypto + IDX stock market intelligence for AI agents — 19 tools, no API key.
Unified financial infrastructure connecting AI agents directly to trade live/demo brokerage accounts, Web3 non-custodial wallets, real-time market data across equities, ETFs, crypto, forex, options, DeFi swaps, and prediction markets, institutional research feeds, and algorithmic strategy backtesters.
Hosted MCP server for Indian NSE/BSE stock research: 59 tools for quotes, financials and ratios, peers, shareholding and pledge, filings with extracted facts, screens, F&O and FII/DII context. Source and freshness on every answer; no buy/sell calls.
Connect brokerage accounts to AI assistants: holdings, orders, asset lookup, and approved trading.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to query live NSE & BSE stock market data, with 55 tools covering quotes, financials, screeners, FII/DII flows, option chains, and company filings.55MIT
- AlicenseAqualityCmaintenanceGives AI assistants live Indian market data without any API keys, spanning NSE quotes and indices, option chains with Greeks, max pain and OI analytics, company financials, shareholding and corporate actions, plus mutual fund NAVs and trailing returns. It also ships research, market-brief and options-positioning prompts so users can compare stocks, trace sector leadership or size up an expiry through natural language.213MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants to search, screen, and analyze 8,200+ NSE and BSE listed securities through 55 tools covering live quotes, financials, technical indicators, FII/DII flows, option chains, filings, IPOs, bulk deals, and portfolio P&L.-
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants to search, screen and analyze all 8,200+ NSE and BSE listed stocks, covering live quotes, financials, technical indicators, FII/DII flows, option chains, filings, IPOs and portfolio tracking through 55 tools.-