Skip to main content
Glama
aswathas

TradeMCP

by aswathas

TradeMCP — Indian Market Intelligence MCP Server

A free Model Context Protocol server for Indian equities (NSE/BSE). It gives an AI agent 14 tools covering live quotes, OHLCV history, 57 technical indicators, full fundamental ratios, financial statements, screeners and portfolio analytics.

No API keys. No paid subscriptions. No account. Every number comes from free public endpoints.

Demo → aswathas.github.io/TradeMCP — the server's own output, served from a saved snapshot.


Install

From source — works today:

git clone https://github.com/aswathas/TradeMCP.git
cd TradeMCP
python -m venv .venv
.venv\Scripts\activate          # Windows
source .venv/bin/activate       # macOS / Linux
pip install -e ".[dev]"

Then point your MCP client at the server you just installed — see Connect to your MCP client below.

Requires Python 3.11+. Two runtime dependencies: mcp and httpx — pydantic comes along as mcp's own dependency (pyproject.toml pins it explicitly). The dev extra adds pytest for the test suite.

The npm package — waiting on publish

The npm package is written and tested, but it is not on the registry yet, so this command will not resolve yet:

npx -y @aswathas/trademcp

Once it is published it becomes the one-command install: the package carries the Python server and builds its own environment on first run, so all you need is Node 18+ and Python 3.11+.

First run takes about half a minute (it builds that environment), after which the server starts in about a second. If your MCP client has a short start-up timeout, install the package once globally so the build happens at install time, then point the client at the trademcp command:

npm i -g @aswathas/trademcp
{ "mcpServers": { "trademcp": { "command": "trademcp" } } }

Claude Code, once the package is published:

claude mcp add trademcp -- npx -y @aswathas/trademcp

Or run the helper script (repository only — it is not in the npm package):

.\scripts\install.ps1            # Windows
./scripts/install.sh             # macOS / Linux

Related MCP server: Tapetide - Indian Stock Market MCP

Showcase

A demo page built from the server's own output. Every figure on it is the server's own — the live board recomputes indicators in the browser from the same raw candles the server returned. The hosted copy is static, so it serves that output from a saved snapshot and labels itself SNAPSHOT on screen; running the server locally is what makes it live.

The image URLs are absolute on purpose: the npm package ships only the server, so relative showcase/... paths would render as broken images on the npm page.

Run it locally (repository only) — the page calls /api/* on that server, which calls the MCP tools themselves:

pip install -e .
python scripts/serve_showcase.py --port 8099
# → http://127.0.0.1:8099/

To republish the demo after changing showcase/site (repository only):

.\scripts\deploy_pages.ps1

That copies showcase/site onto the gh-pages branch, which is what GitHub Pages serves. The branch is a build artefact — showcase/site stays the single source of truth.


Free data sources

Source

Used for

Why it works without a key

Yahoo Finance chart / quote / fundamentals-timeseries

prices, volumes, quotes, statements, trailing ratios

Public endpoints; the quote/summary APIs only need a free cookie+crumb handshake, done automatically

NSE India static CSV listings (nsearchives.nseindia.com)

symbol universe, company names, ISIN, industry

Static files, not behind the bot protection that guards NSE's live JSON API

Screener.in

India-specific ratios: ROCE, ROE, promoter/FII/DII holding, working-capital days

Public company pages, parsed defensively and treated as optional

All ratios are computed locally from the raw statement lines rather than copied off a screen, so the numbers are consistent and auditable.


Connect to your MCP client

Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "trademcp": {
      "command": "C:\\path\\to\\TradeMCP\\.venv\\Scripts\\python.exe",
      "args": ["-m", "trademcp"]
    }
  }
}

MiniMax Code (MCode)

{
  "mcpServers": {
    "trademcp": {
      "command": "C:\\path\\to\\TradeMCP\\.venv\\Scripts\\python.exe",
      "args": ["-m", "trademcp"]
    }
  }
}

Cursor / VS Code / Windsurf

Same mcpServers block in ~/.cursor/mcp.json or .vscode/mcp.json.

Replace the command path with your own. If you installed with pip install -e . globally, "command": "trademcp" and "args": [] also works.

Via npm (once the package is published)

{
  "mcpServers": {
    "trademcp": {
      "command": "npx",
      "args": ["-y", "@aswathas/trademcp"]
    }
  }
}

The tools

All tools are read-only, accept response_format (markdown default, or json), and take an NSE symbol or a company name ("RELIANCE", "tata motors", "NSE:TCS", "RELIANCE.NS", an ISIN, or an index alias).

Market

Tool

What it does

trademcp_search_symbol

Search NSE listings by ticker or company name → code, name, ISIN, series

trademcp_get_quote

Last price, day change/range, volume, 52-week range & position, market cap, P/E, P/B, EPS, dividend yield, beta, 1w/1m/3m/6m/1y returns

trademcp_get_price_history

OHLCV candles (bars of 1d/1wk/1mo, or intraday 1h/30m/15m/5m, over a 1mo–max window) + period return, high/low, volume

trademcp_get_index_snapshot

NIFTY 50, SENSEX, 12 NIFTY sector indices (Bank, IT, Auto, FMCG, Pharma, Realty, Metal, Energy, PSU Bank, Private Bank, Financial Services, Media), INDIA VIX — 15 by default. Yahoo does not publish Nifty Private Bank, so that one comes back under unavailable

trademcp_get_market_breadth

Advancers/decliners, A/D ratio, average & median move, top gainers/losers, % above 200-DMA

trademcp_compare_stocks

2–5 stocks side by side: price, valuation, ROE, margin, D/E, CAGR, health score, technical score

Technical

Tool

What it does

trademcp_get_technical_indicators

Any of 57 indicators with recent values

trademcp_get_technical_analysis

Every indicator scored into signals + composite Strong Buy → Strong Sell, risk stats (volatility, Sharpe, Sortino, max drawdown, beta, alpha, relative strength), candlestick patterns

trademcp_get_support_resistance

5 pivot styles (classic, Camarilla, Fibonacci, Woodie, DeMark), Fibonacci retracements, swing highs/lows, Donchian channels, ATR, 52-week range position

Indicators covered (57) — trend: SMA 20/50/200, EMA 9/21/50/200, MACD (+ signal, histogram), ADX/+DI/−DI, Supertrend, Parabolic SAR, Ichimoku (Tenkan/Kijun/Senkou A/B), Aroon, Vortex, linear slope · momentum: RSI 7/14, Stochastic %K/%D, StochRSI, CCI, Williams %R, MFI, ROC, CMO, TSI, Ultimate Oscillator, Awesome Oscillator · volatility: ATR, true range, Bollinger (+%B, bandwidth), Keltner, Donchian, historical volatility, z-score · volume: OBV, VWAP, Chaikin Money Flow, Accumulation/Distribution, Price-Volume Trend, Force Index, volume ratio.

Candlestick patterns (18) — detected by trademcp_get_technical_analysis, each reported with a bullish/bearish bias: Dragonfly Doji, Gravestone Doji, Doji, Hammer, Shooting Star, Inverted Hammer, Bullish Engulfing, Bearish Engulfing, Harami, Piercing Line, Dark Cloud Cover, Three White Soldiers, Three Black Crows, Morning Star, Evening Star, Marubozu, Tweezer Top, Tweezer Bottom.

Fundamentals

Tool

What it does

trademcp_get_fundamentals

Valuation, profitability, leverage, liquidity, growth, DuPont, 0–100 health score, India-specific ratios (ROCE, ROE, promoter/FII/DII holding, debtor/inventory/payable days, cash conversion cycle)

trademcp_get_valuation

Focused valuation sheet + plain-English cheap/expensive read + optional peer comparison

trademcp_get_financial_statements

Income statement, balance sheet and cash flow, annual or quarterly

Ratios computed (54 across 6 groups): valuation — market cap, enterprise value, P/E, PEG, P/B, P/S, EV/EBITDA, EV/Sales, dividend yield, EPS, book value/share, DPS · profitability — gross/operating/EBITDA/net margin, ROE, ROA, ROCE, ROIC, asset turnover, equity multiplier, effective tax rate · leverage — debt/equity, debt/assets, cash, net debt, net debt/EBITDA, interest coverage, debt/capital · liquidity — current ratio, quick ratio, cash ratio, working capital, working capital/share, operating cash flow, free cash flow, FCF margin, CFO/net income, capex, CFPS, FCFPS · growth — revenue/net income/EPS/CFO YoY, revenue and net income 3-year and 5-year CAGR · DuPont — net margin × asset turnover × equity multiplier, reconciled ROE.

Screening & portfolio

Tool

What it does

trademcp_screen_stocks

Scan NIFTY 50/100/500 or the NSE universe (first 600 symbols in NSE listing order) on 10 fundamental filters + 4 technical filters, sorted and ranked (sort_by + sort_order)

trademcp_analyze_portfolio

Values positions, P&L, weights, sector concentration, per-holding signals, portfolio beta/vol/Sharpe/drawdown vs benchmark, and risk flags


Example questions

  • "Is Reliance a buy right now? Show me the technicals and the fundamentals."

  • "Screen the NIFTY 50 for ROE above 15% and debt/equity under 0.5, sorted by market cap."

  • "What are the support and resistance levels for SBI?"

  • "Compare Infosys and TCS on valuation, growth and momentum."

  • "How is my portfolio of 10 Reliance, 5 TCS and 20 Infosys positioned?"

  • "What is today's market breadth in the NIFTY 50?"


Configuration

Every setting has a sensible default; override with environment variables.

Variable

Default

Purpose

TRADEMCP_TIMEOUT

30

HTTP timeout in seconds

TRADEMCP_CACHE_DIR

~/.cache/trademcp

Disk cache location

TRADEMCP_QUOTE_TTL

300

Quote cache seconds (5 min)

TRADEMCP_PRICE_TTL

900

Price history cache seconds (15 min)

TRADEMCP_FUNDAMENTALS_TTL

21600

Fundamentals cache seconds (6 h)

TRADEMCP_UNIVERSE_TTL

43200

NSE listing cache seconds (12 h)

TRADEMCP_PROFILE_TTL

86400

Screener.in profile cache seconds (24 h)

TRADEMCP_MAX_CONCURRENCY

8

Parallel upstream requests

TRADEMCP_ENABLE_SCREENER_IN

1

Set to 0 to skip Screener.in entirely

TRADEMCP_USER_AGENT

browser UA

Outbound User-Agent

Caching keeps repeat screener and quote calls off the free endpoints. Delete the cache directory to force a refresh.


Verify it works

Repository only — scripts/ and tests/ are not in the npm package.

pip install -e ".[dev]"                # the dev extra is what installs pytest
python scripts/verify_all_tools.py    # calls all 14 tools against live data
python -m pytest tests -q             # 109 offline unit tests

Known limits

  • Prices are delayed — Yahoo serves NSE quotes with a delay, not tick data. This is a research tool, not an order-routing system.

  • No intraday fundamental data — statements update quarterly; the screener therefore reflects the last reported period.

  • Banks and financials have no current ratio (they have no current-asset split), so that metric is blank for them by design, not by failure.

  • ROCE definitions differ. TradeMCP computes ROCE as EBIT ÷ invested capital; Screener.in uses its own capital base, so the two figures differ slightly. Both are shown separately.

  • Screener.in is scraper-based. If its markup changes, that source degrades to "fewer fields" rather than breaking the tool. Everything else keeps working.

  • Rate limits. The free endpoints throttle. Requests are retried with backoff and cached, but a NIFTY 500 screen over cold cache takes roughly 30–60 seconds.


Project layout

src/trademcp/
  app.py            MCPServer instance
  __main__.py       entry point (python -m trademcp)
  config.py         env-driven settings
  http.py           shared client: headers, retries, actionable errors
  cache.py          TTL disk cache
  symbols.py        symbol/name/ISIN/index resolution
  formatting.py     markdown + JSON rendering
  providers/        yahoo.py, nse.py, screener.py
  analytics/        indicators.py, fundamentals.py, signals.py
  tools/            market.py, technical.py, fundamentals.py, screener.py

showcase/
  site/             the static demo page
  screenshots/      the images above
  SPEC.md DEMO.md PROMPT.md

License

MIT — see LICENSE. Provided free of charge, with no warranty; it is a research tool, not investment advice.

Available Tools

14 tools
trademcp_analyze_portfolioA
Read-onlyIdempotent

Analyse an Indian equity portfolio.

Values every holding at the latest price, computes profit and loss, weight and sector concentration, adds each stock's technical signal, then measures the portfolio against the benchmark (beta, annualised volatility, Sharpe, max drawdown) and flags concentration or signal risk.

Args: holdings: list of positions with symbol, quantity and optional cost price benchmark: benchmark index for risk metrics response_format: 'markdown' or 'json'

Returns: Markdown or JSON with 'holdings', 'allocation', 'risk', 'performance' and 'flags'.

NameRequiredDescriptionDefault
holdingsYesPositions to analyse, e.g. [{'symbol':'RELIANCE','quantity':10,'cost_price':1200}]
benchmarkNoBenchmark index: 'NIFTY 50' or 'SENSEX'NIFTY 50
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context about latest-price valuation, benchmark comparison, and risk flagging, but does not discuss data freshness, external service dependencies, or rate limits beyond what annotations imply.

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 purpose and structured into purpose, Args, and Returns sections. It is efficient overall, though the Args and Returns sections partially repeat information already available in the schema and output schema.

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 complex portfolio-analysis tool, the description covers the input concepts and the major output areas (holdings, allocation, risk, performance, flags). With an output schema present and annotations covering safety, the remaining gap is minor: it does not mention data limitations or error behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents holdings, benchmark, response_format, and nested Holding fields. The description's Args section largely mirrors that information and adds no new syntax or constraints beyond 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 and resource: it analyses an Indian equity portfolio, then enumerates valuation, P&L, concentration, technical signals, benchmark risk metrics, and risk flags. This clearly distinguishes it from sibling tools that fetch single-stock or market-wide data.

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 opening sentence and workflow give clear context for when to use the tool: portfolio-level analysis. It does not name explicit alternatives or exclusions, but the scope is sufficiently clear that an agent can select it for portfolio analysis versus single-stock tools.

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

trademcp_compare_stocksA
Read-onlyIdempotent

Compare two to five Indian stocks across price, valuation, quality and momentum.

Fetches the latest quote, headline fundamental ratios and the technical signal score for each symbol, then lines them up so the differences are obvious.

Args: symbols: two to five symbols or company names response_format: 'markdown' or 'json'

Returns: Markdown table or JSON list with one row per symbol.

NameRequiredDescriptionDefault
symbolsYesTwo to five NSE symbols or company names to compare side by side
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuine value by disclosing the composite data sources (latest quote, headline fundamental ratios, technical signal score) that get assembled into each row. It omits error handling for invalid symbols or partial failures, which keeps it from a 5.

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?

Front-loaded with the core purpose in the first line, followed by a concise explanation of what is assembled. The Args/Returns block duplicates the schema slightly, but the overall length is proportionate and no sentence is wasted.

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?

An output schema exists and the description correctly states the return shape (markdown table or JSON list, one row per symbol), so return values need no further detail. Given rich annotations and full param coverage, the only gap is behavior on invalid or missing symbols.

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

Parameters3/5

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

Schema description coverage is 100% and the Args block essentially restates the schema (including the NSE/company-name allowance and the markdown/json enum). Baseline 3 applies since the schema already carries the meaning.

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?

States a specific verb ("Compare") and resource ("two to five Indian stocks") plus the four dimensions covered: price, valuation, quality, momentum. This clearly separates it from single-symbol tools like get_quote or get_fundamentals, though it never names those siblings explicitly.

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 "two to five" cardinality constraint implicitly tells the agent not to use this for a single symbol, and the dimension list hints at the comparison use case. However no alternatives are named and there is no explicit when/when-not guidance versus screen_stocks or get_valuation.

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

trademcp_get_financial_statementsA
Read-onlyIdempotent

Get income statement, balance sheet and cash flow line items for a stock.

Shows revenue, gross profit, operating income, EBITDA, net income and EPS from the income statement; total assets, debt, equity and working capital from the balance sheet; and operating cash flow, free cash flow and capex from the cash flow statement, across the requested number of periods.

Args: symbol: NSE symbol or company name period: 'annual' or 'quarterly' years: number of periods to include response_format: 'markdown' or 'json'

Returns: Markdown or JSON with 'income_statement', 'balance_sheet' and 'cash_flow'.

NameRequiredDescriptionDefault
yearsNoHow many periods to include (1-10)
periodNo'annual' or 'quarterly'annual
symbolYesNSE symbol or company name, e.g. 'SBIN'
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds genuine context beyond that: exactly which line items come back from each of the three statements and that results span the requested number of periods. It omits data source, currency, and latency, which keeps it from a 5.

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?

Front-loaded purpose sentence, then a compact enumeration of returned fields, then Args and Returns blocks. Every sentence carries information and the structure mirrors how an agent searches for a 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?

For a read-only data-fetch tool with annotations covering safety and an output schema present, the description is nearly sufficient. Minor gaps remain around market scope (NSE-only, currency) and whether periods align to fiscal year ends.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all four parameters including the 1-10 range for years and the enum for response_format. The Args block largely restates those descriptions, adding only the NSE-market hint and the 'number of periods' framing; baseline 3 applies.

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?

Specific verb + three named resources (income statement, balance sheet, cash flow) with an explicit enumeration of the line items returned, which distinguishes it from sibling tools like get_valuation and get_fundamentals. It stops short of explicitly naming those siblings as alternatives, so it is clear but not fully differentiated.

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 field enumeration and the Args block (NSE symbol, annual vs quarterly), but there is no explicit 'use this when...' or 'use get_valuation instead for ratios' guidance. The agent must infer the boundary from the listed fields.

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

trademcp_get_fundamentalsA
Read-onlyIdempotent

Get a full fundamental picture of an Indian stock.

Returns valuation (P/E, P/B, P/S, EV/EBITDA, market cap, dividend yield), profitability (gross/operating/net margin, ROE, ROA, ROCE, ROIC, asset turnover), leverage (debt/equity, net debt/EBITDA, interest coverage), liquidity (current ratio, quick ratio, free cash flow), growth (YoY and 3/5-year CAGR), a DuPont breakdown and a 0-100 health score.

Args: symbol: NSE symbol or company name include_india_metrics: pull India-specific ratios from Screener.in response_format: 'markdown' or 'json'

Returns: Markdown or JSON with 'valuation', 'profitability', 'leverage', 'liquidity', 'growth', 'dupont', 'india_specific' and 'health_score'.

NameRequiredDescriptionDefault
symbolYesNSE symbol or company name, e.g. 'HDFCBANK'
response_formatNo'markdown' or 'json'markdown
include_india_metricsNoInclude India-specific ratios from Screener.in (ROCE, ROCE, promoter holding, working-capital days)

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructiveness, so the safety profile is covered. The description adds one genuinely useful behavioral fact — that India-specific ratios come from the external Screener.in source — but says nothing about latency, coverage gaps for non-Indian tickers, or failure modes when metrics are unavailable.

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?

Front-loaded with the core purpose, then cleanly sectioned into Args and Returns. The metric enumeration is long but earns its place by letting an agent know whether a needed ratio is present; the Returns block partially duplicates the output schema, which is the only real waste.

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?

With an output schema present and full schema coverage, the definition supplies everything needed to invoke correctly, plus useful scope information about what the payload contains. Missing only guidance on symbol resolution and on behavior for non-Indian or invalid symbols.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters including the Screener.in flag and the enum-constrained response_format. The Args block restates that information without adding format, normalization, or fallback semantics, so baseline 3 applies.

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?

States a specific verb and resource ('Get a full fundamental picture of an Indian stock') and enumerates the metric families returned, which makes it distinguishable from narrower siblings like get_valuation and get_financial_statements by scope. However, it never names those siblings or states that this is the aggregate view, so the differentiation is inferred rather than explicit.

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 only implied: an agent can infer this is the broad fundamentals call versus the narrower valuation/statements tools, but there is no explicit 'use this when…/use X instead when…' guidance and no prerequisites (e.g., symbol lookup via search_symbol) are mentioned.

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

trademcp_get_index_snapshotA
Read-onlyIdempotent

Get live quotes for major Indian indices.

Covers NIFTY 50, SENSEX, the NIFTY sector indices (Bank, IT, Auto, FMCG, Pharma, Realty, Metal, Energy, PSU Bank, Private Bank, Financial Services, Media) and INDIA VIX, so the caller can see where the market stands.

Args: indices: optional list of index names to fetch response_format: 'markdown' or 'json'

Returns: Markdown table or JSON list of index quotes with price, change and percent change.

NameRequiredDescriptionDefault
indicesNoIndex names to fetch, e.g. ['NIFTY 50','SENSEX','NIFTY BANK']. Omit for the default set.
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds the response shapes (markdown table or JSON list) and the existence of a default index set, but says nothing about latency, rate limits, or what happens when a requested index name is unknown.

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?

Front-loaded with the core action, then the coverage list, then usage, then Args/Returns. No filler sentences; the index enumeration is long but it is the substantive scoping information an agent needs.

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?

A zero-required-parameter read tool with 100% schema coverage, full annotations, and an output schema – nearly everything necessary is present. The Returns section duplicates what the output schema already encodes, which is mildly redundant rather than harmful.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented in the schema, including the example of index name formatting and the default-set behavior. The description's Args block largely restates this ('optional list of index names', "'markdown' or 'json'") without adding format or edge-case details, so the baseline 3 applies.

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?

Specific verb + resource ('Get live quotes for major Indian indices') with an explicit enumeration of the covered universe (NIFTY 50, SENSEX, sector indices, INDIA VIX). That universe listing makes it trivially distinguishable from siblings like trademcp_get_quote (single symbol) or trademcp_get_market_breadth.

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 only implied by 'so the caller can see where the market stands' – a broad market-overview framing. It never states when to prefer this over trademcp_get_quote or trademcp_get_market_breadth, nor any prerequisites. The one concrete usage instruction is parameter-level ('Omit for the default set').

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

trademcp_get_market_breadthA
Read-onlyIdempotent

Measure market breadth for an Indian index.

Counts advancers, decliners and unchanged stocks among the index constituents, reports the average and median move, and lists the top gainers and losers. Optionally adds the percentage of constituents trading above their 200-day moving average, the classic trend-breadth gauge.

Args: index: index to analyse include_trend: compute the 200-day moving average breadth too response_format: 'markdown' or 'json'

Returns: Markdown or JSON breadth summary with gainers, losers and breadth percentages.

NameRequiredDescriptionDefault
indexNoIndex whose constituents are analysed: 'NIFTY 50' or 'NIFTY 100'NIFTY 50
include_trendNoAlso compute the share of constituents above their 200-day moving average (slower)
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, destructive=false and openWorld. The description adds genuine behavioral detail beyond that: the trend calculation is 'slower' (a latency signal) and precisely what statistics are produced. It doesn't discuss rate limits, error behavior, or index validity handling.

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 opening sentence front-loads the purpose and the body enumerates outputs efficiently. The Args/Returns blocks are partly redundant with the fully described schema and output schema, slightly diluting conciseness.

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?

With an output schema, complete annotation coverage, and 100% parameter documentation, the description is sufficient to call the tool correctly. The only missing element is guidance on picking this tool over sibling analysis tools.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters are already documented, including the 'slower' caveat on include_trend and the JSON/markdown enum. The Args section largely restates the schema, adding no new syntax, defaults, or constraints, so baseline 3 applies.

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?

States a specific verb (measure) and resource (market breadth for an Indian index) and enumerates the concrete outputs: advancers/decliners, average and median move, gainers/losers. It does not contrast itself with adjacent siblings like get_index_snapshot or get_technical_analysis, so it falls short of a 5.

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 description of what it computes, and 'Optionally adds ... the classic trend-breadth gauge' gives some context for include_trend. There is no explicit when-to-use, when-not-to-use, or named alternative among the 13 siblings.

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

trademcp_get_price_historyA
Read-onlyIdempotent

Get historical OHLCV candles for an Indian stock.

Returns the most recent candles with date, open, high, low, close and volume, newest first, along with the period's start/end prices and total return so the caller can chart or analyse the series.

Args: symbol: NSE symbol or company name range: lookback window interval: candle size limit: maximum candles to return exchange: 'NSE' or 'BSE' response_format: 'markdown' or 'json'

Returns: Markdown table of candles, or JSON with 'candles' and 'period_summary'.

NameRequiredDescriptionDefault
limitNoMaximum number of candles to return (1-500)
rangeNoLookback window: 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max6mo
symbolYesNSE symbol or company name, e.g. 'INFY'
exchangeNo'NSE' or 'BSE'NSE
intervalNoBar size: 1d, 1wk, 1mo, 1h, 30m, 15m, 5m1d
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), but the description adds real value beyond them: newest-first ordering, the period start/end prices and total return, and the two response formats with their return shapes. It does not mention data recency or rate/source limits, which matters given openWorldHint=true.

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

Conciseness3/5

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

Purpose and return shape are front-loaded, which is good, but the six-line Args block duplicates parameter documentation the schema already provides in full, so several sentences do not earn their 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?

With an output schema present and full parameter documentation, the definition covers what an agent needs to call it correctly. Minor gaps remain around data freshness and how range interacts with limit, neither of which is stated.

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

Parameters3/5

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

Schema description coverage is 100%, so the bar is baseline 3, and the Args block largely restates the schema ('range: lookback window', 'interval: candle size') without adding meaning such as allowed enum values or interaction rules between range and limit.

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 ('Get historical OHLCV candles for an Indian stock') and the word 'historical' cleanly separates it from the point-in-time siblings such as trademcp_get_quote and from indicator tools like trademcp_get_technical_indicators. An agent can route on this sentence alone.

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 only implied via 'so the caller can chart or analyse the series'; there is no explicit when-to-use, when-not-to-use, or named alternative such as 'use get_quote for the current price'. An agent must infer the boundary itself.

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

trademcp_get_quoteB
Read-onlyIdempotent

Get the latest price quote and key statistics for an Indian stock.

Returns the last traded price, day change, day's range, volume, 52-week range, market capitalisation and valuation multiples (P/E, P/B, EPS, dividend yield, beta), plus 1 week / 1 month / 3 month / 1 year returns.

Args: symbol: NSE symbol or company name exchange: 'NSE' or 'BSE' response_format: 'markdown' or 'json'

Returns: Markdown or JSON quote payload. 'Error: ...' if the symbol cannot be resolved.

NameRequiredDescriptionDefault
symbolYesNSE symbol or company name, e.g. 'RELIANCE' or 'tata motors'
exchangeNoPreferred listing: 'NSE' or 'BSE'NSE
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description contributes one genuinely useful behavioral detail — an 'Error: ...' string when the symbol cannot be resolved — but says nothing about data latency/real-time-ness, rate limits, or upstream data source, which matter for an openWorld quote tool.

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?

Well front-loaded: purpose in sentence one, payload in sentence two, then Args/Returns blocks. There is some redundancy where the Returns section repeats the enumerated fields already listed in the opening, but overall it is tight and skimmable.

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

Completeness3/5

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

An output schema exists, so re-describing the return payload adds little, while the real gaps — sibling differentiation, whether the quote is real-time or delayed, and exchange-selection semantics — go unaddressed. Adequate to call the tool correctly, but not complete for a 13-sibling financial data suite.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already contains examples ('RELIANCE', 'tata motors') and defaults for exchange and response_format. The Args block largely restates the schema verbatim without adding syntax, normalization rules, or fallback behavior for exchange, so baseline 3 applies.

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 first sentence names a specific verb and resource ('Get the latest price quote and key statistics for an Indian stock') and the body enumerates exactly what is returned, so an agent knows this is a current-snapshot tool. It does not, however, distinguish itself from siblings like trademcp_get_valuation or trademcp_get_price_history even though the listed return fields (P/E, P/B, returns) overlap with them.

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 explicit statement of when to use this versus the 13 sibling tools — no mention that historical data belongs to get_price_history or that deep valuation belongs to get_valuation. The snapshot nature is only implied by the word 'latest', leaving the agent to infer routing from the return-field list.

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

trademcp_get_support_resistanceB
Read-onlyIdempotent

Compute support and resistance levels for an Indian stock.

Returns pivot points in classic, Camarilla, Fibonacci, Woodie and DeMark styles, Fibonacci retracement levels over the recent range, recent swing highs and lows, 20-day Donchian channels, ATR and the position of the price inside its 52-week range.

Args: symbol: NSE symbol or company name range: lookback window response_format: 'markdown' or 'json'

Returns: Markdown or JSON with 'pivots', 'fibonacci_retracement', 'range', 'swing_highs' and 'swing_lows'.

NameRequiredDescriptionDefault
rangeNoLookback window: 6mo, 1y, 2y, 5y1y
symbolYesNSE symbol or company name, e.g. 'TCS'
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that this is a computation over Indian stock data and lists the analytical outputs, but it does not disclose data freshness, rate limits, authentication needs, or error behavior.

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 a clear Args/Returns structure. It has minor redundancy because the output components are enumerated in prose and then partially repeated in the Returns section, despite an output schema also being present.

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 gives enough context to understand that this is a read-only technical computation for Indian NSE stocks and what analytical outputs to expect. It is complete for invocation, though it could better explain when to choose this tool over related technical-analysis siblings.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents symbol, range, and response_format. The description repeats those parameters at a high level but adds no meaningful syntax or format detail beyond the schema, making the baseline 3 appropriate.

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 uses a specific verb and resource: "Compute support and resistance levels for an Indian stock." It clearly enumerates the computed outputs, but it does not explicitly distinguish this tool from siblings such as trademcp_get_technical_indicators or trademcp_get_technical_analysis.

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?

The description gives no explicit when-to-use guidance, prerequisites, or alternatives. Usage is only implied by the stated purpose, and none of the sibling technical-analysis tools are referenced as alternatives.

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

trademcp_get_technical_analysisA
Read-onlyIdempotent

Run a full technical analysis and produce a directional read on a stock.

Scores every indicator, explains each signal in plain language, reports the composite score (Strong Buy / Buy / Neutral / Sell / Strong Sell), and adds risk statistics (annualised volatility, Sharpe, Sortino, max drawdown, beta, alpha, 30-day relative strength) plus recent candlestick patterns.

Args: symbol: NSE symbol or company name range: lookback window for the analysis benchmark: benchmark index for beta and relative strength response_format: 'markdown' or 'json'

Returns: Markdown or JSON with 'summary', 'signals', 'indicators', 'statistics' and 'candles'.

NameRequiredDescriptionDefault
rangeNoLookback window: 6mo, 1y, 2y, 5y1y
symbolYesNSE symbol or company name, e.g. 'INFY'
benchmarkNoBenchmark index for beta/relative strength: 'NIFTY 50' or 'SENSEX'NIFTY 50
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), so the description's job is to add context, and it does: it names the exact composite scale (Strong Buy through Strong Sell) and the specific risk metrics computed (volatility, Sharpe, Sortino, max drawdown, beta, alpha, 30-day relative strength). It does not disclose data source, latency, or whether results are cached, which keeps it short of a 5.

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?

Front-loaded: the first sentence says what the tool produces, then the Returns/Args blocks. Every sentence carries information, though the Args section is mildly redundant with an already fully-documented schema.

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, yet the description still summarizes the return keys ('summary', 'signals', 'indicators', 'statistics', 'candles'), and it covers all four inputs with defaults. For a read-only analysis tool, an agent has everything needed to call it correctly and interpret the shape of the result.

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

Parameters3/5

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

Schema coverage is 100% and all four parameters are documented in the schema itself, so the baseline of 3 applies. The Args block largely restates the schema ('symbol: NSE symbol or company name', 'response_format: markdown or json') without adding format, constraints, or behavior — for example, what happens if the symbol is ambiguous or unknown.

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?

States a specific verb and resource ('Run a full technical analysis') and enumerates the concrete outputs: indicator scores, composite rating, risk statistics, candlestick patterns. It is clearly a composite-analysis tool, distinguishing it in substance from trademcp_get_technical_indicators, but it never names that sibling or explicitly contrasts the two.

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 output inventory — an agent can infer this is the 'give me the whole technical picture' call. However, there is no explicit when-to-use, when-not-to-use, or routing statement pointing to get_technical_indicators, get_support_resistance, or get_price_history.

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

trademcp_get_technical_indicatorsA
Read-onlyIdempotent

Compute technical indicators for an Indian stock.

Covers 60+ indicators across trend (moving averages, MACD, ADX, Supertrend, Ichimoku, Parabolic SAR, Aroon, Vortex), momentum (RSI, Stochastic, CCI, Williams %R, MFI, ROC, CMO, TSI, Ultimate Oscillator), volatility (ATR, Bollinger, Keltner, Donchian, historical volatility), volume (OBV, VWAP, Chaikin Money Flow, Accumulation/Distribution, Force Index) and statistics.

Args: symbol: NSE symbol or company name indicators: names to compute; omit for the full set range: lookback window interval: candle size limit: recent points kept per indicator response_format: 'markdown' or 'json'

Returns: Markdown table (indicator, latest value, recent values) or JSON with 'indicators' and 'series'.

NameRequiredDescriptionDefault
limitNoHow many recent data points to keep per indicator (1-100)
rangeNoLookback window: 3mo, 6mo, 1y, 2y, 5y1y
symbolYesNSE symbol or company name, e.g. 'RELIANCE'
intervalNoBar size: 1d, 1wk, 1h, 30m1d
indicatorsNoIndicator names to compute, e.g. ['rsi_14','macd','atr_14']. Omit for all 60+.
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the two response shapes (markdown table of latest + recent values, or JSON with 'indicators' and 'series'), which is useful context, but says nothing about data source freshness, rate limits, or the cost of computing all 60+ indicators.

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

Conciseness3/5

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

The opening two paragraphs are well front-loaded and earn their place. However, the Args and Returns blocks largely duplicate the 100%-covered input schema and the existing output schema, so a meaningful share of the text is redundant rather than additive.

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?

With 6 parameters, full schema coverage, an output schema and rich annotations, the definition supplies what an agent needs to invoke the tool correctly. The remaining gap is routability against trademcp_get_technical_analysis and trademcp_get_support_resistance, which the description never addresses.

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 100%, so the baseline is 3; the description earns the bump because the enumerated indicator taxonomy (trend/momentum/volatility/volume/statistics with named examples) helps an agent actually construct the otherwise free-form 'indicators' array beyond the schema's two examples. The Args section otherwise restates the schema verbatim for symbol, range, interval, limit and response_format.

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?

States a specific verb and resource ('Compute technical indicators for an Indian stock') and enumerates the indicator families covered, which makes the tool's scope concrete. It stops short of distinguishing itself from the closely-named sibling trademcp_get_technical_analysis or get_support_resistance, so an agent still has to guess which of the three to reach for.

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 only implied: 'omit for the full set' and the category list tell you how to use parameters, but there is no explicit when-to-use-this-vs-alternatives guidance despite three overlapping siblings. No preconditions, no exclusions, no routing statement.

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

trademcp_get_valuationA
Read-onlyIdempotent

Get a focused valuation sheet for an Indian stock.

Returns market cap, enterprise value, P/E, P/B, P/S, EV/EBITDA, PEG, dividend yield, EPS and book value per share, alongside a plain-English reading of whether the stock looks cheap or expensive versus its own growth and quality metrics.

Args: symbol: NSE symbol or company name peers: include a same-industry peer comparison response_format: 'markdown' or 'json'

Returns: Markdown or JSON with 'valuation', 'growth_context', 'verdict' and optional 'peers'.

NameRequiredDescriptionDefault
peersNoAlso fetch a small peer set from the same NSE industry for comparison
symbolYesNSE symbol or company name, e.g. 'BAJFINANCE'
response_formatNo'markdown' or 'json'markdown

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond that: it discloses the response sections ('valuation', 'growth_context', 'verdict', optional 'peers') and that a plain-English cheap/expensive verdict is computed, which the agent could not know from annotations alone.

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 opening sentence is front-loaded and delivers the purpose immediately, and the metric list is dense and useful. The Args/Returns blocks duplicate the input schema and output schema, which is mild waste but standard for this format.

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?

With an output schema present, the description still helpfully names the return sections, and it scopes the tool to Indian/NSE stocks, which is important context. Minor gaps: no mention of data freshness, caching, or whether non-NSE symbols are rejected.

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

Parameters3/5

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

Schema description coverage is 100%, and the Args block largely restates what the schema already says ('symbol: NSE symbol or company name', 'response_format: markdown or json'). The 'peers' note adds a small amount of meaning (same-industry comparison) but nothing beyond the schema's own description.

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?

States a specific verb and resource ('Get a focused valuation sheet for an Indian stock') and enumerates the exact metrics returned, so an agent knows precisely what it gets. It does not explicitly differentiate itself from the closely related trademcp_get_fundamentals sibling, leaving that overlap for the agent to infer.

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 word 'focused' and the enumerated valuation metrics imply this is the narrow valuation-only view, but there is no explicit 'use this instead of X when Y' guidance. With siblings like get_fundamentals and compare_stocks in the same family, an agent must guess which to pick.

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

trademcp_screen_stocksA
Read-onlyIdempotent

Screen Indian stocks by fundamental and technical criteria.

Scans an index universe (or every NSE-listed stock), pulls the latest fundamentals for each name, applies the fundamental filters, then applies the technical filters to the survivors and returns the best matches.

Args: universe: 'NIFTY 50', 'NIFTY 100', 'NIFTY 500' or 'NSE' min_pe: maximum P/E max_pe: minimum P/E min_roe: minimum return on equity (%) min_roce: minimum return on capital employed (%) min_net_margin: minimum net margin (%) max_debt_to_equity: maximum debt/equity min_market_cap: minimum market cap in rupees min_dividend_yield: minimum dividend yield (%) min_current_ratio: minimum current ratio min_revenue_cagr: minimum 3-year revenue CAGR (%) rsi_below: maximum RSI (oversold screen) rsi_above: minimum RSI (overbought screen) above_sma50: require price above the 50-day average above_sma200: require price above the 200-day average limit: maximum rows to return sort_by: field to sort by sort_order: 'desc' (default) or 'asc' response_format: 'markdown' or 'json'

Returns: Markdown table or JSON with 'matches' and the filter set applied.

NameRequiredDescriptionDefault
limitNoMaximum stocks to return (1-100)
max_peNoOnly stocks with P/E at or above this
min_peNoOnly stocks with P/E at or below this
min_roeNoMinimum return on equity (%)
sort_byNoSort field: 'market_cap', 'pe_ratio', 'price_to_book', 'roe_pct', 'roce_pct', 'revenue_cagr_3y_pct', 'dividend_yield_pct', 'health_score'market_cap
min_roceNoMinimum return on capital employed (%)
universeNoStock universe to scan: 'NIFTY 50', 'NIFTY 100', 'NIFTY 500' or 'NSE' (all listed)NIFTY 50
rsi_aboveNoOnly stocks with RSI over this (overbought screen)
rsi_belowNoOnly stocks with RSI under this (oversold screen)
sort_orderNoSort direction: 'desc' or 'asc'desc
above_sma50NoOnly stocks trading above their 50-day average
above_sma200NoOnly stocks trading above their 200-day average
min_market_capNoMinimum market cap in rupees
min_net_marginNoMinimum net profit margin (%)
response_formatNo'markdown' or 'json'markdown
min_revenue_cagrNoMinimum 3-year revenue CAGR (%)
min_current_ratioNoMinimum current ratio
max_debt_to_equityNoMaximum debt to equity ratio
min_dividend_yieldNoMinimum dividend yield (%)

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive and open-world, so safety is covered. The description adds real behavioral detail beyond that: the two-stage filter order (fundamentals first, technicals on survivors) and that both matches and the applied filter set are returned. It omits expected latency/result-size implications of scanning the full NSE universe.

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

Conciseness3/5

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

The opening paragraph is well front-loaded and earns its place. However, the 19-line Args block restates parameters that are already 100% documented in the schema, adding bulk without new meaning.

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?

Output schema exists and annotations cover safety, so the description need only explain the process — which it does. The main residual gap is the ambiguous P/E parameter wording and the absence of any note on scan cost/results for large universes.

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

Parameters2/5

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

Schema coverage is 100%, so baseline would be 3, but the description actively muddles two parameters: it says 'min_pe: maximum P/E' and 'max_pe: minimum P/E', which conflicts with the schema's own (already inverted-looking) descriptions. An agent reading both would have to guess the direction of the P/E filter, which is a real error risk.

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 ('Screen Indian stocks by fundamental and technical criteria') and the pipeline (index/NSE scan → fundamentals → technical filters). Among siblings that fetch single-company data, this is clearly the only multi-name screening tool, so differentiation is immediate.

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 description's screening framing, but there is no explicit statement of when to reach for this instead of get_fundamentals or compare_stocks, and no guidance on universe cost trade-offs (e.g., 'NSE' scans everything).

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

trademcp_search_symbolA
Read-onlyIdempotent

Search NSE-listed companies by ticker symbol or company name.

Use this when the user gives a company name rather than an NSE code, or when a symbol might be ambiguous. Returns the NSE code, company name, ISIN and listing details for each match, ranked with exact symbol matches first.

Args: query: ticker or company name to search for limit: maximum number of matches to return response_format: 'markdown' or 'json'

Returns: Markdown table or JSON list of matches with 'symbol', 'name', 'isin' fields.

NameRequiredDescriptionDefault
limitNoMaximum results to return (1-50)
queryYesSymbol code or company name to search, e.g. 'RELIANCE', 'tata', 'bank of baroda'
response_formatNo'markdown' for readable output or 'json' for structured datamarkdown

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuine behavior: matches are ranked with exact symbol matches first, which tells the agent how to interpret ordering and that fuzzy matches are possible.

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 opening two sentences are front-loaded with purpose and the selection condition, which is the highest-value content. The trailing Args and Returns blocks duplicate the input schema and output schema respectively, adding length without new information.

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?

An agent knows what the tool does, when to reach for it, how results are ranked, and what fields come back. With an output schema present, the Returns section is redundant rather than necessary, and no note on empty-result behavior is included, so it falls just short of fully complete.

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

Parameters3/5

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

Schema coverage is 100% and every schema parameter already carries a description with examples and the 1-50 range. The Args block essentially restates the schema (query, limit, response_format) without adding syntax, matching semantics, or format details beyond it, so the baseline 3 applies.

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 (search) and resource (NSE-listed companies) with the two acceptable key types (ticker or company name). The scope makes it clearly a symbol-resolution tool, distinct from the sibling data-fetching tools like trademcp_get_quote or trademcp_get_fundamentals.

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?

Explicitly names the trigger condition: use when the user supplies a company name instead of an NSE code, or when the symbol may be ambiguous. It implies the inverse (skip if you already have the code) rather than stating it, and names no alternative tool, keeping it 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.1.0
    • First observedtrademcp_analyze_portfolio
    • First observedtrademcp_compare_stocks
    • First observedtrademcp_get_financial_statements
    • First observedtrademcp_get_fundamentals
    • First observedtrademcp_get_index_snapshot
    • First observedtrademcp_get_market_breadth
    • First observedtrademcp_get_price_history
    • First observedtrademcp_get_quote
    • First observedtrademcp_get_support_resistance
    • First observedtrademcp_get_technical_analysis
    • First observedtrademcp_get_technical_indicators
    • First observedtrademcp_get_valuation
    • First observedtrademcp_screen_stocks
    • First observedtrademcp_search_symbol

TDQS

A3.8/5.0

Scored across 14 tools

Disambiguation4/5

Each tool has a reasonably distinct focus, but there is meaningful overlap: get_fundamentals already includes valuation multiples that get_valuation re-exposes, and get_technical_indicators, get_technical_analysis and get_support_resistance all derive from the same indicator/candle pipeline. Descriptions do enough to route an agent (raw indicators vs. scored signal vs. price levels), so confusion is limited but not eliminated.

Naming Consistency5/5

Every tool follows the same trademcp_verb_noun snake_case pattern (get_quote, get_price_history, screen_stocks, analyze_portfolio, compare_stocks). Verb usage (get/analyze/compare/screen/search) is coherent and predictable across the set.

Tool Count5/5

14 tools sits comfortably in the well-scoped range for a full equity-research server covering quotes, fundamentals, technicals, screening and portfolio analysis. No single tool looks like filler, and the surface is not so large that discovery becomes a burden.

Completeness4/5

The lifecycle from symbol lookup through quotes, history, fundamentals, valuation, screening, comparison and portfolio risk is well covered, with no obvious dead ends for analysis workflows. Gaps remain around news/events, corporate actions and dividends, and peer comparison is only available as an option inside get_valuation rather than as a first-class tool.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • 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.
    126 npm
    13
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Indian stock market (NSE & BSE) MCP server with 55 tools: live quotes, financials, technicals, a 326-ratio screener, FII/DII flows, option chains with IV, parsed annual reports and concall transcripts, IPOs and portfolio tracking for ~8,200 stocks.
    55
    110 npm
    143
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform deep Indian stock research with fundamentals, forensic scores, DCF valuation, screening, and news for 6000+ NSE/BSE stocks.
    17 npm
    1
    MIT