Skip to main content
Glama
viraj43

INDUSS Research Intelligence MCP Server

by viraj43

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
EXA_API_KEYYesThe API key for Exa search integration. Required for search-backed tools.
DATABASE_URLNoPostgres connection string for query/result history. Optional; tools function without it.
MCP_BASE_URLNoThe base URL for serving generated reports over HTTP when using httpStream transport. If set, the server serves reports at /reports/:filename and includes a downloadUrl.
MCP_TRANSPORTNoThe transport protocol. Use 'httpStream' for HTTP transport (remote clients). Defaults to stdio.stdio

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

CapabilityDetails
tools
{}
logging
{}
completions
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_companyA

Discover a company's official website, LinkedIn, and registry presence via domain-restricted Exa search. Use this first to resolve a company name to authoritative source URLs before calling other company tools.

company_profileA

Retrieves registry-grade company profile facts (CIN, incorporation date, registered office) by searching MCA/Tofler/Zauba/OpenCorporates and the company's own site.

company_overviewB

Produces a narrative business overview (what the company does, products/services, target market) sourced from the company's own site and LinkedIn.

shareholding_patternA

Retrieves a listed company's Promoter / FII / DII / Public shareholding split (and pledge %, where disclosed) from screener.in, Trendlyne, and exchange sources. Every real institutional note carries this as a standalone exhibit — pattern-extracted from search snippets, so verify against the source URL before quoting in a client-facing report.

management_profileB

Retrieves key management personnel and board member profiles (name, designation, background) from LinkedIn, the company's own site, and annual-report text. Every real initiating-coverage note carries brief management/board biographies as a standalone exhibit — this is pattern-extracted from narrative search snippets, so verify identity against the source URL before quoting.

financial_statementsA

Retrieves a company's financial statements through a source waterfall: screener.in's structured profit-and-loss/balance-sheet/cash-flow tables first (real multi-period data for any covered listed company), then positional table recovery from filing PDFs (BSE/NSE results, annual reports), then generic HTML table scraping, then keyword-context text windows as a last resort. Returns ready-to-use FinancialStatement[] — the same shape ratio_analysis consumes — with ratios, multi-period CAGR trend, and a 3-year trend-extrapolated Revenue/EBITDA/PAT projection (computed inline by default whenever 2+ historical periods are available; clearly labeled as a mechanical CAGR carry-forward, never management guidance or a DCF output — see dcf_valuation/scenario_analysis for assumption-driven fair value). Never returns bare nulls: when data can't be found, returns a structured not_available status naming which sources were checked.

ratio_analysisA

Performs deterministic financial ratio analysis (profitability, liquidity, leverage, returns) plus multi-period CAGR trend over a set of FinancialStatement objects (Income Statement / Balance Sheet / Cash Flow). Pure calculation — no search, no LLM tokens.

segment_revenueA

Finds business-segment or channel revenue mix (e.g. Online vs Offline, product-line splits) when a company discloses one in its investor presentation, annual report, or press coverage. Not every company reports this — returns an empty mentions[] rather than a fabricated split when it isn't disclosed. Pattern-matched from narrative text, so verify labeled values against the source URL.

operating_metricsA

Searches for sector-specific operating KPIs (store count, same-store-sales growth, DAU/MAU, average daily turnover, GMV, capacity utilization, etc.) in investor-presentation and press coverage. Pass metricNames with the specific KPI vocabulary for this company's sector (read from its industry_overview/discover_competitors results first) for a sharper search — without it, falls back to a generic cross-sector list. This is inherently noisier than the server's other tools: results are proximity-matched numbers near a metric name in free text, not a structured KPI table, so treat every value as a lead to verify against its source URL, not a citable fact on its own.

dcf_valuationA

Runs a mechanical, transparent discounted-cash-flow valuation from assumptions the caller (you) supplies explicitly — revenue growth path, EBITDA margin path, D&A/capex/NWC as % of revenue, tax rate, WACC, terminal growth rate, net debt. This tool does not forecast, guess, or default any of these — you should reason about realistic assumptions from the company's own financials (financial_statements, ratio_analysis) and sector context before calling it, and every assumption you pass is echoed back in the output so the reasoning stays auditable. If wacc <= terminalGrowthRate or another structural issue exists, the issues field reports it instead of returning a distorted number. This tool computes; it does not render a verdict — pair its output with your own investment-thesis section marked metadata.kind = "ai_interpretation" (see generate_report) rather than treating fairValuePerShare as advice.

multi_stage_dcf_valuationA

Runs a 3-stage DCF: an explicit forecast stage (your stage1GrowthPath/stage1EbitdaMarginPath, however many years you want — a fast-growing company's real initiating-coverage model often runs 8-10 years here, not 5), a fade stage (fadeYears — growth glides linearly from stage 1's final rate down to terminalGrowthRate), then the terminal value. This is the structure ICICI Securities' Vishal Mega Mart note actually uses (a 10-year explicit stage, then a 10-year fade, then terminal) — jumping a fast-growing company straight from year-5 growth to a ~6% terminal rate (what the single-stage dcf_valuation does) understates a name that's genuinely still years from steady-state. Same rules as dcf_valuation: every assumption is caller-supplied and echoed back, nothing is guessed or defaulted, and this computes — it doesn't render a verdict.

sotp_valuationA

Runs a Sum-of-the-Parts valuation: each business segment gets its own multiple (EV/EBITDA, EV/Sales, EV/Revenue, P/E, or a directly-stated EV), the segment values sum to a total enterprise value, cash is added and net debt subtracted to reach equity value, then divided by shares outstanding for a fair value per share. Use this instead of a single blended DCF/multiple for a company whose segments have genuinely different economics (Motilal Oswal valued PhysicsWallah this way: 50x EV/EBITDA for the online segment, 15x for offline, 1x EV/Sales for other businesses, plus cash). This tool does NOT choose the multiples for you — that's the analyst judgment call; reason about each segment's multiple from real peer multiples (see global_peer_comps / listed_peer_comparison) or your own view, state your rationale in each segment's rationale field, and mark the section that presents this as your own valuation call with metadata.kind = "ai_interpretation" (see generate_report).

comparables_valuationA

Applies a supplied set of peer trading multiples (EV/EBITDA, P/E, EV/Sales) to the target company's own financial metrics to derive an implied low/median/high valuation band per multiple type, plus a single blended equity-value range (enterprise-value bands are bridged to equity via netDebt). This tool picks no peers and invents no multiples — pass real peer figures (e.g. from listed_peer_comparison) and it does the banding/blending arithmetic deterministically. A multiple type is silently omitted (see issues) if you didn't supply both the peer multiples and the matching target metric — it never guesses a missing input.

scenario_analysisA

Runs the same mechanical DCF three times — as given (base), and perturbed by bull/bear deltas you supply (e.g. +3% revenue growth and -1% WACC for a bull case) — and optionally builds a 2D sensitivity grid (typically WACC x terminal growth rate) of fair-value outcomes. Like dcf_valuation, this invents no assumptions of its own: you choose the deltas/grid values based on your own read of the company's upside/downside case, and the tool reports each case's own validity issues (e.g. a bear-case WACC bump that breaks wacc > terminalGrowthRate) rather than a distorted number. Pure calculation — no search.

red_flag_screenA

Aggregates evidence you've already gathered from other tools this session — litigation_history's cases, negative_news's hit count, ratio_analysis/financial_statements' plausibility issues, and any promoter regulatory-hit count you derived from promoter_background — into a single severity-bucketed flag list (low/medium/high, plus an overall severity). Every flag traces to a count or record you supplied from a real source; this tool invents no new evidence and renders no investment verdict. All inputs are optional — pass whichever you have; omitted categories simply contribute no flags.

funding_historyA

Searches Crunchbase, Tofler, MCA, Pitchbook, Dealroom, and OpenCorporates for a company's funding rounds, investors, and valuation mentions, and extracts candidate round/amount facts from the retrieved text.

discover_competitorsA

Searches industry-analyst and news sources for named competitors/rivals of a company, extracts candidates via text-pattern heuristics, then ranks them (mention frequency across sources + a listed-company signal) and returns a top-5 — the server picks peers deterministically instead of leaving selection to the calling model.

listed_peer_comparisonA

Retrieves a listed company's own financial snapshot (market cap, P/E, shareholding-pattern context) from screener.in, Trendlyne, Ace Equity-adjacent sources, and exchange/finance portals — meant to be run once per company (the target and each peer discover_competitors identifies) so the results can be assembled into a peer-comparison table.

global_peer_compsA

For each peer company name passed in (typically the target plus discover_competitors' output), attempts to find it on screener.in and pull its real point-in-time valuation multiples (CMP, Market Cap, Stock P/E, Book Value, ROCE, ROE). Only works for Indian-listed companies — a peer that's private, or listed on a foreign exchange, comes back status: 'not_available' with a reason, never a fabricated multiple. This is the honest ceiling without a paid market-data subscription (Bloomberg/CapitalIQ/Refinitiv): a real multi-year forward-consensus peer table across global names — the kind a bulge-bracket note shows — is NOT reproducible from free web search, and this tool will not pretend otherwise.

industry_overviewA

Retrieves macro/industry-level research (market structure, key players, growth drivers, TAM/market size) from top-tier consulting/research sources (Deloitte, PwC, EY, KPMG, McKinsey, Bain, BCG, IMARC, Statista, NASSCOM) — the industry-wide context a company-specific (micro) report should sit inside. Pass context.sector when known for a sharper search; if omitted, falls back to searching around context.company's own industry.

market_sizeA

Finds market size and CAGR figures for an industry from analyst/research sources (IMARC, Statista, McKinsey, NASSCOM, etc.) and extracts numeric estimates via pattern matching. Pass context.sector when known; if omitted, falls back to searching around context.company's own market.

latest_newsB

Retrieves recent news coverage of a company from Reuters, Economic Times, Mint, Business Standard, and Moneycontrol, sorted by publish date.

negative_newsA

Screens news and public-sentiment sources (Glassdoor, Reddit) for adverse media and complaints about a company (fraud, layoffs, defaults, employee/public controversy) for due-diligence / risk-screening purposes. For hard regulatory/legal records (SEBI, NCLT, court cases), use litigation_history instead.

management_commentaryA

Finds management guidance and outlook commentary from earnings-call coverage and press interviews — the 'what did management say about the next few quarters' input every real initiating-coverage note works from. Returns guidance-shaped sentence fragments from press coverage, not verified transcript quotes — attribute to the covering outlet unless the source is the transcript itself.

consensus_estimatesA

Pulls individually-reported brokerage target prices/ratings from press coverage. This is explicitly NOT a Bloomberg/Refinitiv-style consensus feed — this server has no paid market-data subscription, so there is no honest way to compute a real Street consensus. Use this for 'here's what a few brokerages have said', never present averageTargetPrice as 'the market consensus'.

litigation_historyA

Screens SEBI, NCLT, and legal-journalism sources (IndianKanoon, LiveLaw, Bar & Bench) for litigation, regulatory penalties, insolvency proceedings, and director disqualification records tied to a company or promoter name. Distinct from negative_news, which screens general press/employee sentiment rather than hard legal/regulatory records.

promoter_backgroundA

Screens a promoter or director name against SEBI/MCA/registry sources for disqualification, debarment, or regulatory penalty records. Pass the individual's name (or the company name to screen its leadership generally) as context.company.

generate_reportA

Assembles a structured research report from ResearchSections (each carrying its own summary, tables, citations, and confidence) into the standard report envelope. Use after gathering facts with other tools; this tool does no research of its own. If you (the calling model) want to include your own analysis, judgment, or a verdict — not something a source stated — write it as its own section and set metadata.kind = "ai_interpretation": the renderer visually distinguishes it from sourced-evidence sections and always attaches a 'not advice' disclaimer, so synthesis is welcome but never confused with verified fact. Write every section — sourced or interpretive — in a sell-side analyst's voice: direct declarative sentences that lead with the number and its implication, not hedged AI narration ("it is important to note that...", "the data appears to suggest...", "based on the information available..."). State what's known plainly; state what's uncertain by naming the gap, not by hedging the tone.

generate_institutional_reportA

Generates a complete institutional research report for a company in one call: company profile, financial snapshot, macro/industry overview (runs even without a sector — falls back to the company's own industry), a server-ranked competitor list, funding history, a combined litigation/promoter/adverse-media risk screen (with an evidence checklist of exactly which sources were checked), and recent news — composed into report sections and rendered in the requested output formats (json/markdown/html/pdf). Use this instead of calling search_company, company_profile, financial_statements, discover_competitors, litigation_history, promoter_background, negative_news, latest_news, and generate_pdf separately. The report's closing section tells you (the calling model) exactly which analyst-judgment sections to add next — SWOT, bull/bear case, valuation — each written in your own analytical voice and marked metadata.kind = "ai_interpretation" (see generate_report), so the finished document reads like an analyst's note rather than a data dump. Write plainly and directly: state the number and its implication in one motion ("EBITDA margin expanded 420bp to 34% on operating leverage"), not hedged narration ("the data appears to suggest a possible improvement") — every one of the reference institutional notes this convention was modeled on (PL Capital, ICICI Securities, Motilal Oswal) writes this way.

generate_markdownA

Renders a structured report (see generate_report's schema) into a GitHub-flavored Markdown document with a table of contents, per-section confidence/sources, and a consolidated citation list.

generate_pdfA

Renders a structured report (see generate_report's schema) into an institutional-layout PDF (cover page, TOC, headers, footers, page numbers, tables, per-section confidence, citations) via headless-browser HTML-to-PDF conversion. Returns the PDF embedded directly in the response (as a base64 resource) so remote clients can retrieve it without filesystem access, plus a downloadUrl when running over httpStream.

health_checkA

Reports server health: config validity, Redis cache connectivity, Postgres configuration status, and the tool capability registry.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/viraj43/Indus_mcp_latest'

If you have feedback or need assistance with the MCP directory API, please join our Discord server