The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Stock Research MCP listing page.
The Model Context Protocol server for Indian stock markets — 52 tools to search, screen & analyze all 8,200+ NSE and BSE stocks from Claude, ChatGPT, Cursor & any AI assistant
Documentation • Quick Start • 52 Tools • Example Prompts • npm
Tapetide MCP Server is a Model Context Protocol server that connects AI assistants to real-time Indian stock market data. It covers all ~8,200 stocks listed on NSE and BSE — from large-cap Nifty 50 to SME stocks.
Ask your AI to look up any stock, run a screener with 326 fundamental filters or real-time technical indicators, pull quarterly financials, check analyst consensus ratings, track your portfolio P&L, monitor FII/DII institutional flows, or get today's bulk deals — all through natural language.
Compatible with: Claude Desktop, Claude Code, ChatGPT, Cursor, Windsurf, Kiro, VS Code, Codex, Zed, Gemini, Grok, OpenCode, Antigravity, and any MCP-compatible client.
Add this URL directly in your AI chat app:
Authentication happens automatically via Google OAuth. No token needed.
For code editors that support URL-based MCP servers with custom headers:
For stdio-based MCP clients. No cloning or building required — runs via npx:
Node.js 18+ required for the local option. Run
node --versionto check.
The npm package is a lightweight stdio bridge with zero runtime dependencies. It:
User-Agent, and echoes the negotiated protocol versionAll 52 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.
| 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) | Authorization: Bearer tpt_rt_... header | Code editors with URL-based MCP (VS Code, Kiro, Zed) |
| Personal Token (local) | TAPETIDE_TOKEN env var via npx | 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.
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.
| Tool | Description |
|---|---|
search_stocks | Resolve a company to its symbol by name, symbol, BSE code, or ISIN — including brand names and post-rename aliases (Zomato → ETERNAL). Filter by sector/industry. |
screen_stocks | 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. |
screen_stocks_technical | Real-time technical screener — RSI, MACD, SMA/EMA crossovers, Bollinger Bands, ADX, volume, momentum. Supports crosses_above/crosses_below. |
get_screener_ratios | Search or browse the full 326-ratio catalog to get exact ratio names for a query. |
get_trending_stocks | Today's top gainers, losers, and most-active stocks from the Nifty 500. |
| Tool | Description |
|---|---|
get_company_profile | 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. |
get_stock_quote | Live price — LTP, change %, volume, market cap, PE, PB, 52-week high/low. |
get_batch_quotes | Up to 20 stock quotes in a single call. |
get_price_history | Daily or weekly OHLCV with delivery %. Up to 2,000 sessions per call, pageable further back. |
get_financials | 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. |
get_shareholding | Promoter, FII, DII, and public holdings quarter by quarter. |
get_forecasts | Analyst EPS, revenue, EBITDA, net income, ROA, and ROE estimates against actuals — for spotting earnings surprises. |
get_stock_events | Sentiment-tagged news, corporate actions (dividends, splits, bonuses, AGMs), and filings (results, presentations, concall transcripts, annual reports). |
get_stock_ownership | Dividend history with yields + which mutual fund schemes hold the stock and at what share of AUM. |
| Tool | Description |
|---|---|
get_market_pulse | The at-a-glance daily snapshot — FII/DII net flows, Nifty 50 valuations, and India VIX in one call. |
get_fii_dii_detail | 30 days of daily cash-market flows, F&O participant long/short OI, weekly/monthly/yearly aggregates, buy/sell streaks, cumulative net flows. |
get_fii_dii_flows | Alias of get_fii_dii_detail. |
get_fpi_sectors | FPI investment by sector — AUM share, fortnightly change, 1-year cumulative flow. |
get_market_news | Market-wide news across categories with sentiment and related symbols. |
get_market_data | One dispatcher for seven daily feeds via dataset: deals, fno_ban, deliveries, ipo, mtf, slbm, signals. |
market_heatmap | Every constituent of an index with market cap, PE, PB, returns from 1d to 5y, volume, sector — 16 indices. |
market_valuations | Index PE, PB, and dividend yield over time. Up to 20 years. |
get_india_vix | The India VIX fear gauge — latest level, daily change, recent history. |
get_index_performance | 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". |
get_index_history | OHLC level series plus PE/PB/dividend yield for a single index. The index counterpart of get_price_history. |
| Tool | Description |
|---|---|
get_option_chain | 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. |
get_option_iv_history | Session-by-session ATM IV, IV rank, IV percentile, realised vol, PCR, max pain, 25-delta skew for ~556 underlyings, individual stocks included. |
get_options_analytics | Latest per-expiry aggregates — ATM IV, IV rank/percentile, realised vol, PCR by OI and volume, max pain, skew, call/put OI. |
get_promoter_pledge | Promoter share-pledge percentage by quarter plus pledge/release events — a standard governance red-flag check. |
get_credit_ratings | Credit-rating actions by agency with rating, action, and outlook over time. |
| Tool | Description |
|---|---|
get_stock_deals | Bulk, block, insider, and substantial-acquisition (SAST) disclosures per stock, with counterparty, side, quantity, value. |
get_tapetide_score | 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. |
screen_tapetide_scores | Rank and filter the scored universe by band, size bucket, sector, score window, and confidence, with cursor pagination. |
get_earnings_call_summary | Structured digest of recent earnings-call transcripts and investor presentations — highlights, risks, guidance, headline metrics. |
| Tool | Description |
|---|---|
get_adjustment_factors | Split and bonus adjustment timeline for reconstructing raw prices — plus the rights and demerger events that carry no reliable factor at all. |
get_observation_status | 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. |
get_index_membership_asof | Was a stock in an index on a given date? Answers present, uncertain, absent, or out_of_coverage — survivorship-bias-aware universe construction. |
resolve_identifier_asof | Map a historical symbol or ISIN to the company that held it on a date, for old holdings files and recycled tickers. |
get_identifiers_asof | The reverse lookup — which symbol and ISIN a company traded under at a point in time. |
Requires a connected Tapetide account.
| Tool | Description |
|---|---|
get_user_portfolio | Holdings with live prices, absolute and % P&L, invested value, weight, sector, market-cap class. |
add_portfolio_stocks | Add holdings singly or in bulk, including rows parsed from a broker CSV or screenshot (Zerodha, Groww, Angel One, Dhan, Upstox, 5Paisa, ICICI Direct, Kotak, HDFC Sky, Motilal Oswal). Duplicates merge on a weighted-average price. |
update_portfolio_stock | Update quantity and average price after a top-up or partial sell. |
remove_portfolio_stocks | Remove holdings from the portfolio. |
Requires a connected Tapetide account.
| Tool | Description |
|---|---|
get_watchlist | Every followed stock with sector and industry. |
add_to_watchlist | Follow one or many stocks. Idempotent. |
remove_from_watchlist | Unfollow one or many stocks. |
| Tool | Description |
|---|---|
read_me | The full in-session guide — every tool by category, the SEBI disclaimer rule, portfolio-first behaviour, parallel-call patterns. Assistants should call it first. |
scan_movers | Alias of get_trending_stocks. |
get_live_quote | Alias of get_stock_quote. |
get_stock_news | Alias of get_stock_events with type: "news". |
get_corporate_actions | Alias of get_stock_events with type: "corporate_actions". |
run_preset_screen | Redirect that points a preset-screen request at the screener tool that can actually answer it. |
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 |
|---|---|
market_deals | get_market_data with dataset: "deals" |
market_fno_ban | get_market_data with dataset: "fno_ban" |
market_deliveries | get_market_data with dataset: "deliveries" |
market_ipo | get_market_data with dataset: "ipo" |
market_mtf | get_market_data with dataset: "mtf" |
market_slbm | get_market_data with dataset: "slbm" |
market_signals | get_market_data with dataset: "signals" |
get_quant_signal | get_tapetide_score (a different measurement, not a rename) |
screen_by_quant_signal | screen_tapetide_scores (a different measurement, not a rename) |
| Category | What's included |
|---|---|
| Stocks | All NSE + BSE listed companies (~8,200 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 |
| Portfolio | Live P&L tracking, sector breakdown, broker CSV import (10+ Indian brokers) |
| Variable | Required | Default | Description |
|---|---|---|---|
TAPETIDE_TOKEN | Yes (local) | — | Personal API token from tapetide.com/settings/tokens |
TAPETIDE_MCP_URL | No | https://mcp.tapetide.com | Override remote server URL |
TAPETIDE_DEBUG | No | 0 | Set to 1 for debug logging to stderr |
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 |
| Per calendar month | 1,000 tool calls | 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.
| Problem | Solution |
|---|---|
TAPETIDE_TOKEN environment variable is required | Add your token to the env section of your MCP config |
Token refresh failed (401) | Token expired. Generate a new one at tapetide.com/settings/tokens |
Rate limit exceeded | Wait for reset (shown in error) or check usage at tapetide.com/settings/tokens |
| Server not responding | Ensure Node.js 18+ is installed (node --version) |
| Slow first request | Normal — pre-authenticates on startup. Subsequent requests are fast |
| Network errors | Check internet. The bridge needs to reach mcp.tapetide.com |
Set TAPETIDE_DEBUG=1 for detailed logging to stderr.
Issues and pull requests are welcome. For bugs, include the error message and your MCP client name/version.
MIT — free to use, modify, and distribute.
Built by Tapetide — India's AI-first stock research platform