MyFinancial Market Data MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TAPETIDE_DEBUG | No | Upstream alias for MYFINANCIAL_DEBUG. Works if MYFINANCIAL_DEBUG is not set. | |
| TAPETIDE_TOKEN | No | Upstream alias for MYFINANCIAL_TOKEN. Works if MYFINANCIAL_TOKEN is not set. | |
| TAPETIDE_MCP_URL | No | Upstream alias for MYFINANCIAL_MCP_URL. Works if MYFINANCIAL_MCP_URL is not set. | |
| MYFINANCIAL_DEBUG | No | Set to '1' to log each call's method, status and timing to stderr. | 0 |
| MYFINANCIAL_TOKEN | No | Your Tapetide token from https://tapetide.com/settings/tokens. Required for live data; if not set, the server starts in preview mode. | |
| MYFINANCIAL_MCP_URL | No | Remote server URL. Defaults to https://mcp.tapetide.com. | https://mcp.tapetide.com |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_stocksA | 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). Results ranked by relevance (exact symbol > prefix > contains). Use this FIRST to find a stock's symbol before calling other tools. AFTER using this tool: offer to get a detailed profile (get_company_profile), live quote (get_stock_quote), or add to watchlist for any stock the user is interested in. |
| get_company_profileA | 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:
Example: include ["technicals", "ratings"] for a full analysis view. AFTER using this tool, suggest to the user: • "Want me to add [SYMBOL] to your watchlist so you can track it?" • If they seem interested in buying: "If you own [SYMBOL], tell me your qty and buy price — I'll add it to your portfolio for live P&L tracking." • Offer deeper dives: financials (get_financials), forecasts (get_forecasts), news (get_stock_events), shareholding patterns. |
| get_stock_eventsA | Get stock events — news, corporate actions, or company filings. Filter by type to get only what you need. Types:
AFTER using this tool: if the news is significant, suggest adding the stock to watchlist to track it. If the user owns this stock, offer to check their portfolio exposure and whether they should adjust their position. |
| get_stock_ownershipA | 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. |
| get_stock_quoteA | 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. AFTER using this tool: suggest adding to watchlist if not already tracked, offer deeper analysis (company profile, technicals, financials), and if the user owns this stock, offer to update their portfolio with the latest purchase info. |
| get_batch_quotesA | Get current price quotes for multiple stocks at once. Max 20 symbols per request. More efficient than calling get_stock_quote repeatedly. |
| get_price_historyA | 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: |
| get_financialsA | Get financial statements for one company. Sections: |
| get_shareholdingB | Get shareholding pattern — promoter, FII, DII, public holdings over time. Track institutional buying/selling trends quarter over quarter. Useful for understanding ownership changes. |
| get_forecastsA | Get analyst forecasts — EPS, revenue, EBITDA, net income, ROA, ROE, and price estimates. Both quarterly and annual periods with actuals vs estimates comparison. Useful for understanding market expectations and earnings surprises. |
| get_market_pulseA | 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 (breakouts, crossovers, RSI extremes) use get_market_data with dataset: "signals"; for top gainers/losers/most-active use get_trending_stocks. |
| get_fii_dii_detailA | Get detailed FII/DII institutional flow data:
Essential for understanding institutional money flow in Indian markets. |
| get_fii_dii_flowsB | 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. |
| get_fpi_sectorsA | 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. |
| get_market_newsA | 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. |
| get_market_dataA | Get one of today's market-wide data feeds. Pass
|
| market_valuationsA | 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). |
| market_heatmapA | 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). |
| screen_stocksA | 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. |
| screen_stocks_technicalA | 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}] |
| get_screener_ratiosA | 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. Use this to find exact ratio names before building a screen_stocks query. |
| get_trending_stocksA | Get trending stock summary — top gainers, losers, and high-volume stocks from Nifty 500. Quick snapshot of market movers today. |
| get_options_analyticsA | 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. |
| get_stock_dealsA | 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. |
| get_promoter_pledgeA | 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. |
| get_credit_ratingsA | 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. |
| get_earnings_call_summaryA | 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. |
| get_india_vixA | 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. |
| list_company_documentsA | 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. Call first. Then either get_document_summary / read_document (text as payload) or hand the user a link / download it yourself to search locally. Newest first. |
| get_document_summaryA | 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. |
| read_documentA | 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. |
| get_tapetide_scoreA | 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 |
| screen_tapetide_scoresA | 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 ( |
| get_option_chainA | 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 |
| get_option_iv_historyA | 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. |
| get_index_performanceA | 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. |
| get_index_historyA | 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. |
| get_adjustment_factorsA | 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 |
| get_observation_statusA | For every CALENDAR day in a lookback window, get why a price is or is not present: |
| get_index_membership_asofA | Was a stock a constituent of an index on a specific historical date? Returns a FOUR-STATE answer, never a bare yes/no: |
| resolve_identifier_asofA | 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 |
| get_identifiers_asofA | 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. |
| read_meA | IMPORTANT: Call this FIRST. Returns the complete guide — all tools organised by category, critical rules (SEBI disclaimer, portfolio-first approach, parallel calls, cross-tool suggestions), and usage patterns. |
| scan_moversA | Alias for get_trending_stocks. Top gainers, losers, and most-active stocks today. |
| get_live_quoteA | Alias for get_stock_quote. Latest price for one symbol. Example: {"symbol":"RELIANCE"}. |
| get_stock_newsA | Alias for get_stock_events with type:"news". Sentiment-tagged news for one stock. Example: {"symbol":"TCS"}. |
| get_corporate_actionsB | Alias for get_stock_events with type:"corporate_actions". Dividends, splits, bonuses, AGMs for one stock. Example: {"symbol":"ITC"}. |
| run_preset_screenA | 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. |
| get_user_portfolioA | 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). IMPORTANT — Call this tool FIRST before giving any stock recommendation, buy/sell suggestion, or investment advice. This lets you: • See what the user already holds to avoid duplicate recommendations • Spot red flags (over-concentration in one stock/sector, high-PE holdings, lack of diversification) • Suggest diversification across sectors, market caps, and asset types • Give truly personalised advice based on their actual positions If the portfolio is empty or not set up, DO NOT just show a link. Instead, proactively ask the user to share their holdings with you — they can paste a broker CSV export, share a screenshot of their holdings, or tell you manually (e.g. '10 RELIANCE at ₹1350'). You have the add_portfolio_stocks tool to add them directly. Supported brokers: Zerodha, Groww, Angel One, Dhan, Upstox, 5Paisa, ICICI Direct, Kotak, HDFC Sky, Motilal Oswal. |
| add_portfolio_stocksA | 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. |
| update_portfolio_stockA | 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:
For partial sells:
Both quantity and avg_price are required — always provide the final values. |
| remove_portfolio_stocksA | 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. |
| get_watchlistA | Get the user's stock watchlist — all stocks they are following. Returns symbol, company name, sector, industry for each stock. Use this to see what stocks the user is tracking before making suggestions. AFTER using this tool: offer to get latest quotes or news for watched stocks, suggest deep-diving into any stock, or ask if they own any of these stocks to add to portfolio. |
| add_to_watchlistA | 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 AFTER using this tool: offer to get a detailed analysis of the added stocks — company profile, financials, technicals, or analyst ratings. |
| remove_from_watchlistA | 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, then remove all symbols) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 55 tools
The tool set has several aliases (e.g., get_live_quote vs get_stock_quote, scan_movers vs get_trending_stocks) that create redundant entry points, and overlapping data (e.g., get_stock_events with corporate_actions vs get_stock_ownership, get_market_pulse vs get_fii_dii_detail). However, descriptions explicitly cross-reference these, which mitigates confusion, but the ambiguity is still present.
Most tools follow a get_ prefix pattern, but there are deviations like screen_stocks, add_to_watchlist, remove_portfolio_stocks, market_heatmap, and read_me. Alias names also break the pattern (e.g., scan_movers, get_live_quote). The naming is mostly readable but not consistently verb_noun throughout.
With 55 tools, the count is far above the typical range for a single MCP server, even for a comprehensive financial domain. Many are aliases or near-duplicates, which further inflates the count and could overwhelm an agent during tool selection.
The surface is exceptionally complete for Indian stock market data: quotes, histories, fundamentals, screening, options, indices, news, portfolio management, watchlist, forecasts, and even point-in-time identity resolution. There are no major gaps for its stated purpose.