Skip to main content
Glama
Prem07a
by Prem07a

FinMCP

An MCP (Model Context Protocol) server exposing Indian-market (NSE/BSE) fundamental analysis as tools for LLM clients like Claude Code / Claude Desktop. Full target roadmap: ROADMAP.md.

Tools

Tool

Description

ping

Health check.

search_ticker

Find the NSE/BSE ticker for a company by name -- call this first if you don't already have the exact symbol. Handles two real gotchas: demerged companies can have multiple current tickers (e.g. Tata Motors), and renamed companies return zero matches under their old name (e.g. Zomato -> Eternal Limited).

get_company_news

Recent news headlines/summaries for a company. Yahoo's per-ticker news stream is loosely sector/theme-tagged rather than a strict per-company filter -- expect some broader industry/competitor coverage, and occasionally an outright unrelated story, mixed in with company-specific news. Each article carries a mentions_company flag (a rough, mechanical relevance signal) rather than silently filtering anything out.

get_company_profile

Company profile: sector, industry, market cap, country, exchange, description.

get_income_statement

Revenue, gross profit, operating income, EBIT, EBITDA, net income, EPS per fiscal period (annual/quarterly).

get_balance_sheet

Assets, liabilities, equity, debt, working-capital line items per fiscal period.

get_cash_flow_statement

Operating cash flow, capex, free cash flow, financing cash flow, dividends paid per fiscal period.

get_dividend_history

Dividend and stock-split history. An empty dividend list is a legitimate result, not an error.

get_stock_price_history

OHLCV bars (period: 1mo-max, interval: 1d/1wk/1mo). Capped at 500 bars.

calculate_financial_ratios

P/E, P/B, EV/EBITDA, EV/Sales, ROCE, ROE, ROA, current ratio, debt/equity, interest coverage, asset turnover, margins, FCF/earnings yield -- ratios Yahoo leaves null are computed by hand from the statements.

calculate_growth_metrics

Revenue/net income/EPS/FCF CAGR over the available annual history (~4Y).

analyze_margin_trends

Gross/operating/net margin across the available annual history + first-vs-latest delta.

analyze_cash_flow_quality

Cash conversion (CFO/FCF vs net income) and receivables/inventory-outpacing-revenue flags.

peer_valuation

Side-by-side multiples + a transparent peer-relative attractiveness score against explicit peer tickers you supply (Yahoo has no peer-discovery endpoint for Indian equities).

historical_valuation

Current P/E vs the company's own historical annual P/E, with a percentile rank.

reverse_dcf

What growth rate the current share price already implies (two-stage DCF solved by bisection), vs what the company has historically achieved.

dcf_valuation

Forward DCF: intrinsic value per share and margin of safety given growth/discount-rate assumptions (growth defaults to historical revenue CAGR). Same math as reverse_dcf, run the other direction -- cross-check the two.

financial_health_score

Transparent 0-100 rubric across profitability, growth, balance sheet, cash flow, and valuation.

detect_earnings_quality

Flags + 0-100 score: profit-up/cash-flow-down divergence, receivables/inventory outpacing revenue, CFO vs net income, FCF consistency, other-income reliance.

detect_accounting_red_flags

Sudden margin swings, debt spikes, goodwill/intangible growth outpacing total assets, repeated exceptional items. Does not cover related-party transactions or depreciation patterns (no Yahoo data / no reliable basis).

analyze_capital_allocation

Per fiscal year: free cash flow split across dividends, buybacks, acquisitions, net debt repayment.

analyze_management_quality

Multi-year ROCE trend, share-count trend (dilution vs buybacks), dividend consistency, capital allocation. Deliberately excludes promoter shareholding (Yahoo doesn't have the SEBI promoter/FII/DII/public breakdown).

compare_companies

Profile + key ratios + growth + health score, side by side, for up to 5 symbols.

analyze_company

The complete fundamental-analysis pipeline for one symbol in a single call -- composes every tool above.

find_undervalued_companies

Screens an explicit candidate list (max 15; Yahoo has no NIFTY-500-style universe endpoint) for cheap-vs-own-history + reverse-DCF growth cushion, ranked best-first.

find_high_quality_companies

Screens an explicit candidate list, ranked by health score with earnings-quality/red-flag tiebreakers.

generate_investment_memo

Structured research memo (profitability, growth, cash flow, management, valuation, risks, bull/bear case) composed from analyze_company's output. Bull/bear bullets are mechanically derived from computed flags, not fabricated research; no "Catalysts" section (needs analyst/news data this server doesn't have).

bankruptcy_risk_score

Altman Z''-score (EM/non-manufacturing variant) with SAFE/GREY/DISTRESS zone. Entirely book-value/statement-derived, so unlike most valuation tools here it's unaffected by the currency-mismatch issue. Does not include Ohlson's O-score (needs a US GNP price-level deflator with no Indian equivalent).

All tools cover NSE/BSE-listed Indian equities only. A bare symbol (e.g. "RELIANCE") is normalized to NSE (.NS) by default; pass an explicit .BO suffix for BSE. Several tools carry a currency_mismatch_warning field -- Yahoo reports some Indian large caps' (e.g. INFY, HCLTECH) financial statements in USD while market data is in INR, which silently corrupts any ratio mixing the two; this is detected and surfaced rather than hidden.

Related MCP server: MCP Stock Analysis Server

Requirements

  • Python 3.12+

  • uv for environment, dependency, and build management

Setup

uv sync

This creates .venv/ and installs all dependencies, pinned via uv.lock.

Running

# Run the server directly over stdio (what MCP clients expect)
uv run finmcp

# Or via the module entrypoint
uv run python -m finmcp

# Launch the MCP Inspector to poke at tools interactively
uv run mcp dev src/finmcp/server.py

Using with Claude Code / Claude Desktop

Add to your MCP client config:

{
  "mcpServers": {
    "fin-mcp": {
      "command": "uv",
      "args": ["--directory", "/home/prem/Documents/FinMCP-Fundamentals", "run", "finmcp"]
    }
  }
}

Or register with Claude Code directly:

claude mcp add fin-mcp --scope user -- uv --directory /home/prem/Documents/FinMCP-Fundamentals run finmcp

Development

uv run pytest        # run tests
uv run ruff check .  # lint
uv build             # build wheel/sdist into dist/

Docker (Stage 3 stub)

docker build -t finmcp .
docker run -i finmcp

The image builds and runs the stdio server today; full Docker MCP Toolkit catalog integration (metadata, tool listing) is deferred to Stage 3, once the real Yahoo Finance tools exist.

Disclaimer

Yahoo Finance data is accessed via the unofficial yfinance library, which is not affiliated with, endorsed by, or vetted by Yahoo, Inc. Intended for research/educational use.

License

MIT

Available Tools

28 tools
analyze_capital_allocationA

Show how an NSE/BSE-listed Indian equity deployed free cash flow each available fiscal year: dividends paid, buybacks, acquisitions, and net debt repayment (repayment minus new issuance -- positive means net paydown). Buybacks/acquisitions are null for company-years Yahoo has no matching cash-flow line item for (live-verified this varies: TCS.NS has buyback/acquisition rows, RELIANCE.NS doesn't) -- null means "not reported", not zero.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pointsYes
symbolYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral burden. It discloses important non-obvious behavior: null buyback/acquisition values mean 'not reported' rather than zero, and net debt repayment is defined as repayment minus new issuance. It also provides live-verified examples showing why data can differ by ticker, which is valuable for correctly interpreting results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-ordered: what the tool does, the key output components, the critical null-semantics caveat, then the parameter. Every sentence adds value and there is no fluff or repetition of schema field names.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so the description doesn't need to explain return values in detail. It covers scope, data source behavior, null semantics, and parameter format. The only small gap is clarifying what 'each available fiscal year' means in practice, but this does not prevent correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must compensate. It does so with a dedicated :param symbol line and concrete examples ('RELIANCE', 'TCS.NS', 'TCS.BO') that clarify accepted ticker formats for NSE/BSE-listed equities. For a single-parameter tool this is sufficient, though a bit more detail about case sensitivity or exchange suffix rules would push it higher.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Show how...deployed free cash flow') on a defined resource ('NSE/BSE-listed Indian equity') and lists the exact components analyzed. This meaningfully distinguishes it from sibling tools like get_cash_flow_statement, which simply returns raw statements, or get_dividend_history, which focuses only on dividends.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: use this tool to see how a company deployed free cash flow, especially for Indian listed equities. However, it does not explicitly state when to prefer this over alternatives like analyze_cash_flow_quality or get_cash_flow_statement, nor does it mention exclusions or complementary tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_cash_flow_qualityA

Assess cash-flow quality for an NSE/BSE-listed Indian equity across its available annual history: cash conversion (CFO/net income and FCF/net income), and whether receivables or inventory grew meaningfully faster than revenue (a classic early signal worth investigating, not proof of a problem -- this tool flags, it doesn't score or accuse).

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pointsYes
symbolYes
inventory_outpacing_revenueNoTrue if latest-year inventory growth exceeded revenue growth by >10pp
receivables_outpacing_revenueNoTrue if latest-year receivables growth exceeded revenue growth by >10pp

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden, and it does disclose meaningful behavioral traits: it operates on 'available annual history', computes specific ratios, and explicitly says it 'flags, it doesn't score or accuse' to set expectations. It does not state what happens with insufficient data, but the scope and interpretive stance are reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core method, scope, caveat, and parameter format are packed into two tight sentences with no filler. The action verb and resource are front-loaded. Every part of the description earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter analytical tool with an output schema, the description supplies the methodology, scope, and input format needed to call it correctly. The main missing piece is routing guidance relative to the many sibling analysis tools, plus explicit behavior on insufficient history. It is otherwise complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only declares a required string 'symbol' with 0% description coverage. The description compensates by defining the parameter as a ticker and providing concrete formats for NSE and BSE: 'RELIANCE', 'TCS.NS', or 'TCS.BO'. This is exactly the format guidance an agent needs to invoke the tool correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Assess cash-flow quality for an NSE/BSE-listed Indian equity across its available annual history.' It also lists specific metrics (cash conversion, receivables/inventory growth vs. revenue), making the tool's scope concrete. It does not explicitly contrast itself with sibling tools like detect_earnings_quality, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to prefer this tool over related siblings such as detect_earnings_quality, detect_accounting_red_flags, or calculate_financial_ratios. No exclusion criteria or alternative-selection hints are provided. The 'flags, it doesn't score or accuse' remark is interpretive guidance, not usage-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_companyA

Run the complete fundamental-analysis pipeline for one NSE/BSE-listed Indian equity in a single call: profile, ratios, growth, margin trends, cash flow quality, earnings quality, red flags, capital allocation, management quality, historical valuation, and health score. Composes every other tool in this server rather than re-deriving anything -- the underlying Yahoo fetches are shared/cached across all of them, so this is far cheaper than it looks.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
growthYes
ratiosYes
symbolYes
profileYes
red_flagsYes
health_scoreYes
margin_trendsYes
earnings_qualityYes
cash_flow_qualityYes
capital_allocationYes
management_qualityYes
historical_valuationYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it delivers meaningful behavioral context: it is a composite pipeline, it reuses other tools' results, and it benefits from shared/cached Yahoo fetches. It does not explicitly declare read-only behavior or failure modes, but for an analysis-only tool this is reasonably transparent given the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: the first sentence establishes scope and content, the second explains the composite/cached implementation advantage, and the third documents the parameter. The key purpose is front-loaded with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description does not need to enumerate return fields. It fully explains what the tool does, lists the major analysis components, identifies its relation to sibling tools, and documents the sole parameter with examples. For a complex pipeline tool, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only says 'Symbol' with no description coverage, so the description fully compensates by documenting the lone parameter: ':param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO".' Concrete examples and exchange suffix conventions remove all ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb and resource: 'Run the complete fundamental-analysis pipeline for one NSE/BSE-listed Indian equity in a single call.' It enumerates the covered analyses (profile, ratios, growth, margin trends, etc.) and explicitly notes that it 'Composes every other tool in this server,' distinguishing it clearly from the individual sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the primary use case clear: get a complete fundamental analysis in one call rather than invoking many separate tools. It also explains that this approach is cheaper because Yahoo fetches are shared/cached. However, it does not explicitly state when NOT to use it, such as when only a single metric or statement is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_management_qualityA

Assess capital-allocation and ownership-trend signals for an NSE/BSE-listed Indian equity: multi-year ROCE trend, share-count trend (rising = dilution, falling = net buybacks), dividend consistency, and the capital-allocation split (see analyze_capital_allocation). Deliberately excludes promoter shareholding -- Yahoo only has a US-style insiders/institutions split for Indian tickers, not the SEBI promoter/FII/DII/public breakdown, and presenting one as the other would be misleading.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
symbolYes
roce_trendYes
years_usedYes
capital_allocationYes
promoter_holding_noteNo
dividend_consistency_yearsYesNumber of the available years with a nonzero dividend paid
shares_outstanding_change_pctNoChange in shares outstanding, oldest to newest available year: positive = dilution, negative = net buybacks

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and handles it well. It discloses a deliberate exclusion (promoter shareholding), explains the data-source reason, and interprets share-count trends. It does not detail output behavior, but an output schema exists, and no contradictions are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and indicators, and every sentence earns its place. The data-source caveat is essential for correct tool selection, and the parameter documentation is compact. There is no filler or redundant restating of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with an output schema, the description is complete: it defines scope, lists included indicators, names the related sibling, explains a key exclusion, and provides example symbols. An agent has enough information to select and invoke the tool appropriately without ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only provides the parameter name and type, with 0% schema description coverage. The description compensates by documenting the symbol parameter with concrete formats ('RELIANCE', 'TCS.NS', 'TCS.BO') and tying it to the Indian-market context. This adds meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Assess') and clearly defines the resource scope: capital-allocation and ownership-trend signals for NSE/BSE-listed Indian equities. It enumerates concrete indicators (ROCE trend, share-count trend, dividend consistency, capital-allocation split) and distinguishes itself from analyze_capital_allocation by pointing to it for the split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong contextual guidance: it is for Indian equities, references analyze_capital_allocation for the capital-allocation split, and explicitly excludes promoter shareholding due to a Yahoo data limitation. It stops short of an explicit 'use this tool when... versus...' statement, but the context and sibling reference make the intended usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bankruptcy_risk_scoreA

Assess bankruptcy/distress risk for an NSE/BSE-listed Indian equity using Altman's Z''-score (the emerging-market/non-manufacturing variant -- comparable across manufacturers and services companies alike, uses book value of equity so, unlike most valuation-adjacent tools here, this one is NOT vulnerable to the currency-mismatch issue documented elsewhere). Zones: SAFE (>2.6), GREY (1.1-2.6), DISTRESS (<1.1). Does NOT include Ohlson's O-score -- see the output model's ohlson_note for why.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
zoneNoSAFE (>2.6), GREY (1.1-2.6), or DISTRESS (<1.1), per Altman's published EM-score bands
symbolYes
fiscal_dateNo
ohlson_noteNo
altman_z_scoreNo6.56*(WC/TA) + 3.26*(RE/TA) + 6.72*(EBIT/TA) + 1.05*(BookEquity/TL) -- Altman's EM/non-manufacturing variant
ebit_to_assetsNo
ohlson_o_scoreNoNot computed -- see class docstring
equity_to_liabilitiesNoBook value of equity / Total Liabilities
working_capital_to_assetsNo
retained_earnings_to_assetsNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the methodological variant, why it avoids the currency-mismatch issue, the classification zones, and what the model deliberately excludes. This is strong transparency about what the tool does and does not compute.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and uses its length efficiently. The methodological and exclusionary details are relevant and helpful, though the description is slightly dense with parenthetical asides that could be trimmed without losing essential meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and there is only one required parameter, the description covers everything needed: the assessment type, target market, scoring model, interpretation zones, a key exclusion, and parameter format. No critical operational gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only says 'symbol' is a string, providing 0% coverage. The description compensates by defining it as a ticker symbol and giving concrete formats: 'RELIANCE', 'TCS.NS', or 'TCS.BO'. This materially helps the agent call the tool correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Assess bankruptcy/distress risk for an NSE/BSE-listed Indian equity.' It also names the exact model (Altman's Z''-score emerging-market variant) and differentiates itself from related tools by explicitly noting it does not include Ohlson's O-score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use: bankruptcy/distress assessment for Indian equities, with detailed zone cutoffs. It also states an explicit exclusion ('Does NOT include Ohlson's O-score'), but it does not name a sibling alternative to choose instead, so it stops short of full when-to-use vs. alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_financial_ratiosA

Calculate valuation, profitability, liquidity, and efficiency ratios for the latest fiscal period of an NSE/BSE-listed Indian equity. Ratios Yahoo leaves null for Indian tickers (roce, roe, roa, current_ratio, interest_coverage, asset_turnover) are computed by hand from the income statement and balance sheet instead of read off .info.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pbNoPrice to book
peNoTrailing P/E
roaNoNet Income / Total Assets
roeNoNet Income / Stockholders Equity
roceNoEBIT / Invested Capital
symbolYes
ev_salesNo
ev_ebitdaNo
fcf_yieldNoFree Cash Flow / Market Cap
forward_peNo
net_marginNo
fiscal_dateNo
gross_marginNo
current_ratioNoCurrent Assets / Current Liabilities
asset_turnoverNoRevenue / Total Assets
dividend_yieldNo
earnings_yieldNoNet Income / Market Cap. Approximately but not exactly 1/PE -- PE uses trailing-twelve-month EPS, this uses latest full-year net income.
operating_marginNo
interest_coverageNoEBIT / Interest Expense
debt_to_equity_pctNoTotal Debt as a percent of equity (e.g. 10.21 means 10.21%, NOT a 10x ratio), straight from Yahoo's `.info`
currency_mismatch_warningNoSet when Yahoo's market-data currency and financial-statement currency disagree for this ticker (live-confirmed on some Indian large caps) -- treat pe/pb/ev_ebitda/ev_sales/fcf_yield/earnings_yield as unreliable when set.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden. It does well by disclosing that ratios are 'computed by hand from the income statement and balance sheet instead of read off .info' and enumerates the six ratios. It does not cover side effects or error cases, but for a pure calculation tool the methodology disclosure adds real value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: one sentence states purpose and scope, one sentence explains method, and one line documents the parameter. Every sentence adds new, non-redundant information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with an output schema, the description provides enough context: what is calculated, for which securities, over which period, and via what method. A minor gap is lack of explicit behavior for unsupported tickers, but the examples and scoping largely mitigate this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It documents the single parameter with concrete examples ('RELIANCE', 'TCS.NS', 'TCS.BO'), clarifying accepted listing formats beyond the bare string type. It does not cover edge cases like case sensitivity, but the examples make the parameter clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a strong verb-resource pair: 'Calculate valuation, profitability, liquidity, and efficiency ratios for the latest fiscal period of an NSE/BSE-listed Indian equity.' It also names the specific ratios computed, distinguishing it from generic financial data retrieval siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use it: for NSE/BSE-listed Indian equities, latest fiscal period, and ratios Yahoo leaves null. It doesn't explicitly mention alternative tools or exclusion criteria, but the scoping information is sufficient for an agent to route to this tool over data-retrieval or other calculation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_growth_metricsA

Calculate revenue, net income, EPS, and free-cash-flow CAGR for an NSE/BSE-listed Indian equity over its available annual history (Yahoo provides ~5 years, so this is at most a 4-year CAGR -- years_used reports the actual span, never implies a longer history than exists).

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
symbolYes
years_usedYesHow many year-over-year gaps the CAGR is computed across
eps_cagr_pctNo
fcf_cagr_pctNo
revenue_cagr_pctNo
net_income_cagr_pctNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and handles it well. It discloses the Yahoo ~5-year history limitation, clarifies that the result is at most a 4-year CAGR, and mentions `years_used` to prevent overclaiming the time span.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the purpose, followed by the critical data-history caveat and parameter note. Each sentence adds necessary information without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value details are unnecessary here. The description covers what is calculated, the data horizon, the symbol format, and the `years_used` behavior, making it complete for a single-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides zero description for the single `symbol` parameter. The description compensates by defining it as a ticker symbol and giving concrete examples such as 'RELIANCE', 'TCS.NS', and 'TCS.BO', which is sufficient for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Calculate') and a precise resource: CAGR for revenue, net income, EPS, and free cash flow. It identifies the target market (NSE/BSE-listed Indian equities) and distinguishes itself from sibling tools like calculate_financial_ratios by focusing on growth metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended context is clear: use this when the agent needs CAGR growth metrics over an Indian equity's available annual history. It does not explicitly name alternative tools or state when not to use it, so it falls just short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_companiesA

Compare profile, key ratios, growth, and health score for multiple NSE/BSE-listed Indian equities side by side. Neutral comparison, not a relative-attractiveness ranking (see peer_valuation for that). A symbol that can't be resolved gets its error field set rather than failing the whole call.

:param symbols: ticker symbols to compare (max 5; extras are dropped)
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does it well: it discloses that the comparison is neutral, that unresolved symbols populate an error field instead of failing the entire call, and that extra symbols beyond five are dropped. These are non-obvious runtime behaviors an agent needs to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core purpose appears first, the key distinction from peer_valuation follows, and the parameter behavior is summarized in a clear param line. Every sentence earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter and a supplied output schema, the description covers the essential context: the target market, the nature of the comparison, the failure mode, and the input limit. An agent has enough information to invoke the tool correctly without needing to open schemas.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, symbols, has 0% schema description coverage, but the description fully compensates: 'ticker symbols to compare (max 5; extras are dropped)' clarifies the expected content, the limit, and the consequence of exceeding it. This adds meaningful semantics beyond the bare array-of-strings schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a precise verb and resource: compare profile, key ratios, growth, and health score for multiple NSE/BSE-listed Indian equities side by side. It also explicitly distinguishes this from relative-attractiveness ranking by pointing to peer_valuation, so an agent can select it correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool (side-by-side comparison of fundamental metrics) and when not to use it (relative-attractiveness ranking), naming peer_valuation as the alternative. It also gives a concrete constraint (max 5 symbols) and partial-failure behavior, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dcf_valuationA

Forward DCF: given growth/discount-rate assumptions, estimate intrinsic value per share and the margin of safety vs the current price. Same two-stage model as reverse_dcf (5Y explicit growth + Gordon-growth terminal value), run in the direct rather than solved-for direction. If growth isn't supplied, defaults to the company's own historical revenue CAGR -- a stated assumption, not a prediction; consider cross-checking with reverse_dcf to see what growth the current price already implies.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
:param growth: annual FCF growth assumption, e.g. 0.10 for 10%; defaults to historical revenue CAGR
:param wacc: discount rate assumption (default 0.12 = 12%)
:param terminal_growth: perpetuity growth assumption (default 0.04 = 4%); must be < wacc
ParametersJSON Schema
NameRequiredDescriptionDefault
waccNo
growthNo
symbolYes
terminal_growthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet if FCF is negative/zero, shares_outstanding is unavailable, or wacc <= terminal_growth
symbolYes
wacc_pctYesDiscount rate assumption used (input, not derived)
growth_pctYesGrowth-rate assumption used (input, defaulted from history if not supplied)
current_priceNo
projection_yearsNo
shares_outstandingNo
terminal_growth_pctYesPerpetuity growth assumption used (input, not derived)
margin_of_safety_pctNo(intrinsic - current) / current * 100. Positive = the model thinks it's undervalued at the given assumptions.
currency_mismatch_warningNoSet when Yahoo's market-data and financial-statement currencies disagree for this ticker -- this entire valuation becomes unreliable when set.
intrinsic_value_per_shareNo
growth_pct_is_assumed_defaultYesTrue if growth_pct was defaulted from historical revenue CAGR rather than supplied by the caller

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so well. It discloses the model structure (5Y explicit growth + Gordon-growth terminal value), the default growth behavior, the 'stated assumption, not a prediction' caveat, and the terminal_growth < wacc constraint. These are meaningful behavioral traits beyond the raw schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary purpose, then provides model context, defaults, cross-check guidance, and parameter documentation in a logical order. Every sentence adds value; even the caveat about historical CAGR earning its place by preventing the agent from mistaking a default for a prediction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a DCF tool with four parameters, no annotations, and an output schema present, the description is complete. It covers what the model assumes, how defaults behave, the key constraint, and how the tool differs from reverse_dcf. Nothing critical for choosing or invoking this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description provides explicit :param documentation for all four parameters. It explains symbol format with examples, growth format and default, wacc default, and terminal_growth default plus the critical constraint that it must be less than wacc. This fully compensates for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Forward DCF: given growth/discount-rate assumptions, estimate intrinsic value per share and the margin of safety vs the current price.' It also explicitly contrasts itself with reverse_dcf by noting it runs the same two-stage model 'in the direct rather than solved-for direction,' which clearly distinguishes it from a very similar sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly positions this tool as the forward/direct DCF variant and points to reverse_dcf as the alternative for reverse-solved growth. It also advises cross-checking with reverse_dcf to see what growth the current price implies, giving an agent concrete guidance on when to use this tool versus a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_accounting_red_flagsA

Scan an NSE/BSE-listed Indian equity's most recent fiscal year for structural red flags: a sudden (>5pp) margin swing, a debt spike (>30% YoY growth), goodwill/intangible assets growing much faster than total assets, and repeated exceptional/unusual items across the available history. Does NOT cover related-party transactions (no data in Yahoo Finance) or depreciation-pattern analysis (no reliable basis without industry context) -- scoped out rather than faked. Flags are observations to investigate, not accusations.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
flagsYes
symbolYes
years_usedYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It adds meaningful context: data-source limitations (no Yahoo Finance related-party data), methodological boundaries (no reliable depreciation basis), and interpretative guidance ('Flags are observations to investigate, not accusations'). It doesn't explicitly state read-only behavior, but that is inherent for a scan/analysis tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, followed by a scannable red-flag list, then exclusions and an interpretation note. Every sentence serves a purpose, and even the 'scoped out rather than faked' aside adds valuable context without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter analysis tool with an existing output schema, this description is complete: it defines the scope, names concrete red flags, states limitations, explains output semantics, and gives input format examples. An agent has enough information to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description documents the single symbol parameter with concrete examples ('RELIANCE', 'TCS.NS', 'TCS.BO') and clarifies the target market (NSE/BSE-listed Indian equity). This adds meaning beyond the bare schema definition and is sufficient for one simple parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Scan' and a precise resource: an NSE/BSE-listed Indian equity's most recent fiscal year. Enumerates concrete red-flag patterns (margin swing, debt spike, goodwill/intangible growth, exceptional items) and explicitly lists what is out of scope, making it clearly distinguishable from sibling analysis tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly delimits what the tool covers and does not cover, explaining why related-party transactions and depreciation-pattern analysis are excluded. It does not name an alternative sibling or explicitly state 'use this when...', but an agent can infer the appropriate context from the scoping and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_earnings_qualityA

Flag earnings-quality concerns for an NSE/BSE-listed Indian equity: profit rising while operating cash flow falls, receivables/inventory growing faster than revenue, heavy reliance on non-operating "other income", and whether cash flow has actually backed reported profit. Produces a 0-100 score (share of checks that came back clean) plus a flag list. These are observations worth investigating, not proof of a problem.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
flagsYes
scoreNo0-100: equal-weighted share of checks that came back clean (cfo>ni, fcf-positive, no outpacing receivables/inventory, no heavy other-income reliance) across the years evaluated
symbolYes
years_usedYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral disclosure. It specifies the output format (0-100 score plus flag list), explains what the score means (share of clean checks), and adds an important interpretive caveat that findings are observations, not proof of a problem. It does not explicitly state read-only behavior, but the analytical nature and output description make that reasonably clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently front-loaded with the core action, followed by a scannable list of detection criteria, output summary, and caveat. Each sentence adds useful content; the param line is clearly separated. It is slightly longer than necessary but every portion serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter analysis tool with an output schema, the description is largely complete: it explains inputs, detection logic, output semantics, and the interpretive stance of the results. The main gap is lack of differentiation from sibling analysis tools, and it does not mention any data-freshness or coverage limitations, but these do not prevent correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only a required string field named 'symbol' with no description, so the description must compensate. It does this well by defining the parameter as a ticker symbol and providing concrete examples: RELIANCE, TCS.NS, TCS.BO. This gives the agent enough format context to construct a valid call, though it does not exhaustively specify all exchange-suffix rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb and resource: "Flag earnings-quality concerns for an NSE/BSE-listed Indian equity." The description then enumerates the exact checks performed (operating cash flow versus profit, receivables/inventory growth, other income, cash-flow backing), clearly distinguishing it from broad ratio or health-score siblings. This leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies appropriate use by defining the tool's scope and output, but it does not explicitly state when to prefer this tool over closely related siblings like detect_accounting_red_flags or analyze_cash_flow_quality. There is no exclusion guidance, so an agent must infer the differentiation from purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

financial_health_scoreA

Score an NSE/BSE-listed Indian equity 0-100 across five equal-weighted (20% each) pillars -- Profitability (ROCE/ROE/net margin vs disclosed thresholds), Growth (revenue/EPS CAGR vs disclosed thresholds), Balance Sheet (current ratio + debt/equity), Cash Flow (FCF and CFO conversion vs net income), Valuation (historical P/E percentile, inverted so cheaper-than-own-history scores higher). A documented, transparent heuristic composed from calculate_financial_ratios, calculate_growth_metrics, analyze_cash_flow_quality, and historical_valuation -- not a market-validated predictive model.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
symbolYes
growth_scoreNoFrom revenue/EPS CAGR vs disclosed thresholds
overall_scoreNoEqual-weighted average of the five pillars above
cash_flow_scoreNoFrom FCF/net-income conversion and CFO/net-income
valuation_scoreNoFrom historical P/E percentile, inverted so cheaper-than-own-history scores higher
balance_sheet_scoreNoFrom current ratio and debt/equity
profitability_scoreNoFrom ROCE, ROE, net margin vs disclosed thresholds
currency_mismatch_warningNoSet when Yahoo's market-data and financial-statement currencies disagree for this ticker -- valuation_score (and therefore overall_score) is unreliable when set.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden and does so thoroughly. It reveals the exact equal-weighting scheme (five pillars, 20% each), the specific metrics in each pillar, the inversion behavior for valuation, and the heuristic non-predictive nature of the score. This is far beyond what a typical description discloses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense but not bloated. Every sentence contributes: the main purpose and output, the five-pillar breakdown, the compositional nature and warning, and the parameter documentation. The structure front-loads the core action and then provides necessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with a documented output schema, the description covers everything needed to select and invoke it correctly: symbol format, scoring methodology, pillar definitions, and a behavioral caveat. There are no significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description fully compensates with a `:param symbol:` line that explains it is a 'ticker symbol' and gives concrete examples ('RELIANCE', 'TCS.NS', 'TCS.BO') illustrating exchange suffix conventions. For a single-parameter tool, this is complete and unambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Score'), a specific resource ('NSE/BSE-listed Indian equity'), and a clear output range ('0-100'). It also distinguishes itself from sibling tools by naming the four underlying calculators it composes and explicitly saying it is 'not a market-validated predictive model.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: it is a composite heuristic built from calculate_financial_ratios, calculate_growth_metrics, analyze_cash_flow_quality, and historical_valuation, which implies those siblings are more appropriate for granular metrics. It also provides an exclusion by stating it is 'not a market-validated predictive model,' signaling not to use it for predictive investment decisions. It stops short of explicitly saying 'use this tool when X, use Y instead,' but the guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_high_quality_companiesA

Screen an explicit list of NSE/BSE-listed Indian equities and rank by financial_health_score, using earnings-quality score and red-flag count as tiebreakers. Yahoo has no NIFTY-500-style constituent-list endpoint, so you supply the candidates (max 15). Candidates that couldn't be resolved are appended at the end rather than dropped silently.

:param symbols: candidate ticker symbols to screen (max 15; extras are dropped)
:param max_results: how many ranked candidates to return (failed ones don't count against this)
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
candidatesYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It discloses important non-obvious behavior: unresolved candidates are appended at the end rather than silently dropped, extras beyond 15 are dropped, and failed candidates do not count against max_results. This is more transparent than most descriptions, though it does not mention side effects, permissions, or return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with purpose in the first sentence and behavior explained in the second. The param lines are useful and not redundant with the schema. Minor repetition of 'max 15' between prose and param docs keeps it from being a perfect 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two parameters and an output schema, the description covers the essential call context: candidate source, limits, tiebreakers, and failure handling. The main gap is exactly how ticker symbols should be formatted for NSE/BSE equities, which is important for a Yfinance-based tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does. It explains that symbols are candidate ticker symbols (max 15, extras dropped) and that max_results counts only ranked candidates, not failed ones. It could add ticker format guidance (e.g., .NS suffix), but the provided semantics are useful and actionable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('screen'), a specific resource ('NSE/BSE-listed Indian equities'), and a concrete ranking method ('by financial_health_score, using earnings-quality score and red-flag count as tiebreakers'). This clearly distinguishes it from sibling tools like find_undervalued_companies or calculate_financial_ratios.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent that candidates must be supplied because Yahoo has no NIFTY-500-style endpoint, and sets the max-15 constraint. It gives clear context for when to use the tool, though it does not explicitly name alternative tools or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_undervalued_companiesA

Screen an explicit list of NSE/BSE-listed Indian equities for undervaluation signals: cheap vs their own historical P/E, and/or a reverse-DCF "growth cushion" (the price implies less growth than the company has actually delivered). Yahoo has no NIFTY-500-style constituent-list endpoint, so this can't discover a universe on its own -- you supply the candidates (max 15). Ranked best-first by a transparent 0-100 score, min-max normalized across this candidate list only (not an absolute scale); candidates that couldn't be resolved are appended at the end rather than dropped silently.

:param symbols: candidate ticker symbols to screen (max 15; extras are dropped)
:param max_results: how many ranked candidates to return (failed ones don't count against this)
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
candidatesYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly. It discloses ranking normalization (min-max across candidate list only, not absolute), the inability to discover a universe, handling of unresolved candidates (appended, not dropped), and the semantics of max_results (failed candidates don't count). This goes well beyond the schema and gives the agent accurate expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: the core purpose is front-loaded, followed by a critical limitation, then key behavioral details and parameter documentation. Every sentence adds essential information without redundancy or filler, making it easy for an agent to parse and internalize.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, two undocumented parameters, and no annotations, the description is remarkably complete. It covers input constraints, ranking methodology, score interpretation, and edge-case handling. Since an output schema exists, the description does not need to explain return fields, and the provided behavioral context is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully document parameters. It does: symbols are defined as candidate ticker symbols with a max-15 constraint and 'extras are dropped', and max_results is explained with the crucial detail that unresolved candidates don't count against the limit. This adds significant meaning beyond the bare type and default in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Screen'), a specific resource ('explicit list of NSE/BSE-listed Indian equities'), and the exact purpose ('undervaluation signals'). It further distinguishes itself by noting it cannot discover a universe and requires supplied candidates, which separates it from potential sibling screeners like find_high_quality_companies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly specifies the precondition: the user must supply candidate symbols because the tool cannot discover a universe on its own. It also notes the max 15 candidates and the fallback behavior for unresolved items, providing solid context for when to use this tool, though it does not explicitly name or exclude alternative sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_investment_memoA

Compose analyze_company's output into a structured research-memo shape: business summary, profitability, growth, cash flow, management, valuation, health score, risks, and bull/bear case bullets. The bull/bear case is mechanically derived from the ok/warning flags and valuation label already computed elsewhere -- a synthesis of this server's own numbers, not fabricated external/qualitative research. No "Catalysts" section: that needs analyst/news data this server doesn't have -- omitted rather than invented.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
risksYesDerived from 'warning' flags in earnings_quality and red_flags
growthYes
symbolYes
companyNo
bear_caseYes
bull_caseYes
cash_flowYes
valuationYes
managementYes
health_scoreYes
profitabilityYes
business_summaryNo
currency_mismatch_warningNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral disclosure. It explicitly states the bull/bear case is 'mechanically derived' from existing flags and labels rather than fabricated external research, and that Catalysts are 'omitted rather than invented.' This gives clear insight into the tool's data provenance and boundaries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the primary purpose, followed by two brief behavioral caveats and a param line. Every sentence adds value, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains what the tool produces (memo sections), how it derives the bull/bear case, what it intentionally excludes and why, and the required input. With an output schema also present, an agent has everything needed to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description's ':param symbol: ticker symbol, e.g. RELIANCE, TCS.NS, or TCS.BO' is the only guidance for the single parameter. It provides concrete format examples, fully compensating for the empty schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action — 'Compose analyze_company's output into a structured research-memo shape' — and enumerates the sections included in the memo. This clearly differentiates it from the sibling data-retrieval and analysis tools and names its direct input source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used after analyze_company has been run, since it composes that tool's output. It also states a clear limitation (no Catalysts section because analyst/news data is unavailable), which helps set expectations. However, it doesn't explicitly name alternatives or provide an if/when-not rule, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_balance_sheetA

Get the balance sheet for an NSE/BSE-listed Indian equity: assets, liabilities, equity, debt, and working-capital line items per fiscal period. Yahoo provides ~5 years annual / ~5-6 quarters, newest period first.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
:param period: "annual" or "quarterly"
ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoannual
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It usefully discloses Yahoo as the data source, approximate coverage (~5 years annual / ~5-6 quarters), and ordering (newest period first), which an agent cannot infer from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences plus a structured param block. Purpose and behavioral context are front-loaded, every sentence adds information, and there is no irrelevant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with an output schema, the description covers purpose, equity scope, data source, temporal depth, ordering, and parameter formats. Minor omissions like currency/units are not critical because the output schema provides structural detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates by documenting both parameters: symbol with explicitly format examples (RELIANCE, TCS.NS, TCS.BO) and period with its allowed values. The period entry largely repeats the enum, so the added value is strong for symbol but modest for period.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('balance sheet for an NSE/BSE-listed Indian equity'), and lists the line items (assets, liabilities, equity, debt, working-capital) that clearly distinguish it from sibling statements like get_income_statement and get_cash_flow_statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource and line items, but there is no explicit statement of when to use this tool vs get_income_statement or get_cash_flow_statement, nor any exclusions. The data-source and period context help, but alternatives are not directly addressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cash_flow_statementA

Get the cash flow statement for an NSE/BSE-listed Indian equity: operating cash flow, capex, free cash flow, financing cash flow, and dividends paid per fiscal period. Yahoo provides ~5 years annual / ~5-6 quarters, newest period first.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
:param period: "annual" or "quarterly"
ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoannual
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that Yahoo is the data source, that approximately 5 years of annual data or 5-6 quarters are available, and that periods are returned newest-first. These details go beyond the schema and help the agent set expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: the lead sentence states the tool's purpose and content, the second sentence adds data source and availability constraints, and the parameter lines are minimal and useful. No filler or redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has an output schema, and the description provides source, period depth, ordering, and parameter examples. It is sufficient for an agent to select and invoke the tool correctly. A minor gap is that it does not explain behavior for tickers with multiple listings, though the exchange-suffix examples partially cover this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description documents both parameters. The symbol parameter gains meaningful examples like 'RELIANCE', 'TCS.NS', and 'TCS.BO', which the schema lacks. The period parameter repeats the enum but also adds context by linking annual to ~5 years and quarterly to ~5-6 quarters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get the cash flow statement' for an NSE/BSE-listed Indian equity, and enumerates the exact components returned (operating cash flow, capex, free cash flow, financing cash flow, dividends paid). This clearly distinguishes it from sibling tools like get_income_statement and get_balance_sheet.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: choose this tool when raw cash flow statement data is needed. However, the description does not explicitly mention alternatives or state when not to use it, such as when the agent needs analytical assessments like analyze_cash_flow_quality instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_company_newsA

Get recent news headlines/summaries for an NSE/BSE-listed Indian equity.

Yahoo's news stream for a ticker is loosely sector/theme-tagged, not a
strict per-company filter -- expect some broader industry or
competitor coverage mixed in with company-specific stories, and
occasionally an outright unrelated item. Each article's
`mentions_company` flag is a rough, mechanical relevance signal (does
the company's name/ticker literally appear in the title/summary), not
a guarantee either way -- use it to weigh results, not to assume
everything returned is deeply relevant or that a False is noise.

An empty result is a legitimate outcome (no recent coverage indexed --
common for small/micro caps), not necessarily an error; the ticker is
still validated first, so an invalid symbol raises rather than
silently returning empty.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
:param limit: max number of articles to return (default 10)
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNoSet when articles is empty: could mean no recent Yahoo-indexed coverage (common for small/micro caps) or an invalid symbol -- confirm the ticker via search_ticker/get_company_profile if unsure
symbolYes
articlesYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description fully carries the burden of behavioral disclosure and does so very well. It explicitly warns that Yahoo's news stream is loosely tagged and may contain broader industry/competitor/unrelated items, explains the mechanical `mentions_company` flag, and addresses both empty-success and invalid-symbol failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and every subsequent sentence earns its place: noise caveat, relevance flag caveat, empty-result semantics, validation note, and parameter docs. All are essential to correct invocation in an agentic context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and only two simple parameters, the description covers all contextual gaps: result-relevance expectations, failure behavior, and parameter syntax. No critical information needed to call or interpret the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema coverage, the description fully documents both params in the `:param` block: symbol gets ticker examples (RELIANCE, TCS.NS, TCS.BO) and limit's meaning/default are stated. This adds substantial value beyond the bare input schema and gives an agent everything needed to fill the args correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Get recent news headlines/summaries') and explicitly scopes the resource to NSE/BSE-listed Indian equities. This clearly distinguishes it from all sibling tools, which are financial analysis and data lookup operations rather than news retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when the tool is appropriate: any time recent news coverage for an Indian listed equity is needed. It also clarifies edge-case behavior (empty result is legitimate, invalid symbols raise), though it does not name alternatives because none of the siblings offer news.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_company_profileA

Get the company profile/overview for an NSE/BSE-listed Indian equity.

Accepts a bare symbol (e.g. "RELIANCE") and normalizes it to NSE by
default (appends .NS), or an explicit .NS/.BO suffix to pick the
exchange. This server covers Indian markets only -- a symbol that
resolves to real data on a non-Indian exchange is rejected rather than
silently returned.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityNo
nameNo
sectorNo
symbolYesNormalized symbol, e.g. RELIANCE.NS
countryNo
websiteNo
currencyNo
exchangeNoHuman-readable: NSE or BSE
industryNo
employeesNo
market_capNo
descriptionNoBusiness summary

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full disclosure burden and does well: it reveals that bare symbols are normalized to .NS, that an explicit .NS/.BO suffix selects the exchange, and that non-Indian symbols are rejected rather than silently returned. This covers the non-obvious behaviors an agent needs to predict outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is about 70 words with a front-loaded purpose sentence, and every subsequent sentence adds unique value: normalization, market scope, rejection behavior, and parameter examples. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with an output schema, the description covers the critical input format and market restrictions, so an agent can invoke it correctly. It stops just short of spelling out error behavior for unknown Indian symbols, but that is a minor omission given the output schema already documents the return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only declares a required string 'symbol' with no description (0% coverage), so the description must compensate. It does so by giving concrete examples ('RELIANCE', 'TCS.NS', 'TCS.BO') and explaining the default NSE normalization, which is precisely the semantic information an agent needs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb and resource ('Get the company profile/overview') and limits scope to NSE/BSE-listed Indian equities, which clearly separates it from sibling tools dealing with financial statements, ratios, or news. The exchange-suffix behavior further clarifies exactly what kind of lookup this performs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives useful context about Indian-market-only coverage and symbol normalization, but it never explicitly compares against any sibling tool or states a condition for choosing this over alternatives. The 'when to use' is only implied by the first sentence, not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dividend_historyA

Get the dividend and stock-split history for an NSE/BSE-listed Indian equity. An empty dividends list is a legitimate result for a company that has never paid one (common for growth companies) -- not an error; ticker validity is checked via .info separately.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
splitsYes
symbolYes
currencyNo
dividendsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does this well by explicitly stating that an empty dividends list is a legitimate result, not an error, and that ticker validity is checked separately via .info. This prevents a common false-positive failure interpretation. It could go further by describing the shape of the returned history, but the key behavioral traps are addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the primary purpose, and then adds the two most important behavioral nuances in separate sentences. The parameter docstring is clean and does not repeat schema information verbosely. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with one parameter, the description covers purpose, parameter format, and error/empty-result semantics. There is no output schema, so a bit more detail about the returned structure or how stock splits are represented would improve completeness, but the current description gives an agent enough to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only defines symbol as a required string with no description, so the description fully compensates. It explains the symbol parameter, provides realistic examples (RELIANCE, TCS.NS, TCS.BO), and clarifies exchange-suffix conventions. For a single-parameter tool, this is complete and actionable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: getting dividend and stock-split history for an NSE/BSE-listed Indian equity. This clearly distinguishes the tool from financial-analysis siblings like get_stock_price_history or get_company_profile, and there is no ambiguity about what it returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the tool's context clear: use it when you need dividend or stock-split data for an Indian equity. It does not explicitly name alternative tools or state when not to use it, but its purpose is specific enough that an agent can infer the appropriate usage scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_income_statementA

Get the income statement for an NSE/BSE-listed Indian equity: revenue, gross profit, operating income, EBIT, EBITDA, net income, and EPS per fiscal period. Yahoo provides ~5 years annual / ~5-6 quarters, newest period first.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
:param period: "annual" or "quarterly"
ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoannual
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the behavioral disclosure burden. It adds useful behavioral context by specifying the data source (Yahoo), the approximate lookback window (~5 years annual / ~5-6 quarters), and the ordering (newest period first). This goes well beyond a bare operation description, though it doesn't mention error behavior or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct, front-loaded with the main purpose, and immediately followed by compact parameter documentation. Every sentence adds value, and the size is appropriate for a two-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, parameter semantics, data coverage, and ordering. An output schema is present, so return values do not need to be described. The only notable gap is the lack of explicit guidance on when to choose this tool versus its financial-statement siblings, but overall the context is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully document parameters. It explains the symbol parameter with concrete ticker examples (RELIANCE, TCS.NS, TCS.BO) and clarifies that period accepts 'annual' or 'quarterly', matching the schema enum. This fully compensates for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (get), the resource (income statement), the market coverage (NSE/BSE-listed Indian equity), and the included metrics (revenue, gross profit, EBIT, EBITDA, net income, EPS). This makes it easy to distinguish from sibling tools like get_balance_sheet or get_cash_flow_statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for income statement data through the tool name and content, but it does not explicitly state when to use it over alternatives such as get_balance_sheet or get_cash_flow_statement. There is no when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_price_historyA

Get OHLCV price history for an NSE/BSE-listed Indian equity. Intraday intervals aren't supported (out of scope for a fundamentals tool, and Yahoo restricts them to short windows anyway). Capped at 500 bars -- if a period/interval combination would return more, the oldest are dropped and truncated is set.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
:param period: how far back: 1mo, 3mo, 6mo, 1y, 2y, 5y, or max
:param interval: bar size: 1d, 1wk, or 1mo
ParametersJSON Schema
NameRequiredDescriptionDefault
periodNo1y
symbolYes
intervalNo1d

Output Schema

ParametersJSON Schema
NameRequiredDescription
barsYes
symbolYes
currencyNo
intervalYes
truncatedNoTrue if more bars were available than the 500-bar cap and the oldest were dropped

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral disclosure burden. It reveals the unsupported intraday intervals, the 500-bar cap, the dropping of oldest bars, and the `truncated` flag. This goes well beyond the bare schema and gives useful operational expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a concise lead paragraph followed by a parameter list. Every sentence adds useful information, and the main capability is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a data-retrieval tool with no annotations and minimal schema descriptions, the description covers inputs, constraints, and even a return signal (`truncated`). The output schema can handle the remaining return-value details, so nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description fully documents all three parameters: symbol with concrete examples, period with allowed values, and interval with allowed values. This completely compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get'), resource ('OHLCV price history'), and universe ('NSE/BSE-listed Indian equity'). It is clearly distinct from siblings like get_dividend_history or get_company_profile, and the data type is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context on when this tool is appropriate: historical OHLCV for Indian equities, with intraday intervals explicitly excluded. It also explains the 500-bar cap behavior. However, it does not name a specific alternative tool for intraday data or other price-related needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

historical_valuationA

Compare an NSE/BSE-listed Indian equity's current P/E to its own historical annual P/E (fiscal-year-end price / that year's diluted EPS) over its available history (Yahoo gives ~5 years -- years_used reports the real span, never implies a longer history). Years with negative/missing EPS are excluded. Relative to the company's OWN past only -- not an absolute cheap/expensive judgment or a peer comparison.

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
labelNoEXPENSIVE (>80th percentile), FAIR, or CHEAP (<20th percentile) vs own history
symbolYes
current_peNo
percentileNoCurrent P/E's percentile rank within its own historical annual P/E series
years_usedYesNumber of historical annual P/E data points used
historical_pe_medianNo
currency_mismatch_warningNoSet when Yahoo's market-data and financial-statement currencies disagree for this ticker -- this whole tool (price / EPS) becomes unreliable when set.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, but the description compensates with substantive behavioral details: data source (Yahoo, ~5 years), the years_used reporting field, exclusion of negative/missing EPS years, and the relative-to-history framing. This gives the agent a clear picture of what to expect beyond the call itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Each sentence adds necessary information: the core operation, data limitations, exclusion rules, and parameter examples. No filler or redundant phrasing, with the main purpose stated first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema, the description covers all necessary invocation details: what it does, how symbols are formatted, what data range to expect, and edge cases. It is complete and self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the symbol parameter, but the description's ':param symbol:' section provides examples (RELIANCE, TCS.NS, TCS.BO) and implicitly explains exchange suffixes. This fully compensates for the missing schema-level documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Compare') and names a precise resource (an Indian equity's current P/E vs its own historical annual P/E). It explicitly distinguishes itself from peer comparisons, making it clearly differentiated from sibling tools like peer_valuation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states what the tool does and explicitly excludes use cases (absolute cheap/expensive judgments, peer comparison). This gives strong contextual guidance, though it does not explicitly name alternative tools to use for those cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

peer_valuationA

Compare valuation and quality multiples for an NSE/BSE-listed Indian equity against explicit peer tickers (Yahoo has no peer-discovery endpoint for Indian equities, so peers must be supplied). Includes a transparent 0-100 "attractiveness score" per row, min-max normalized within this peer set only -- ROCE, revenue CAGR, EPS CAGR, and FCF yield count positively, debt/equity negatively, equal-weighted. Not an absolute scale -- rerun if the peer set changes. A peer that can't be resolved gets its error field set rather than failing the whole call.

:param symbol: the anchor ticker symbol
:param peer_symbols: peer ticker symbols to compare against (max 5; extras dropped)
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes
peer_symbolsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so thoroughly. It explains the 0-100 attractiveness score is min-max normalized within the supplied peer set only, lists the exact factors and weightings, warns the score is not absolute, and states that unresolved peers get an error field instead of failing the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: purpose, usage constraint, scoring methodology, error behavior, and parameter details are all included. It is well-structured and front-loaded with the core purpose before diving into scoring details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only two simple parameters and an output schema, so the description does not need to explain return values. It covers the essential behavioral context: peer-set-relative scoring, input limits, and error handling, making it complete enough for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning to both parameters by labeling symbol as the anchor ticker and peer_symbols as peer tickers with a max of 5 and drop behavior. It could have added more detail about ticker formats but is otherwise sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compares valuation and quality multiples for Indian equities against explicit peer tickers, with a concrete resource and action. It also distinguishes itself from peer-discovery tools by noting Yahoo has no peer-discovery endpoint for Indian equities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context that peers must be supplied and caps peer_symbols at 5, with extras dropped. It does not explicitly compare against sibling tools like compare_companies or historical_valuation, but the Indian-equity peer-comparison use case is clearly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pingA

Health-check tool — confirms the MCP server is wired up correctly.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. 'Health-check' and 'confirms' imply a read-only, non-destructive operation with no side effects, which is the key behavioral trait an agent needs. The presence of an output schema covers return-value expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It immediately states the tool's purpose and avoids repeating any schema or annotation information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter health-check tool with an output schema, this description is fully sufficient. There are no inputs, side effects, or complex behaviors to explain, and the sibling context confirms its unique role.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so parameter-semantics guidance is not needed. The description adds no parameter information, but the baseline of 4 applies because there is nothing to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies this as a health-check tool with a specific verb ('confirms') and resource ('the MCP server is wired up correctly'). It is immediately distinguishable from the sibling financial-analysis tools, all of which perform data retrieval or computation rather than connectivity checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use when you need to verify that the server is reachable and properly connected. While it does not explicitly name alternatives or exclusions, the unique zero-parameter health-check purpose makes the appropriate usage obvious among the listed siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reverse_dcfA

Instead of asking "what is the fair value", ask "what growth does the current price already assume": solves a two-stage DCF (5Y explicit growth + Gordon-growth terminal value) by bisection for the constant annual growth rate that makes the model's enterprise value match today's actual market cap + net debt. Compares that implied rate to the company's own historical revenue/FCF CAGR so you can judge whether the price requires stronger growth than the company has actually achieved. Not a forecast -- an implied-expectations check, with disclosed assumptions (wacc/terminal_growth are inputs you can override, not derived).

:param symbol: ticker symbol, e.g. "RELIANCE", "TCS.NS", or "TCS.BO"
:param wacc: discount rate assumption (default 0.12 = 12%)
:param terminal_growth: perpetuity growth assumption (default 0.04 = 4%); must be < wacc
ParametersJSON Schema
NameRequiredDescriptionDefault
waccNo
symbolYes
terminal_growthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet if FCF is negative/zero or no solution exists in the search range
symbolYes
wacc_pctYesDiscount rate assumption used (input, not derived)
market_capNo
current_priceNo
projection_yearsNo
implied_growth_pctNoConstant annual growth rate over the projection period implied by the current price
terminal_growth_pctYesPerpetuity growth assumption used (input, not derived)
historical_fcf_cagr_pctNo
currency_mismatch_warningNoSet when Yahoo's market-data and financial-statement currencies disagree for this ticker -- the entire DCF (which combines market cap with statement-sourced FCF) becomes unreliable when set.
historical_revenue_cagr_pctNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the behavioral burden. It reveals the methodology (two-stage DCF with 5Y explicit growth and Gordon-growth terminal value, solved by bisection), declares that wacc and terminal_growth are overridable assumptions rather than derived values, and explicitly states the tool is not a forecast.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core conceptual shift, then state the method, assumptions, and interpretation. Each sentence adds necessary information without filler, and the parameter breakdown is compact and useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description does not need to explain return values. It covers the purpose, method, assumptions, constraints, interpretation, and caveats, providing enough for an agent to decide when to call it and what inputs to provide.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema description coverage is 0%, the description effectively documents all three parameters: symbol with concrete examples, wacc with default conversion, and terminal_growth with the constraint that it must be less than wacc. This compensates fully for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's goal: solve a two-stage DCF by bisection to find the constant growth rate that makes enterprise value match current market cap plus net debt. It clearly distinguishes itself from fair-value DCF by framing it as an implied-expectations check rather than a forecast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly communicates when to use the tool: when you want to know what growth the current price already assumes, instead of asking what the fair value is. It stops short of explicitly naming sibling alternatives like dcf_valuation or stating exact exclusions, but the use case is clearly conveyed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_tickerA

Find the NSE/BSE ticker symbol for a company by name or partial name. Use this first whenever you know a company's name but not its exact Yahoo Finance ticker, before calling any other tool here.

Filters Yahoo's global search results down to Indian-listed equities
only -- a plain name search otherwise mixes in US ADRs, other
exchanges, and non-equity instruments (ETFs, futures).

Two things worth knowing: (1) a company that demerged can have
multiple current tickers for what feels like one name -- e.g.
"Tata Motors" correctly returns two separate post-split entities
(commercial vehicles and passenger vehicles); don't assume a single
match is right without checking `name`/`industry`. (2) a renamed
company won't be found under its old name at all -- e.g. "Zomato"
returns zero matches since the company renamed to "Eternal Limited";
an empty result doesn't necessarily mean the company isn't listed, so
try the company's current/formal name before concluding that.

:param query: company name or partial name, e.g. "Reliance", "Tata Consultancy Services"
:param limit: max number of matches to return (default 10)
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNoSet when matches is empty: the company may have been renamed, or isn't Indian-listed
queryYes
matchesYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description must carry the full burden, and it does: it discloses Indian-market filtering, demerger multiple-ticker behavior, renamed-company failures, and the real meaning of empty results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although longer than average, every sentence serves a purpose; the core purpose and usage rule are front-loaded, and the behavioral caveats are organized clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and annotations are absent, this description provides all essential context an agent needs to call, interpret results, and handle edge cases for this search-first tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description fully compensates by defining `query` with examples and `limit` with a default and meaning, adding real semantics beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find the NSE/BSE/BSE ticker symbol for a company by name or partial name') and immediately says to use it before any other tool, making it distinct from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance ('whenever you know a company's name but not its exact Yahoo Finance ticker, before calling any other tool here') and warns against plain name searches mixing in irrelevant instruments, plus advises trying current/formal names on empty results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.1/5.0
Disambiguation4/5

The 28 tools cover distinct data-retrieval, analysis, screening, and synthesis functions. A few analysis tools (e.g., analyze_cash_flow_quality vs detect_earnings_quality, calculate_financial_ratios vs calculate_growth_metrics) share underlying data and themes, but their detailed descriptions clearly delineate purpose. Overall, misselection risk is low.

Naming Consistency3/5

Most tools use snake_case and a clear verb (get_, calculate_, analyze_, detect_, find_), giving a generally readable set. However, several tools are noun-phrase named (bankruptcy_risk_score, peer_valuation, historical_valuation, financial_health_score, dcf_valuation), and 'ping' is a bare verb, breaking the otherwise consistent verb_noun pattern.

Tool Count2/5

At 28 tools, the set is well beyond the typical 15-tool upper bound and feels heavy for an agent to navigate. While each tool is individually purposeful, many are compositional (analyze_company, generate_investment_memo) or overlapping in theme, so the count could be tightened.

Completeness5/5

The server covers an exceptionally complete fundamental-analysis workflow for Indian equities: statements, ratios, growth, margin/cash-flow quality, red flags, valuation, DCF, peer comparison, screening, and synthesis. It explicitly scopes out data it can't reliably source (promoter holdings, related-party transactions), avoiding gaps that would mislead.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides comprehensive stock screening capabilities through Yahoo Finance. Enables LLMs to screen stocks based on technical, fundamental, and options criteria, with support for watchlist management and result storage.
    48
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides access to real-time and historical Indian stock data via Yahoo Finance API, enabling local LLMs to retrieve stock information through MCP-compatible agents like Claude Desktop and Cursor.
    2
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time and historical Indian stock market data from NSE and BSE exchanges with 66 tools covering quotes, options chains, corporate actions, IPOs, and market analytics for LLM-powered financial analysis.
    85
    12
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables stock analysis by fetching company details, profit data, and shareholding patterns from Screener.in using local LLM tools.

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/Prem07a/FinMCP'

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