Skip to main content
Glama
indrajitdaspiramal-dotcom

Screener India MCP

Screener India MCP

The rate-safe, source-traced Screener.in server for AI assistants.

Ask Claude (or any MCP client) about Indian NSE/BSE companies and get Screener.in fundamentals — ratios, 10-year statements, quarterly trends, shareholding, peers, price history, documents and screens — without getting your network or account blocked, and with every number traceable to the page it came from.

License: MIT Python MCP

Personal research only. Screener.in's terms allow personal, non-commercial viewing. This project is not affiliated with or endorsed by Screener.in / Mittal Analytics. It does not redistribute any Screener data; everything stays on your machine. Not investment advice.


Why another Screener MCP?

There are already a few. This one exists because of what went wrong with them in real use:

Problem with existing tools

What Screener India MCP does

Each process throttles itself, so two or three running together trip Screener's limits and get the network blocked

One machine-wide governor: every process shares one request spacing (≥ 2 s, default 3 s), one daily budget and one cool-down, enforced with a file lock

After a block they keep hammering, which makes the block longer

Block-aware: a refusal (HTTP 403/429/503 or a refused connection) starts a cool-down of 30 min → 2 h → 6 h → 24 h, and answers come from cache, clearly marked stale

Passwords sit in plain-text config, or an AI tool accepts the password in chat

Log in once: the password lives in your OS secure store (Windows Credential Manager / macOS Keychain / Linux Secret Service). There is no tool that accepts a password. Silent session expiry is detected and it logs in again by itself

"Red flags" means handing raw tables to the AI and hoping

12 deterministic red-flag checks with the evidence attached — same page, same answer, every time

Numbers with no source

Every response carries provenance: source URL, fetch time, cached/stale, consolidated vs standalone

Some tools expose shell commands, file writes or data syncs to the AI

14 read-only tools (annotated readOnlyHint), no file writes, no shell, no bulk mirroring

One company look-up = many page loads

A company page is fetched once and reused for overview, statements, trend, red flags, shareholding and documents

Related MCP server: DocStoX

Tools

Tool

What it gives

Requests

company_snapshot

Best first call: ratios, sector/industry, pros/cons, growth, 8-quarter trend, red flags, latest shareholding, recent documents

1

company_overview

Market cap, P/E, book value, ROCE, ROE, 52-week range, about, classification, compounded growth

1 (shared)

financial_statement

Quarters, P&L, balance sheet, cash flow or ratios history as periods × rows

1 (shared)

earnings_trend

Quarterly sales/profit/margin/EPS with YoY growth and accelerating / steady / decelerating

1 (shared)

red_flags

12 rule-based checks (cash conversion, receivable & inventory days, other income, leverage, debt vs sales, profit vs sales, falling returns, promoter selling, low tax, CWIP, share-capital increase)

1 (shared)

shareholding

Promoter / FII / DII / public history, quarterly or yearly

1 (shared)

documents

Announcements, annual reports, credit ratings, concall transcripts / presentations / recordings

1 (shared)

peers

Industry peer table

+1

price_history

Price with 50/200-DMA, volume and delivery %, or P/E, margins, EV/EBITDA, P/B, Mcap/Sales history

+1

compare_companies

Side-by-side valuation, returns, margins and growth for 2–6 companies

1 per company

search_company

Find the symbol from a name

1

run_screen

Any Screener query, e.g. Return on capital employed > 20 AND Debt to equity < 0.3 (needs login)

1

theme_screen

12 ready-made screens (quality compounders, earnings acceleration, margin expansion, turnaround…) (needs login)

1

service_status

Login state, requests used/left today, cool-down, cache

0

"shared" = served from the same cached company page, so asking several of these costs one request.

Install

pipx install screener-india-mcp        # or: uv tool install screener-india-mcp

Not on PyPI yet? Install from GitHub:

pipx install git+https://github.com/indrajitdaspiramal-dotcom/screener-india-mcp

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "screener-india": { "command": "screener-india-mcp" }
  }
}

Claude Code

claude mcp add screener-india -- screener-india-mcp

Any other MCP client: run screener-india-mcp (stdio), or screener-india-mcp serve --http for streamable HTTP on 127.0.0.1:8631.

Optional: log in once (for screens)

Company data works without an account. Screens need a (free) Screener.in login:

screener-india-mcp login        # asks for email, then the password with hidden typing
screener-india-mcp status       # shows login state and today's budget
screener-india-mcp logout       # removes it

The password goes straight into your OS keyring and is never printed, logged or sent anywhere except Screener's own login form. When Screener ends the session, the server logs in again by itself. Headless Linux without a keyring: set SCREENER_EMAIL and SCREENER_PASSWORD (less safe).

Politeness settings

Environment variables can make the server more polite, never less:

Variable

Default

Limit

SCREENER_MIN_INTERVAL

3 s between requests

never below 2 s

SCREENER_DAILY_BUDGET_ANON

40 requests/day without login

max 60

SCREENER_DAILY_BUDGET

300 requests/day with login

max 1000

SCREENER_STATE_DIR, SCREENER_CACHE_DIR

OS defaults

—

Pages are cached locally (company pages 6 h, prices 3 h, search 7 days). When the budget is spent or Screener is cooling us down, cached answers are still served, marked stale: true.

Using it as a library

from screener_india_mcp.service import Screener

s = Screener()
snap = s.snapshot("TCS")
print(snap["overview"]["ratios"]["pe"], snap["red_flags"]["summary"])

BSE-only and SME companies live on Screener under their BSE scrip code (e.g. /company/530215/), not the ticker. Pass any code you know, or use the code as the symbol; otherwise the library tries a Screener search and accepts only an unambiguous match (it never guesses between two companies). A match that worked is remembered in aliases.json in the state folder.

s.set_bse_codes({"KINGSINFR": "530215", "GENUSPRIME": "532425"})

When a company's consolidated page is thin (fewer than 8 quarters or 5 years — common right after a subsidiary is formed), the standalone page is fetched too. The latest figures and ratios stay consolidated and older columns are filled from standalone; each table's basis list says which columns are which, and growth or red-flag checks never compare across the join. If the consolidated page is too new for trailing-12-month figures (under 4 quarters), the standalone page is used instead. Responses say what happened (view, view_note, history, history_fill).

Batch jobs share the same machine-wide governor as the MCP server, so a nightly script and an assistant session can run side by side without tripping Screener's limits.

Development

git clone https://github.com/indrajitdaspiramal-dotcom/screener-india-mcp
cd screener-india-mcp
pip install -e ".[dev]"
pytest

Tests use synthetic fixtures (invented company, invented numbers) that copy only the page structure; no Screener.in content is stored in this repository. Tests never touch the network or your real keyring.

Acknowledgements

Ideas were drawn from earlier open-source work, with thanks: LogeshR15/screener-mcp (MIT; the "table with the most company links" approach to screen results), screener-ai-tool (MIT; price-chart endpoint and document lists) and the Printing Press screener CLI (Apache-2.0; quarterly trend idea). The code here is an independent implementation.

License

MIT © 2026 Indrajit Das

Available Tools

14 tools
company_overviewB
Read-onlyIdempotent

Key ratios (market cap, P/E, book value, ROCE, ROE, 52-week range…), about, sector/industry, pros/cons and 10/5/3-year compounded growth. view: auto | consolidated | standalone.

NameRequiredDescriptionDefault
viewNoauto
symbolYes

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 non-destructive behavior, so the safety profile is covered. The description adds useful context about the kinds of data returned and the available view modes, but does not disclose data freshness, rate limits, or other behavioral constraints beyond the annotations.

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-loads the main content categories without filler. It is a sentence fragment rather than a complete statement, but every element contributes useful information.

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?

With no output schema and no parameter descriptions in the schema, the description should do more to explain return structure and view-mode behavior. It adequately lists the content categories an agent can expect, but leaves gaps around output shape, view semantics, and sibling differentiation.

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 0%, so the description must compensate for parameter documentation. It usefully lists the allowed values for 'view' (auto | consolidated | standalone), but it does not explain what those modes mean or clarify the required 'symbol' parameter beyond its name.

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 clearly identifies the resource as a company overview and enumerates the major data domains it covers: ratios, about, sector/industry, pros/cons, and compounded growth. However, it has no explicit verb and does not distinguish this tool from overlapping siblings such as company_snapshot or financial_statement.

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 provides no guidance on when to use this tool versus alternatives like company_snapshot or financial_statement. The only usage-like detail is the 'view' parameter options, which belongs to parameter semantics rather than tool selection.

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

company_snapshotA
Read-onlyIdempotent

Best first call. One request gives: key ratios, sector/industry, pros/cons, compounded growth, 8-quarter earnings trend, deterministic red-flag checks, latest shareholding and recent documents. symbol = NSE symbol (TCS) or BSE code (500570).

NameRequiredDescriptionDefault
symbolYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description adds real value on top: it discloses that everything comes back in a single request and that red-flag checks are deterministic. It says nothing about latency, payload size, or behavior for an unknown/invalid symbol.

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?

Three short lines, front-loaded with the 'best first call' recommendation, then the payload contents, then the parameter format. Every clause carries information; nothing is repeated from the schema or annotations.

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?

There is no output schema, so the description must say what comes back, and it does by enumerating the eight payload components. Combined with the parameter format and the read-only annotations, an agent has everything needed to call it 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% with a bare 'symbol' string, so the description must carry the burden and does: it specifies NSE symbols (TCS) or BSE numeric codes (500570) with examples for both formats. Without this the agent would have no idea which identifier convention to use.

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 resource (a bundled company snapshot) and enumerates exactly what one call returns: ratios, sector, pros/cons, growth, earnings trend, red flags, shareholding, documents. 'Best first call' also distinguishes it from the narrower siblings like company_overview or red_flags, which cover only slices of this bundle.

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?

'Best first call' gives a clear usage context: start here before reaching for the narrower tools. It stops short of naming which siblings to skip or when to prefer company_overview/earnings_trend directly, so the routing guidance is implied rather than explicit.

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

compare_companiesB
Read-onlyIdempotent

Side-by-side valuation, returns, margins and growth for 2–6 companies.

NameRequiredDescriptionDefault
symbolsYes

TDQS

B3.4/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 open-world behavior, so safety is covered. The description adds the meaningful 2–6 company constraint, but does not disclose what happens outside that range, how results are ordered, or any failure 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?

A single, front-loaded sentence that names the operation, the metrics, and the scope with no wasted words. It is efficient, although the extreme brevity leaves gaps that could be closed in one additional clause.

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?

No output schema exists, and the description partially compensates by naming the four metric categories returned. With only one simple parameter and full annotation coverage, this is adequate, but missing symbol-format guidance and error/edge-case behavior keep it from being 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 0% and the single parameter is undocumented, so the description must compensate. It does add the important 2–6 item constraint on the symbols array that the schema lacks, but it never states the symbol format (tickers vs. names) or ordering expectations, leaving meaningful ambiguity.

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 specific operation (side-by-side comparison) and enumerates the covered dimensions (valuation, returns, margins, growth) plus the 2–6 company scope. An agent can tell what it does, though it does not explicitly distinguish itself from the sibling 'peers' tool, which is the nearest alternative.

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 'side-by-side' framing and the 2–6 company range, which signals multi-company comparison rather than single-company lookup. However, no explicit when-to-use/when-not guidance or pointer to alternatives like 'peers' or 'company_snapshot' is given.

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

documentsB
Read-onlyIdempotent

Links to exchange announcements, annual reports, credit ratings and concall transcripts / presentations / recordings. kind: all | announcements | annual_reports | credit_ratings | concalls.

NameRequiredDescriptionDefault
kindNoall
limitNo
symbolYes

TDQS

B3.4/5.0
Behavior3/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 that the output is links to external documents rather than the documents themselves, which is useful context. It does not say what happens with kind=all (how many per category), how limit interacts with categories, or whether recent-only results are returned.

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?

Two compact sentences: one for the resource, one for the kind enumeration. Front-loaded and waste-free, though the enum sentence is dense and 'concall' is unexpanded jargon that a non-finance agent may not parse.

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?

There is no output schema, and the description only hints at return values ('links to...'), without saying whether items include titles, dates, or URLs grouped by category. With 0% schema description coverage on three parameters, an agent must guess at symbol format and limit semantics. Adequate to identify the tool, but thin for correct invocation.

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 0% and the schema has no enum on `kind`, so the description carries real weight by enumerating the allowed kind values (all, announcements, annual_reports, credit_ratings, concalls) – that information exists nowhere else. However, `symbol` format and the meaning/behavior of `limit` (default 20, max? pagination?) are left entirely undocumented.

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 concrete resource: links to exchange announcements, annual reports, credit ratings and concall transcripts/presentations/recordings. This is clearly distinct from the sibling tools, which are numeric/analytical (financial_statement, earnings_trend, peers), so an agent can tell this is the document-link lookup tool. It stops short of a full verb phrase like 'Fetch links for a given company symbol', hence 4 not 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?

The list of document categories implies when the tool is useful (when the user wants filings, ratings or call material rather than numbers), but there is no explicit 'use this when...' statement and no mention of any alternative tool. Usage is inferable but not guided.

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

earnings_trendB
Read-onlyIdempotent

Quarterly sales/profit/margin/EPS with year-on-year growth and whether growth is accelerating, steady or decelerating.

NameRequiredDescriptionDefault
symbolYes
quartersNo

TDQS

B3/5.0
Behavior3/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 value by disclosing that a computed classification (accelerating/steady/decelerating) is returned, but it says nothing about history depth, missing-data behavior, or cost of a call.

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?

One dense sentence with the return content front-loaded and no filler. It is efficient, though the absence of any parameter clause means the brevity is partly achieved by omission rather than by tight writing.

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?

With no output schema, the description does a reasonable job naming the return fields, which is the main burden here. However, for a two-parameter tool with zero schema documentation, omitting the quarters window leaves the agent unable to control or predict the result span.

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 0%, so the description must carry parameter meaning, and it does not mention either parameter. The 'quarters' input with its default of 8 is undocumented anywhere, and the symbol's expected format (ticker, exchange suffix) is left entirely unspecified.

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 the specific resource (quarterly sales/profit/margin/EPS) and the derived signal (year-on-year growth plus acceleration state), which is more informative than the bare tool name. It does not explicitly differentiate itself from financial_statement, which is the nearest sibling and likely overlaps.

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 pick this over financial_statement or company_overview, nor on prerequisites such as whether the symbol must be a listed equity. Usage can only be inferred from the words 'quarterly' and 'trend'.

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

financial_statementC
Read-onlyIdempotent

A full statement as periods × rows. statement: quarters | profit_loss | balance_sheet | cash_flow | ratios. periods: keep only the latest N columns (0 = all).

NameRequiredDescriptionDefault
viewNoauto
symbolYes
periodsNo
statementNoprofit_loss

TDQS

C2.9/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 safety behavior is covered. The description adds useful context about the output orientation (periods × rows) and the supported statement types, but discloses nothing about the undocumented `view` mode, data freshness, or the cost of broad requests.

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?

Two short sentences with no filler, and the output-shape statement is front-loaded ahead of the parameter notes. The 'periods × rows' phrasing is slightly cryptic for an agent unfamiliar with the response shape.

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?

For a four-parameter, zero-schema-coverage tool with no output schema, the description covers the two most consequential parameters and hints at the return layout. It does not explain the required `symbol`, the `view` option, or what a 'row' contains, leaving real gaps an agent must guess at before calling.

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 0%, so the description must carry parameter meaning; it does document `statement` values (quarters | profit_loss | balance_sheet | cash_flow | ratios) even though the schema declares no enum, and it clarifies `periods` (latest N columns, 0 = all). It leaves the required `symbol` and the `view` parameter entirely undefined, so half the surface remains undocumented.

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

Purpose3/5

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

The description conveys that this returns a full financial statement in a periods-×-rows layout and enumerates the available statement types, which is informative. However, it never states the subject of the statement (a company identified by the required `symbol`) and never uses a clear verb such as 'return' or 'fetch', leaving the purpose partially inferred from the tool name.

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?

No guidance is given about when to use this instead of siblings like company_overview, company_snapshot, or earnings_trend, all of which overlap in returning company financial context. There are no exclusions, no prerequisites, and no mention of how to choose a `statement` value for a given question.

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

peersB
Read-onlyIdempotent

Peer comparison table for the company's industry (price, P/E, market cap, quarterly growth, ROCE).

NameRequiredDescriptionDefault
symbolYes

TDQS

B3.1/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 adds useful context about the returned comparison metrics, but it does not explain peer count, data freshness, or how peers are selected.

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 definition is a single front-loaded sentence with no wasted words. It presents the tool's purpose and returned metrics efficiently.

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?

For a simple read-only tool with one parameter and no output schema, the description usefully lists returned metrics. However, it omits input semantics, peer-selection behavior, and routing guidance versus compare_companies, leaving gaps an agent must resolve from the schema.

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 description coverage is 0%, and the description never mentions the required symbol parameter or its expected format. Although the parameter name 'symbol' is fairly self-explanatory, the description does not compensate for the missing schema documentation.

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 clearly identifies the resource as a peer comparison table and lists concrete returned metrics (price, P/E, market cap, quarterly growth, ROCE). It does not explicitly distinguish itself from the sibling compare_companies tool, 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 Guidelines2/5

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

The description implies the tool is for peer comparison, but it provides no explicit when-to-use guidance, prerequisites, or alternatives such as compare_companies. An agent must infer usage from the one-sentence summary alone.

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

price_historyC
Read-onlyIdempotent

Daily history. metric: price (with 50/200-day averages and volume) | pe | margins | ev_ebitda | pb | mcap_sales. days snaps to 30, 90, 180, 365, 1095, 1825, 3652 or 10000.

NameRequiredDescriptionDefault
daysNo
metricNoprice
symbolYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare the tool is read-only, idempotent, open-world, and non-destructive. The description adds useful behavioral context by stating that days snaps to specific values and that price includes 50/200-day averages and volume, but it omits other relevant traits such as data adjustment or return shape.

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 two compact sentences with no filler and is front-loaded with the metric enumeration. The pipe-separated formatting is dense, but it remains efficient and appropriately sized for the information provided.

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?

For a three-parameter retrieval tool with no output schema, the description gives enough to invoke the tool with a metric and snapped day range, but it does not explain the symbol format or the exact returned data structure. It is minimally viable but has clear completeness gaps.

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 0%, so the description must carry parameter meaning. It partially compensates by listing allowed metric values and the days snapping behavior, but it does not describe the required symbol parameter or clarify defaults, leaving a clear gap.

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

Purpose3/5

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

The description says "Daily history" and enumerates metric choices, so the agent can infer it returns historical daily data for a symbol. However, it lacks an explicit verb and resource statement such as "retrieves daily price/metric history for a company," leaving the core purpose somewhat vague.

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 lists metric options and day-range snapping, but never says when to use this tool versus siblings like company_snapshot, financial_statement, or company_overview. There are no explicit inclusion or exclusion conditions for tool selection.

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

red_flagsB
Read-onlyIdempotent

Twelve fixed, explainable checks on reported numbers: cash conversion, debtor/inventory days, other-income share, leverage, debt vs sales growth, profit vs sales growth, falling returns, promoter selling, low tax, CWIP build-up, share-capital increase. Each with evidence.

NameRequiredDescriptionDefault
symbolYes

TDQS

B3/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 that the checks are fixed and evidence-backed, but it does not explain data sources, limitations, or what happens with incomplete reported numbers.

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 compact enumerated list of checks. It is dense but efficient, with little wasted text, though the list format makes it slightly run-on.

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?

The description explains the twelve checks and says each comes with evidence, which is useful for a read-only analysis tool. However, with no output schema, it does not describe the return structure or evidence format, and it leaves the required symbol input undefined.

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?

The schema has 0% description coverage and the description never mentions the required symbol parameter. The parameter name 'symbol' is somewhat self-explanatory, but the description adds no format, exchange, or identifier semantics to compensate for the schema gap.

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 clearly states that this tool runs twelve fixed checks on reported numbers and enumerates the checks, which distinguishes it from generic financial data tools. It does not explicitly contrast itself with siblings such as company_overview or financial_statement, but the purpose is still specific and identifiable.

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 guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The agent can infer it is for red-flag screening, but the description does not name siblings or conditions for selecting it.

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

run_screenA
Read-onlyIdempotent

Run a Screener.in query, e.g. "Return on capital employed > 20 AND Debt to equity < 0.3". Needs a Screener.in login set up once with screener-india-mcp login.

NameRequiredDescriptionDefault
sortNo
limitNo
orderNodesc
queryYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds genuinely new operational context: a one-time Screener.in login prerequisite via the CLI, which is exactly the kind of auth requirement that would otherwise cause silent failures. It stops short of noting result-size or rate-limit 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?

Two sentences, front-loaded with the concrete query example that carries most of the informational value, and the prerequisite follows. Nothing is padded, though the login instruction could be more crisply separated from the core description.

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?

With no output schema, the description should say what comes back — e.g. a list of matching companies with which columns, and how 'limit' interacts with results. It also omits the sort/order semantics, leaving an agent unable to predict result shape or ordering.

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 0%, so the description must carry parameter meaning. It does well on the required 'query' parameter by showing valid Screener.in expression syntax, but 'sort', 'order', and 'limit' (default 25) are left entirely undocumented in both schema and 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?

The description names a specific verb and resource ('Run a Screener.in query') and supplies a concrete query example, so the agent immediately understands this is a custom fundamental screen rather than a lookup. It does not explicitly contrast with sibling screen-like tools such as theme_screen, so the differentiation is only implicit.

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 example query implies the intended use case (screening by financial ratios) and a setup prerequisite is given, but there is no explicit when-to-use versus theme_screen, nor any when-not-to-use guidance. The agent must infer that this is for ad-hoc user-authored screens.

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

search_companyA
Read-onlyIdempotent

Find a company's Screener.in symbol from its name or part of its ticker (e.g. "caplin", "hdfc bank").

NameRequiredDescriptionDefault
limitNo
queryYes

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 destructiveHint=false, so the safety profile is fully covered. The description adds the useful detail that matching is fuzzy/partial, but stays silent on ambiguity handling, ranking of results, and what the response shape looks like — value added, but not rich context.

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?

A single front-loaded sentence with the action, the resource, and inline examples — no filler, nothing buried.

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?

With no output schema and no parameter descriptions, the definition should say what comes back (a list of candidate symbols?) and how ambiguous names are resolved. For a low-complexity lookup tool that omission is a real gap an agent will notice on first call.

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 0%, so the description must compensate. It documents `query` well with input forms and examples, but says nothing about `limit` (default 10) or any maximum, leaving one of two parameters unexplained in both schema and 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?

Uses a specific verb ("Find") and a precise resource (a company's Screener.in symbol), plus concrete input examples ("caplin", "hdfc bank"). It clearly reads as a name-to-symbol resolution step, distinct from data-returning siblings like company_overview or financial_statement, though it never explicitly names those siblings.

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 the resolution use case and states the two accepted input forms (full/partial name, part of a ticker), but gives no explicit when-to-use guidance, no prerequisites, and no mention of what to do when multiple or zero matches come back. Usage is inferable rather than stated.

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

service_statusB
Read-onlyIdempotent

Login state, requests used/remaining today, cool-down status and cache size.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable context by enumerating exactly what is reported (login state, quota, cool-down, cache size), which goes beyond the annotations.

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?

A single compact sentence with no filler. It front-loads the most important field (login state) and lists the rest efficiently, though the fragment lacks a verb.

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?

With no output schema, the description carries the burden of explaining return values, and it does list the reported fields. It stops short of defining ambiguous fields such as what 'cool-down status' or cache size actually mean, leaving some interpretive gaps.

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 takes zero parameters, so there is nothing for the description to clarify; the baseline for a parameterless tool is 4.

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

Purpose3/5

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

The description names the resource (service status) and lists specific fields it reports, which separates it from the company-research siblings. However, it is a noun phrase with no verb, so the actual action (retrieve/check) is only implied rather than stated.

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 call this tool, when not to, or what alternatives exist. The agent must infer usage entirely from the name and description.

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

shareholdingB
Read-onlyIdempotent

Promoter / FII / DII / government / public holding history. period: quarterly | yearly.

NameRequiredDescriptionDefault
periodNoquarterly
symbolYes

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 adds that the data is a historical time series broken out by holder category, which is modest but real added context; it does not say how far back history goes or how many periods are returned.

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?

Two short fragments, front-loaded with the resource and holder categories; there is essentially no filler. The terseness borders on cryptic ('period: quarterly | yearly' as a standalone clause) but nothing is wasted.

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?

The tool is simple (2 params, no output schema), but with no output schema the description should still indicate what a record contains and whether the series is returned as a list over time. As written, an agent can guess the call but not the shape of results or the depth of history.

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 0%, so the description carries the burden. It supplies the two accepted values for `period` (quarterly | yearly), which the schema lacks (no enum), but says nothing about `symbol` format or about period defaulting to quarterly, leaving half the semantics to guesswork.

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?

Names a specific resource — shareholding history across promoter/FII/DII/government/public categories — which is clearly distinct from siblings like financial_statement or company_overview. The verb is only implied ('history'), so it stops short of a fully explicit purpose statement.

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?

No guidance on when to use this versus company_overview, company_snapshot, or financial_statement, and no mention of prerequisites (e.g., that a valid symbol/company must exist). The agent must infer the use case entirely from the resource name.

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

theme_screenA
Read-onlyIdempotent

Ready-made screens (quality compounders, earnings acceleration, margin expansion, turnaround…). Call with no theme to list them. Needs a login like run_screen.

NameRequiredDescriptionDefault
limitNo
themeNo

TDQS

A3.8/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 the safety profile is covered. The description still adds two things the annotations don't: the authentication requirement and the discovery behavior (empty theme returns the theme listing). It omits how limit affects output or whether results are paginated.

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?

Two short sentences, front-loaded with what the tool offers before the operational notes. Minor waste in the vague 'Needs a login like run_screen' phrasing, but nothing is padded.

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?

For a two-parameter read-only tool this covers the essentials, but with no output schema and no explanation of limit, an agent can't predict result shape (list of theme names vs. ranked companies) or how limiting works. The auth note is a positive but somewhat ambiguous reference to a sibling.

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 0%, so the description must compensate. It explains theme semantics (empty string lists available themes; plausible values are named), which is genuinely useful, but it says nothing about limit (default 25) — whether it caps companies per theme or number of themes returned.

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 resource — pre-built/ready-made screens — and enumerates concrete themes (quality compounders, earnings acceleration, margin expansion, turnaround), which lets an agent distinguish it from the sibling run_screen (custom screens). It never uses an explicit verb like 'run' or 'fetch', so the action is implied rather than stated.

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?

Gives one concrete usage rule — call with no theme to list available themes — plus a prerequisite ('needs a login like run_screen'). It does not explicitly say when to prefer this over run_screen for custom criteria, so the alternative-routing is only implied by the word 'ready-made'.

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 observedcompany_overview
    • First observedcompany_snapshot
    • First observedcompare_companies
    • First observeddocuments
    • First observedearnings_trend
    • First observedfinancial_statement
    • First observedpeers
    • First observedprice_history
    • First observedred_flags
    • First observedrun_screen
    • First observedsearch_company
    • First observedservice_status
    • First observedshareholding
    • First observedtheme_screen

TDQS

B3.4/5.0

Scored across 14 tools

Disambiguation3/5

Most tools are conceptually distinct, but company_snapshot duplicates data from company_overview, earnings_trend, red_flags, shareholding, and documents, so agents must infer when to use summary vs detail. Descriptions label snapshot as the best first call, which helps, but boundaries remain fuzzy.

Naming Consistency3/5

All names use snake_case, but the pattern mixes verb_noun (search_company, compare_companies, run_screen) with noun phrases (company_snapshot, financial_statement, shareholding, peers). Readable but not a predictable single convention.

Tool Count4/5

14 tools is reasonable for a comprehensive financial research server and sits in the recommended range, though the aggregate snapshot plus several overlapping detail tools makes the set slightly redundant.

Completeness5/5

The toolset covers the full research workflow: symbol lookup, snapshot/overview, statements, trends, red flags, shareholding, documents, peers, price history, comparisons, and both custom and themed screening. No obvious lifecycle gaps for the stated Screener.in domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects AI assistants over the Model Context Protocol to live NSE and BSE data, enabling research on Indian listed companies — quotes and price history, quarterly and annual fundamentals, valuation and peer comparison, shareholding, FII/DII flows, F&O and index options, screening, IPOs, corporate actions, filings and market news. Read-only, with no local setup required.
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to search, screen, and analyze 8,200+ NSE and BSE listed securities through 55 tools covering live quotes, financials, technical indicators, FII/DII flows, option chains, filings, IPOs, bulk deals, and portfolio P&L.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to search, screen and analyze all 8,200+ NSE and BSE listed stocks, covering live quotes, financials, technical indicators, FII/DII flows, option chains, filings, IPOs and portfolio tracking through 55 tools.
    -