screen_stocks
Screen and rank the covered US companies (and the other stocks with a daily price series) by fundamentals and price technicals, from daily snapshots built on SEC filings and adjusted daily closes. Use this for questions like "fastest growing companies", "most profitable", "cheapest by earnings yield", "stocks below their 200-week moving average", "near a 52-week low", or to pull a screen for a backtest (as_of = a past day). A company without every input of the screen is not listed (never ranked as zero). Every row links its company page and source datasets.
Presets: growth (mean percentile of 1-year revenue and EPS growth), profitability (net margin), value (earnings yield), near-52-week-high, near-52-week-low, below-200-week-ma. most-held-by-13f (how many tracked investors list the company on their latest Form 13F). Planned, not answerable yet: dividend, insider-buying. Filter and sort columns: revenue_growth_1y, eps_growth_1y, net_margin, growth_score, earnings_yield, pct_from_52w_high, pct_from_52w_low, pct_vs_200w_ma (percent), holders_13f (count).
Examples:
"Fastest growing companies?" | preset="growth", limit=10
"Profitable stocks below their 200-week MA" | filters={"net_margin":{"min":10},"pct_vs_200w_ma":{"max":0}}, sort="pct_vs_200w_ma"
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 |
|---|---|---|---|
| sort | No | Column to order by (default: the rank column of the preset) | |
| as_of | No | YYYY-MM-DD: the newest daily snapshot on or before this day (for backtests). Default: the newest. | |
| limit | No | Rows to return (default 25, max 200) | |
| order | No | asc | desc (default: best first) | |
| format | No | Output wire format for this MCP call. Default 'toon' (Token-Oriented Notation, fewest tokens, best for tabular rows). 'compact' = minified JSON. 'json' = pretty JSON for readability. The REST API always returns JSON regardless. | |
| preset | No | growth | profitability | value | near-52-week-high | near-52-week-low | below-200-week-ma | most-held-by-13f | |
| filters | No | Column ranges, e.g. {"net_margin":{"min":10},"pct_vs_200w_ma":{"max":-20}}. A row without the column is excluded. |