Screen Stocks
screen_stocks⭐ The cohort SCREENER: "which stocks in are interesting / winning / losing / most-talked-about,
and how cheap or expensive do they trade?" Ranks the companies in a scope by how news is hitting them (lead with
the winners-vs-losers split), and EVERY row carries its VALUATION (P/E, P/B, dividend yield, 52w) — so this is
also the tool for "which in are cheap / worth investing" (pulse(kind='theme')/brief are news-only, no valuation —
pull P/E from here; P/B leads for banks/insurers).
⚠️ Rows are a NEWS-RANKED, CAPPED SUBSET, not the full cohort — do NOT compute a sector/peer AVERAGE from them
(biased sample). For "cheaper/richer than the sector average / below-above the group / undervalued vs peers" use
screen_unified with a below_average/above_average pattern (proper cap-weighted, outlier-cleaned benchmark).
Scope ≥1 REQUIRED (never whole-universe): megatrend / gics / country — combine freely.
Each row = {symbol, name, country, gic_code, market_cap_usd, impact:{news_count, pos, neg, ambiguous,
net_direction, top_relevance, aspects, top_reason}, fundamentals:{pe_ratio, pb_ratio, dividend_yield_pct,
week52_high, week52_low}}; direction_split pre-tallies winners/losers. ⚠️ per-stock impact scoring exists only
from ~2026-07-03 — an earlier window returns empty (say so, not "nothing happened"). One ticker → pulse(kind='asset');
a group's overall pulse → pulse(kind='theme'); a sector-average benchmark → screen_unified.
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 |
|---|---|---|---|
| to | No | Upper time bound, ISO date `YYYY-MM-DD`. | |
| gate | No | megatrend scope only: `both` (default, strict member AND epicenter) | `membership` (looser). | |
| gics | No | A GICS sector/industry — a CODE PREFIX (sector `25` / group `2550` / industry `255010` / sub `25501010`, CSV for several) OR plain English ('banks', 'semiconductors', 'biotech'); the server resolves it. 🔴 ENGLISH (translate the concept first: ธนาคาร→'banks'). So 'European banks' = gics='banks' + country=EU codes. | |
| from_ | No | Start date YYYY-MM-DD. ⚠️ per-stock impact scoring only exists from ~2026-07-03 (earlier → empty). | |
| limit | No | Max rows (default 20, hard cap 50). Keep SMALL + narrow the scope; page/refine rather than dump — heavily-covered assets have hundreds of articles. | |
| aspect | No | Impact CHANNEL filter (e.g. `demand`, `competition`, `tariff`, `monetary`). Omit → all channels. | |
| window | No | News-recency window: `7d`/`30d`/`90d`/`180d`/`1y` or `mtd`/`qtd`/`ytd`. Omit → a sensible default. (Price history is unaffected — this only scopes the NEWS lens.) | |
| country | No | Market filter — CSV of ISO-2 codes (e.g. `US` or `CN,TW,HK`). 🌍 If the question names a NATIONALITY or REGION ('European','Thai','Chinese','ASEAN'), put it HERE — never leave it inside a concept/`q`/`gics` field. Enumerate a region into its member ISO-2s yourself (Europe→GB,DE,FR,IT,ES,NL,CH,SE; ASEAN→TH,SG,MY,ID,PH,VN). | |
| order_by | No | `news_count` (default, most attention) | `relevance` | `market_cap`. | |
| direction | No | `pos` → winners only · `neg` → losers/at-risk only · omit → all. | |
| megatrend | No | A megatrend node — a name/slug (resolved for you, e.g. `foundry`) or an int node id. CSV for several. | |
| min_impact | No | Min article importance, 1–5. | |
| min_relevance | No | Min centrality to its news, 0–1. | |
| min_market_cap_usd | No | Min market cap, USD. |