Tool Reference
All 17 Stocklake tools — parameters, response fields, and examples. Organized by what you're paying for: data is free, intelligence is Pro. ← Getting Started
Not financial advice. All data, ratings, signals, and AI assessments are for informational and research purposes only. Nothing here constitutes investment advice or a recommendation to buy or sell any security.
get_stock free
Returns price, fundamentals, technical indicators, and company profile for a ticker — everything you need about a stock in one call.
Parameters
| Name | Type | Description |
| symbol | string | Ticker symbol, e.g. AAPL. Case-insensitive. |
Response fields
| Field | Type | Description |
| symbol | string | Ticker |
| name | string | Company full name |
| sector / industry | string | Sector and industry classification |
| country / currency / exchange | string | Country, reporting currency, exchange code |
| price | number | Current market price (multi-source, authoritative) |
| change_pct | number | Day change % |
| volume / avg_volume | number | Day volume and average volume |
| prev_close | number | Previous close |
| week52_high / week52_low | number | 52-week range |
| ma_50 / ma_200 | number | 50-day and 200-day moving averages |
| market_cap / enterprise_value | number | Market cap and enterprise value |
| beta | number | Beta vs market |
| pe_trailing / pe_forward | number | Trailing and forward P/E ratios |
| price_to_book | number | Price-to-book ratio |
| dividend_yield / dividend_rate / ex_dividend_date | number / string | Dividend info |
| debt_to_equity | number | D/E ratio |
| profit_margins / operating_margins | number | Net and operating profit margins |
| revenue_growth / earnings_growth | number | YoY growth rates |
| revenue_ttm / gross_profit_ttm | number | Trailing twelve-month revenue and gross profit |
| free_cashflow | number | Free cash flow (TTM) |
| return_on_equity | number | ROE |
| analyst_rating | string | Analyst consensus label: strong_buy · buy · hold · sell · strong_sell |
| analyst_rating_score | number | Mean analyst recommendation score: 1.0 = strong buy, 5.0 = strong sell (lower is better) |
| analyst_target / analyst_count | number | Mean price target and number of analyst opinions |
| indicators | object | RSI, MACD {macd_line, signal_line, histogram}, Bollinger Bands {upper_band, middle_band, lower_band}, SMA20/SMA200, EMA20/EMA200, ATR |
| description | string | Long-form company business description |
| website | string | Company website URL |
| employees | integer | Full-time employee count |
| officers | array | Top 5 executives: name, title, total_pay |
| updated_at | string | Data freshness timestamp (ISO 8601 UTC) |
| rating | object | pro Composite technical score: score (0-10), direction (BULLISH/NEUTRAL/BEARISH), signals (per-indicator breakdown). Computed from the same indicators block, no extra AI cost. |
| signals | object | pro Flat labeled technical signals — overall + rsi/macd/bollinger/sma200/sma50/williams_r/ultimate_osc/vix_fix/williams_ad/td_sequential/elliott_wave, each with a plain-English label pre-interpreted for programmatic use. |
| stance_signals | array | pro Unified list of per-source directional calls — technical rating, AI summary (near_term + longer_term), insider/institutional sentiment, analyst consensus, and any active screener signals. Each entry: stance (BULLISH/BEARISH/NEUTRAL), conviction (0-10), horizon (INTRADAY/SWING/POSITION/LONG_TERM), edge_quality (PROVEN/OBSERVATION/UNKNOWN — that source's own signal_backtest track record), source, raw_label, as_of. A source with no data for this stock is simply omitted, not returned as null. |
| relative_strength | object | pro Multi-window relative strength vs SPY, QQQ, and the stock's GICS sector ETF. windows: 5d/20d/60d/120d/12m → stock_return_pct plus rs_vs_spy/rs_vs_qqq/rs_vs_sector (percentage-point spread, stock return minus benchmark return — not a ratio). verdict: one-line plain-language read, e.g. "Laggard — weak on all windows". Windows/benchmarks with insufficient history are simply omitted; null if not precomputed yet for this symbol. |
Example
{
"symbol": "NVDA",
"name": "NVIDIA Corporation",
"price": 116.78,
"change_pct": 2.31,
"market_cap": 2847000000000,
"pe_trailing": 38.2,
"analyst_rating": "buy",
"analyst_target": 165.00,
"indicators": {
"rsi": 58.4,
"macd": { "macd_line": 1.23, "signal_line": 0.94, "histogram": 0.29 },
"bollinger_bands": { "upper_band": 124.1, "middle_band": 114.3, "lower_band": 104.5 }
}
}
Example — META (Communication Services, strong buy consensus)
{
"symbol": "META",
"name": "Meta Platforms Inc.",
"short_name": "Meta",
"price": 635.29,
"change_pct": 1.54,
"volume": 18720000,
"market_cap": 1612600000000,
"pe_trailing": 27.8,
"analyst_rating": "strong_buy",
"analyst_target": 725.00,
"indicators": {
"rsi": 65.3,
"macd": { "macd_line": 8.45, "signal_line": 6.12, "histogram": 2.33 },
"bollinger_bands": { "upper_band": 652.80, "middle_band": 598.40, "lower_band": 544.00 }
}
}
Example — Pro tier rating + signals (appended alongside the fields above)
{
"rating": { "score": 6.0, "direction": "BULLISH",
"signals": { "rsi": { "verdict": "mild_bearish", "text": "strong (65.7) — mild bearish" },
"macd": { "verdict": "bullish", "text": "above signal — bullish crossover" },
"trend": { "verdict": "bullish", "text": "price > SMA50 > SMA200 — strong uptrend" } } },
"signals": { "overall": "BULLISH",
"rsi": { "value": 65.7, "signal": "approaching_overbought" },
"macd": { "signal": "bullish", "histogram": 0.8984, "strength": "moderate" },
"sma200": { "trend": "above", "gap_pct": 20.7 } }
}
Example — Pro tier stance_signals (appended alongside the fields above)
{
"stance_signals": [
{ "stance": "BULLISH", "conviction": 2, "horizon": "SWING",
"edge_quality": "UNKNOWN", "source": "technical_rating", "raw_label": "6.0/10", "as_of": "2026-07-31T14:02:11+00:00" },
{ "stance": "BULLISH", "conviction": 7, "horizon": "LONG_TERM",
"edge_quality": "UNKNOWN", "source": "ai_summary", "raw_label": "Cloud momentum accelerating into next earnings", "as_of": "2026-07-30T22:15:00+00:00" },
{ "stance": "BULLISH", "conviction": 9, "horizon": "LONG_TERM",
"edge_quality": "UNKNOWN", "source": "analyst_consensus", "raw_label": "Strong Buy (58 analysts)", "as_of": "2026-07-31T14:02:11+00:00" }
]
}
Example — Pro tier relative_strength (appended alongside the fields above)
{
"relative_strength": {
"windows": {
"5d": { "stock_return_pct": -8.31, "rs_vs_spy": -9.38, "rs_vs_qqq": -9.17, "rs_vs_sector": -8.91 },
"20d": { "stock_return_pct": -1.25, "rs_vs_spy": -0.68, "rs_vs_qqq": 3.57, "rs_vs_sector": 3.23 },
"60d": { "stock_return_pct": 7.54, "rs_vs_spy": 5.48, "rs_vs_qqq": 8.55, "rs_vs_sector": 4.29 },
"120d": { "stock_return_pct": 12.59, "rs_vs_spy": 4.37, "rs_vs_qqq": 0.33, "rs_vs_sector": -10.03 },
"12m": { "stock_return_pct": 49.41, "rs_vs_spy": 29.91, "rs_vs_qqq": 27.06, "rs_vs_sector": 15.23 }
},
"verdict": "Mixed — lagging near-term, outperforming long-term"
}
}
get_stocks free+
Batch stock data for up to 25 symbols in a single call — the same fields get_stock returns for the same key/symbol, so this is a true batch, not a thinned-down scan. Returns prices, fundamentals, and indicators keyed by symbol. Each symbol in the batch counts as one call toward your daily limit. Pro tier adds the same precomputed rating/signals/relative_strength blocks as get_stock, plus ai_verdict/ai_confidence/ai_flag_score/ai_headline per symbol — no extra AI cost. Not included even on Pro: stance_signals and the full ai_summary text — call get_stock/get_stock_research for those.
| Parameter | Type | Default | Description |
| symbols | array of strings | required | Stock tickers (max 25). Symbols with hyphens (e.g. BRK-B) are supported. Invalid symbols are silently skipped. |
curl -s https://api.stocklake.dev/mcp \
-H "Authorization: Bearer sl_your_key" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_stocks","arguments":{"symbols":["JPM","GS"]}}}'
Example response
{
"count": 2,
"symbols": {
"JPM": {
"symbol": "JPM",
"name": "JPMorgan Chase & Co.",
"sector": "Financial Services",
"price": 296.73,
"change_pct": -0.42,
"volume": 8930000,
"analyst_rating": "strong_buy",
"indicators": {
"rsi": 42.6,
"macd": { "macd_line": -1.20, "signal_line": -0.80, "histogram": -0.40 },
"bollinger_bands": { "upper_band": 312.50, "middle_band": 298.10, "lower_band": 283.70 }
},
"updated_at": "2026-06-01T14:00:00+00:00"
},
"GS": {
"symbol": "GS",
"name": "The Goldman Sachs Group Inc.",
"sector": "Financial Services",
"price": 1008.37,
"change_pct": 0.87,
"volume": 2100000,
"analyst_rating": "buy",
"indicators": {
"rsi": 68.2,
"macd": { "macd_line": 5.60, "signal_line": 4.10, "histogram": 1.50 },
"bollinger_bands": { "upper_band": 1050.00, "middle_band": 985.00, "lower_band": 920.00 }
},
"updated_at": "2026-06-01T14:00:00+00:00"
}
},
"requested": 2
}
Response includes the count of matched symbols plus a map with per-symbol data in the same format as get_stock. Requested symbols not found in the database are omitted from the result.
get_stock_history free+
Daily OHLCV price history for a ticker. Returns bars sorted oldest-first.
Parameters
| Name | Type | Default | Description |
| symbol | string | — | Ticker symbol |
| days | integer | 90 | Number of trading days to return. Max 365 (1 year). |
Response fields
| Field | Type | Description |
| symbol | string | Ticker |
| days | integer | Days requested |
| count | integer | Bars actually returned (may be less if data is newer) |
| history | array | OHLCV bars: date, open, high, low, close, volume |
Example
{
"symbol": "AAPL",
"days": 5,
"count": 5,
"history": [
{ "date": "2026-04-29", "open": 208.40, "high": 212.10, "low": 207.80, "close": 211.50, "volume": 52183000 },
{ "date": "2026-04-30", "open": 211.20, "high": 214.60, "low": 210.90, "close": 213.45, "volume": 48921000 }
]
}
Example — AMZN 30-day history
{
"symbol": "AMZN",
"days": 30,
"count": 22,
"history": [
{ "date": "2026-04-29", "open": 247.40, "high": 250.60, "low": 246.80, "close": 249.75, "volume": 31045000 },
{ "date": "2026-04-30", "open": 250.00, "high": 256.10, "low": 249.20, "close": 255.30, "volume": 28760000 },
{ "date": "2026-05-01", "open": 257.10, "high": 264.80, "low": 256.40, "close": 263.90, "volume": 35412000 }
]
}
get_market_pulse free
Live market health snapshot in a single call. Aggregates VIX, Fear & Greed index, market breadth, and key index prices — no AI cost, always live data.
Use this as a lightweight context check before making any investment decisions. Replaces the need to call multiple separate endpoints for basic macro state.
No parameters — returns the current market snapshot.
Response fields
| Field | Type | Description |
| vix | number | VIX level at last pipeline run |
| fear_greed.value | number | CNN Fear & Greed index 0–100 |
| fear_greed.description | string | Label: "extreme fear" · "fear" · "neutral" · "greed" · "extreme greed" |
| breadth.oversold_pct | number | % of tracked stocks with RSI < 30 |
| breadth.overbought_pct | number | % of tracked stocks with RSI > 70 |
| breadth.neutral_pct | number | % of tracked stocks with RSI 30–70 |
| breadth.universe_size | integer | Total stocks in the tracked universe |
| indices.spy / qqq / iwm | object | Live price, change_pct, RSI for SPY / QQQ / IWM |
| bonds_commodities.tlt / gld | object | TLT (long bonds) and GLD (gold) — price, change_pct, RSI |
| updated_at | string | ISO 8601 UTC timestamp of breadth + fear/greed snapshot (pipeline runs every ~4h) |
Example response
{
"vix": 15.71,
"fear_greed": { "value": 55.0, "description": "neutral" },
"breadth": {
"universe_size": 3501,
"oversold_pct": 2.0,
"overbought_pct": 7.6,
"neutral_pct": 90.4
},
"indices": {
"spy": { "price": 757.09, "change_pct": 0.38, "rsi": 67.97 },
"qqq": { "price": 733.81, "change_pct": 0.62, "rsi": 73.66 },
"iwm": { "price": 292.01, "change_pct": -0.31, "rsi": 57.73 }
},
"bonds_commodities": {
"tlt": { "price": 85.64, "change_pct": -0.42, "rsi": 52.41 },
"gld": { "price": 411.27, "change_pct": -0.18, "rsi": 38.43 }
},
"data_age_hours": 0.7
}
get_earnings_calendar free+
Upcoming earnings dates for all stocks in the Stocklake universe, within a configurable look-ahead window. Dates sourced from market data — treat is_estimate: true dates as approximate.
Parameters
| Parameter | Type | Default | Description |
| days | integer | 7 | Look-ahead window in days (max 30) |
Response
| Field | Type | Description |
| window_days | number | Effective look-ahead window applied |
| from_date | string | Window start (UTC ISO) |
| to_date | string | Window end (UTC ISO) |
| count | number | Total results returned |
| results[].symbol | string | Ticker symbol |
| results[].name | string | Company short name |
| results[].sector | string | Sector |
| results[].market_cap | number | Market capitalisation in reporting currency |
| results[].price | number | Current stock price |
| results[].rsi | number | null | Current RSI — useful for pre-earnings momentum screening |
| results[].earnings_date | string | Expected earnings timestamp (UTC ISO) |
| results[].is_estimate | boolean | True if the date is an estimate — treat as approximate |
| results[].eps_trailing | number | null | Trailing 12-month EPS |
| results[].eps_forward | number | null | Forward EPS estimate |
Example response
{
"window_days": 7,
"from_date": "2026-05-06T10:00:00+00:00",
"to_date": "2026-05-13T10:00:00+00:00",
"count": 3,
"results": [
{
"symbol": "AAPL",
"name": "Apple Inc.",
"sector": "Technology",
"market_cap": 3200000000000,
"earnings_date": "2026-05-08T20:30:00+00:00",
"is_estimate": false,
"eps_trailing": 6.97,
"eps_forward": 7.54
}
]
}
Example — 30-day window
{
"window_days": 30,
"from_date": "2026-05-06T10:00:00+00:00",
"to_date": "2026-06-05T10:00:00+00:00",
"count": 4,
"results": [
{
"symbol": "AMD",
"name": "Advanced Micro Devices Inc.",
"sector": "Technology",
"market_cap": 845000000000,
"earnings_date": "2026-05-20T20:30:00+00:00",
"is_estimate": false,
"eps_trailing": 3.95,
"eps_forward": 4.82
},
{
"symbol": "INTC",
"name": "Intel Corporation",
"sector": "Technology",
"market_cap": 608000000000,
"earnings_date": "2026-05-22T21:00:00+00:00",
"is_estimate": false,
"eps_trailing": 2.41,
"eps_forward": 3.10
},
{
"symbol": "IBM",
"name": "International Business Machines Corp.",
"sector": "Technology",
"market_cap": 248000000000,
"earnings_date": "2026-05-28T20:30:00+00:00",
"is_estimate": true,
"eps_trailing": 6.58,
"eps_forward": 7.22
}
]
}
get_screener free
Filter and rank stocks from the Stocklake universe — fundamentals, technicals, and (Pro) AI signals in one tool. Presets provide one-call screens for common setups.
Parameters
| Name | Type | Default | Description |
| preset | string | — | oversold (RSI≤35, above SMA200) · overbought (RSI≥65) · momentum (RSI 50-70, above SMA200, up 0.5%+) · high_conviction (flag_score≥7, Pro only) |
| sector | string | — | e.g. "Technology", "Healthcare" |
| country | string | — | e.g. "United States", "Germany" |
| min_rsi / max_rsi | number | — | Exact RSI bounds (e.g. min_rsi=30, max_rsi=50 = post-oversold recovery zone) |
| sma_trend | string | — | above_200 / below_200 — price vs 200-day MA |
| macd_signal | string | — | bullish / bearish — MACD line vs signal line |
| min_perf_1d / max_perf_1d | number | — | 1-day performance % bounds (e.g. min_perf_1d=2.0 = up 2%+ today) |
| min_volume | integer | — | Minimum daily volume. e.g. 1000000 |
| min_market_cap_b / max_market_cap_b | number | — | Market cap in billions |
| max_pe_forward | number | — | Maximum forward P/E |
| analyst_rating | string | — | strong_buy / buy / hold / sell / strong_sell |
| min_flag_score | integer | — | Minimum AI flag score 0-10 — Pro tier only |
| sort_by | string | market_cap | market_cap / rsi / perf_1d / volume / analyst_rating / rating / flag_score (Pro) |
| sort_dir | string | desc | asc / desc |
| limit | integer | 20 | 1–25. Each returned stock counts as one call toward your daily limit. |
Response fields (per result)
| Field | Type | Description |
| symbol, name, sector, industry, country | string | Stock identity |
| price, change_pct, volume | number | Current price, 1-day change %, day volume |
| market_cap, pe_forward | number | Fundamentals |
| rsi | number | RSI value |
| macd_signal | string | bullish / bearish / neutral |
| sma200_trend | string | above / below |
| analyst_rating | string | buy / hold / sell etc. |
| rating | number | 0-10 technical composite score |
| flag_score | number | Pro only — AI flag score 0-10 |
| ai_verdict | string | Pro only — bullish / neutral / bearish |
Example — preset: oversold
{
"count": 8,
"preset": "oversold",
"filters": { "max_rsi": 35, "sma_trend": "above_200", "sort_by": "market_cap", "sort_dir": "desc" },
"results": [
{ "symbol": "VZ", "name": "Verizon Communications", "sector": "Communication Services", "industry": "Telecom Services", "country": "United States",
"price": 38.42, "change_pct": -0.8, "volume": 18400000, "rsi": 28.9, "macd_signal": "bearish",
"sma200_trend": "above", "analyst_rating": "hold", "rating": 3.4 }
]
}
get_market_movers free
Top market movers from the Stocklake universe — gainers, losers, and most active by volume. A fast way to see what's moving in the market right now.
Parameters
| Name | Type | Default | Description |
| category | string | all | gainers / losers / most_active / all (all returns all 3 categories) |
| limit | integer | 10 | Results per category (max 20). Each returned stock counts as one call toward your daily limit — a symbol appearing in more than one category counts once per category. |
| min_market_cap_b | number | — | Filter to stocks above this market cap in billions (e.g. 1.0 = $1B+ only) |
Response
Returns gainers[], losers[], most_active[] (whichever categories requested). Each entry: symbol, name, sector, price, change_pct, volume, rsi, market_cap, atr_pct (volatility as % of price — omitted when the underlying reading is missing or corrupted).
Example
{
"category": "all", "limit_per_category": 3,
"gainers": [
{ "symbol": "SMCI", "name": "Super Micro Computer", "sector": "Technology",
"price": 48.20, "change_pct": 18.4, "volume": 42810000, "rsi": 67.2, "market_cap": 28400000000, "atr_pct": 6.85 }
],
"losers": [
{ "symbol": "WBA", "name": "Walgreens Boots Alliance", "sector": "Healthcare",
"price": 9.82, "change_pct": -12.7, "volume": 18200000, "rsi": 22.4, "market_cap": 8500000000, "atr_pct": 4.12 }
],
"most_active": [
{ "symbol": "TSLA", "name": "Tesla", "sector": "Consumer Cyclical",
"price": 192.40, "change_pct": 2.1, "volume": 94000000, "rsi": 54.8, "market_cap": 614000000000, "atr_pct": 3.27 }
]
}
get_indicator_history pro
Daily indicator snapshots for a symbol — up to 2 years of history. Returns RSI, MACD histogram, Bollinger band position, Williams %R, VIX Fix percentile, and Williams A/D trend per day, enabling charting and trend analysis without re-computing from OHLCV data.
Parameters
| Name | Type | Default | Description |
| symbol | string | — | Ticker symbol |
| days | integer | 90 | Number of calendar days to look back. Max 730 (2 years). |
Response fields
| Field | Type | Description |
| symbol | string | Ticker |
| days | integer | Days requested |
| count | integer | Snapshots returned |
| snapshots | array | Snapshots sorted oldest-first (see fields below). Empty (with a note field instead) if fewer than 3 found. |
| snapshots[].recorded_at | string | Snapshot date, YYYY-MM-DD |
| snapshots[].price | number | Price at snapshot time |
| snapshots[].rsi | number | RSI(14) value |
| snapshots[].macd_histogram | number | MACD histogram (line − signal) |
| snapshots[].bb_pct | number | Bollinger band position 0–100: 0 = at lower band, 100 = at upper band |
| snapshots[].sma20 / sma200 | number | 20-day and 200-day simple moving averages |
| snapshots[].williams_r | number | Williams %R (0 to −100) |
| snapshots[].ultimate_osc | number | Ultimate Oscillator (0–100; >70 overbought, <30 oversold) |
| snapshots[].vix_fix_value | number | Williams VIX Fix synthetic fear gauge (higher = more fear) |
| snapshots[].williams_ad_trend | string | rising / falling / flat |
| snapshots[].td_signal | string | null | BUY_SETUP / SELL_SETUP / BUY_COUNTDOWN / SELL_COUNTDOWN / null |
| snapshots[].td_phase | string | null | setup_active / setup_complete / countdown_active / countdown_done / null |
| snapshots[].analyst_rating | string | null | buy / outperform / hold / underperform / sell / null |
| snapshots[].analyst_target | number | null | Mean analyst price target |
Example
{
"symbol": "NVDA",
"days": 90,
"count": 87,
"snapshots": [
{
"recorded_at": "2026-04-02",
"price": 103.20,
"rsi": 28.4,
"macd_histogram": -1.82,
"bb_pct": 6.3,
"sma20": 112.40,
"sma200": 128.90,
"williams_r": -88.1,
"ultimate_osc": 22.7,
"vix_fix_value": 18.6,
"williams_ad_trend": "falling",
"td_signal": null,
"td_phase": null,
"analyst_rating": "buy",
"analyst_target": 142.00
},
{
"recorded_at": "2026-07-01",
"price": 142.85,
"rsi": 61.3,
"macd_histogram": 2.14,
"bb_pct": 68.7,
"sma20": 136.10,
"sma200": 131.20,
"williams_r": -24.5,
"ultimate_osc": 58.1,
"vix_fix_value": 9.3,
"williams_ad_trend": "rising",
"td_signal": "BUY_SETUP",
"td_phase": "setup_active",
"analyst_rating": "buy",
"analyst_target": 160.00
}
]
}
get_stock_news free+ AI
Returns AI-analysed news articles for a ticker. Each article has been processed by our AI pipeline — raw article content is not exposed. Free/guest get up to 5 headlines with a sentiment label; Pro gets up to 50 articles with full AI fields (flag score, summary, confidence) over a 90-day window.
When no articles are found, the ticker is automatically queued for a background refresh. Re-queuing an already-pending ticker does not count against your limit.
Parameters
| Name | Type | Description |
| symbol | string | Ticker symbol |
| limit | integer | Max articles to return. Default 10, max 10. |
| days | integer | Look-back window in days. Default 30, max 30. |
Response
Outer envelope fields:
| Field | Type | Description |
| symbol | string | Ticker |
| status | string | ok empty — see below |
| count | integer | Number of articles returned |
| days | integer | Effective look-back window in days (max 30) |
| articles | array | Article objects (see below) |
| message | string | Present when status is empty |
Status values:
- ok — articles returned
- empty — no news found for this window; pipeline triggered in background if data was stale
Per-article fields:
| Field | Type | Description |
| title | string | Article headline |
| published_at | datetime | Publication timestamp (ISO 8601) |
| ai_sentiment | string | positive / neutral / negative |
| ai_flag_score | number | 0–10 signal strength (10 = high impact) |
| ai_summary | string | Full AI-generated summary of the article's relevance to the stock |
| ai_confidence | number | 0–10 AI confidence score (normalised from pipeline output) |
Example — status ok
{
"symbol": "TSLA",
"status": "ok",
"count": 3,
"days": 30,
"articles": [
{
"title": "Tesla Q1 deliveries beat expectations",
"published_at": "2026-04-03T14:00:00+00:00",
"ai_sentiment": "positive",
"ai_flag_score": 8,
"ai_summary": "Q1 deliveries of 387k beat analyst consensus of 375k, signalling demand stabilisation and easing investor concerns over weakening EV demand.",
"ai_confidence": 8.5
}
]
}
Example — status empty
{
"symbol": "RKLB",
"status": "empty",
"count": 0,
"days": 30,
"articles": [],
"message": "No news available for RKLB in the last 30d."
}
get_stock_research pro AI
Full research bundle for a symbol in one call — replaces 4 separate calls: get_stock + get_stock_news + get_insider_activity + get_signals (filtered to one symbol), plus the AI-generated summary (verdict, narrative, key points, risks) bundled in as ai_summary. All data is pre-computed by the nightly AI pipeline; no live AI calls on request.
Parameters
| Name | Type | Description |
| symbol | string | Ticker symbol |
Response sections
| Section | Key fields |
| stock | symbol, name, sector, price, change_pct, market_cap, pe_forward, pe_trailing, beta, dividend_yield, week52_high/low, analyst_rating, analyst_target, rsi, sma200_trend |
| ai_summary | verdict, confidence, flag_score, summary, key_points[] (3–5 specific bullish/neutral observations), risks[] (2–3 specific risk factors), price_at_generation (stock price when the summary was generated), generated_at, headline (one-sentence plain-language take), near_term {stance, confidence} (view over <4 weeks, technicals/momentum-weighted), longer_term {stance, confidence} (view over a multi-month horizon, fundamentals/analyst/institutional-flow-weighted) — headline/near_term/longer_term are null on summaries generated before this schema shipped; fall back to verdict/confidence until that symbol's next regeneration |
| news | Last 3 AI-flagged articles: title, published_at, ai_sentiment, ai_flag_score, ai_summary |
| sentiment | signal, confidence, flag_score, insider_trend (buying/selling/neutral), institutional_pct, updated_at |
| signal | Active trade signal (if any): direction, conviction, confidence, flag_score, source, rationale, expires — null if no active signal |
Example (condensed)
{
"stock": {
"symbol": "ORCL", "name": "Oracle Corporation", "sector": "Technology",
"price": 192.40, "change_pct": 1.4, "rsi": 68.9, "sma200_trend": "above",
"analyst_rating": "buy", "analyst_target": 210.0
},
"ai_summary": {
"verdict": "bullish", "confidence": 8, "flag_score": 9,
"summary": "Strong cloud momentum, AI workload growth accelerating...",
"key_points": ["Cloud ARR up 23% YoY", "AI training contracts with major hyperscalers"],
"risks": ["Elevated valuation at 28x forward earnings"],
"price_at_generation": 192.40, "generated_at": "2026-06-10T20:30:38+00:00",
"headline": "Cloud momentum accelerating into next earnings",
"near_term": { "stance": "bullish", "confidence": 7 },
"longer_term": { "stance": "bullish", "confidence": 8 }
},
"news": [
{ "title": "Oracle beats Q3 earnings, cloud growth accelerates",
"published_at": "2026-06-10T20:15:00+00:00", "ai_sentiment": "positive",
"ai_flag_score": 9, "ai_summary": "Beat on EPS and revenue, cloud segment +31%..." }
],
"sentiment": {
"signal": "bullish", "confidence": 7, "insider_trend": "neutral",
"institutional_pct": 72.1, "updated_at": "2026-06-04T23:07:46+00:00"
},
"signal": {
"direction": "LONG", "conviction": 8, "flag_score": 9,
"source": "screener", "rationale": "Strong AI cloud catalyst, momentum breakout...",
"expires": "2026-06-12"
}
}
get_signals pro AI
Live AI signal queue — stocks actively flagged by the Stocklake pipeline as worth attention. Sourced from sector screening, news analysis, sentiment signals, and social/community monitoring. Signals expire daily; this always reflects the pipeline's current view.
Pipeline dependency. Signals are refreshed by scheduled AI jobs. If the pipeline hasn't run recently, results may be sparse. Check age_hours on each signal to assess freshness.
Parameters
| Name | Type | Default | Description |
| direction | string | — | LONG · SHORT · BOTH — filter by trade direction. Omit for all. |
| min_conviction | integer | 7 | Minimum conviction score (0–10). Higher = pipeline more confident in the signal. |
| min_flag_score | integer | 8 | Minimum flag score (0–10). 8+ = notable, 9+ = high conviction. Lowering to 7 returns more signals. |
| source | string | — | Filter by signal source: news · screener · sentiment · social |
| limit | integer | 25 | Max signals to return (max 25). Results sorted by timestamp (newest first). Each returned signal counts as one call toward your daily limit. |
Response fields
| Field | Type | Description |
| count | integer | Number of signals returned |
| filters | object | Echo of applied filters |
| signals[].symbol | string | Ticker |
| signals[].direction | string | LONG · SHORT · BOTH |
| signals[].conviction | integer | Pipeline conviction 0–10 |
| signals[].confidence | integer | AI confidence 0–10 |
| signals[].flag_score | integer | Signal notability 0–10 (8+ = worth attention) |
| signals[].source | string | Primary pipeline source that flagged this stock |
| signals[].sources | array | All sources that contributed (when merged across sources) |
| signals[].rationale | string | AI rationale — why the pipeline flagged this stock |
| signals[].expires | string | Date after which this signal is considered stale (YYYY-MM-DD) |
| signals[].flagged_at | string | ISO 8601 UTC timestamp when this signal was last flagged by the pipeline |
Example
{
"count": 3,
"filters": { "min_conviction": 7, "min_flag_score": 9, "direction": null },
"signals": [
{
"symbol": "MGM", "direction": "BOTH",
"conviction": 9, "confidence": 7, "flag_score": 10,
"source": "news", "sources": ["news"],
"rationale": "flag=10/10 | bullish | impact=95/100 | MGM Resorts acquisition by Apollo rumored at 25% premium",
"expires": "2026-06-06", "age_hours": 3.2
},
{
"symbol": "CMA", "direction": "BOTH",
"conviction": 8, "confidence": 6, "flag_score": 9,
"source": "news", "sources": ["news"],
"rationale": "flag=9/10 | mixed | impact=85/100 | Comerica net interest income guidance raised on rate optimism",
"expires": "2026-06-06", "age_hours": 4.1
}
]
}
get_insider_activity pro AI
AI-synthesized insider + institutional sentiment for a stock. Combines SEC Form 4 insider transactions with Nasdaq institutional holder data, nightly enrichment.
Parameters
| Parameter | Type | Required | Default | Description |
| symbol | string | ✓ | — | Ticker symbol (e.g. AAPL, TSLA) |
Response fields
| Field | Type | Description |
| symbol | string | Ticker |
| signal | string | Combined sentiment: STRONG_BULLISH, BULLISH, NEUTRAL, BEARISH, STRONG_BEARISH |
| flag_score | int | Notability 0–10. 8+ = trader alert |
| confidence | int | AI confidence 1–10 |
| insider_signal | string | Insider-only signal: BULLISH, BEARISH, NEUTRAL, NONE |
| inst_signal | string | Institutional-only signal: BULLISH, BEARISH, NEUTRAL, NONE |
| summary | string | Human-readable 2–4 sentence summary with specific names, amounts, and direction |
| insider_buys | int | Number of insider buy transactions (pre-filtered) |
| insider_sells | int | Number of insider sell transactions (pre-filtered) |
| inst_ownership | number | null | Institutional ownership percentage as a float (e.g. 74.55) |
| total_holders | int | null | Total institutional holders |
| updated_at | string | ISO 8601 UTC timestamp when data was last refreshed |
| updated_at | string | ISO 8601 UTC timestamp of last sentiment refresh (nightly pipeline) |
Example response
{
"symbol": "BG",
"signal": "BULLISH",
"flag_score": 6,
"confidence": 7,
"insider_signal": "BEARISH",
"inst_signal": "BULLISH",
"summary": "COO Garros Julio sold $337K — lone bearish insider signal. Institutions strongly bullish: 377 holders increased (+28.6M sh) vs 283 decreased. 128 new holders added 20.9M sh.",
"insider_buys": 0,
"insider_sells": 1,
"inst_ownership": 99.81,
"total_holders": 758,
"updated_at": "2026-05-11T22:16:29.930700+00:00"
}
Example — CRM (STRONG_BULLISH, high insider buying)
{
"symbol": "CRM",
"signal": "STRONG_BULLISH",
"flag_score": 9,
"confidence": 8,
"insider_signal": "BULLISH",
"inst_signal": "BULLISH",
"summary": "CEO Benioff bought $12.4M worth of shares — largest insider buy in 3 years. Three additional C-suite insiders added $4.2M combined. Institutions increased holdings by 3.2% this quarter with 42 new holders opening positions. Strong alignment between insider and institutional conviction.",
"insider_buys": 4,
"insider_sells": 0,
"inst_ownership": 82.15,
"total_holders": 2410,
"updated_at": "2026-05-28T06:15:00+00:00"
}
get_news_feed pro AI
Market-wide AI-flagged news briefing — top articles across all tracked stocks ranked by signal strength. Unlike get_stock_news (per-symbol), this scans the entire universe and surfaces the most notable news regardless of ticker. No URLs or source domains exposed.
Parameters
| Name | Type | Default | Description |
| min_flag_score | integer | 8 | Minimum AI flag score (5–10). 8 = notable · 9 = high-impact · 10 = exceptional |
| days | integer | 3 | Look-back window in days (max 10) |
| limit | integer | 10 | Max articles returned (max 25) |
Example
{
"count": 10, "days": 3, "min_flag_score": 8,
"articles": [
{ "symbol": "NVDA", "title": "Nvidia unveils GB300 chip, accelerating AI data center roadmap",
"published_at": "2026-06-04T14:30:00+00:00",
"ai_sentiment": "positive", "ai_flag_score": 9,
"ai_summary": "New GB300 architecture delivers 2× throughput over H100. Roadmap acceleration strengthens moat vs AMD...",
"ai_confidence": 8.8 }
]
}
get_market_assessment pro AI
Combined macro regime + market outlook in a single call. Produced every ~4 hours by the market intelligence pipeline. Returns two complementary perspectives:
- Regime (
regime_* fields) — answers "how much equity risk to take" → use for position sizing and asset allocation
- Outlook (
outlook_* fields) — answers "which direction and sectors to trade" → use for sector preference and directional bias
Note: market_context is a point-in-time snapshot from when the AI ran — not live. Use get_market_pulse for live prices.
Parameters
| Name | Type | Default | Description |
| history_count | integer | 0 | Include last N prior assessments for each perspective (0–3). Returns regime_history[] and outlook_history[]. |
Response — Regime fields
| Field | Type | Description |
| regime | string | RISK_OFF / CAUTIOUS / NEUTRAL / AGGRESSIVE |
| regime_bias | string | LONG_ONLY / SHORT_ONLY / BOTH |
| regime_confidence | number | 1–10. Clarity of the regime call. |
| regime_rationale | string | Core thesis in plain language |
| key_risks | string[] | 2–3 tail risks that could invalidate the call |
| watch_for | string[] | Triggers that would cause a regime change |
| vix_at_assessment | number | VIX level when assessment was made |
| regime_updated_at | string | ISO 8601 UTC timestamp of last assessment |
| indicators.macro_data | object | FRED macro data: yield_spread_10y2y, fed_funds_rate, cpi_index (BLS index level ~332, not YoY %), unemployment, breakeven_10y, usd_index, m2 — each with value, date, delta_3m |
| indicators.volatility_term_structure | object | VIX / VIX3M / VIX6M last 5 closes + contango/backwardation signal |
| indicators.market_sentiment | object | Fear & Greed value (0–100) and label |
| market_context | object | Point-in-time snapshot: price/RSI/SMA200/perf for SPY, QQQ, IWM, TLT, GLD, VIX, TNX, HYG, sector ETFs. Recorded when AI ran — not live. |
Response — Outlook fields
| Field | Type | Description |
| outlook | string | BULLISH / NEUTRAL / BEARISH |
| outlook_conviction | number | 1–10. Strength of the directional call. |
| equity_view | string | Plain language directional narrative |
| preferred_sectors | string[] | Sectors to overweight |
| avoided_sectors | string[] | Sectors to underweight |
| catalyst | string | Primary catalyst driving the outlook |
| outlook_key_risk | string | Key risk to the outlook thesis |
| outlook_rationale | string | Detailed reasoning |
| outlook_updated_at | string | ISO 8601 UTC timestamp of last assessment |
| regime_history[] | object[] | Prior regime states (when history_count > 0): regime, bias, confidence, vix_at_assessment, at |
| outlook_history[] | object[] | Prior outlook states (when history_count > 0): outlook, conviction, at |
Example (condensed)
{
"regime": "CAUTIOUS", "regime_bias": "BOTH", "regime_confidence": 6,
"regime_rationale": "Equity uptrend intact. HYG diverging — credit not confirming SPY highs.",
"key_risks": ["HYG breaking below $79.50", "VIX closing above 20"],
"watch_for": ["HYG reclaiming $80.50 → upgrade to NEUTRAL"],
"vix_at_assessment": 16.94, "regime_updated_at": "2026-05-06T09:14:56+00:00",
"indicators": {
"macro_data": { "yield_spread_10y2y": { "value": 0.21, "delta_3m": 0.15 } },
"market_sentiment": { "value": 54.0, "description": "Neutral" }
},
"market_context": { /* NOT live — snapshot from regime_updated_at */
"spy": { "price": 574.12, "rsi": 70.3, "above_200sma": true }
},
"outlook": "BULLISH", "outlook_conviction": 7,
"equity_view": "Momentum intact. Tech leading. Small-caps lagging but not breaking down.",
"preferred_sectors": ["Technology", "Industrials"],
"avoided_sectors": ["Utilities", "Real Estate"],
"catalyst": "AI spending cycle intact. Macro resilience.",
"outlook_updated_at": "2026-05-06T09:14:56+00:00"
}
get_sector_intelligence pro AI
AI-assessed sector intelligence with signals (LEADING/STRONG/NEUTRAL/WEAK/LAGGING), drivers, alerts, and computed statistics. Pass a sector for deep single-sector analysis, or omit for all 11 sectors at once — the all-sectors call doubles as the rotation view (sort_by_strength + history_count). Refreshed every ~4 hours by the market intelligence pipeline.
Parameters
| Parameter | Type | Required | Default | Description |
| sector | string | — | None | Sector name (e.g. Technology, Healthcare). Omit to list all sectors. |
| sort_by_strength | boolean | — | false | All-sectors call only: sort LEADING→LAGGING instead of alphabetical — for finding leading vs lagging sectors |
| history_count | integer | — | 0 | All-sectors call only: include last N prior signal states per sector (0–3) |
Response fields
| Field | Type | Description |
| sector | string | Sector name |
| signal | string | LEADING / STRONG / NEUTRAL / WEAK / LAGGING |
| cycle_stage | string | Sector cycle phase (e.g. MARKUP, MARKDOWN, ACCUMULATION, DISTRIBUTION) |
| rotation_signal | string | Money-flow read (e.g. ACCUMULATE, DISTRIBUTE, HOLD) |
| confidence | number | AI confidence 1–10 |
| drivers | string | AI narrative of sector drivers |
| alert | string | Notable condition if applicable (breadth divergence, extreme RSI, etc.) |
| stats.avg_rsi | number | Sector-average RSI |
| stats.sma200_breadth_pct | number | % of stocks above their 200-day MA |
| stats.oversold_pct / overbought_pct | number | RSI distribution extremes |
| stats.avg_perf_1w_pct / avg_perf_1m_pct | number | Average sector performance 1W / 1M |
| updated_at | string | ISO 8601 when the assessment was made |
| history[] | array | Present when history_count > 0 (all-sectors call) — prior {signal, confidence, at} |
| sectors[] / count | array / integer | Present when sector param is omitted — all sectors assessed |
Example — single sector
{
"sector": "Technology", "signal": "STRONG", "confidence": 7,
"drivers": "AI capex cycle, earnings momentum. Mega-caps leading with broad participation.",
"alert": "19.5% overbought, breadth only 53% — narrow leadership suggests froth in pockets",
"stats": { "avg_rsi": 56.5, "sma200_breadth_pct": 53.1,
"oversold_pct": 4.1, "overbought_pct": 19.5,
"avg_perf_1w_pct": 1.1, "avg_perf_1m_pct": 11.0 },
"updated_at": "2026-05-12T10:19:48+00:00"
}
Example — all sectors, sort_by_strength=true (rotation view)
{
"count": 11,
"sectors": [
{ "sector": "Technology", "signal": "STRONG", "confidence": 7,
"stats": { "avg_rsi": 56.5, "sma200_breadth_pct": 53.1, "avg_perf_1w_pct": 1.1 },
"alert": "19.5% overbought — narrow leadership",
"updated_at": "2026-05-12T10:19:48+00:00" },
{ "sector": "Energy", "signal": "WEAK", "confidence": 6,
"stats": { "avg_rsi": 42.3, "sma200_breadth_pct": 35.8, "avg_perf_1w_pct": -2.1 }, "alert": null,
"updated_at": "2026-05-12T10:19:48+00:00" }
]
}
get_earnings_intelligence pro AI
Upcoming earnings with AI context per stock — combines the earnings calendar with AI pipeline data to surface which events are worth monitoring. Sorted by earnings date ascending (soonest first).
Parameters
| Name | Type | Default | Description |
| days_ahead | integer | 14 | Look-ahead window in days (max 30) |
| sector | string | — | Filter to one sector (optional) |
| min_flag_score | integer | — | Only return stocks with AI flag score ≥ this value (optional). Applied before limit truncates the result. |
| limit | integer | 25 | Max results to return (max 25). Each returned stock counts as one call toward your daily limit. |
Response fields (per result)
| Field | Type | Description |
| symbol, name, sector | string | Stock identity |
| earnings_date | string | ISO UTC timestamp of expected earnings release |
| is_estimate | boolean | Whether the date is estimated |
| price, rsi, market_cap | number | Current technicals |
| eps_trailing, eps_forward | number | Earnings expectations context |
| ai_verdict | string | bullish / neutral / bearish (from nightly AI pipeline) |
| ai_flag_score | number | 0–10. 8+ = notable going into earnings |
| ai_confidence | number | 0–10. AI confidence in the verdict |
| ai_risks | string[] | Top 2 AI-identified risk factors |
| analyst_rating, analyst_target | string / number | Wall Street consensus |
Example
{
"count": 22, "days_ahead": 14,
"results": [
{ "symbol": "ORCL", "name": "Oracle Corporation", "sector": "Technology",
"earnings_date": "2026-06-10T20:00:00+00:00", "is_estimate": false,
"price": 192.40, "rsi": 68.9, "eps_forward": 7.20,
"ai_verdict": "bullish", "ai_flag_score": 9, "ai_confidence": 8,
"ai_risks": ["Elevated valuation at 28x forward earnings", "Cloud margin pressure from AI infra spend"],
"analyst_rating": "buy", "analyst_target": 210.0 }
]
}
get_watchlist pro AI
The caller's Stocklake watchlist — the symbols starred on the web dashboard at /dashboard — enriched with live price, technicals, and AI verdict. No parameters; resolves your account automatically from your API key or OAuth session.
Parameters
None.
Response fields
| Field | Type | Description |
| count | integer | Number of symbols on the watchlist |
| items[].symbol, name, sector | string | Stock identity |
| items[].price, change_pct, rsi | number | Live snapshot |
| items[].atr_pct | number | Average True Range as % of price (volatility). Omitted if the underlying indicator reading is missing or corrupted. |
| items[].ai_verdict | string | bullish / neutral / bearish (from nightly AI pipeline) |
| items[].ai_flag_score | number | 0–10 urgency score |
| items[].added_at | string | ISO UTC timestamp — when the symbol was starred |
| items[].price_at_add | number | Price at the moment it was starred, for a "since added" delta |
Read-only — starring/unstarring a symbol is web-only for now (no add_to_watchlist/remove_from_watchlist tool yet). Returns count: 0, items: [] if nothing is starred.
Example
{
"count": 2,
"items": [
{ "symbol": "AAPL", "name": "Apple Inc.", "sector": "Technology",
"price": 231.02, "change_pct": 1.14, "rsi": 58.3, "atr_pct": 2.41,
"ai_verdict": "bullish", "ai_flag_score": 6,
"added_at": "2026-07-20T09:14:02+00:00", "price_at_add": 224.87 }
]
}