Screen stocks
screen_stocksCustom stock screener with fundamental, technical, market, ownership and corporate-action filters.
Examples:
Value stocks: max_pe=15, max_pb=3, min_roe=15, max_debt_equity=0.5
Clean ownership: max_promoter_pledged_pct=5, min_promoter_pct=50
Momentum: supertrend_bullish=True, min_rsi=50, max_rsi=70
Quality: min_piotroski=7, min_roce=20
Sector filter: sector='Information Technology', min_roe=20
Clean + growing + catalyst: min_roce=15, max_debt_equity=0.5, min_revenue_yoy_pct=15, has_upcoming_corporate_action=True
sort_by options: market_cap, ltp, pe_ratio, roe, roce, roa, rsi_14, revenue_yoy_pct, pat_yoy_pct market_cap_cat: 'Large Cap', 'Mid Cap', 'Small Cap' (also accepts 'Large'/'Mid'/'Small'/'Micro')
NOTE on "catalysts": has_upcoming_corporate_action only detects structured corporate actions (dividend/bonus/split/rights/buyback ex-dates) — NOT real-world catalysts like order wins, contract awards, regulatory approvals, or capacity expansion, and order book size/growth is not a DB column at all. This tool narrows candidates; real catalysts and moat evidence live in news, company documents and filings. Stocks listed in the last 3 months are excluded by default (thin price/fundamentals history breaks technical + quality screens) — pass min_listing_age_months=0 to disable.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "screen_stocks"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return (1-100). | |
| max_pb | No | Maximum price-to-book ratio, e.g. 3. | |
| max_pe | No | Maximum trailing P/E ratio, e.g. 20. | |
| min_pb | No | Minimum price-to-book ratio, e.g. 0.5. | |
| min_pe | No | Minimum trailing P/E ratio (price / EPS), e.g. 5. | |
| sector | No | Sector name, e.g. 'Information Technology'. Case-insensitive. | |
| max_rsi | No | Maximum 14-day RSI (0-100), e.g. 70. | |
| min_roa | No | Minimum return on assets, percent (5 = 5%). | |
| min_roe | No | Minimum return on equity, percent (15 = 15%). | |
| min_rsi | No | Minimum 14-day RSI (0-100), e.g. 50. | |
| sort_by | No | Column to rank by. | market_cap |
| min_roce | No | Minimum return on capital employed, percent (20 = 20%). | |
| min_roic | No | Minimum return on invested capital, percent. | |
| sort_dir | No | DESC = largest first, ASC = smallest first. | DESC |
| above_sma200 | No | true = price above its 200-day simple moving average. | |
| golden_cross | No | true = 50-day SMA crossed above the 200-day SMA in the latest session. | |
| max_altman_z | No | Maximum Altman Z (distress screening). | |
| min_altman_z | No | Minimum Altman Z-score; above ~3 is the 'safe' zone, below 1.8 distress. | |
| near_52w_low | No | Within 5% of the 52-week low. | |
| new_52w_high | No | Printed a new 52-week high. | |
| min_piotroski | No | Minimum Piotroski F-score (0-9); 7+ is strong. | |
| market_cap_cat | No | Size band. A trailing ' Cap' is stripped before the query, so either spelling works. | |
| min_net_margin | No | Minimum net profit margin, percent. | |
| max_debt_equity | No | Maximum debt-to-equity ratio as a multiple (0.5 = debt is half of equity). | |
| min_pat_yoy_pct | No | Minimum net-profit (PAT) growth year on year, percent. | |
| volume_breakout | No | Volume broke out versus its own average. | |
| min_delivery_pct | No | Minimum delivery percentage of traded volume (0-100), e.g. 50. | |
| min_promoter_pct | No | Minimum promoter holding %. Also sparse here; screen_advanced own_promoter_pct reads the source table. | |
| min_ebitda_margin | No | Minimum EBITDA margin, percent. | |
| min_free_cash_flow | No | Minimum latest annual free cash flow in Rs crore; 0 keeps only FCF-positive companies. | |
| supertrend_bullish | No | true = Supertrend indicator in an uptrend; false = downtrend. | |
| max_net_debt_ebitda | No | Maximum net debt / EBITDA as a multiple, e.g. 2. | |
| min_revenue_yoy_pct | No | Minimum revenue growth vs the same period a year earlier, percent (15 = 15%). | |
| catalyst_window_days | No | Days ahead to look for an ex-date when has_upcoming_corporate_action=True. | |
| max_promoter_pledged | No | BROKEN: reads mv_screener_snapshot.promoter_pledged_pct, which is ~0% populated in this DB, so any value here matches almost nothing. Use screen_advanced with the own_pledged_pct metric instead, which reads the source table. | |
| min_interest_coverage | No | Minimum interest coverage (EBIT / interest) as a multiple, e.g. 3. | |
| min_listing_age_months | No | Minimum months since listing. Defaults to 3 (thin history breaks technical screens); pass 0 to include new listings. | |
| has_upcoming_corporate_action | No | true = an ex-date (dividend, bonus, split, rights, buyback) falls within catalyst_window_days. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |