{"serverInfo":{"name":"wealthnow","title":"Wealthnow","version":"2.137"},"authentication":{"required":true,"schemes":["oauth2","apiKey"]},"tools":[{"name":"account_status","description":"Your Wealthnow plan, credits remaining, customer id, and entitlements. Requires Authorization: Bearer (Claude OAuth) or X-API-Key. Does not debit credits.","inputSchema":{"type":"object","properties":{}},"title":"Account Status","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Account Status"}},{"name":"quote_and_fundamentals","description":"Live price snapshot for one ticker: latest price plus basic trading stats. Call it when the user asks 'where is X trading right now?' or needs a current quote before any single-name analysis. Heavy endpoint — fetch one ticker per call.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Ticker Snapshot","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Ticker Snapshot"}},{"name":"insider_clusters","description":"Clusters of insider buying across companies: names where multiple distinct insiders bought around the same time. Call it when the user asks 'where are insiders buying?' or wants market-wide insider conviction rather than one company's filings.","inputSchema":{"type":"object","properties":{}},"title":"Insider Clusters","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Insider Clusters"}},{"name":"crypto_universe","description":"The FULL liquid crypto universe FIRM prices (~419 pairs in one vendor call), ranked by 24h dollar volume. Stables out. Default floor $1M 24h. The cap IS that floor — this does NOT silently return top-50 or Alpaca's 36 USD pairs. The ranked sitting sleeve is GET /api/crypto/sitting; this endpoint is the full liquid book, not a broker-listed toy set. Optional limit/offset paginate the same book (has_more / next_offset); they do not hide names. Honest counts: priced, excluded_stable, below_floor, returned. Overnight (GET /api/crypto/overnight) is a mover SLICE of this book, not a replacement. LIQUIDITY ranking, NOT conviction — expanding coverage is not a signal. FIRM has no validated crypto edge. Auth: X-API-Key.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":1000},"offset":{"type":"integer","default":0,"minimum":0},"min_dollar_volume":{"type":"number","default":1000000.0},"asset_class":{"type":"string","enum":["crypto"],"default":"crypto"}}},"title":"Full Liquid Crypto Universe","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Full Liquid Crypto Universe"}},{"name":"crypto_quote","description":"Live crypto quote from the market-data feed (real-time entitlement, 439 pairs): last-trade price, 24h change/volume (UTC-day basis), day + prev-day OHLC, optional last-7 daily bars, honest as_of. PRIMARY tool for 'what is BTC at?' — accepts BTC/BTCUSD/X:BTCUSD plus a vs currency (e.g. EUR); unknown symbols return a structured 404.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"vs":{"type":"string","default":"USD"},"series":{"type":"boolean","default":true}},"required":["ticker"]},"title":"Crypto Quote","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Quote"}},{"name":"macro_dashboard","description":"One-call macro dashboard: VIX, DXY, treasury spreads, fear-greed, and the current regime read. Call it FIRST for any 'how is the overall market / macro backdrop?' question, or to frame a single-name view against market conditions.","inputSchema":{"type":"object","properties":{}},"title":"Macro Dashboard","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Macro Dashboard"}},{"name":"market_regime","description":"Current market regime label plus the model's regime probabilities. Call it when the user asks 'what regime are we in?' or before positioning advice that depends on the prevailing regime; use regime_forecast for the forward view and regime_history for the past.","inputSchema":{"type":"object","properties":{}},"title":"Regime Probabilities","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Regime Probabilities"}},{"name":"prediction_intervals","description":"Conformal prediction intervals for one ticker's forecast: a calibrated lower/upper band at the requested miscoverage alpha (default 0.1 = 90% interval). Call it when the user asks 'how confident is the model?' or wants an uncertainty range around a prediction rather than just a point estimate.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"alpha":{"type":"number","default":0.1,"minimum":0.01,"maximum":0.5}},"required":["ticker"]},"title":"Prediction Intervals","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Prediction Intervals"}},{"name":"model_drift","description":"Feature and prediction drift over a rolling window (default 30 days). Call it when the user asks whether the models are still well calibrated, why predictions look off, or whether model inputs have shifted recently.","inputSchema":{"type":"object","properties":{"window_days":{"type":"integer","default":30,"minimum":1,"maximum":365}}},"title":"Model Drift","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Model Drift"}},{"name":"feature_importance","description":"Top-N feature importances for the prediction models (default top 50, optionally filtered to one model). Call it when the user asks 'what is the model actually looking at?' or which inputs are driving current predictions.","inputSchema":{"type":"object","properties":{"top_n":{"type":"integer","default":50,"minimum":1,"maximum":500},"model":{"type":"string"}}},"title":"Feature Importance","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Feature Importance"}},{"name":"factor_decay","description":"IC/IR half-life per factor — how fast each factor's predictive power decays. Call it when the user asks which signals are going stale, how long a factor's edge lasts, or before weighting factors in a strategy.","inputSchema":{"type":"object","properties":{}},"title":"Factor Decay","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Factor Decay"}},{"name":"regime_forecast","description":"Forecast regime probabilities N days ahead (default 21-day horizon). Call it when the user asks 'is the regime about to change?' or wants the forward market-state outlook rather than today's label — use market_regime for the current read.","inputSchema":{"type":"object","properties":{"horizon_days":{"type":"integer","default":21,"minimum":1,"maximum":252}}},"title":"Regime Forecast","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Regime Forecast"}},{"name":"regime_history","description":"Historical regime labels over the last N days (default 180). Call it when the user asks how long the current regime has lasted, when the last regime shift happened, or wants past behavior broken out by regime.","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":180,"minimum":1,"maximum":3650}}},"title":"Regime History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Regime History"}},{"name":"signal_correlation","description":"Correlation matrix across the voter signals feeding the ensemble. Call it when the user asks whether the model's signals are independent or redundant — high pairwise correlation means the vote count overstates conviction.","inputSchema":{"type":"object","properties":{}},"title":"Signal Correlation","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Signal Correlation"}},{"name":"short_interest","description":"Short interest for one ticker: shares short, days-to-cover (DTC), and fails-to-deliver (FTD). Call it FIRST for any 'is X heavily shorted / squeeze candidate?' question or before evaluating short-side risk in a position.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Short Interest (v2)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Short Interest (v2)"}},{"name":"research_datasets","description":"Discover the 39 licensed research datasets servable via the research-dataset reader — equity prices (daily/monthly/delistings/distributions/mutual funds), fundamentals (annual/quarterly/segments/customers/supply-chain), analyst estimates (summary/detail/guidance/price-targets/actuals/recs), implied volatility, securities-finance (full-history CDS + short interest), transcripts/ratings/key-developments, board relationships, forensic-audit filings, syndicated loans, ESG ratings, crowd estimates, TRACE bond trades and Fama-French factors. Call FIRST when unsure of a slug; not_ingested lists any slug awaiting a table (currently empty).","inputSchema":{"type":"object","properties":{}},"title":"Research Datasets","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Research Datasets"}},{"name":"research_read","description":"Read any licensed research dataset by slug (discover via research_datasets). ?ticker= pushes an exact server-side filter down the dataset's own symbol column when it has one; datasets keyed by an internal security id instead state explicitly that ticker was ignored. The `implied_vol_by_ticker` slug REQUIRES ?ticker= and resolves the symbol to that id automatically before pushdown. The `cds_composites` slug serves the FULL 2005–2025 spread history. Unfiltered reads are capped at 5000 rows.","inputSchema":{"type":"object","properties":{"dataset":{"type":"string","description":"Path parameter 'dataset' (required)."},"ticker":{"type":"string"},"limit":{"type":"integer","default":1000,"minimum":1,"maximum":50000}},"required":["dataset"]},"title":"Research Dataset Read","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Research Dataset Read"}},{"name":"trade_setups","description":"Top trade setups from the decision engine with **defensive-alternates baked in**. When the screen is one-sided (>=70% same direction across 3+ picks), the response carries `universe_skew` = 'bearish' | 'bullish' | 'mixed' AND a `regime_warranted_alternative` block containing the editorial fallback basket (defensive | cash_heavy | value_tilt | momentum). Each alternative carries strategy label, curated candidates with thesis per name, and a one-sentence rationale. Brain consumes the alternative when the primary picks don't fit the user's risk frame — e.g. all-bearish screen on a long-bias capital-allocation query surfaces the `defensive` basket so the model never has to refuse or invent. Schema is ADDITIVE — primary `setups` array unchanged from v2.41.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":25,"minimum":1,"maximum":500},"min_conviction":{"type":"number","default":0.0,"minimum":0.0,"maximum":1.0}}},"title":"Trade Screens","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Trade Screens"}},{"name":"universe_scan","description":"Latest universe-scanner output: the most recent scan results across the tradable universe, up to `limit` names (default 100). Call this when the user asks what the scanner is flagging right now or wants a market-wide sweep before drilling into single tickers.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":100,"minimum":1,"maximum":5000}}},"title":"Universe Scan","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Universe Scan"}},{"name":"ultimate_decision","description":"Ultimate-engine aggregate decision for one ticker — the top-level verdict aggregated across the engine stack. PRIMARY tool for 'so what's the final call on <ticker>?' — call it when the user wants one consolidated decision rather than raw component signals.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"}}},"title":"Final Verdict","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Final Verdict"}},{"name":"twap_plan","description":"Even-slice arithmetic scenario for a requested quantity and duration. Preserves whole shares and the full time window. No liquidity, market-calendar, execution-cost, or fill guarantee.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"qty":{"type":"integer","default":100,"minimum":1,"maximum":10000000},"minutes":{"type":"integer","default":60,"minimum":1,"maximum":390}},"required":["ticker"]},"title":"TWAP Execution","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"TWAP Execution"}},{"name":"vwap_plan","description":"Historical volume-weighted quantity scenario for one ticker and a completed XNYS session. Uses every observed minute of that session; missing or conflicting evidence returns unavailable. Defaults to the last completed session. Not a forecast, cost estimate, or executable order.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"qty":{"type":"integer","default":100,"minimum":1,"maximum":10000000},"reference_date":{"type":"string"},"minutes_per_slice":{"type":"integer","default":30,"minimum":1,"maximum":60}},"required":["ticker"]},"title":"VWAP Execution","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"VWAP Execution"}},{"name":"signals_fusion","description":"Latest fused signals across all voters — the combined signal after voter aggregation, up to `limit` names (default 100). Call this when the user asks what the system's current signals are overall; use signals_mtf for one ticker's timeframe alignment.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":100,"minimum":1,"maximum":5000}}},"title":"Combined Signals","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Combined Signals"}},{"name":"signals_cross_asset","description":"Cross-asset regime signals — the regime read taken across asset classes rather than from single tickers. Call this when the user asks about the broader market regime or wants cross-asset confirmation of a single-asset view.","inputSchema":{"type":"object","properties":{}},"title":"Cross-Asset Signals","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Cross-Asset Signals"}},{"name":"prediction_accuracy","description":"Realised-vs-predicted accuracy over a rolling window (window_days, default 90) — how well predictions matched what actually happened. Call this when the user asks how accurate the system has been or wants a track record before trusting a new call; use prediction_tracker for individual predictions.","inputSchema":{"type":"object","properties":{"window_days":{"type":"integer","default":90,"minimum":1,"maximum":3650}}},"title":"Prediction Accuracy","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Prediction Accuracy"}},{"name":"prediction_tracker","description":"Recent predictions with their resolution state, up to `limit` entries (default 200) — each call and whether it has resolved yet and how. Call this when the user asks what the system has predicted lately or how specific calls turned out; use prediction_accuracy for the aggregate hit-rate.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":200,"minimum":1,"maximum":5000}}},"title":"Prediction Tracking","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Prediction Tracking"}},{"name":"news_aggregated","description":"MARKET-WIDE feed — not per-ticker (that is news_summary). Aggregated cross-source news stream over the last N hours (default 24) for broad market-news sweeps and cross-source coverage checks.","inputSchema":{"type":"object","properties":{"hours":{"type":"integer","default":24,"minimum":1,"maximum":168},"limit":{"type":"integer","default":100,"minimum":1,"maximum":1000}}},"title":"News Digest","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"News Digest"}},{"name":"news_events","description":"Detected market-moving events across the market over a lookback window (hours param, default 24). Call this when the user asks 'did anything big happen today?' or wants a scan of recent catalysts market-wide; use news_latest for headlines on one ticker.","inputSchema":{"type":"object","properties":{"hours":{"type":"integer","default":24,"minimum":1,"maximum":168}}},"title":"News Events","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"News Events"}},{"name":"index_hedge_proposals","description":"Index hedge proposals (SPY/QQQ/IWM) computed from live dealer positioning — protective puts when dealers are short gamma and IV rank is cheap, collars when the 25-delta risk reversal shows calls rich, plus IV term-structure context","inputSchema":{"type":"object","properties":{}},"title":"Hedge Analysis","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Hedge Analysis"}},{"name":"kelly_uncertainty","description":"Uncertainty-discounted Kelly fraction for one ticker — the bet size after haircutting full Kelly for estimation error. Call this when the user asks 'how much should I bet on X?' or to know how large a position the evidence actually supports before sizing a trade.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Position Sizing","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Position Sizing"}},{"name":"market_events_catchup","description":"Finite catch-up page for retained market events after a Redis stream id; use after reconnect and preserve each event's source freshness fields.","inputSchema":{"type":"object","properties":{"since":{"type":"string"},"symbols":{"type":"string"},"limit":{"type":"integer"}}},"title":"Market Events Catch-Up","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Market Events Catch-Up"}},{"name":"stream_realtime_guide","description":"Agent protocol for real-time queries: which SSE feed maps to which intent (live price, signals, decisions, news, alerts), payload shapes, when to prefer SSE over REST, and fallback rules when flags are off","inputSchema":{"type":"object","properties":{}},"title":"Stream Realtime Guide","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Stream Realtime Guide"}},{"name":"news_latest","description":"DRILL-DOWN ONLY — never a first-round call and never alongside news_summary (it already includes recent stories). Raw newswire headlines for one ticker over a lookback window (minutes param, default 60; 60s TTL) for when the summary's stories are insufficient or you need a tighter time window.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"minutes":{"type":"integer","default":60,"minimum":5,"maximum":1440}}},"title":"Latest News","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Latest News"}},{"name":"news_by_topic","description":"Topic-filtered headlines (earnings, analysts, dividend, mergers, acquisition, ipo, fda, guidance, stock_buyback, insider, lawsuit, esg, crypto, and more), optionally per ticker, over a date_range (default last7days, 50 items). Call it when the user asks about a specific event type — 'any FDA news?', 'recent M&A headlines'.","inputSchema":{"type":"object","properties":{"topic":{"type":"string"},"ticker":{"type":"string"},"items":{"type":"integer","default":50,"minimum":1,"maximum":50},"date_range":{"type":"string","default":"last7days"}},"required":["topic"]},"title":"News by Topic","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"News by Topic"}},{"name":"news_sentiment_stats","description":"Daily news-sentiment rollup for one ticker: a -1.5 to +1.5 score per day with article counts, over a date_range (default last30days). Call it when the user asks how sentiment on X is trending or whether coverage has turned negative; use news_latest for the actual headlines.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"date_range":{"type":"string","default":"last30days"}},"required":["ticker"]},"title":"Sentiment Stats","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Sentiment Stats"}},{"name":"news_market_sentiment","description":"Overall market-wide news-sentiment rollup over a date_range (default last7days). Call this when the user asks how the market 'feels' right now or whether the news backdrop is bullish or bearish — before drilling into single tickers.","inputSchema":{"type":"object","properties":{"date_range":{"type":"string","default":"last7days"}}},"title":"Overall Market Sentiment","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Overall Market Sentiment"}},{"name":"news_trending","description":"DRILL-DOWN ONLY — never alongside news_summary (it already includes trending status). The newswire's noise-filtered top stories for a ticker, for when you specifically need the trending ranking on its own.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"}}},"title":"Trending News","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Trending News"}},{"name":"news_top_mentions","description":"Most-mentioned tickers in the news over a window (default today), optionally filtered by sector — a market-attention proxy. Call this when the user asks which stocks are getting the most buzz or where the crowd's focus is today.","inputSchema":{"type":"object","properties":{"date_range":{"type":"string","default":"today"},"sector":{"type":"string"}}},"title":"Trending Tickers","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Trending Tickers"}},{"name":"news_sundown","description":"Curated end-of-day 'sundown' digest — a market-close recap of the day's news from the newswire, over an optional date_range. Call this when the user asks 'what happened in the market today' or wants a daily wrap-up.","inputSchema":{"type":"object","properties":{"date_range":{"type":"string"}}},"title":"Evening Digest","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Evening Digest"}},{"name":"news_curated_events","description":"Structured market events — earnings, M&A, FDA decisions, guidance changes, price-target moves — filterable by ticker, event_type, and date_range (default today). Call this when the user asks 'what events happened' or 'any catalysts for X' instead of scanning raw headlines.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"event_type":{"type":"string"},"date_range":{"type":"string","default":"today"},"items":{"type":"integer","default":50,"minimum":1,"maximum":50}}},"title":"Curated News Events","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Curated News Events"}},{"name":"news_ticker_news","description":"FILTERED-SEARCH ONLY — reach for this when the user specifies filters (topic, sector, source, sentiment, date_range, article/video, free-text search) or multi-ticker search. Never for plain 'what's the news on X?' (that is news_summary). Full newswire filter spec; sortby rank or oldestfirst.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"items":{"type":"integer","default":50,"minimum":1,"maximum":50},"page":{"type":"integer","default":1,"minimum":1,"maximum":50},"date_range":{"type":"string"},"sector":{"type":"string"},"topic":{"type":"string"},"topic_or":{"type":"string"},"topic_exclude":{"type":"string"},"source":{"type":"string"},"source_exclude":{"type":"string"},"news_type":{"type":"string","enum":["article","video"]},"sentiment":{"type":"string","enum":["positive","negative","neutral"]},"sortby":{"type":"string","enum":["rank","oldestfirst"]},"days":{"type":"integer","minimum":1,"maximum":30},"search":{"type":"string"},"search_or":{"type":"string"},"fallback":{"type":"boolean","default":false}},"required":["tickers"]},"title":"Ticker News","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Ticker News"}},{"name":"news_ticker_only","description":"News stories tagged with ONLY this one ticker — the strictest filter, excluding articles that co-tag competitors or peers. Call this when the user wants pure company-specific coverage without sector noise; use ticker_news for broader filtered search.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"items":{"type":"integer","default":50,"minimum":1,"maximum":50},"page":{"type":"integer","default":1,"minimum":1,"maximum":50}},"required":["ticker"]},"title":"Ticker-Only News","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Ticker-Only News"}},{"name":"news_multi_ticker","description":"News stories where ALL the listed tickers co-appear in the same article — a correlation feed. Call this when the user asks how two or more companies are linked in the news (deals, rivalries, shared catalysts); use ticker_news for per-ticker coverage.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"items":{"type":"integer","default":50,"minimum":1,"maximum":50},"page":{"type":"integer","default":1,"minimum":1,"maximum":50}},"required":["tickers"]},"title":"Multi-Ticker News","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Multi-Ticker News"}},{"name":"news_all_tickers_sentiment","description":"Sentiment leaderboard across the full tracked ticker universe over a date_range (default last7days), paginated. Call this when the user asks which stocks have the most positive or negative news sentiment right now — a screening pass before single-name digs.","inputSchema":{"type":"object","properties":{"date_range":{"type":"string","default":"last7days"},"page":{"type":"integer","default":1,"minimum":1,"maximum":20}}},"title":"Sentiment per Ticker","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Sentiment per Ticker"}},{"name":"news_alerts","description":"Headline-only alert stream — lighter and faster than full news items; category=general for market-wide or category=ticker with tickers for specific names. Call this when the user wants breaking headlines or the very latest on a name and speed matters more than article bodies.","inputSchema":{"type":"object","properties":{"category":{"type":"string","enum":["general","ticker"]},"tickers":{"type":"string"},"items":{"type":"integer","default":100,"minimum":1,"maximum":100},"page":{"type":"integer","default":1,"minimum":1,"maximum":50}}},"title":"News Alerts","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"News Alerts"}},{"name":"news_ratings","description":"Analyst rating actions — upgrades, downgrades, and initiations, filterable by tickers, rating_type, and date_range; history goes back to 2022-04-08. PRIMARY tool for 'any recent upgrades or downgrades on X?' and for gauging how sell-side conviction is shifting.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"rating_type":{"type":"string","enum":["upgrade","downgrade","initiation"]},"date_range":{"type":"string"},"items":{"type":"integer","default":50,"minimum":1,"maximum":50},"page":{"type":"integer","default":1,"minimum":1,"maximum":50}}},"title":"Analyst Ratings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Analyst Ratings"}},{"name":"news_event_by_id","description":"All news items belonging to one clustered event, looked up by eventid, paginated. Call this when you already have an eventid from another news result and the user wants the full article set behind that single catalyst or story cluster.","inputSchema":{"type":"object","properties":{"eventid":{"type":"string"},"items":{"type":"integer","default":50,"minimum":1,"maximum":50},"page":{"type":"integer","default":1,"minimum":1,"maximum":20}},"required":["eventid"]},"title":"News Event","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"News Event"}},{"name":"news_category","description":"Category-scoped news feed: section=general for market-wide or alltickers for company-tagged stories, filterable by topic, sector, industry, and source. Call this when the user wants themed or sector-level news rather than coverage of a specific ticker.","inputSchema":{"type":"object","properties":{"section":{"type":"string","enum":["general","alltickers"],"default":"general"},"topic":{"type":"string"},"sector":{"type":"string"},"industry":{"type":"string"},"source":{"type":"string"},"items":{"type":"integer","default":50,"minimum":1,"maximum":50},"page":{"type":"integer","default":1,"minimum":1,"maximum":50},"date_range":{"type":"string"}}},"title":"News Category","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"News Category"}},{"name":"news_summary","description":"One-shot news intelligence for a ticker: recent stories, sentiment stats, trending status, structured events, and analyst actions in a single parallel fetch (90s TTL). THE primary tool for 'what's the news on X?' — this ALONE answers most single-ticker news questions; do NOT stack other news tools in the same round unless it returns nothing useful.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"News Brief","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"News Brief"}},{"name":"fundamentals_income_statements","description":"SEC EDGAR income statements (P&L line-items, revenue through net income/EPS) for a ticker — quarterly, annual, or TTM (default quarterly, last 8 periods). Call this when the user asks about revenue or earnings trends and wants the actual reported statements.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"period":{"type":"string","enum":["annual","quarterly","ttm"],"default":"quarterly"},"limit":{"type":"integer","default":8,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Income Statement","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Income Statement"}},{"name":"fundamentals_balance_sheets","description":"SEC EDGAR balance sheets for a ticker — assets, liabilities, and equity line-items per period, quarterly or annual (default quarterly, last 8 periods). Call this when the user asks about cash on hand, debt load, or book value straight from reported filings.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"period":{"type":"string","enum":["annual","quarterly","ttm"],"default":"quarterly"},"limit":{"type":"integer","default":8,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Balance Sheet","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Balance Sheet"}},{"name":"fundamentals_cash_flow_statements","description":"SEC EDGAR cash-flow statements for a ticker — operating, investing, and financing flows per period, quarterly or annual (default quarterly, last 8 periods). Call this when the user asks about cash generation, capex, buybacks, or how earnings convert to actual cash.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"period":{"type":"string","enum":["annual","quarterly","ttm"],"default":"quarterly"},"limit":{"type":"integer","default":8,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Cash Flow","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Cash Flow"}},{"name":"fundamentals_all","description":"All three financial statements — income, balance sheet, and cash flow — for a ticker in one round-trip (default quarterly, last 4 periods). Call this when the user wants a full fundamental picture of a company instead of three separate statement calls.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"period":{"type":"string","enum":["annual","quarterly","ttm"],"default":"quarterly"},"limit":{"type":"integer","default":4,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"All Financial Statements","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"All Financial Statements"}},{"name":"fundamentals_metrics","description":"Derived financial-metric rows per period for a ticker — P/E, ROE, margins, FCF yield, debt ratios — quarterly, annual, or TTM (default quarterly, last 4 periods). Call this when the user asks about valuation or quality ratios and their trend without needing raw statement line-items.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"period":{"type":"string","enum":["annual","quarterly","ttm"],"default":"quarterly"},"limit":{"type":"integer","default":4,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Key Metrics (Full)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Key Metrics (Full)"}},{"name":"fundamentals_metrics_snapshot","description":"Latest financial-metrics snapshot for a ticker — a single TTM row of valuation and quality ratios. Call this for a quick 'what's the P/E, how profitable is X right now?' check; use fundamentals_metrics when the user needs the per-period history.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"}},"required":["ticker"]},"title":"Key Metrics (Snapshot)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Key Metrics (Snapshot)"}},{"name":"fundamentals_insider_trades","description":"Form-4 insider transactions for one ticker — officer and director buys and sells (default limit 50). Call this when the user asks whether insiders are buying or selling a stock, or wants insider-conviction evidence for a name.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["ticker"]},"title":"Insider Form-4 Filings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Insider Form-4 Filings"}},{"name":"fundamentals_institutional_ownership","description":"13F institutional holdings for one ticker, itemized by holding institution (default limit 50). Call this when the user asks which institutions or funds own a stock or how concentrated institutional ownership is.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["ticker"]},"title":"Institutional Ownership","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Institutional Ownership"}},{"name":"xbrl_concepts","description":"Directory of every as-reported XBRL concept (us-gaap/dei/ifrs-full) a company has filed — unit(s), observation count and period coverage — from the in-house SEC EDGAR companyfacts corpus. Call it FIRST to find the concept tag for /fundamentals/xbrl/{ticker}/{concept}. Point-in-time, no vendor restatement.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"search":{"type":"string"},"limit":{"type":"integer","default":400,"minimum":1,"maximum":2000}},"required":["ticker"]},"title":"SEC Company Facts","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"SEC Company Facts"}},{"name":"xbrl_concept_history","description":"One XBRL concept's as-reported history — period, value, fiscal year/period, SEC form, accession, filed date — from the in-house SEC EDGAR companyfacts corpus. Call it for exact as-filed fundamentals: as_of= for point-in-time (no restatement look-ahead), history=true for all restatements; find tags via /fundamentals/companyfacts.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"concept":{"type":"string","description":"Path parameter 'concept' (required)."},"taxonomy":{"type":"string"},"unit":{"type":"string"},"form":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"as_of":{"type":"string"},"history":{"type":"boolean","default":false},"limit":{"type":"integer","default":500,"minimum":1,"maximum":5000}},"required":["ticker","concept"]},"title":"XBRL Concept History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"XBRL Concept History"}},{"name":"tape_options_chain","description":"Full historical OPTIONS CHAIN for one underlying on one snapshot day from FIRM's own daily market-data capture — per contract: strike, expiry, dte, bid/ask/mid/last, day volume + VWAP, implied volatility, the full greeks (delta/gamma/theta/vega), open interest and underlying price, plus a chain summary (contract/expiration counts, put/call OI + volume ratios, front-month ATM IV). Use it to reconstruct the IV surface, greeks or OI distribution AS IT STOOD on a past day, find where OI/volume concentrated, or pull the near-the-money strikes around an event. Omit date for the latest captured day (reported as snapshot_day); filter by side, expiration/dte, min OI/volume or a moneyness band; sort by open interest or dollar notional. Capture begins 2026-05-10. For the raw options TRADE tape use tape_options; for live GEX/dealer flow use the options_flow tools.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"date":{"type":"string"},"contract_type":{"type":"string","enum":["call","put"]},"expiration":{"type":"string"},"min_dte":{"type":"integer","minimum":0,"maximum":3650},"max_dte":{"type":"integer","minimum":0,"maximum":3650},"min_open_interest":{"type":"number","minimum":0},"min_volume":{"type":"number","minimum":0},"moneyness":{"type":"number","minimum":0,"maximum":5.0},"sort":{"type":"string","enum":["open_interest","notional"],"default":"open_interest"},"limit":{"type":"integer","default":100,"minimum":1,"maximum":2000}},"required":["ticker"]},"title":"Options Chain History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Options Chain History"}},{"name":"intel_vol_surface","description":"standardized implied-vol SURFACE for a company, joined from a plain equity ticker (resolves the symbol to the surface's internal id via the link table). Returns the standardized surface grid: for each maturity (days = 30/60/91/182/365) and delta node, per call/put the interpolated implied volatility and its dispersion — the clean vol skew + term structure behind risk-reversals, butterflies and the ATM vol term structure. Use to read a name's vol smile or how implied vol changes across expiries. Omit date for the latest-available surface (lagged academic archive — currently the 2011 slice, 3,956 names); pass date=YYYY-MM-DD for a specific session and days= to pin one maturity. Standardized grid, NOT the raw chain — for live per-contract quotes use /intel/options_chain.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"date":{"type":"string"},"days":{"type":"number"},"limit":{"type":"integer","default":500,"minimum":1,"maximum":2000}},"required":["ticker"]},"title":"Vol Surface","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Vol Surface"}},{"name":"funds_mutual_fund_ownership","description":"Which mutual funds hold a stock — each fund's percent_tna, shares and market value, largest first, plus report_dt and n_funds, from the survivor-bias-free holdings archive (coverage 2002-2021; no date = latest lagged quarter-end). Call it for mutual-fund demand base or holder concentration; for 13F institutional holders use /intel/sec13f.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"date":{"type":"string"},"top":{"type":"integer","default":100,"minimum":1,"maximum":5000},"min_market_val":{"type":"number","minimum":0}},"required":["ticker"]},"title":"Mutual Fund Ownership","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Mutual Fund Ownership"}},{"name":"factor_predictors","description":"academic open-source predictor panel for one stock — a compact vector of 13 replicated accounting anomalies (Sloan accruals, Cooper-Gulen-Schill asset growth, Titman capital investment, Novy-Marx gross profitability, Fama-French operating profitability, cash-to-assets, leverage change, earnings consistency, revenue growth, positive-NI/positive-CFO flags, current ratio, net share issuance) at monthly grain. Call it for a ready-made feature vector when you don't need the full ~460-column factor panel. Returns the series newest-last, or with latest=true only the single most-recent row as a name->value map; with no start/end it serves the LATEST AVAILABLE rows (lagged quarterly archive) and reports the actual window. Ticker is resolved to its internal security key automatically (the table has no ticker column).","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"start":{"type":"string"},"end":{"type":"string"},"latest":{"type":"boolean","default":false},"limit":{"type":"integer","default":600,"minimum":1,"maximum":2000}},"required":["ticker"]},"title":"Factor Predictors","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Factor Predictors"}},{"name":"fundamentals_segments","description":"Business + geographic SEGMENT breakdown for one company — decomposes a fiscal period into reportable segments by line of business, geography, ASC-280 operating segment and US state, each with sales, revenue, operating income and SIC, grouped by segment type. Call it to see WHERE a company earns: revenue mix by region (e.g. Greater China share) or which line of business carries the margin. Internally keyed (the ticker is resolved via the point-in-time name master, most-recent row); the archive lags, so with no year/date it returns the LATEST available period and reports the datadate served. Values are in the reported currency, fundamentals's millions convention.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"year":{"type":"integer","minimum":1960,"maximum":2100},"date":{"type":"string"},"stype":{"type":"string"},"limit":{"type":"integer","default":200,"minimum":1,"maximum":2000}},"required":["ticker"]},"title":"Business Segments","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Business Segments"}},{"name":"fundamentals_earnings_press_releases","description":"Full text of a company's earnings press releases, including guidance language (default limit 8). Call this when the user asks what management said or guided in an earnings release, or wants exact announcement wording.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"limit":{"type":"integer","default":8,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Earnings Releases","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Earnings Releases"}},{"name":"fundamentals_sec_filings","description":"SEC filings list for a ticker — 10-K, 10-Q, 8-K, S-1 and more, with an optional form_type filter (default limit 20). Call this when the user asks what a company has filed or wants to locate a specific filing type.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"limit":{"type":"integer","default":20,"minimum":1,"maximum":200},"form_type":{"type":"string"}},"required":["ticker"]},"title":"SEC Filings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"SEC Filings"}},{"name":"fundamentals_company_facts","description":"Static company profile for one ticker — sector, industry, CIK, exchange, market cap and employee count. Call it to know what a company is and how big it is before deeper analysis. Not the XBRL corpus — that discovery lives at /fundamentals/companyfacts/{ticker}.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"}},"required":["ticker"]},"title":"Company Facts","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Company Facts"}},{"name":"fundamentals_prices","description":"Historical OHLCV bars for one ticker at second/minute/hour/day/week/month granularity (interval_multiplier for e.g. 5-minute bars; start_date/end_date window, default limit 1000). Call this when the user asks for price history, returns over a window, or intraday bars; for the latest quote use /fundamentals/price_snapshot. CRYPTO: pass asset_class=crypto for BTC/ETH/SOL/LTC/LINK etc. Several crypto symbols are ALSO US-listed equity tickers (BTC is a Grayscale trust at ~$29; LINK is Interlink Electronics), so a bare ticker returns the EQUITY. Never use an equity price for a crypto asset.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"asset_class":{"type":"string","enum":["equity","crypto"],"default":"equity"},"interval":{"type":"string","enum":["second","minute","hour","day","week","month"],"default":"day"},"interval_multiplier":{"type":"integer","default":1,"minimum":1,"maximum":60},"start_date":{"type":"string"},"end_date":{"type":"string"},"limit":{"type":"integer","default":1000,"minimum":1,"maximum":5000}},"required":["ticker"]},"title":"Price History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Price History"}},{"name":"fundamentals_price_snapshot","description":"Latest quote for one ticker — last trade plus the current daily bar. Call this when the user asks what the price is now or how the stock is moving today; for history use /fundamentals/prices. CRYPTO: pass asset_class=crypto for BTC/ETH/SOL/LTC/LINK etc. Several crypto symbols are ALSO US-listed equity tickers (BTC is a Grayscale trust at ~$29; LINK is Interlink Electronics), so a bare ticker returns the EQUITY. Never use an equity price for a crypto asset. Check is_stale before using the price.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"asset_class":{"type":"string","enum":["equity","crypto"],"default":"equity"}},"required":["ticker"]},"title":"Price Snapshot (Fundamentals)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Price Snapshot (Fundamentals)"}},{"name":"fundamentals_news","description":"Curated news articles for one ticker from the fundamentals market-data feed, with start_date/end_date filtering (default 50). Call it for ticker-scoped headlines while working inside fundamentals; it is distinct from the primary news surface — use the news tools for broad or breaking coverage.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":100},"start_date":{"type":"string"},"end_date":{"type":"string"}},"required":["ticker"]},"title":"Company News","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Company News"}},{"name":"fundamentals_full","description":"One-shot fundamentals bundle for a ticker — metrics snapshot, TTM income, latest balance sheet and cash-flow, company facts, recent insider trades and top institutional holders, fetched in parallel. PRIMARY tool for 'give me the full fundamental picture of X' — call it instead of assembling the pieces one by one.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Company Fundamentals (Full)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Company Fundamentals (Full)"}},{"name":"fundamentals_company_full","description":"One-call company snapshot — info + TTM + ratios + growth + MRQ balance (fundamentalsapi.com)","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Company Profile","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Company Profile"}},{"name":"fundamentals_growth","description":"Growth metrics — YoY, 3Y CAGR, 5Y CAGR and margin trends; accepts comma-separated tickers for one-call bulk comparison. Call this when the user asks how fast a company is growing, whether margins are trending up, or to compare growth across several names.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"limit":{"type":"integer","default":1,"minimum":1,"maximum":20}},"required":["tickers"]},"title":"Growth Trajectory","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Growth Trajectory"}},{"name":"fundamentals_dividends","description":"Dividend profile per ticker — DPS, payout ratio, consecutive-growth streak and 10Y history; accepts comma-separated tickers. Call this for any dividend-safety, income or 'how long has X raised its dividend' question.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"}},"required":["tickers"]},"title":"Dividends","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Dividends"}},{"name":"fundamentals_peers","description":"Same-industry comparables for a ticker, ranked by revenue, margins and ROE (default 10). Call this when the user asks who a company's competitors are or how it stacks up against peers — fetch it before any relative-valuation take.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":10,"minimum":1,"maximum":50}},"required":["ticker"]},"title":"Sector Peers","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Sector Peers"}},{"name":"fundamentals_search","description":"Fuzzy company lookup — resolves a free-text name or partial ticker to matching companies (default 10). Call it FIRST when the user names a company without a ticker, before firing any ticker-keyed fundamentals tool.","inputSchema":{"type":"object","properties":{"q":{"type":"string"},"limit":{"type":"integer","default":10,"minimum":1,"maximum":50}},"required":["q"]},"title":"Ticker Search","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Ticker Search"}},{"name":"fundamentals_tickers","description":"Paged listing of the full covered ticker universe, filterable to S&P 500 membership or one sector (limit/page paging). Call it when the user wants all the stocks in a sector or an index-membership list to feed a screen.","inputSchema":{"type":"object","properties":{"is_sp500":{"type":"boolean","default":false},"sector":{"type":"string"},"limit":{"type":"integer","default":100,"minimum":1,"maximum":500},"page":{"type":"integer","default":1,"minimum":1,"maximum":200}}},"title":"Ticker List","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Ticker List"}},{"name":"fundamentals_screener","description":"Multi-filter stock screener combining profitability (ROE, ROA, net margin), growth (revenue, EPS), financial-health (debt/equity, current ratio) and dividend filters, with sector/industry scoping and sort control. PRIMARY tool for 'find me stocks that…' asks; ready-made strategies live in /fundamentals/screener/presets.","inputSchema":{"type":"object","properties":{"sector":{"type":"string"},"industry":{"type":"string"},"roe_min":{"type":"number"},"roe_max":{"type":"number"},"roa_min":{"type":"number"},"net_margin_min":{"type":"number"},"revenue_growth_min":{"type":"number"},"eps_growth_min":{"type":"number"},"debt_to_equity_max":{"type":"number"},"current_ratio_min":{"type":"number"},"years_dividend_growth_min":{"type":"integer"},"payout_ratio_max":{"type":"number"},"sort_by":{"type":"string"},"sort_order":{"type":"string","enum":["asc","desc"],"default":"desc"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":100},"page":{"type":"integer","default":1,"minimum":1,"maximum":100}}},"title":"Stock Screener","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Stock Screener"}},{"name":"fundamentals_screener_presets","description":"Catalog of pre-built screener strategies — Aristocrats, Cash Cows, Value, Quality and more. Call it when the user asks for a named strategy screen or wants screening ideas before composing /fundamentals/screener filters.","inputSchema":{"type":"object","properties":{}},"title":"Strategy Screens","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Strategy Screens"}},{"name":"fundamentals_ai_analyze","description":"AI-generated company analysis for one ticker — summary, strengths, concerns, peer comparison and a quality score. Call this when the user wants a synthesized qualitative read rather than raw numbers. Premium: metered at 100 credits/mo.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"AI Company Analysis","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"AI Company Analysis"}},{"name":"fundamentals_historical","description":"Multi-decade historical financial statements for one ticker from SEC EDGAR — income, balance, and cash-flow, filterable by statement_type and start_year/end_year, annual by default with include_quarterly opt-in. Call this when the user asks how fundamentals have trended over many years, not just the latest print.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"statement_type":{"type":"string","enum":["income","balance","cashflow","all"],"default":"all"},"start_year":{"type":"integer","minimum":1990,"maximum":2100},"end_year":{"type":"integer","minimum":1990,"maximum":2100},"include_quarterly":{"type":"boolean","default":false}},"required":["ticker"]},"title":"Financial History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Financial History"}},{"name":"intel_options_flow","description":"Recent unusual options-flow alerts across the whole market from the options-flow feed, filtered to trades above min_premium (default $50k). Call this when the user asks 'what is the smart money buying today?' or wants market-wide unusual options activity; use intel_options_flow_ticker for a single name.","inputSchema":{"type":"object","properties":{"freshness":{"type":"string","enum":["off","live","strict"],"default":"off"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":200},"min_premium":{"type":"integer","default":50000,"minimum":0,"maximum":100000000}}},"title":"Options Flow (Recent)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Options Flow (Recent)"}},{"name":"intel_options_flow_ticker","description":"Unusual options-flow alerts for one ticker from the options-flow feed (default 25). Call this when the user asks 'any unusual options activity in X?' or wants the large options bets hitting a specific name; use intel_options_flow for the cross-market view.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"freshness":{"type":"string","enum":["off","live","strict"],"default":"off"},"limit":{"type":"integer","default":25,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Options Flow (Ticker)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Options Flow (Ticker)"}},{"name":"intel_darkpool_recent","description":"Most recent dark-pool prints across all tickers from the options-flow feed (default 50). Call this when the user asks about market-wide dark-pool or block activity — 'any big dark-pool prints today?'; use intel_darkpool_ticker for a single name.","inputSchema":{"type":"object","properties":{"freshness":{"type":"string","enum":["off","live","strict"],"default":"off"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":200}}},"title":"Dark Pool Prints (Recent)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Dark Pool Prints (Recent)"}},{"name":"intel_darkpool_ticker","description":"Dark-pool prints for one ticker from the options-flow feed (default 50). Call this when the user asks whether large blocks are crossing off-exchange in a specific name; use intel_off_exchange for daily aggregate off-exchange volume instead of individual prints.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"freshness":{"type":"string","enum":["off","live","strict"],"default":"off"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Dark Pool Prints (Ticker)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Dark Pool Prints (Ticker)"}},{"name":"intel_gex","description":"Aggregate gamma exposure (GEX) and delta exposure for one ticker from the options-flow feed. Call this when the user asks about dealer positioning or gamma levels, or whether options exposure could dampen or amplify moves in a name; pair with intel_max_pain for expiry pin levels.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"freshness":{"type":"string","enum":["off","live","strict"],"default":"off"}},"required":["ticker"]},"title":"Gamma Exposure","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Gamma Exposure"}},{"name":"intel_max_pain","description":"Max-pain price per options expiration for one ticker from the options-flow feed. Call this when the user asks where a stock is likely to pin into expiry or what the max-pain level is; pair with intel_gex for aggregate gamma/delta exposure.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Max Pain","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Max Pain"}},{"name":"intel_options_volume","description":"Daily options volume and put/call ratio per day for one ticker from the options-flow feed (default 30 days). Call this when the user asks whether options activity or put/call skew is elevated versus recent days, or how bullish/bearish the options tape has been trending.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":30,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Options Volume","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Options Volume"}},{"name":"intel_factor_importance","description":"What drives the model: Fama-French 5-factor loadings showing which systematic factors explain the strategy's returns, plus the ensemble's Bayesian voter posteriors ranking which signals it trusts most (top_n, default 50). PRIMARY tool for 'why does the model like this?' and 'what is the strategy actually betting on?' questions.","inputSchema":{"type":"object","properties":{"top_n":{"type":"integer","default":50,"minimum":1,"maximum":500}}},"title":"Factor Importance","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Factor Importance"}},{"name":"research_correlation_mesh","description":"Returns-correlation mesh around a seed ticker — nodes = tickers, edges = |rho| >= 0.6, from the 36-month realised-returns sidecar (depth expands the neighborhood). PRIMARY tool for 'what moves with X?' and finding hedge or pair candidates. Caveat: needs 36-month overlap; a freshly-listed or thinly-traded seed may be absent.","inputSchema":{"type":"object","properties":{"seed":{"type":"string"},"depth":{"type":"integer","default":1,"minimum":1,"maximum":3}},"required":["seed"]},"title":"Correlation Mesh","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Correlation Mesh"}},{"name":"intel_insider_trades","description":"SEC Form 4 insider trades for one ticker — recent buys and sells by officers, directors, and large holders (default 25). Call this when the user asks 'are insiders buying or selling X?' or wants to check insider conviction before acting on a name.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":25,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Insider Trades (Newswire)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Insider Trades (Newswire)"}},{"name":"intel_congress","description":"Congressional stock trades from two coverage sources — a realtime cross-ticker feed (provider=options_flow, default) or a bulk alternative-data feed (provider=alternative_data) — with an optional ticker filter. Call this when the user asks what Congress members have been buying or selling, market-wide or in a specific name.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500},"provider":{"type":"string","enum":["options_flow","alternative_data"],"default":"options_flow"}}},"title":"Congressional Trades","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Congressional Trades"}},{"name":"intel_lobbying","description":"Quarterly corporate lobbying spend for one ticker from the alternative-data feed (limit, default 50). Call this when the user asks how much a company spends lobbying or whether its policy exposure is growing; pair with intel_gov_contracts for the government-contract side of the same story.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["ticker"]},"title":"Lobbying Activity","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Lobbying Activity"}},{"name":"intel_gov_contracts","description":"Federal government contracts awarded to one ticker's company from the alternative-data feed (limit, default 50). Call this when the user asks how much government business a company wins or whether contract awards are accelerating; pair with intel_lobbying for the lobbying-spend side.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["ticker"]},"title":"Government Contracts","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Government Contracts"}},{"name":"intel_wsb","description":"Daily r/wallstreetbets mention count and sentiment for one ticker from the alternative-data feed (default 60 days). Call this when the user asks whether retail is piling into a name or how retail buzz is trending; pair with intel_twitter for the Twitter-side social read.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":60,"minimum":1,"maximum":365}},"required":["ticker"]},"title":"Retail Chatter","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Retail Chatter"}},{"name":"intel_twitter","description":"Daily Twitter mention volume and follower count for one ticker from the alternative-data feed (default 60 days). Call this when the user asks how much social buzz a name has or whether attention is spiking; pair with intel_wsb for the r/wallstreetbets read.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":60,"minimum":1,"maximum":365}},"required":["ticker"]},"title":"Twitter Mentions","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Twitter Mentions"}},{"name":"intel_off_exchange","description":"Daily off-exchange (dark pool + ATS) volume for one ticker from the alternative-data feed (default 30 days). Call this when the user asks how much of a stock's volume trades off-exchange or how dark-pool share is trending; use intel_darkpool_ticker for individual prints.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"freshness":{"type":"string","enum":["off","live","strict"],"default":"off"},"limit":{"type":"integer","default":30,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Off-Exchange Flow","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Off-Exchange Flow"}},{"name":"intel_patents","description":"Issued USPTO patents tagged to one ticker — date, title, IPC class, claim count, and abstract for each (default 25). Call this when the user asks what a company is patenting or wants an innovation-velocity read on its R&D pipeline.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":25,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Patents","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Patents"}},{"name":"intel_chart","description":"Candlestick chart with optional RSI/MACD/Bollinger overlays — returns a base64 PNG in a standard image envelope plus an OHLCV summary block (interval minute|hour|day|week|month, default day; 120 bars). Call this when the user asks to see a chart; powers chart-emitting skills (TA Master, Trading Plan, Apex Equity Intel).","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"interval":{"type":"string","default":"day"},"bars":{"type":"integer","default":120,"minimum":20,"maximum":500},"indicators":{"type":"string","default":"rsi,macd,bb"}},"required":["ticker"]},"title":"Price Chart","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Price Chart"}},{"name":"intel_insiders","description":"Live cross-ticker Form-4 insider-transaction feed (alternative-data, last ~20k rows): name, transaction_code, shares, price_per_share, value_usd, shares_owned_following. Call this when the user asks 'are insiders buying or selling?' — one name or market-wide. Optional ticker filter is applied client-side.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}}},"title":"Insider Activity","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Insider Activity"}},{"name":"intel_sec13f","description":"Recent 13F position snapshots (alternative-data, cross-fund/cross-ticker, last ~10k rows): fund, ticker, shares, value_usd, report_period — the institutional-ownership signal. Call this when the user asks 'which funds hold X?' or 'what does fund Y own?'; filter by ticker and/or fund (substring match).","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"fund":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}}},"title":"SEC 13F Holdings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"SEC 13F Holdings"}},{"name":"intel_sec13f_changes","description":"Quarter-over-quarter 13F position deltas (alternative-data), sign preserved: positive = added, negative = trimmed. Call this when the user asks 'are institutions adding or dumping X?'; set min_pct (absolute change fraction, e.g. 0.5 = 50%) to drop noise.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"fund":{"type":"string"},"min_pct":{"type":"number","default":0.0,"minimum":0.0,"maximum":10.0},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}}},"title":"SEC 13F Position Changes","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"SEC 13F Position Changes"}},{"name":"intel_top_shareholders","description":"Top institutional / fund / insider shareholders for a ticker (alternative-data), as two lists — ownership (shares) and ownership_options (contracts) — because options exposure reads differently from equity holdings. Call this when the user asks 'who owns X?' or wants the largest holders.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Top Shareholders","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Top Shareholders"}},{"name":"intel_street_estimates","description":"Street consensus EPS + options-implied expected move per earnings event, with beat_rate_pct and 8-quarter surprise history (est vs actual vs surprise_pct). Call this for 'what does the Street expect?' or 'how big a move is priced in?'. report_date_basis 'estimation' = projected date, NOT confirmed — cross-check earnings_next.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Street Estimates","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Street Estimates"}},{"name":"intel_news_headlines","description":"MARKET-WIDE ONLY — never for one ticker's news (that is news_summary). Live cross-publisher newswire headlines: headline, publisher, tickers, is_major flag, feed-supplied sentiment; seconds-fresh, 120s cache. For 'what's happening in the market right now?' scans and cross-ticker sweeps.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":100}}},"title":"News Headlines","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"News Headlines"}},{"name":"macro_treasury_curve","description":"Live US Treasury yield curve (market-data feed, T+1): 1m-30y tenor points, per-tenor 1-day change (bps), computed 2s10s and 3m10y spreads with inversion flags. Call this when the user asks about rates, curve shape, or inversion. Honest as_of = the feed's record date.","inputSchema":{"type":"object","properties":{}},"title":"Treasury Curve","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Treasury Curve"}},{"name":"intel_exec_compensation","description":"Annual executive compensation history for a ticker (alternative-data): CEO + named officers with name, role, year, salary, bonus, stock_option_awards, total_compensation. Call this when the user asks 'how much is the CEO paid?' or wants pay-vs-performance context.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":25,"minimum":1,"maximum":200}},"required":["ticker"]},"title":"Executive Pay","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Executive Pay"}},{"name":"intel_etf_holdings","description":"alternative-data: ETF composition or inverse-lookup. Pass ?etf=SPY for full holdings of an ETF, OR ?ticker=NVDA for every ETF that holds the stock (with weight). At least one is required; when both are passed, etf takes precedence.","inputSchema":{"type":"object","properties":{"etf":{"type":"string"},"ticker":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":1000}}},"title":"ETF Holdings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"ETF Holdings"}},{"name":"intel_politicians","description":"Full US Congress roster (House + Senate, alternative-data) with disclosed trade counts per member. Call it to resolve a politician name to a BioGuideID before pulling their trades, or for 'most-active disclosed traders in Congress' lists. Heavy full-roster pull.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":100,"minimum":1,"maximum":1000}}},"title":"Politician Trades","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Politician Trades"}},{"name":"intel_corporate_donors","description":"Corporate-PAC donations linked to the ticker's parent company (alternative-data): candidate, committee, amount, transaction_date, cycle — a campaign-finance influence signal. Call this when the user asks who a company donates to or about its political exposure.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["ticker"]},"title":"Corporate Donors","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Corporate Donors"}},{"name":"intel_gov_contracts_live","description":"Quarterly cross-ticker federal-contracts feed (alternative-data) — top-line award totals only, lighter than per-ticker intel_gov_contracts (no agency or description fields). Call this for 'which companies win government money?' screens; use intel_gov_contracts for line-items.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}}},"title":"Government Contracts (Live)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Government Contracts (Live)"}},{"name":"intel_earnings_history","description":"Last N quarters of earnings for a ticker — report date, EPS estimate vs actual, surprise %, and the day-of-report intraday price move %. Used by the verdict prompt to anchor 'stock typically moves ±X% on earnings' claims in real numbers. Composite (newswire + market-data). 6h cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"lookback_quarters":{"type":"integer","default":4,"minimum":1,"maximum":12}},"required":["ticker"]},"title":"Earnings History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Earnings History"}},{"name":"earnings_next","description":"Use when: the user asks for a specific ticker's next earnings date, when a company reports, the earnings calendar entry for a name, or anything of the form \"when is X's next earnings?\". This is the CANONICAL multi-source consensus tool — fans out to market-data, market-data, newswire, news, and web search in parallel; reconciles via primacy-weighted majority; returns a single canonical answer with per-source breakdown, deduplicated citations, and a ``vendor_coverage_alert`` when paid vendors silently lack data the web confirms. ``_meta.confidence`` is `high` (≥2 sources agree, or 1 primary source = market-data|web_search), `medium` (1 secondary source), or `low` (no confirmed date — projections demoted to ``_meta.next_earnings_date_projection_only``). Top-level ``summary`` field for FE rendering. 15-min cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Next Earnings (Consensus)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Next Earnings (Consensus)"}},{"name":"intel_macro_snapshot","description":"NOW WITH a `credit` block: CDX IG/HY on-the-run 5Y composite spreads + 1-session delta (T-2 by source, cadence-aware staleness; full series at /api/v3/credit/indices). Cross-asset macro composite returning REAL underlying values, all real-time where the data source permits. Fields: `vix` (real-time spot), `ten_year_yield_pct` (FRED DGS10, %), `usd_index_narrow_dxy` (computed from FRED 6-pair basket via the standard geometric weighted formula — the institutional standard ~99), `usd_index_trade_weighted_broad` (FRED DTWEXBGS — Fed's broader policy measure ~118), `wti_oil_usd_bbl` (FRED DCOILWTICO, $/bbl), `gold_usd_oz` (real-time forex spot, $/oz), `sp500` (real-time index; SPY×10 emergency fallback), `nasdaq100` (real-time index; QQQ×41 emergency fallback), `djia` (real-time index; null when unavailable — no ETF proxy emitted), `russell2000` (real-time index; IWM×10 emergency fallback). Every numeric field is gated by a plausibility guard — out-of-band values are nulled with an `error.implausible_value` field rather than served, so the chat Brain never cites a wrong number with the [macro_snapshot] tag. Includes `vol_regime` (low_vol/normal/elevated/stress per VIX bucket), `data_freshness` timestamp, and a `sources` block with the series reference for each indicator. 60s cache.","inputSchema":{"type":"object","properties":{"freshness":{"type":"string","enum":["off","live","strict"],"default":"off"}}},"title":"Cross-Asset Snapshot","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Cross-Asset Snapshot"}},{"name":"intel_ml_prediction","description":"Stored equity model prediction, available voter evidence, and nullable interval bounds. Inspect source date and prediction_evidence_available. Adaptive intervals may be asymmetric: half_width is a maximum residual offset, not necessarily half the span. Numeric compatibility does not establish calibration or measured coverage; stated and recent coverage remain unavailable without matching artifacts. Research only; capital_authorized is false. Pass asset_class=equity or crypto explicitly for ambiguous ticker symbols.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"asset_class":{"type":"string","enum":["equity","crypto"],"default":"equity"}},"required":["ticker"]},"title":"Quant Signal","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Quant Signal"}},{"name":"intel_voter_attribution","description":"Causal attribution for a voter's score on a ticker. Instrumented voters: `insider_flow` (EDGAR Form-4 + insider feed, deduped by name/date/value; CEO/CFO 2x, officer 1.5x, director 1.2x weighting; contribution amounts + reconstructed score); `options_flow` (options-flow alerts with direction inferred from option_type+side: CALL@ASK=+1, PUT@ASK=-1, CALL@BID=-1, PUT@BID=+1; weighted by premium/median); `fundamental` (metadata mode — surfaces which 4 ratios the voter consumes + how to interpret). Transforms scores into EVIDENCE rather than a number. Remaining voters (sentiment, analyst_revisions, regime_hmm, technical, ml_ensemble) pending instrumentation. Optional ?voter=insider_flow|options_flow|fundamental, ?days_back=30. 15min cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"voter":{"type":"string"},"days_back":{"type":"string"}},"required":["ticker"]},"title":"Signal Drivers","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Signal Drivers"}},{"name":"intel_voter_ic_drift","description":"Per-voter information-coefficient drift vs baseline for all 19 voters, recomputed daily: live_ic vs baseline_ic, ic_ratio (sign-flip flagged at <0), drift_status (green/yellow/red), sorted by absolute drift severity. Call it before leaning on a verdict — reduce confidence in any voter with red drift_status. 60min cache.","inputSchema":{"type":"object","properties":{}},"title":"Voter IC Drift (Raw)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Voter IC Drift (Raw)"}},{"name":"intel_ml_drivers","description":"Top-N SHAP feature attributions for the ML ensemble score on a ticker: drivers[] ranked by |SHAP| with feature (e.g. beta_cma, vol_21d), signed shap_value, direction (bullish/bearish/neutral). PRIMARY tool for 'why is the model bullish/bearish on X?'. Nightly run; default top=5, max 20; available:false outside the ML universe. 5min cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"top":{"type":"string"}},"required":["ticker"]},"title":"What's Driving It","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"What's Driving It"}},{"name":"intel_cftc_cot","description":"CFTC Commitments-of-Traders report — futures positioning by cohort (producers/hedgers, money managers, other reportables, non-reportables). Polled weekly on Fridays at 18:00 ET, the CFTC's standard publication window. Without filter: returns top-10 money-manager longs and shorts across all contracts on the latest report — the institutional-spec directional bets. With `?contract=GOLD` (substring match, also accepts WTI, NATGAS, SP500-EMINI, BITCOIN-MICRO, 10Y-NOTE, etc.) returns the matched contract's 5-week positioning history with cohort net positions, % of OI, and a 4-week net delta. Extreme money-manager longs at the top of a rally historically mark exhaustion; commercial-hedger net longs at the bottom historically mark reaccumulation — leading indicator. 4h cache (CFTC publishes weekly so the data is stale-by-design).","inputSchema":{"type":"object","properties":{"contract":{"type":"string"}}},"title":"Futures Positioning","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Futures Positioning"}},{"name":"intel_short_interest","description":"FINRA bi-monthly short interest: short_interest_shares, short_interest_pct_of_float, days_to_cover, short_interest_change_pct_30d (vs prior settlement), avg_daily_volume_at_settlement. Call for 'how shorted is X?' / squeeze questions. borrow_fee_pct_annualized is null — see /intel/borrow_cost. Market-data FINRA re-publish; 6h cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Short Interest","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Short Interest"}},{"name":"intel_analyst_consensus","description":"Analyst consensus: rating_label (Strong Buy…Strong Sell), rating_score (1-5), bucket counts, price_target_avg/high/low/count, recent_actions[] (upgrades/downgrades/PT changes, firm+analyst+from→to; recent_action_limit). Call for 'what do analysts say about X?' / price targets. Actions from newswire (client-side ticker filter). 1h cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"recent_action_limit":{"type":"integer","default":10,"minimum":1,"maximum":50}},"required":["ticker"]},"title":"Analyst Coverage","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Analyst Coverage"}},{"name":"intel_borrow_cost","description":"Securities-lending borrow cost (annualized fee %, rebate, utilization, shares available) — LIVE. Source chain, first hit wins (see `source`): 1) options-flow shorts feed (intraday) + recent SEC fails-to-deliver enrichment; 2) licensed-research securities-finance Securities Finance latest archived daily row; 3) implied-vol option-implied borrow. `is_stale` flags prints older than 48h (warehouse rows trail on the licensed-research refresh lag). data_source_pending=true ONLY when all three sources miss — then fall back to /intel/short_interest as the squeeze proxy. Use /intel/borrow_cost_history for the daily series. 15-min cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Borrow Cost","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Borrow Cost"}},{"name":"sec_filing_extract","description":"Structured extracts from the latest 10-K/10-Q/8-K via the SEC EDGAR JSON API: balance_sheet_summary, cash_flow_summary, shares_outstanding (basic+diluted+4Q trend), filing_date, filing_url, accession_number. Call for numbers straight from the latest filing. MVP: text_sections are deep-links only — use web_search on filing_url. 24h cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"filing_type":{"type":"string","description":"Path parameter 'filing_type' (required)."}},"required":["ticker","filing_type"]},"title":"SEC Filing Extract","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"SEC Filing Extract"}},{"name":"intel_calendar_economics","description":"Macro economic-release calendar from the newswire — CPI, NFP, FOMC, GDP, retail sales and more, filterable by ISO-3 country (USA, CAN, DEU) and date range; importance 5 = market-moving. Call this when the user asks what macro events or data releases are coming up or could move markets this week.","inputSchema":{"type":"object","properties":{"country":{"type":"string"},"date_from":{"type":"string"},"date_to":{"type":"string"},"importance":{"type":"integer","minimum":0,"maximum":5},"limit":{"type":"integer","default":50,"minimum":1,"maximum":100}}},"title":"Economic Calendar","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Economic Calendar"}},{"name":"intel_calendar_ratings","description":"Analyst rating actions and price-target changes from the newswire: analyst_firm, analyst_name, action_company (Maintains/Initiates), action_pt (Raises/Lowers), pt_current, pt_prior, pt_pct_change, rating_current/prior. Call this when the user asks about upgrades, downgrades, or price-target moves on a ticker.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"date_from":{"type":"string"},"date_to":{"type":"string"},"action":{"type":"string","enum":["Raises","Lowers","Maintains","Announces","Initiates","Reiterates"]},"limit":{"type":"integer","default":50,"minimum":1,"maximum":100}}},"title":"Analyst Calendar","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Analyst Calendar"}},{"name":"intel_calendar_conference_calls","description":"newswire: upcoming earnings conference-call schedule. Returns ticker, company, date, start_time, period (Q1/Q2/...), webcast_url, phone_num, international_num, access_code, and importance (5 = mega-cap market-mover). Distinct from /calendar/earnings — this carries the call logistics analysts need to attend.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"date_from":{"type":"string"},"date_to":{"type":"string"},"importance":{"type":"integer","minimum":0,"maximum":5},"limit":{"type":"integer","default":50,"minimum":1,"maximum":100}}},"title":"Conference Calls","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Conference Calls"}},{"name":"intel_commodities","description":"REAL-TIME spot prices for the macro commodities (oil WTI/Brent, gold, silver, nat-gas, copper). AUTHORITATIVE source for any numeric commodity claim — call this BEFORE quoting a price level. QUOTE 'spot' DIRECTLY — it's the live commodity price (FRED's last published close anchored to the live commodity-tracking ETF's cumulative return since that date, so it reflects today's market not FRED's T+1..T+5 publish lag). 'unit' tells you the dimension (USD/barrel for oil, USD/MMBtu for natgas, USD/metric-ton for copper). Response fields per item: 'spot' (live number — quote this), 'unit' (dimension), 'spot_basis' ('live_etf_bridged' = FRED+ETF bridge | 'fred_close' = FRED only, no ETF available | 'etf_share_price' = FRED dead, falling back to ETF SHARE price [unit reads 'USD per share of {ETF}'] — DO NOT claim $/oz when basis is etf_share_price), 'spot_time' (timestamp of the live observation), 'live_spot_estimate' (same as spot when bridged, else null), 'live_basis' (transparent arithmetic, e.g. 'FRED WTI $99.89 (2026-04-27) × (USO 142.80 / 134.72)'), 'bridge_return_pct' (ETF return applied to FRED), 'official_close' + 'official_close_as_of' (FRED audit value — quote ONLY if user explicitly asks for the last settlement / closing price), 'change_pct_1d/5d/30d' (FRED-window returns), 'history_5d' (last 6 FRED observations newest-first), 'fred_days_stale' + 'is_stale' (publish-lag flags — informational; spot is still live regardless), 'etf_proxy_quote' (the underlying ETF snapshot used for the bridge; for transparency only). 'symbol=oil' returns both WTI and Brent; default 'all' returns all six.","inputSchema":{"type":"object","properties":{"symbol":{"type":"string","enum":["all","oil","wti_oil","brent_oil","gold","silver","natgas","copper"],"default":"all"}}},"title":"Commodities","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Commodities"}},{"name":"news_crypto_latest","description":"Recent crypto news with sentiment for one or more symbols: title, source, sentiment (Positive/Neutral/Negative), date, topic tags. PRIMARY tool for ticker-specific crypto drilling (BTC, ETH, SOL, COIN, MSTR) — call when the user asks what's happening with a specific coin; use by_category for market-wide questions. 60s cache.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"items":{"type":"integer","default":20,"minimum":1,"maximum":50},"date_range":{"type":"string","enum":["today","yesterday","last7days","last30days"],"default":"today"}},"required":["tickers"]},"title":"Crypto News (Latest)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto News (Latest)"}},{"name":"news_crypto_by_category","description":"Crypto news by section: section='general' for overall crypto-market headlines, section='alltickers' for cross-coin coverage. PRIMARY tool for broad 'what's happening in crypto today' questions — for a single coin use news_crypto_latest instead. 120s cache.","inputSchema":{"type":"object","properties":{"section":{"type":"string","enum":["general","alltickers"],"default":"general"},"items":{"type":"integer","default":20,"minimum":1,"maximum":50},"date_range":{"type":"string","default":"today"}}},"title":"Crypto News by Category","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto News by Category"}},{"name":"news_crypto_sentiment_stats","description":"crypto-news: daily sentiment rollup for a crypto symbol (-1.5 to +1.5). Densest single-call signal — N days of (positive_count, negative_count, neutral_count, sentiment_score). Use to detect sentiment regime shifts on BTC/ETH/etc. 300s cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"date_range":{"type":"string","enum":["last7days","last30days","last60days"],"default":"last30days"}},"required":["ticker"]},"title":"Crypto Sentiment Stats","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Sentiment Stats"}},{"name":"news_crypto_market_sentiment","description":"Overall crypto market sentiment rollup across the news feed (no ticker filter). Call this when the user asks whether crypto as a whole looks bullish or bearish right now — for a specific coin's sentiment use news_crypto_latest. 300s cache.","inputSchema":{"type":"object","properties":{"date_range":{"type":"string","default":"last7days"}}},"title":"Crypto Sentiment (Overall)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Sentiment (Overall)"}},{"name":"news_crypto_trending","description":"Trending crypto headlines, noise-filtered down to top stories only. Pass ticker to filter to one coin; omit for market-wide trending. Call this when the user asks what the biggest crypto stories are right now. 120s cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"}}},"title":"Crypto Trending (Movers)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Trending (Movers)"}},{"name":"news_crypto_ticker_only","description":"Crypto news mentioning ONLY the requested coin, with no co-tagged altcoins — the strictest per-coin filter. Call this when the user wants pure single-coin coverage and news_crypto_latest brings back too much cross-coin noise.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"items":{"type":"integer","default":50,"minimum":1,"maximum":100},"page":{"type":"integer","default":1,"minimum":1,"maximum":50}},"required":["ticker"]},"title":"Crypto News (Ticker Only)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto News (Ticker Only)"}},{"name":"news_crypto_multi_ticker","description":"Crypto news where ALL the listed coins co-appear in the same story — a correlation feed. Call this when the user asks how two or more coins are linked in the news, e.g. stories covering both BTC and ETH together.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"items":{"type":"integer","default":50,"minimum":1,"maximum":100},"page":{"type":"integer","default":1,"minimum":1,"maximum":50}},"required":["tickers"]},"title":"Crypto News (Multi-Ticker)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto News (Multi-Ticker)"}},{"name":"news_crypto_all_tickers_sentiment","description":"Sentiment leaderboard across the full tracked crypto universe — every coin's sentiment_score over the window (default last7days). Call this when the user asks which coins have the most bullish or most bearish news sentiment right now.","inputSchema":{"type":"object","properties":{"date_range":{"type":"string","default":"last7days"},"page":{"type":"integer","default":1,"minimum":1,"maximum":20}}},"title":"Crypto Sentiment per Ticker","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Sentiment per Ticker"}},{"name":"news_crypto_top_mentions","description":"Top 50 most-mentioned crypto tickers over the window (default last7days) — a crypto-attention proxy. Call this when the user asks which coins are getting the most buzz or news coverage lately.","inputSchema":{"type":"object","properties":{"date_range":{"type":"string","default":"last7days"}}},"title":"Crypto Trending (Mentions)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Trending (Mentions)"}},{"name":"news_crypto_events","description":"Clustered crypto headline events — related stories grouped into discrete events; fetch recent events, filter by ticker, or drill into one eventid. Call this when the user asks what distinct news events hit a coin rather than a raw headline list.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"eventid":{"type":"string"},"page":{"type":"integer","default":1,"minimum":1,"maximum":20}}},"title":"Crypto Events","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Events"}},{"name":"news_crypto_sundown","description":"Evening crypto market-recap digest, published Mon-Fri at 7pm ET. Call this when the user asks for an end-of-day crypto wrap-up or a morning briefing needs an overnight crypto recap.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","default":1,"minimum":1,"maximum":10}}},"title":"Crypto Evening Digest","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Evening Digest"}},{"name":"news_crypto_ticker_price","description":"Delayed crypto prices with 24h volume and price changes — a single coin, a list, or the top 50 by 24h volume when tickers is omitted. Call this when the user asks where a coin is trading or which coins are moving; prices are delayed, not real-time.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"}}},"title":"Crypto Price","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Price"}},{"name":"news_crypto_whale_transactions","description":"Large crypto on-chain and exchange transactions for BTC/ETH/SOL/TRX plus major exchanges, filterable by min_amount USD (updated ~every 5min). Call this when the user asks about whale moves or big transfers; use whale_summary for the aggregated buy-vs-sell read.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"date_range":{"type":"string","default":"last24hours"},"min_amount":{"type":"integer","minimum":0},"items":{"type":"integer","default":50,"minimum":1,"maximum":100},"page":{"type":"integer","default":1,"minimum":1,"maximum":20}}},"title":"Whale Watch (Transactions)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Whale Watch (Transactions)"}},{"name":"news_crypto_whale_summary","description":"Aggregated whale-transaction stats over the window: total volume, net exchange flow (in vs out), and biggest single tx. PRIMARY tool for 'is smart money buying or selling this coin?' — use whale_transactions for the individual transfers.","inputSchema":{"type":"object","properties":{"tickers":{"type":"string"},"date_range":{"type":"string","default":"last7days"}}},"title":"Whale Watch (Summary)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Whale Watch (Summary)"}},{"name":"crypto_derivatives_funding","description":"Call this when you need to know whether a coin's perp market is CROWDED — cross-venue perpetual funding for up to 20 base assets (default: top-20 by open interest). Every rate is normalised to an 8h-equivalent from each venue's OWN settlement interval (venues mix 1h/4h/8h per symbol, so raw rates are not comparable). Serves the plain mean, the OI-weighted mean, cross-venue dispersion in bps, annualised APR, and a 30-day z-score once ≥60 settlements exist (funding_z_status says when it does not). Per-venue rows carry their own as_of; two venues arrive via a first-party cross-venue feed and are flagged forward_looking (next settlement). sources block names each venue's status (ok / geo_blocked / circuit_open). Missing is typed with a reason, never zero. DATA context (not_a_score, not_a_forecast) — rich funding is crowding in one regime and trend confirmation in another; nothing here enters the sitting rank until the shadow tape measures its sign. Auth: X-API-Key.","inputSchema":{"type":"object","properties":{"symbols":{"type":"string"},"asset_class":{"type":"string","enum":["crypto"],"default":"crypto"}}},"title":"Crypto Funding (Cross-Venue)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Funding (Cross-Venue)"}},{"name":"crypto_derivatives_open_interest","description":"Call this for LEVERAGE in the system — perpetual open interest per base asset in USD across the reachable venues, the total, and which venue dominates. USD is the ONLY unit summed cross-venue (base-coin OI stays per venue; contract counts are never served because contract size varies 0.01→1000 across symbols). Two venues' OI is unavailable from this region and the sources block says so (geo_blocked) rather than reporting a smaller total as if it were the whole market. Pair with derivatives_funding: rising OI + rising funding = new longs; rising OI + falling price = new shorts. DATA context, not a score. Auth: X-API-Key.","inputSchema":{"type":"object","properties":{"symbols":{"type":"string"},"asset_class":{"type":"string","enum":["crypto"],"default":"crypto"}}},"title":"Crypto Open Interest","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Open Interest"}},{"name":"crypto_derivatives_basis","description":"Call this to read CARRY — perpetual premium (mark vs oracle/index) in basis points per venue and the cross-venue mean. Positive = perps rich to spot (long crowding; carry available to hedged shorts). Negative = perps cheap (short crowding). Context flag, never directional on its own. not_a_score, not_a_forecast. Auth: X-API-Key.","inputSchema":{"type":"object","properties":{"symbols":{"type":"string"},"asset_class":{"type":"string","enum":["crypto"],"default":"crypto"}}},"title":"Crypto Perp Basis","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Perp Basis"}},{"name":"crypto_events_announcements","description":"Call this to know WHAT an exchange announced and WHEN — listings, delistings and trading-caution flags pulled from seven venues' own announcement APIs (Korean, US and offshore), each carrying the venue's ORIGIN timestamp and how late we saw it (lag_ms). A listing moves an asset 20-80% inside five minutes, so a news article about one is history; this is the print itself. Cross-venue events are collapsed with the EARLIEST origin kept and every venue listed — three exchanges delisting one asset within an hour is a materially different event from one doing so. One venue is unreachable from this region and is typed geo_blocked rather than allowed to read as 'nothing listed'. Filter by hours, event_type or symbols. DATA context (not_a_score, not_a_forecast) — an announcement is a fact, not a direction. Auth: X-API-Key.","inputSchema":{"type":"object","properties":{"hours":{"type":"integer","default":24,"minimum":1,"maximum":168},"event_type":{"type":"string","enum":["listing","delisting","caution","other"]},"symbols":{"type":"string"},"asset_class":{"type":"string","enum":["crypto"],"default":"crypto"}}},"title":"Exchange Listings & Delistings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Exchange Listings & Delistings"}},{"name":"crypto_events_headlines","description":"Call this for what is BREAKING on crypto-native social and blogs right now, already mapped to coins. Sourced from the accounts that break events — exchange officials, security firms, tier-1 desks — with the post's own timestamp, so it runs minutes to hours ahead of any article. Every item is classified (exploit / halt / depeg / regulatory / listing / delisting / etf / unlock / liquidation) and tagged tier 1 or 2 by whether the account is a known breaking source; tier1_only=true keeps just those. Retweets and replies are dropped — an event is the original post, not the 400 accounts quoting it. The classification is an event TYPE, never a direction: read the price for that. DATA context, not a score. Auth: X-API-Key.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":50,"minimum":1,"maximum":200},"event_type":{"type":"string","enum":["exploit","halt","depeg","regulatory","listing","delisting","etf","unlock","liquidation","headline"]},"symbols":{"type":"string"},"tier1_only":{"type":"boolean","default":false},"asset_class":{"type":"string","enum":["crypto"],"default":"crypto"}}},"title":"Crypto Breaking Headlines","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Breaking Headlines"}},{"name":"crypto_onchain_flows","description":"Call this for the numbers that cannot be spun — stablecoin issuance and lending liquidations read straight off the chain. NET STABLECOIN SUPPLY is the cleanest available proxy for dry powder entering or leaving crypto: expansion is capital arriving, contraction is capital leaving. Liquidation counts are a deleveraging/stress read. Both come from raw logs, so a headline claiming a whale moved money can be checked against the transfer itself. HONESTY RULE: net supply is WITHHELD (null, net_status='partial') unless every leg answered — a failed mint query beside a successful burn query would otherwise report a large FALSE contraction, i.e. a fake risk-off. Zero liquidations is reported alongside a live pool-log count so a calm market is distinguishable from a dead feed. DATA context, not a score. Auth: X-API-Key.","inputSchema":{"type":"object","properties":{"hours":{"type":"integer","default":24,"minimum":1,"maximum":72},"asset_class":{"type":"string","enum":["crypto"],"default":"crypto"}}},"title":"On-Chain Flows & Liquidations","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"On-Chain Flows & Liquidations"}},{"name":"crypto_derivatives_vol_surface","description":"Call this for the OPTIONS market's view — the implied-volatility surface for BTC or ETH from one full-chain read (~1,000 instruments): ATM term structure (7d/30d/90d), 10%-OTM put−call skew at 30d (a moneyness proxy, labelled as such — not delta-space), put/call open-interest ratio, max pain per expiry, plus the 30-day implied-vol index and realised vol as a VOLATILITY RISK PREMIUM: iv_rv_ratio < 1 means the market is pricing LESS movement than it is realising. Expiries with < 6 strikes are typed missing, never noise. Deep chains exist for BTC and ETH only; other currencies report thin. DATA context, not a score. Auth: X-API-Key.","inputSchema":{"type":"object","properties":{"symbol":{"type":"string","default":"BTC"},"asset_class":{"type":"string","enum":["crypto"],"default":"crypto"}}},"title":"Crypto Vol Surface (Options)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto Vol Surface (Options)"}},{"name":"news_crypto_summary","description":"crypto-news: one-shot per-coin intel summary. Parallel-fetches recent news (24h) + 7-day sentiment stats + trending headlines. The single call to make when asked 'what's going on with BTC?' or any crypto-name analysis. 90s cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Crypto News (Summary)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Crypto News (Summary)"}},{"name":"news_forex_latest","description":"Recent FX news with sentiment for one or more currency pairs: title, source, sentiment (Positive/Neutral/Negative), date, topic tags. PRIMARY tool for pair-specific drilling (EUR-USD, GBP-USD, USD-JPY, AUD-USD) — call when the user asks what's moving a specific pair; use by_category for macro themes. 180s cache.","inputSchema":{"type":"object","properties":{"pairs":{"type":"string"},"items":{"type":"integer","default":20,"minimum":1,"maximum":50},"date_range":{"type":"string","enum":["today","yesterday","last7days","last30days"],"default":"today"}},"required":["pairs"]},"title":"Forex News (Latest)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Forex News (Latest)"}},{"name":"news_forex_by_category","description":"Macro and cross-pair FX news: section='general' = market macro (Fed, CPI, ECB, NFP, BoJ, BoE), section='alltickers' = cross-pair coverage; optional topic filter (cpi, fed, oil, gold, recession...) on general. Call this when the user asks about macro FX themes rather than one pair — use news_forex_latest for pair drilling. 300s cache.","inputSchema":{"type":"object","properties":{"section":{"type":"string","enum":["general","alltickers"],"default":"general"},"topic":{"type":"string","enum":["cpi","unemployment","fed","ecb","boj","boe","gdp","inflation","war","election","oil","gold","recession","tradedeals"]},"items":{"type":"integer","default":20,"minimum":1,"maximum":50},"date_range":{"type":"string","default":"today"}}},"title":"Forex News by Category","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Forex News by Category"}},{"name":"news_forex_sentiment_stats","description":"fx-news: daily sentiment rollup for an FX pair (-1.5 to +1.5). Densest single-call signal — N days of (positive_count, negative_count, neutral_count, sentiment_score). Use to detect regime shifts on EUR-USD/GBP-USD/etc. 600s cache.","inputSchema":{"type":"object","properties":{"pair":{"type":"string"},"date_range":{"type":"string","enum":["last7days","last30days","last60days"],"default":"last30days"}},"required":["pair"]},"title":"Forex Sentiment Stats","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Forex Sentiment Stats"}},{"name":"news_forex_market_sentiment","description":"Overall FX market sentiment rollup (no pair filter) — gauges DXY-style market posture rather than any single pair. Call this when the user asks about broad FX market mood; use news_forex_latest for a specific pair's sentiment. 600s cache.","inputSchema":{"type":"object","properties":{"date_range":{"type":"string","default":"last7days"}}},"title":"Forex Sentiment (Overall)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Forex Sentiment (Overall)"}},{"name":"news_forex_top_mentions","description":"fx-news: most-mentioned FX pairs over a window with sentiment tilt. High-leverage 'what is the FX market talking about?' single call. 300s cache.","inputSchema":{"type":"object","properties":{"date_range":{"type":"string","enum":["today","last7days","last30days"],"default":"last7days"}}},"title":"Forex Trending (Mentions)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Forex Trending (Mentions)"}},{"name":"news_forex_trending","description":"Trending FX headlines, noise-filtered down to top stories only. Pass pair (e.g. EUR-USD) to filter; omit for market-wide trending. Call this when the user asks what the biggest FX stories are right now. 300s cache.","inputSchema":{"type":"object","properties":{"pair":{"type":"string"}}},"title":"Forex Trending (Movers)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Forex Trending (Movers)"}},{"name":"news_forex_sundown_digest","description":"Daily evening FX market summary article. Call this when the user asks for an end-of-day FX wrap-up or a morning briefing needs an overnight FX recap; optional date_range filter (today/last7days). 600s cache.","inputSchema":{"type":"object","properties":{"date_range":{"type":"string"}}},"title":"Forex Evening Digest","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Forex Evening Digest"}},{"name":"news_forex_events","description":"Clustered FX news events from a forex newswire — high press-coverage stories like central-bank decisions, rate hikes, and intervention rumors, optionally filtered to one pair (e.g. EUR-USD). Call this when the user asks 'what major macro events hit today' or what's moving a currency. 300s cache.","inputSchema":{"type":"object","properties":{"pair":{"type":"string"},"date_range":{"type":"string","default":"today"},"items":{"type":"integer","default":20,"minimum":1,"maximum":50}}},"title":"Forex Events","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Forex Events"}},{"name":"news_forex_economic_calendar","description":"Economic calendar with actual, forecast, and previous values for macro releases (Fed/CPI/NFP/ECB) — these prints are priced-in by FX traders, so call it for any 'what did CPI print / what macro data hit this week' question. Filter by currency (USD/EUR/JPY) and importance (high/medium/low). 600s cache.","inputSchema":{"type":"object","properties":{"currency":{"type":"string"},"importance":{"type":"string","enum":["high","medium","low"]},"date_range":{"type":"string","enum":["today","last7days","last30days"],"default":"last7days"}}},"title":"Forex Calendar","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Forex Calendar"}},{"name":"news_forex_prices","description":"Live FX mid prices (15-min upstream refresh): pass pairs for specific quotes (e.g. EUR-USD,GBP-USD) or base for all pairs vs one currency (base=USD). Call this when the user asks where a currency pair is trading right now. 30s cache.","inputSchema":{"type":"object","properties":{"pairs":{"type":"string"},"base":{"type":"string"}}},"title":"Forex Rates","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Forex Rates"}},{"name":"news_forex_summary","description":"fx-news: one-shot per-pair intel summary. Parallel-fetches recent news (24h) + 7-day sentiment stats + trending headlines. The single call to make when asked 'what's going on with EUR-USD?' or any FX-pair analysis. 180s cache.","inputSchema":{"type":"object","properties":{"pair":{"type":"string","description":"Path parameter 'pair' (required)."}},"required":["pair"]},"title":"FX News Summary","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"FX News Summary"}},{"name":"research_web_search","description":"Multi-mode web search in parallel across link, cited-synthesis and social-sentiment coverage. Returns synthesized_answer, social_sentiment, citations, and a deduplicated list of links. Call this BEFORE relying on model knowledge for time-sensitive questions (markets, earnings, regulation, breaking news, macro events). 15-min LRU cache.","inputSchema":{"type":"object","properties":{"query":{"type":"string"},"providers":{"type":"string","default":"links,synthesis"},"freshness":{"type":"string","enum":["pd","pw","pm"]},"count":{"type":"integer","default":5,"minimum":1,"maximum":20}},"required":["query"]},"title":"Web Search","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Web Search"}},{"name":"research_fetch_url","description":"Read ONE specific page you already have the URL for — call ONLY after a search returned the link, never to discover pages. Returns the page's readable body as clean markdown with title, author, published date, and a domain trust tier; handles paywalls. Read at most the 2-3 most load-bearing links per question. NOT a search tool: research_web_search finds the links this tool reads.","inputSchema":{"type":"object","properties":{"url":{"type":"string"},"max_chars":{"type":"integer","default":8000,"minimum":500,"maximum":10000}},"required":["url"]},"title":"Read Page","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Read Page"}},{"name":"research_synthesis","description":"Citation-rich research synthesis (grounded LLM). Returns a concise synthesized answer plus the list of source URLs that grounded it. Use when the user wants the answer GROUNDED with explicit sources (e.g. 'summarize NVIDIA's last earnings call and link the transcript'). Distinct from web_search — this returns prose + citations, not a list of headlines.","inputSchema":{"type":"object","properties":{"query":{"type":"string"},"system_prompt":{"type":"string"}},"required":["query"]},"title":"Research Synthesis","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Research Synthesis"}},{"name":"research_x_sentiment","description":"Real-time X/Twitter sentiment narrative. Pass ticker=NVDA for a focused fintwit read on a name, or query=... for a free-form social-media question. Returns the narrative answer with quantified bullish/bearish ratio and any source URLs social-search grounded against. Use when you want the *vibe* on a name right now (retail sentiment, breaking rumours, unusual social activity), not the news article list.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"},"query":{"type":"string"}}},"title":"X/Twitter Sentiment","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"X/Twitter Sentiment"}},{"name":"intel_yield_curve","description":"Live US Treasury yield curve + recession-watch spreads + breakeven inflation. Returns DGS1MO/3MO/2/5/10/30 yields, the 10Y-2Y and 10Y-3M spreads (with 'inverted' flags — classic recession signal), 5Y/10Y breakeven inflation, and the trade-weighted USD index. Quote these numbers verbatim — DO NOT recall yields from training data, which is months stale. 5-min cache. For a focused short-end + cash-park view, use intel_risk_free_rate.","inputSchema":{"type":"object","properties":{}},"title":"Yield Curve","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Yield Curve"}},{"name":"intel_risk_free_rate","description":"Current US T-bill yields + parked-cash quick-reference. Use this for capital-allocation responses — the model needs to compare risky vs risk-free expected return ('T-bills currently yield X% — the equity allocation must clear that hurdle'). Returns 1m/3m/2y/10y yields, `parked_yield_example` showing annual coupon on $10k principal across tenors, and curated T-bill ETF references (SGOV, BIL, SHV) with expense ratios + use-case so the model has something specific to cite. Sourced from FRED. 5-min cache.","inputSchema":{"type":"object","properties":{}},"title":"T-Bill Yields","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"T-Bill Yields"}},{"name":"intel_options_chain","description":"Options-chain snapshot for a ticker: every contract with Greeks (delta/gamma/theta/vega), implied volatility, open interest, last quote/trade; filter by expiry or call/put side. PRIMARY tool for 'where's the gamma / IV smile / max pain by strike'. Pair with options_volume (flow) and gex (dealer positioning). 60s cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"expiration_date":{"type":"string"},"contract_type":{"type":"string","enum":["call","put"]},"limit":{"type":"integer","default":250,"minimum":1,"maximum":250}},"required":["ticker"]},"title":"Options Chain","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Options Chain"}},{"name":"intel_etf_summary","description":"One-call ETF intelligence rollup — top holdings + commodity exposure + which other v3 tools work for this ticker. Returns top constituents by weight (holdings provider), and for commodity-tracking ETFs (USO/BNO/GLD/IAU/SGOL/SLV/SIVR/UNG/BOIL/CPER) the linked FRED spot + live proxy price. CALL THIS BEFORE saying 'no data' on any ETF question — most ETFs have rich underlying-level intel even when the wrapper itself doesn't trade analyst targets / insider flow.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"ETF Summary","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"ETF Summary"}},{"name":"technical_analysis","description":"One-call technical read on a ticker: fuses candlestick chart (RSI/MACD/BB), GEX, max pain, options flow/volume, insider and congressional trades, and off-exchange volume into a signal list, aggregate bull/bear stance, and embedded PNG chart. Call this FIRST for 'how does the chart/setup look?' — one round-trip replaces ~8 calls.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"interval":{"type":"string","default":"day"},"bars":{"type":"integer","default":120,"minimum":40,"maximum":400}},"required":["ticker"]},"title":"Technical Analysis","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Technical Analysis"}},{"name":"equity_brief","description":"Apex Equity Intelligence — single-call omnibus brief for 'what do you think about $TICKER'. Fuses 12 vendor calls in parallel (daily + hourly charts, company facts, income/balance statements, snapshot, insider, congress, lobbying, gov-contracts, WSB, patents, off-exchange). Returns: 'fundamentals' (12 scalar fields — name, sector, market_cap, last_price, day_change_pct, latest_revenue, latest_net_income, latest_eps, total_assets/liabilities/equity, filing_date), 'intel' (8 scalar fields — insider/congress 30d buy-sell counts, ttm_lobbying_usd, ttm_gov_contract_usd, wsb_7d_mentions+sentiment, patent_filings_recent, avg_dark_pool_pct_30d), 'flags' (notable patterns: insider_cluster_buy/sell, elevated_dark_pool, retail_attention_spike, etc.), 'chart' (primary daily 120-bar candlestick PNG with RSI/MACD/BB indicators, palette-quantized to keep the tool result under 32KB), and 'charts' (a list of ADDITIONAL charts beyond the primary — currently just the hourly intraday chart; do NOT expect the daily here, it's only in 'chart'). 'components' carries raw counts of items behind each digest. 'vendor_errors' is non-empty when one of the parallel fetches failed; the rest of the payload is still usable. For full per-section detail (complete insider trade list, full income statements, etc.) call the dedicated tools fundamentals_*/intel_* — apex_equity is the digest, not the firehose.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Equity Profile","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Equity Profile"}},{"name":"trading_plan","description":"Actionable long/short plan for a ticker: entry, stop (recent swing or 1.5x-ATR proxy), 1R/2R/3R targets, position size for a given risk_pct, plus a thesis citing supporting signals (trend, flow tilt, insider, congress) and an embedded PNG chart. Call this when the user asks 'how would I trade X'; bias=auto picks direction from TA stance.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"bias":{"type":"string","default":"auto"},"risk_pct":{"type":"number","default":1.0,"minimum":0.1,"maximum":5.0}},"required":["ticker"]},"title":"Trade Plan","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Trade Plan"}},{"name":"ml_predict","description":"Latest ML ensemble prediction for one ticker: blended_score, conviction, decile rank, and per-voter sub-scores. Call this when the user asks 'what does the model think of X' or wants a quantitative score to weigh against fundamentals.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"ML Prediction","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"ML Prediction"}},{"name":"ml_top_picks","description":"Top-N ranked tickers from the latest ML ensemble scoring snapshot, optionally floored by min_conviction. PRIMARY tool for 'what are the model's top picks / best-ranked stocks right now'; use ml_predict for one ticker's detail.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":20},"min_conviction":{"type":"number","default":0.0}}},"title":"ML Top Picks","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"ML Top Picks"}},{"name":"ml_weights","description":"Current live ML ensemble voter weights (latest history row, broken out per market regime). Call it to know how the ensemble is blending its voters before interpreting a prediction; use ml_weights_history for drift over time.","inputSchema":{"type":"object","properties":{}},"title":"ML Weights","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"ML Weights"}},{"name":"ml_weights_history","description":"Time series of ML ensemble voter weights (per regime, newest first; days=1-365, default 30). Call this when the user asks how the model's weighting has drifted or shifted across regimes; use ml_weights for the current row.","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":30}}},"title":"ML Weights History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"ML Weights History"}},{"name":"private_markets_search","description":"Search PRIVATE companies / investors (VC/PE) / funds / people / limited partners by name (prefix, case-insensitive), ticker, or CIK — relevance-ranked so the prominent entity is #1 (brand/AKA/former-name aware: 'Nubank'→Nu Holdings, 'Square'→Block). Use this FIRST for any private-company question (e.g. 'tell me about Stripe', 'who is Sequoia') to resolve the entity id, then call the company/dossier/realtime tools. type=all searches every entity kind. detail=full returns every column per hit (for rich tables).","inputSchema":{"type":"object","properties":{"q":{"type":"string"},"type":{"type":"string","enum":["company","investor","fund","person","lp","serviceprovider","all"],"default":"company"},"limit":{"type":"integer","default":10,"minimum":1,"maximum":50},"detail":{"type":"string","enum":["lean","full"],"default":"lean"},"fields":{"type":"string"}}},"title":"Private Markets Search","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Search"}},{"name":"private_markets_search_suggest","description":"INSTANT (sub-100ms) private-company typeahead — prominence-ranked with the SAME ranking as search, so the famous company is never truncated; each hit carries authoritative website/domain/logo_url plus sector, last-known valuation, ticker. Call this FIRST to resolve a name to company_id; use /search for multi-entity or detail=full.","inputSchema":{"type":"object","properties":{"q":{"type":"string"},"limit":{"type":"integer","default":8,"minimum":1,"maximum":20}}},"title":"Private Markets Autocomplete","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Autocomplete"}},{"name":"private_markets_company","description":"FULL private-company profile by company_id: financials (revenue/EBITDA/EBIT/net income/EV/net debt), complete financing history (round size/valuation/date/type), classification, HQ/contact, parent hierarchy, and cikcode/ticker to join public data. Call it after resolving the id via search_suggest for the deep dive on one company.","inputSchema":{"type":"object","properties":{"company_id":{"type":"string","description":"Path parameter 'company_id' (required). Also accepts 'companyid'."},"companyid":{"type":"string","description":"Alias for company_id (PitchBook companyid)."}},"required":["company_id"]},"title":"Private Company Profile","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Company Profile"}},{"name":"private_markets_company_dossier","description":"EVERYTHING on a private company in ONE call — the complete detail-page payload: full profile (incl. financials & full financing history) + full deal history + investors + competitors + similar companies + board/team.","inputSchema":{"type":"object","properties":{"company_id":{"type":"string","description":"Path parameter 'company_id' (required). Also accepts 'companyid'."},"companyid":{"type":"string","description":"Alias for company_id (PitchBook companyid)."},"deals":{"type":"integer","default":50,"minimum":1,"maximum":200},"peers":{"type":"integer","default":25,"minimum":1,"maximum":100},"investors":{"type":"integer","default":100,"minimum":1,"maximum":300},"blocks":{"type":"string"},"fields":{"type":"string"}},"required":["company_id"]},"title":"Private Markets Company Dossier","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Company Dossier"}},{"name":"private_markets_company_page","description":"The private-company DETAIL PAGE in ONE call, render-ready: identity + key facts + the valuation/revenue/headcount tapes + the financing-in-progress card + the team roster. Money ships as both a raw `*_musd` float and a formatted `*_display` string, every series is sorted ASCENDING for charting, and the hero valuation badge is computed server-side (never presented as an estimate unless it is one). Blocks degrade independently. Use this for a company PAGE; use /dossier for the analytical fan-out (investors/competitors/similar) and /realtime for live overlay.","inputSchema":{"type":"object","properties":{"company_id":{"type":"string","description":"Path parameter 'company_id' (required). Also accepts 'companyid'."},"companyid":{"type":"string","description":"Alias for company_id (PitchBook companyid)."},"tab":{"type":"string","default":"valuation"},"deals":{"type":"integer","default":200,"minimum":1,"maximum":500},"team":{"type":"integer","default":60,"minimum":1,"maximum":500}},"required":["company_id"]},"title":"Private Company Page","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Company Page"}},{"name":"private_markets_company_valuation","description":"TENGU's private valuation mark for a company: estimate, confidence band, the additive driver bridge (Round Momentum / Company Growth / Market Drift / Syndicate Quality, which sums exactly to estimate-minus-anchor) and cohort exit probabilities. Computed in-process from our licensed pb_deal/pb_company tables — NOT private-markets's Valuation Estimate or VC Exit Predictor, which are hosted ML we do not license. FAILS CLOSED: thin coverage returns ok:false with a reason rather than a fabricated mark. Every success carries as_of + model_version.","inputSchema":{"type":"object","properties":{"company_id":{"type":"string","description":"Path parameter 'company_id' (required). Also accepts 'companyid'."},"companyid":{"type":"string","description":"Alias for company_id (PitchBook companyid)."}},"required":["company_id"]},"title":"Private Valuation Mark","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Valuation Mark"}},{"name":"private_markets_company_syndicate","description":"PER-ROUND investor syndicate — who was IN each round, who LED it, and how big the check was. The two-hop join (deal x deal-investor x investor) that the flat /investors list cannot express. Rows carry dealid so they join onto /deals, plus the round's date/label/size. Role/check/holding columns are detected at read time; a field the warehouse lacks ships null (never a fabricated 'follow'), and available_fields reports what exists.","inputSchema":{"type":"object","properties":{"company_id":{"type":"string","description":"Path parameter 'company_id' (required). Also accepts 'companyid'."},"companyid":{"type":"string","description":"Alias for company_id (PitchBook companyid)."},"limit":{"type":"integer","default":300,"minimum":1,"maximum":1000}},"required":["company_id"]},"title":"Round Syndicate","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Round Syndicate"}},{"name":"private_markets_company_realtime","description":"LIVE real-time overlay for a private company — the fast-moving complement to the (weekly, possibly STALE) private-markets profile, on a short TTL with per-field source provenance. ALWAYS call this for a private company to check whether it has GONE PUBLIC: it returns a `public_transition` block (new ticker, IPO date, SEC evidence) even when the snapshot still shows 'In IPO Registration'/no ticker — then pivot to the public-equity tools (price_snapshot / company_facts / sec_filings) for live data. Also surfaces live headcount / jobs / funding freshness when those providers are set.","inputSchema":{"type":"object","properties":{"company_id":{"type":"string","description":"Path parameter 'company_id' (required). Also accepts 'companyid'."},"companyid":{"type":"string","description":"Alias for company_id (PitchBook companyid)."}},"required":["company_id"]},"title":"Private Company Live Overlay","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Private Company Live Overlay"}},{"name":"private_markets_company_deals","description":"Funding-round and M&A deal history for a private company (deal size, type, VC round, pre/post-money valuation), newest first. Call this when the user asks 'when did X last raise / at what valuation / who acquired it'; use /investors for who participated.","inputSchema":{"type":"object","properties":{"company_id":{"type":"string","description":"Path parameter 'company_id' (required). Also accepts 'companyid'."},"companyid":{"type":"string","description":"Alias for company_id (PitchBook companyid)."},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["company_id"]},"title":"Private Markets Company Deals","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Company Deals"}},{"name":"private_markets_company_investors","description":"Investor roster for a private company, resolved through the deal-investor relation; detail=full adds every investor column (AUM, dry powder, activity). Call this when the user asks 'who backed X / which VCs are on the cap table'; use /deals for the rounds themselves.","inputSchema":{"type":"object","properties":{"company_id":{"type":"string","description":"Path parameter 'company_id' (required). Also accepts 'companyid'."},"companyid":{"type":"string","description":"Alias for company_id (PitchBook companyid)."},"limit":{"type":"integer","default":100,"minimum":1,"maximum":500},"detail":{"type":"string","enum":["lean","full"],"default":"lean"}},"required":["company_id"]},"title":"Private Markets Company Investors","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Company Investors"}},{"name":"private_markets_companies","description":"SCREEN private companies by sector, geography, financing/business status, size (total raised/valuation/employees, $MILLIONS), founding year; rows carry ticker/cikcode to join public data. PRIMARY tool for list questions like 'VC-backed fintech in Europe raised >$100M'; status=active_private excludes public/acquired/defunct.","inputSchema":{"type":"object","properties":{"sector":{"type":"string"},"industry_group":{"type":"string"},"country":{"type":"string"},"region":{"type":"string"},"financing_status":{"type":"string"},"business_status":{"type":"string"},"q":{"type":"string"},"min_raised":{"type":"number"},"max_raised":{"type":"number"},"min_valuation":{"type":"number"},"max_valuation":{"type":"number"},"min_employees":{"type":"integer"},"max_employees":{"type":"integer"},"founded_after":{"type":"integer"},"founded_before":{"type":"integer"},"has_ticker":{"type":"boolean"},"status":{"type":"string","enum":["any","active_private"],"default":"any"},"sort":{"type":"string","enum":["totalraised","lastknownvaluation","employees","yearfounded","lastfinancingdate","revenue","ebitda"],"default":"totalraised"},"desc":{"type":"boolean","default":true},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500},"offset":{"type":"integer","default":0,"minimum":0,"maximum":50000},"detail":{"type":"string","enum":["lean","full"],"default":"lean"},"fields":{"type":"string"}}},"title":"Private Markets Companies","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Companies"}},{"name":"private_markets_company_comparables","description":"Private peer set for one company: same industry sector and similar size band (0.2x-5x total raised), excluding the company itself. Call this when the user asks 'who are X's private comps' or needs a peer group for valuation framing; detail=full returns every column per peer.","inputSchema":{"type":"object","properties":{"company_id":{"type":"string","description":"Path parameter 'company_id' (required). Also accepts 'companyid'."},"companyid":{"type":"string","description":"Alias for company_id (PitchBook companyid)."},"limit":{"type":"integer","default":20,"minimum":1,"maximum":100},"detail":{"type":"string","enum":["lean","full"],"default":"lean"},"fields":{"type":"string"}},"required":["company_id"]},"title":"Private Markets Company Comparables","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Company Comparables"}},{"name":"private_markets_aggregates","description":"Private-market landscape aggregates: company counts, total and median capital raised, median valuation, median employees. Group by sector, industry_group, region, country, vertical, founded_year, ownership, financing_status, deal_year or stage — or COMMA-SEPARATE up to 3 for a COHORT (e.g. 'deal_year,stage'), which is the grain a comparables/valuation model needs (a sector median over millions of companies is too coarse to be a comp). `min_n` drops thin buckets. Call this for market-level questions like 'which sectors raise the most' — not for single companies.","inputSchema":{"type":"object","properties":{"by":{"type":"string","enum":["sector","industry_group","region","country"],"default":"sector"},"limit":{"type":"integer","default":30,"minimum":1,"maximum":200}}},"title":"Private Markets Aggregates","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Aggregates"}},{"name":"private_markets_investor","description":"Investor profile for one VC/PE/family office by investor_id: type, AUM, dry powder, year founded, investment focus, and median valuation/round. Call this when the user asks who an investor is or how big/active they are; use investor_relations for portfolio, funds, and co-investors.","inputSchema":{"type":"object","properties":{"investor_id":{"type":"string","description":"Path parameter 'investor_id' (required)."}},"required":["investor_id"]},"title":"Private Markets Investor","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Investor"}},{"name":"private_markets_fund","description":"Fund profile + performance: vintage, size, category, status, and returns (IRR/DPI/TVPI/RVPI/NAV/quartile) when loaded.","inputSchema":{"type":"object","properties":{"fund_id":{"type":"string","description":"Path parameter 'fund_id' (required)."}},"required":["fund_id"]},"title":"Private Markets Fund","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Fund"}},{"name":"private_markets_person","description":"Person profile (founder/exec/board member) by person_id: role, board seats, affiliated deals/funds, education, and professional-profile link. Call this when the user asks who a founder or executive is; use person_relations to walk their full career and deal history.","inputSchema":{"type":"object","properties":{"person_id":{"type":"string","description":"Path parameter 'person_id' (required)."}},"required":["person_id"]},"title":"Private Markets Person","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Person"}},{"name":"private_markets_limited_partner","description":"Limited-partner profile by lp_id: LP type, AUM, total/active commitments, allocation to alternatives, and openness to first-time funds. Call this when the user asks who an LP is or how much it commits; use limited_partner_relations for its fund commitments and mandates.","inputSchema":{"type":"object","properties":{"lp_id":{"type":"string","description":"Path parameter 'lp_id' (required)."}},"required":["lp_id"]},"title":"Private Markets Limited Partner","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Limited Partner"}},{"name":"private_markets_deal","description":"Single deal / financing round by deal_id: deal size, type, VC round, pre/post-money valuation, and a synopsis. Call this when the user asks about a specific round ('what was the Series C?'); use deal_relations for the investors, lenders, and tranches behind it.","inputSchema":{"type":"object","properties":{"deal_id":{"type":"string","description":"Path parameter 'deal_id' (required)."}},"required":["deal_id"]},"title":"Private Markets Deal","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Deal"}},{"name":"private_markets_service_provider","description":"Advisory-firm profile by sp_id — the law firm, investment bank, auditor or consultancy behind private-market deals: type, employees, parent, and count of companies serviced. Call this when the user asks who advised a deal or how big an adviser is; use service_provider_relations for its client list.","inputSchema":{"type":"object","properties":{"sp_id":{"type":"string","description":"Path parameter 'sp_id' (required)."}},"required":["sp_id"]},"title":"Private Markets Service Provider","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Service Provider"}},{"name":"private_markets_service_provider_relations","description":"Reverse adviser index for one service provider: every deal, company, investor, fund or LP the firm has advised (relation= picks the edge, limit default 50). PRIMARY tool for 'which deals did this bank run?' / 'who does this law firm work for?' — the counterparty-selection view the forward service_providers relation cannot express.","inputSchema":{"type":"object","properties":{"sp_id":{"type":"string","description":"Path parameter 'sp_id' (required)."},"relation":{"type":"string","enum":["deals","companies","investors","funds","limited_partners","board"]},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["sp_id","relation"]},"title":"Private Markets Service Provider Relations","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Service Provider Relations"}},{"name":"private_markets_relations","description":"Catalogue of every queryable relation per private-markets entity type — the map of the private-capital graph. Call it first when unsure which relation= value a company/investor/fund/deal/person/LP relations tool accepts before traversing.","inputSchema":{"type":"object","properties":{}},"title":"Private Markets Relations","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Relations"}},{"name":"private_markets_company_relations","description":"Traverse a company's private-market graph one edge per call (relation=): competitors, investors, board, similar companies, affiliates, buyside targets, service providers, industries/verticals, news, financials, employee history and more. Call this when the user asks who backs, competes with, or sits on the board of a company.","inputSchema":{"type":"object","properties":{"company_id":{"type":"string","description":"Path parameter 'company_id' (required). Also accepts 'companyid'."},"companyid":{"type":"string","description":"Alias for company_id (PitchBook companyid)."},"relation":{"type":"string","enum":["competitors","investors","board","similar","affiliates","buyside","lead_partners","service_providers","industries","verticals","naics","sic","locations","news","financials","clinical_trials","market_analysis","stock_exchanges","entity_types","morningstar_codes","employee_history","cik_codes"]},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["company_id"]},"title":"Private Markets Company Relations","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Company Relations"}},{"name":"private_markets_deal_relations","description":"Traverse a deal's graph one edge per call (relation=): investors, tranches, debt lenders, sellers, service providers, bonds, loans, distribution beneficiaries. Call this when the user asks who funded, lent into, or sold in a specific round after fetching the deal itself.","inputSchema":{"type":"object","properties":{"deal_id":{"type":"string","description":"Path parameter 'deal_id' (required)."},"relation":{"type":"string","enum":["investors","tranches","debt_lenders","sellers","service_providers","bonds","loans","distrib_beneficiaries"]},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["deal_id"]},"title":"Private Markets Deal Relations","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Deal Relations"}},{"name":"private_markets_investor_relations","description":"Traverse an investor's graph one edge per call (relation=): portfolio companies, funds raised, co-investors, LPs, board, deals, news, and investment focus by industry/year. Call this when the user asks what a VC/PE firm holds, who invests alongside it, or who its LPs are.","inputSchema":{"type":"object","properties":{"investor_id":{"type":"string","description":"Path parameter 'investor_id' (required)."},"relation":{"type":"string","enum":["portfolio_companies","funds","co_investors","board","limited_partners","affiliates","deals","locations","news","invest_industries","invest_years","service_providers","entity_types","types"]},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["investor_id"]},"title":"Private Markets Investor Relations","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Investor Relations"}},{"name":"private_markets_fund_relations","description":"Traverse a fund's graph one edge per call (relation=): investors, LP commitments, team, portfolio holdings, close history, fund family, service providers, and returns time-series. Call this when the user asks what a fund holds, who committed capital, or how it has performed.","inputSchema":{"type":"object","properties":{"fund_id":{"type":"string","description":"Path parameter 'fund_id' (required)."},"relation":{"type":"string","enum":["investors","lp_commitments","team","portfolio_holdings","close_history","family","service_providers","returns"]},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["fund_id"]},"title":"Private Markets Fund Relations","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Fund Relations"}},{"name":"private_markets_person_relations","description":"Traverse a person's graph one edge per call (relation=): career positions, board seats, education, affiliated deals/funds, advisory roles. Call this when the user asks where a founder or exec worked before, what boards they sit on, or which deals they touched.","inputSchema":{"type":"object","properties":{"person_id":{"type":"string","description":"Path parameter 'person_id' (required)."},"relation":{"type":"string","enum":["positions","board_seats","education","affiliated_deals","affiliated_funds","advisory"]},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["person_id"]},"title":"Private Markets Person Relations","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Person Relations"}},{"name":"private_markets_limited_partner_relations","description":"Traverse an LP's graph one edge per call (relation=): fund commitments, board, mandates, news, service providers. Call this when the user asks which funds an LP has committed to or what mandates it is running.","inputSchema":{"type":"object","properties":{"lp_id":{"type":"string","description":"Path parameter 'lp_id' (required)."},"relation":{"type":"string","enum":["fund_commitments","board","mandates","news","service_providers"]},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["lp_id"]},"title":"Private Markets Limited Partner Relations","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Private Markets Limited Partner Relations"}},{"name":"tape_bars","description":"Intraday minute bars for one equity from FIRM's own market-data capture (~10.5k tickers, extended hours included). Use when an agent needs REAL intraday price/volume history — how a ticker traded through an event, VWAP context, or a finer-grained chart than daily bars. Archive begins 2026-05-10; pass date=YYYY-MM-DD (or start+end, max 5 trading days). 1m is the native grain; 5m/15m/1h are resampled server-side.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"date":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"interval":{"type":"string","enum":["1m","5m","15m","1h"],"default":"1m"},"limit":{"type":"integer","default":5000,"minimum":1,"maximum":10000}},"required":["ticker"]},"title":"Intraday Bars","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Intraday Bars"}},{"name":"tape_index_bars","description":"Intraday minute bars for the major index tapes — SPX, NDX, DJI, RUT, VIX — from FIRM's own market-data indices capture. Use for intraday market/vol context around an event (how did SPX and VIX move through the FOMC statement?) or as the benchmark leg next to tape_bars. Archive begins 2026-05-14; one day or max 5 trading days per call.","inputSchema":{"type":"object","properties":{"index":{"type":"string","description":"Path parameter 'index' (required)."},"date":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"interval":{"type":"string","enum":["1m","5m","15m","1h"],"default":"1m"},"limit":{"type":"integer","default":5000,"minimum":1,"maximum":10000}},"required":["index"]},"title":"Index Intraday Bars","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Index Intraday Bars"}},{"name":"tape_options","description":"Raw options trade prints for one underlying on one trading day from FIRM's own market-data capture — per-print premium (notional_usd), strike, expiry, block/sweep flags, sorted largest premium first. Use when an agent needs the actual options tape behind a flow signal: whale prints, sweep activity, what struck around a specific time. Archive begins 2026-05-11; date is mandatory (70 GB day-partitioned table).","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"date":{"type":"string"},"min_premium":{"type":"number","minimum":0},"side":{"type":"string","enum":["C","P"]},"limit":{"type":"integer","default":1000,"minimum":1,"maximum":5000}},"required":["ticker","date"]},"title":"Options Tape","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Options Tape"}},{"name":"tape_futures","description":"Raw CME futures trade prints for one root (NG, CL, ES...) and one day, from FIRM's own capture: per-print price, size, notional, block flag across contract months. Call it for real futures flow: energy tape, rolls, block prints. date mandatory; archive from 2026-05-13, mostly CME energy (NG heavy) — empty = not-yet-captured, not quiet.","inputSchema":{"type":"object","properties":{"root":{"type":"string","description":"Path parameter 'root' (required)."},"date":{"type":"string"},"limit":{"type":"integer","default":1000,"minimum":1,"maximum":5000}},"required":["root","date"]},"title":"Futures Tape","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Futures Tape"}},{"name":"tape_futures_curve","description":"Futures term structure for one CME root (27 roots incl. ES, NQ, CL, NG, GC, ZN) from FIRM's daily chain snapshots — per contract month: last/settlement, bid/ask, session OHLC, volume, open interest, days-to-expiry. Call it for curve shape (contango/backwardation), roll, or OI distribution; omit date for latest, snapshots begin 2026-05-18.","inputSchema":{"type":"object","properties":{"root":{"type":"string","description":"Path parameter 'root' (required)."},"date":{"type":"string"},"limit":{"type":"integer","default":120,"minimum":1,"maximum":500}},"required":["root"]},"title":"Futures Curve","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Futures Curve"}},{"name":"tape_microstructure","description":"60s microstructure windows per ticker from FIRM's live tape: rolling vwap, trade count/avg size, block count/vol, buy/sell imbalance, large-trade premium. Call it to separate smart-money accumulation from retail moves. Active-set coverage (~few hundred names/session; empty = uncaptured); omit date for latest, capture from 2026-05-13.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"date":{"type":"string"},"limit":{"type":"integer","default":500,"minimum":1,"maximum":5000}},"required":["ticker"]},"title":"Microstructure Windows","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Microstructure Windows"}},{"name":"intel_options_flow_history","description":"Historical options-flow aggregates for one ticker — the ~60s warehouse capture behind the live /intel/options_flow tool. Call when you need how flow EVOLVED (e.g. 'was NVDA flow bullish before the earnings pop?') rather than the current snapshot. Rows: as_of_ts, polarity (-1..1 net bullish/bearish score), n_alerts, premium_total (USD) + a window summary (total premium, avg polarity, bullish/bearish snapshot counts). REQUIRES date OR start(+end), max 7 days per request (422 otherwise); warehouse coverage begins 2026-05-10. 5-min cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"date":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"min_premium":{"type":"number","minimum":0},"side":{"type":"string","enum":["bullish","bearish"]},"limit":{"type":"integer","default":1000,"minimum":1,"maximum":5000}},"required":["ticker"]},"title":"Options Flow History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Options Flow History"}},{"name":"intel_iv_analytics","description":"LIVE implied-volatility analytics in one call: IV RANK (current IV + its 1-year percentile — the standard 'is vol cheap or rich' gauge, with a plain-language verdict), SKEW (risk-reversal per delta — put-vs-call demand / crash premium), and TERM STRUCTURE (IV per expiry + option-implied move, labelled backwardation vs contango). Use for 'should I buy or sell premium on X', earnings-vol setups, and hedging cost. Omit date for the latest session. Each block degrades independently. NOT the same as /intel/vol_surface, which serves the lagged academic surface.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"date":{"type":"string"},"limit":{"type":"integer","default":60,"minimum":1,"maximum":400}},"required":["ticker"]},"title":"IV Analytics","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"IV Analytics"}},{"name":"intel_gex_history","description":"Historical dealer gamma-exposure (GEX) for one ticker — daily per-strike snapshots behind the live /intel/gex tool. Call for 'how did dealer positioning shift into OPEX / earnings?'. Default returns ONE ROW PER TRADING DAY (call/put/net GEX totals, strike count, max-gamma strike); pass per_strike=true for the full strike ladder (gamma/charm/vanna + call/put GEX per strike). REQUIRES date OR start(+end), max 30 days per request (422 otherwise); coverage begins 2026-05-10. 10-min cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"date":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"per_strike":{"type":"boolean","default":false},"limit":{"type":"integer","default":10000,"minimum":1,"maximum":50000}},"required":["ticker"]},"title":"Gamma Exposure History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Gamma Exposure History"}},{"name":"intel_darkpool_history","description":"Historical dark-pool (off-exchange) prints for one ticker — the per-print warehouse capture behind the live /intel/darkpool tool. Call to find WHEN large blocks hit and whether they printed at bid/mid/ask. Each row is an individual execution: executed_at, price, size, premium (USD), market center + the NBBO at print time; newest first, plus total premium/size summary. REQUIRES date OR start(+end), max 7 days per request (422 otherwise); coverage begins 2026-05-10. 5-min cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"date":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"min_premium":{"type":"number","minimum":0},"limit":{"type":"integer","default":1000,"minimum":1,"maximum":5000}},"required":["ticker"]},"title":"Dark Pool History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Dark Pool History"}},{"name":"intel_borrow_cost_history","description":"Daily securities-lending borrow-cost HISTORY for one ticker from the licensed-research warehouse (default: last 90 days of coverage; max 365-day window). Primary source securities-finance Securities Finance (~50M rows 2010->latest licensed-research drop): annualized fee_pct / rebate_pct, utilization_pct and on-loan/lendable share quantities — the institutional squeeze-watch series (rising fee + utilization = tightening borrow). Falls back to implied-vol option-implied borrow (shortest tenor per day) when securities-finance lacks the name. licensed-research refreshes on a lag — check as_of before treating the newest row as current; use /intel/borrow_cost for the live snapshot. 1h cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"start":{"type":"string"},"end":{"type":"string"},"limit":{"type":"integer","default":365,"minimum":1,"maximum":2000}},"required":["ticker"]},"title":"Borrow Cost History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Borrow Cost History"}},{"name":"transcripts_list","description":"List a company's earnings calls and investor-event transcripts (licensed institutional, 1.75M calls), newest first — call this FIRST to get the ``event_id`` you pass to the full-text route. One row per call (versions collapsed to the best copy: Proofed > Edited > Spellchecked) with date, title and event type. Full text coverage is 2020-2025; older calls are metadata-only.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"since":{"type":"string"},"limit":{"type":"integer","default":25,"minimum":1,"maximum":100}},"required":["ticker"]},"title":"Earnings Call List","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Earnings Call List"}},{"name":"transcript_text","description":"Full earnings-call transcript as ordered speaker turns — use when the user wants what management or analysts actually SAID on a call. ``event_id`` comes from /api/v3/transcripts/{ticker} or /transcripts/search. Each turn carries speaker name + role (executive/analyst/operator) and section (presentation vs qa). ~2 MB text cap (``truncated: true`` when hit — refetch with components= to slice). Text coverage 2020-2025.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"event_id":{"type":"string","description":"Path parameter 'event_id' (required)."},"components":{"type":"string","enum":["all","presentation","qa"],"default":"all"},"max_turns":{"type":"integer","default":800,"minimum":1,"maximum":1500}},"required":["ticker","event_id"]},"title":"Earnings Call Transcript","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Earnings Call Transcript"}},{"name":"transcripts_search","description":"Search earnings-call transcripts. scope=headlines (default) searches call titles across ALL companies; scope=text searches the spoken words inside one company's transcripts (ticker REQUIRED) and returns per-call hit counts + a snippet. Use when the user asks 'which calls mention X' — then fetch the full text with the returned event_id.","inputSchema":{"type":"object","properties":{"q":{"type":"string"},"ticker":{"type":"string"},"since":{"type":"string"},"scope":{"type":"string","enum":["headlines","text"],"default":"headlines"},"limit":{"type":"integer","default":20,"minimum":1,"maximum":50}}},"title":"Transcript Search","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Transcript Search"}},{"name":"corporate_events","description":"Company corporate-event history from a licensed events feed (41.9M events, 1990-2026): M&A, guidance changes, buybacks, exec changes, activism, offerings, index adds/drops + 100 more types, newest-first dated headlines + summaries. PRIMARY tool for 'what happened at COMPANY'; filter type= (see /api/v3/events/types), since/until.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"type":{"type":"string"},"since":{"type":"string"},"until":{"type":"string"},"limit":{"type":"integer","default":100,"minimum":1,"maximum":500}},"required":["ticker"]},"title":"Corporate Events","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Corporate Events"}},{"name":"corporate_event_types","description":"Legend of the 105 licensed institutional KeyDev corporate-event types: id, human label, and the slug accepted by the type= filter of /api/v3/events/{ticker}. Static — call once to discover valid event-type filters.","inputSchema":{"type":"object","properties":{}},"title":"Event Types","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Event Types"}},{"name":"credit_snapshot","description":"One-call credit snapshot for a company — call FIRST for any 'how risky is this company's debt?' question: latest securities-finance 5Y CDS spread (bps) with ~90-quote trend + market-implied default probability, current S&P rating with the last upgrade/downgrade action, a recent FINRA TRACE bond yield/volume summary, and the syndicated-loan-facility count. Blocks degrade independently (a missing dataset returns an error field in its block, never a failed call). Drill down with the credit bonds/cds/ratings/loans tools.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Credit Snapshot","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Credit Snapshot"}},{"name":"credit_bonds","description":"FINRA TRACE corporate-bond trade prints for one issuer — individual OTC trades (price, yield, volume, buy/sell side) showing where the company's bonds ACTUALLY trade (realised credit spreads, not quotes). Matched by the FINRA bond-symbol prefix of the equity ticker; window spans at most 90 days (422 beyond). TRACE on licensed-research lags realtime by months — when the default recent window is empty the response includes latest_available; page backwards from it.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"start":{"type":"string"},"end":{"type":"string"},"limit":{"type":"integer","default":1000,"minimum":1,"maximum":5000}},"required":["ticker"]},"title":"Bond Trades","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Bond Trades"}},{"name":"origin_short_activity","description":"How shorted is this name, from the tape itself: the DAILY consolidated short-volume prints (short ratio per session, full-market coverage) joined with the settled SHORT INTEREST published twice monthly (position, days-to-cover). Call it for squeeze setups, crowded shorts, or to check whether daily shorting is rising while settled interest lags. The two measures are a FLOW and a STOCK and can diverge — never treat them as the same number. Share volume is FRACTIONAL by design (retail fractional trading), so sub-1-share values are genuine.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"days":{"type":"integer","default":30,"minimum":5,"maximum":180}},"required":["ticker"]},"title":"Short Activity","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Short Activity"}},{"name":"origin_whale_holdings","description":"What the tracked managers own, as filed on Form 13F: latest-period positions with value, share/principal count and portfolio weight, filterable by manager or issuer. Call it for whale positioning and conviction sizing. 13F is filed within 45 days of quarter end and covers LONG US equity only — it is a lagged, partial view of a book, never a live one.","inputSchema":{"type":"object","properties":{"manager":{"type":"string"},"ticker":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}}},"title":"Whale Holdings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Whale Holdings"}},{"name":"origin_insider_flow","description":"Insider transactions straight from the Form 4 filings: owner, title, transaction code, direction, shares, price and shares held after. Call it for insider conviction around events. Transaction codes matter — 'P'/'S' are open-market buys/sells while 'M' is an option exercise and 'A' an award; treating them alike overstates conviction. Coverage is a tracked issuer set, not the whole market.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"days":{"type":"integer","default":90,"minimum":7,"maximum":365},"limit":{"type":"integer","default":100,"minimum":1,"maximum":500}},"required":["ticker"]},"title":"Insider Flow","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Insider Flow"}},{"name":"origin_macro_pulse","description":"One call for the cross-asset state of the world from the issuing authorities: volatility futures TERM STRUCTURE (contango vs backwardation — the stress regime flag), the composite LEADING INDICATOR by country, official-sector positioning (primary-dealer series + central-bank balance sheet), recent TREASURY AUCTIONS, and physical-trade throughput at the maritime chokepoints. Call it to frame regime before a single-name view. Each block reports its own availability; the leading indicator publishes with a ~2-month reference lag BY CONSTRUCTION — that is not staleness.","inputSchema":{"type":"object","properties":{}},"title":"Macro Pulse","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Macro Pulse"}},{"name":"origin_ipo_pipeline","description":"What is going public: deals that are priced, upcoming or newly filed, with offer size, share count, exchange and dates. Call it for new-issue supply, going-public timing, or to corroborate a private-company transition signal. This is a SECOND, independent view of going-public activity — corroborate it against the filing index rather than treating either source as complete alone.","inputSchema":{"type":"object","properties":{"status":{"type":"string","enum":["priced","upcoming","filed"],"default":"upcoming"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":200}}},"title":"IPO Pipeline","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"IPO Pipeline"}},{"name":"credit_indices","description":"Credit-index composites — the credit market's VIX-equivalents: CDX (NA IG/HY) + iTraxx (Europe/Asia/SovX) daily composite spreads and prices by series/version/tenor, 2018 to T-2. Call it for credit-market risk appetite, spread-widening episodes, or cross-asset stress context. FRESHNESS IS T-2 (daily composite) — never present as realtime.","inputSchema":{"type":"object","properties":{"family":{"type":"string","enum":["CDX","ITRAXX-EUROPE","ITRAXX-ASIA","ITRAXX-SOVX"]},"index_ticker":{"type":"string"},"days":{"type":"integer","default":7,"minimum":1,"maximum":90},"limit":{"type":"integer","default":2000,"minimum":1,"maximum":5000}}},"title":"Credit Indices","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Credit Indices"}},{"name":"credit_cds_history","description":"Daily 5Y single-name CDS spread history: composite par spreads (raw + bps), market-implied default probability, average/implied agency rating. Call it for how default risk has trended (credit_snapshot is the one-call snapshot). Coverage 2005 to end-2025, 5Y tenor; tickers match the equity symbol for liquid US names (F, T, GE...).","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"start":{"type":"string"},"end":{"type":"string"},"limit":{"type":"integer","default":1000,"minimum":1,"maximum":5000}},"required":["ticker"]},"title":"CDS Spread History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"CDS Spread History"}},{"name":"credit_ratings","description":"Full S&P rating-action history for one issuer's debt — every licensed institutional action (new rating, upgrade, downgrade, outlook/creditwatch change) with from/to symbols, newest first. Use when asked what a company is rated or when/why it was up/downgraded. Equity ticker is resolved to the issuer CUSIP-6 via the fundamentals security master; actions are instrument-level, so several rows can share a date.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":200,"minimum":1,"maximum":5000}},"required":["ticker"]},"title":"Credit Ratings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Credit Ratings"}},{"name":"credit_loans","description":"Syndicated loan book for one borrower: per-facility size, type (revolver/term), maturity, security/seniority, all-in drawn/undrawn spread bps, covenants; include_lenders adds recent-facility syndicate allocations. Private-credit complement to the TRACE bond tape; call for leverage, facility or covenant questions; match on borrower ticker.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":100,"minimum":1,"maximum":1000},"include_lenders":{"type":"boolean","default":false}},"required":["ticker"]},"title":"Loan Book","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Loan Book"}},{"name":"factor_characteristics","description":"Latest monthly firm-characteristic vector from the academic firm-characteristic panel (~460 columns incl. the 102 published anomaly characteristics — size, book-to-market, momentum, liquidity, accruals, analyst coverage, plus macro interactions). Call it when you need the full quant feature set for one stock, or a point-in-time vector via as_of. Ticker is resolved to its internal security key automatically.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"as_of":{"type":"string"}},"required":["ticker"]},"title":"Factor Characteristics","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Factor Characteristics"}},{"name":"factor_characteristic_history","description":"Monthly time series of ONE factor characteristic for a stock (e.g. mom_12m, bm, mktcap, realized_vol, sue, turnover), newest first. Call it to chart how an anomaly signal evolved for a name or to compare signal drift across names; a typo in `char` returns 422 with the full list of valid column names.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"char":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"limit":{"type":"integer","default":600,"minimum":1,"maximum":1200}},"required":["ticker"]},"title":"Factor Signal History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Factor Signal History"}},{"name":"factor_exposures","description":"Rolling factor betas (Fama-French 5 + momentum) for one stock: beta_mkt/smb/hml/rmw/cma/umd with alpha, idiosyncratic/total volatility and regression R², plus the monthly history of those loadings. Call it to know what factor bets a position actually carries before hedging or sizing it.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":60,"minimum":1,"maximum":1200}},"required":["ticker"]},"title":"Factor Exposures","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Factor Exposures"}},{"name":"governance_dossier","description":"One-call corporate-governance dossier: board size + composition (independent vs executive directors, current members, from board-relationship), director interlocks with other boards, restatement record, auditor-change history, and the latest year's executive compensation (CEO/CFO and top-5 named officers, from executive-compensation). Call it for any management-quality, board-oversight or comp question; blocks degrade independently. For graded forensic red flags use /api/v3/intel/accounting_flags.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."}},"required":["ticker"]},"title":"Governance Dossier","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Governance Dossier"}},{"name":"accounting_flags","description":"Forensic accounting red flags with plain-language reasons, from the forensic-audit dataset: fraud/SEC-investigation/adverse restatements, auditor resignations, going-concern or disagreement auditor changes, auditor churn, audit-fee swings >50% yoy, and non-audit-fee dominance (independence risk). Each flag carries severity + reason with the evidence rows attached. Call it before trusting reported financials on any name with earnings-quality doubts (e.g. SMCI returns the 2024 EY-resignation cluster); an empty flags list on a covered name is a genuinely clean record.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500}},"required":["ticker"]},"title":"Accounting Red Flags","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Accounting Red Flags"}},{"name":"news_sentiment_history","description":"Daily aggregated news sentiment for one company back to 2000 — mean event sentiment (ESS), event count and mean relevance per day from the news-analytics archive (2000-2025) stitched with the live feed. Call it for long-run sentiment regimes or news reaction around past events; for today's headlines use the /news routes instead.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"start":{"type":"string"},"end":{"type":"string"},"min_relevance":{"type":"number","default":70.0,"minimum":0,"maximum":100},"entity":{"type":"string"},"limit":{"type":"integer","default":400,"minimum":1,"maximum":10000}},"required":["ticker"]},"title":"News Sentiment History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"News Sentiment History"}},{"name":"intel_sec13f_history","description":"Institutional-holder history — a holder × quarter matrix of 13F positions (shares per quarter-end + latest value) from the institutional-holdings 13F archive. Call it to track when funds built or exited a stock across quarters; for only the latest snapshot use /intel/sec13f.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"quarters":{"type":"integer","default":12,"minimum":1,"maximum":40},"top":{"type":"integer","default":25,"minimum":1,"maximum":100}},"required":["ticker"]},"title":"SEC 13F History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"SEC 13F History"}},{"name":"intel_street_estimates_history","description":"Analyst-level estimate revision timeline — every individual broker estimate (announce/revision dates, analyst id, fiscal period, value, realised actual) from the analyst-estimate detail archive back to 1980. Call it to reconstruct how the street walked numbers up or down before a print; for the consensus snapshot use /intel/street_estimates.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"measure":{"type":"string","default":"EPS"},"days":{"type":"integer","default":365,"minimum":1,"maximum":9500},"limit":{"type":"integer","default":2000,"minimum":1,"maximum":50000}},"required":["ticker"]},"title":"Estimate Revisions","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Estimate Revisions"}},{"name":"intel_street_estimates_guidance","description":"Management guidance history — every company-issued guidance range (measure, period, low/high, announce date, street consensus at that date) from the analyst-estimate Guidance archive. Call it to compare what management promised vs what the street expected, or to study guidance-cut reactions.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"measure":{"type":"string"},"start":{"type":"string"},"limit":{"type":"integer","default":500,"minimum":1,"maximum":5000}},"required":["ticker"]},"title":"Guidance History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Guidance History"}},{"name":"prices_history","description":"Survivorship-bias-free daily price history — research-grade daily closes, total returns, volume and cumulative split adjustment factors (cfacpr/cfacshr) 2000-2024, stitched with live market-data daily bars 2025→today, plus the research-grade delisting record. Call it for backtests and long-horizon charts; for intraday or recent-only bars use /api/market/ohlc.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"start":{"type":"string"},"end":{"type":"string"},"limit":{"type":"integer","default":15000,"minimum":1,"maximum":15000}},"required":["ticker"]},"title":"Deep Price History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Deep Price History"}},{"name":"prices_corporate_actions","description":"Complete corporate-action history — every cash dividend, stock split and distribution (research-grade distcd-coded with divamt, facpr/facshr factors and declare/ex/record/pay dates) back to first listing. Call it to build adjusted price series or dividend-growth analyses.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"start":{"type":"string"},"limit":{"type":"integer","default":1000,"minimum":1,"maximum":5000}},"required":["ticker"]},"title":"Corporate Actions","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Corporate Actions"}},{"name":"intel_short_interest_history","description":"Deep short-selling history — daily off-exchange short-volume series (short vs total shares across FINRA venues + short ratio, back to 2006) plus the official bi-monthly short-interest series from the securities-finance/licensed-research archive. Call it for multi-year squeeze setups or shorting pressure around events; for today's borrow cost use /intel/short_interest.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"start":{"type":"string"},"end":{"type":"string"},"limit":{"type":"integer","default":400,"minimum":1,"maximum":5000}},"required":["ticker"]},"title":"Short Interest History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Short Interest History"}},{"name":"workforce_momentum","description":"Monthly EMPLOYMENT MOMENTUM for one company — headcount trend, hiring vs attrition and salary level, from a monthly workforce panel rather than an annual filing. Returns the latest month's headcount with its hiring, attrition and net-hiring rates (percent of headcount per month plus annualized twins), 1m/3m/12m headcount growth, average salary per employee (USD per year) with its coverage, and the full monthly series. Call it to see a company expanding or shrinking MONTHS before the next 10-K, or to catch attrition rising while headcount looks flat. Values are modelled estimates, not company-reported figures. The panel is being backfilled: `coverage` reports the months actually present and any lookback the panel cannot support returns null with a reason — never an interpolated number. Ticker is not unique across venues; the response names the entity served and lists alternates you can pin with employer_id.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"months":{"type":"integer","default":24,"minimum":2,"maximum":120},"employer_id":{"type":"integer","minimum":1}},"required":["ticker"]},"title":"Hiring Momentum","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Hiring Momentum"}},{"name":"workforce_layoffs","description":"WARN-Act LAYOFF FILINGS for one company — the public notices an employer must file WEEKS BEFORE a cut, so they lead the press release and the next earnings call. Returns each filing (notice date, effective date, employees affected, site city/state, layoff type) newest first, plus TRUE window totals, a month-by-month series and the largest single filing; with_workforce also sizes the total against estimated headcount and names the headcount month used. Call it as a downside early-warning, or to confirm the scale of an announced restructuring — filings are SITE-level, so one restructuring appears as many rows. Coverage is US WARN notices from 1989 forward including forward-dated notices; only employers matched to a listed symbol are reachable by ticker, so an empty result is not proof there were no layoffs.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"months":{"type":"integer","default":24,"minimum":1,"maximum":480},"limit":{"type":"integer","default":200,"minimum":1,"maximum":2000},"with_workforce":{"type":"boolean","default":true},"employer_id":{"type":"integer"}},"required":["ticker"]},"title":"Layoff Filings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Layoff Filings"}},{"name":"workforce_layoff_screen","description":"CROSS-SECTIONAL LAYOFF SCREEN — which listed companies filed WARN-Act layoff notices in the last N days, ranked by employees noticed. One row per ticker (company, filing count, employees noticed, first/latest event date, states touched, largest single filing) across the whole listed universe. Call it for 'who is cutting right now' — notices are filed weeks before the cut, so this surfaces restructurings before the press release. Only employers matched to a listed symbol appear; most WARN filers are private and are excluded by design. For one company's filings use /workforce/layoffs/{ticker}.","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":90,"minimum":1,"maximum":1825},"min_employees":{"type":"integer","default":0,"minimum":0,"maximum":1000000},"state":{"type":"string"},"limit":{"type":"integer","default":100,"minimum":1,"maximum":1000}}},"title":"Layoff Screen","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Layoff Screen"}},{"name":"workforce_momentum_screen","description":"CROSS-SECTIONAL HIRING SCREEN — rank listed employers by headcount growth between the panel's latest month and N months earlier: ticker, company, headcount then and now, percent and absolute change, latest hiring and attrition rates and average salary, sorted fastest-growing or fastest-shrinking. This is the workforce factor as a screen — who is actually staffing up (or quietly shrinking) months before it reaches a filing. The monthly panel is MID-BACKFILL, so a months_back longer than the loaded window returns an explicit warning listing the lookbacks that ARE available — never a silently shortened comparison.","inputSchema":{"type":"object","properties":{"months_back":{"type":"integer","default":1,"minimum":1,"maximum":36},"min_headcount":{"type":"number","default":1000,"minimum":0},"order":{"type":"string","enum":["fastest_growing","fastest_shrinking"],"default":"fastest_growing"},"limit":{"type":"integer","default":100,"minimum":1,"maximum":500}}},"title":"Hiring Screen","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Hiring Screen"}},{"name":"supply_chain_relationships","description":"The SUPPLY-CHAIN GRAPH around one company — its customers, suppliers, competitors and partners in one call, each with the relationship's start date, whether it is still open, which side reported it, and revenue dependence where it was estimated. Both directions are merged and normalised to the queried company's point of view, so 'customers' includes companies that report THIS company as their supplier. Call it to map second-order exposure (whose earnings move when this name moves) or to find the listed suppliers behind a product cycle. Defaults to CURRENT relationships; status=all or as_of=YYYY-MM-DD gives history. One entry per counterparty by default (several records can back one pair) — group_by=record gives the underlying versions. revenue_percent belongs to the company named in revenue_percent_of_ticker, is an ESTIMATE on every row, and is present on only a minority of edges; coverage is reported per group.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"rel_type":{"type":"string","enum":["customers","suppliers","competitors","partners"]},"status":{"type":"string","enum":["current","all"],"default":"current"},"as_of":{"type":"string"},"listed_only":{"type":"boolean","default":false},"group_by":{"type":"string","enum":["counterparty","record"],"default":"counterparty"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500},"company_id":{"type":"string"}},"required":["ticker"]},"title":"Supply Chain Map","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Supply Chain Map"}},{"name":"supply_chain_revenue_dependence","description":"REVENUE DEPENDENCE, both sides — the revenue-at-risk map around one company. `customer_concentration`: how much of THIS company's revenue each customer accounts for. `dependents_on_company`: other companies whose revenue depends on THIS one (e.g. a component maker that books most of its revenue from one handset vendor) — the list that reprices when this name changes its orders, and it is in no filing screen. Percentages are of the DEPENDENT company's revenue and every row names whose revenue it is, so the number can never be read backwards. Coverage is sparse and disclosed: only a minority of relationships carry an estimated percentage, so absence means UNKNOWN, never zero.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"status":{"type":"string","enum":["current","all"],"default":"current"},"as_of":{"type":"string"},"min_percent":{"type":"number","default":0,"minimum":0,"maximum":100},"limit":{"type":"integer","default":50,"minimum":1,"maximum":500},"company_id":{"type":"string"}},"required":["ticker"]},"title":"Revenue Dependence","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Revenue Dependence"}},{"name":"supply_chain_geo_revenue","description":"GEOGRAPHIC REVENUE EXPOSURE for one company — where the revenue actually comes from, estimated region by region and country by country for a fiscal period, with a per-row confidence score. This is the tariff / geopolitical lens: it answers 'how much of this company's revenue is China?' for names that never break that out. Returns the requested hierarchy layer as `regions`, the country leaves as `countries`, concentration metrics (largest country share and an HHI), the period served and the other periods available. ?country=CN,TW returns a per-period HISTORY for exactly those countries. Each layer sums to 100 on its own, so never add a region to a country. Amounts carry NO currency code in the source and the reporting currency can change between periods, so compare on PERCENT, not amount. Estimates, not company-reported segments — for reported segments use /fundamentals/segments/{ticker}.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"period":{"type":"string"},"layer":{"type":"integer","default":1,"minimum":0,"maximum":4},"country":{"type":"string"},"top_countries":{"type":"integer","default":25,"minimum":0,"maximum":250},"company_id":{"type":"string"}},"required":["ticker"]},"title":"Revenue by Country","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Revenue by Country"}},{"name":"fundamentals_pit","description":"WHAT THE MARKET ACTUALLY KNEW on a given date — as-FIRST-REPORTED quarterly financials for a ticker as they stood on `as_of`: for each fiscal period, the latest published version whose knowledge date is on or before that day. Later restatements are excluded BY CONSTRUCTION, which is what makes this safe to backtest on — the ordinary financials endpoints serve the restated view and will leak look-ahead. Each period also reports whether it has been restated since and what the figure reads today, so you are never silently handed a stale number. Omit as_of for the current view. Figures are in MILLIONS of each filing's own reporting currency (carried per period) — never assume USD.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"as_of":{"type":"string"},"periods":{"type":"integer","default":8,"minimum":1,"maximum":60},"indfmt":{"type":"string"},"consol":{"type":"string"},"popsrc":{"type":"string"},"datafmt":{"type":"string"}},"required":["ticker"]},"title":"Point-In-Time Financials","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Point-In-Time Financials"}},{"name":"fundamentals_pit_vintages","description":"THE RESTATEMENT TRAIL for one fiscal quarter — every published version of the period in order, each with the day it became the live view, the day it was superseded, and exactly WHICH line items changed from the previous version. Call it to check whether a figure you are relying on has been quietly revised, and by how much: a quarter can be restated several times, and only the trail shows it. The still-current version reports a null supersede date rather than a far-future sentinel. Omit datadate for the most recent quarter held.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"datadate":{"type":"string"},"indfmt":{"type":"string"},"consol":{"type":"string"},"popsrc":{"type":"string"},"datafmt":{"type":"string"}},"required":["ticker"]},"title":"Restatement History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Restatement History"}},{"name":"fundamentals_pit_coverage","description":"The honest bounds of the point-in-time primitive: how many published versions are held, for how many companies, the span of KNOWLEDGE dates (which is what an as_of query can answer) and the span of fiscal periods covered. Call it before trusting an as_of earlier than the archive starts — outside the knowledge span the answer is 'not knowable here', not 'no data'. Pass a ticker for per-company bounds.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"}}},"title":"Point-In-Time Coverage","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Point-In-Time Coverage"}},{"name":"intel_insider_flow","description":"INSIDER TRANSACTIONS SPLIT BY WHETHER THE TRADE WAS PRE-SCHEDULED — Form 4/5 activity for one company with the metadata free feeds drop: the Rule 10b5-1 flag and the filing lag. Sales made under a 10b5-1 plan were scheduled in advance and carry NO view, so they are aggregated separately from discretionary trades and never blended into one 'net insider flow'; a third bucket holds rows with no plan flag, which is unknown, not discretionary. Only open-market buys and sells enter the flow buckets — grants, option exercises and tax-withholding are counted apart. Use as_of to reproduce what was PUBLIC on a date: it filters on the filing date, the only correct as-of key for insider data (a trade-date filter leaks late-filed trades).","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"start":{"type":"string"},"end":{"type":"string"},"as_of":{"type":"string"},"record_type":{"type":"string","enum":["nonderiv","deriv"]},"limit":{"type":"integer","default":200,"minimum":1,"maximum":2000}},"required":["ticker"]},"title":"Insider Flow (10b5-1 Split)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Insider Flow (10b5-1 Split)"}},{"name":"intel_insider_form144","description":"INSIDER INTENT-TO-SELL NOTICES — supply before it hits the tape. Form 144 is filed BEFORE a sale of restricted or control stock, so it is forward-looking: who intends to sell, roughly how many shares, through which broker, at what notified market value, and how the stock was acquired. Call it to see overhang building ahead of the completed sales, which only show up later in the Form-4 flow. A notice is an INTENT — it may be executed smaller, later, or not at all, so never treat notified value as realised selling.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"start":{"type":"string"},"end":{"type":"string"},"limit":{"type":"integer","default":100,"minimum":1,"maximum":1000}},"required":["ticker"]},"title":"Intent-To-Sell Notices","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Intent-To-Sell Notices"}},{"name":"intel_insider_flow_coverage","description":"What insider history exists, for which dates, and how much of it carries a Rule 10b5-1 plan flag — rows by record type, distinct filers, the transaction- and filing-date spans, and the share of rows that actually carry the plan flag. Call it before reading a plan split as complete: rows without the flag are unknown, and this says how many there are. Pass a ticker for per-company coverage.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"}}},"title":"Insider Flow Coverage","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Insider Flow Coverage"}},{"name":"intel_top_shareholders_current","description":"CURRENT INSTITUTIONAL HOLDERS of a company, largest first — holder-level positions with shares, market value (USD), percent of shares outstanding (percent, 0-100) and the change against the prior report, so new, increased, decreased and exited positions are visible. This is the FRESH ownership view; /intel/top_shareholders and /intel/sec13f serve the older archive. The archive is being backfilled, so the response lists every quarter it actually holds with its holder count, defaults to the most COMPLETE quarter and flags any quarter still loading rather than serving a half-loaded snapshot as fact. A 'new_position' can also be a renamed or re-coded holder entity, which the response says explicitly.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"quarter":{"type":"string"},"limit":{"type":"integer","default":50,"minimum":1,"maximum":1000},"min_pct":{"type":"number","minimum":0,"maximum":100}},"required":["ticker"]},"title":"Top Shareholders (Current)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Top Shareholders (Current)"}},{"name":"intel_top_shareholders_coverage","description":"How much institutional-ownership history has actually landed — per quarter: rows, securities and distinct holders held right now, plus a flag on any quarter still loading. Call it BEFORE treating a quarter-on-quarter change as a real position change: during a backfill a newly-opened quarter is incomplete, and a naive comparison makes every name look like it lost most of its holders. Pass a ticker for per-company coverage.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string"}}},"title":"Ownership Data Coverage","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Ownership Data Coverage"}},{"name":"reference_crosswalk","description":"IDENTITY CROSSWALK for one symbol — every identifier the security and its issuer carry, which rung matched, and how confident that match is. Returns SECURITY-grain identifiers (CUSIP9, CUSIP8, ISIN, SEDOL, ticker, estimate-vendor ticker) kept deliberately SEPARATE from the ISSUER-grain keys (gvkey, CUSIP6, regulator filer number, entity id), because those identify a company and not a share line; plus the issuer's other listed securities, the dated timeline of every identifier this security has ever been bound to, and the bridge into the private-company graph with that link's confidence grade. Call it to join two data sets that key on different identifiers, to translate a CUSIP-keyed holdings file into tickers, or to find out what a symbol used to be. as_of=YYYY-MM-DD returns the identifiers that were IN FORCE on that date, not today's — FB resolves today to an ETF and Meta's 2012-02-01→2022-06-08 hold on the string comes back as a dated prior binding, never as the answer. A symbol shared by more than one current security is REFUSED with its candidate list rather than guessed; pass prefer_country to choose. Coverage is a number in every response: what THIS answer contains, and the corpus census (77,313 securities / 58,179 issuers / 969,333 identifier bindings / 26,189 issuers linked to the private graph, live-measured 2026-08-02). Identifier-history depth is uneven by construction — 38,850 of 77,313 securities carry a prior ticker — and every source block states its own as-of, its age in days and whether that age is past its expected refresh cadence.","inputSchema":{"type":"object","properties":{"symbol":{"type":"string","description":"Path parameter 'symbol' (required)."},"as_of":{"type":"string"},"prefer_country":{"type":"string"},"include_history":{"type":"boolean","default":true},"include_share_classes":{"type":"boolean","default":true},"include_private_graph":{"type":"boolean","default":true}},"required":["symbol"]},"title":"Identifier Crosswalk","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Identifier Crosswalk"}},{"name":"reference_lookup","description":"REVERSE IDENTIFIER LOOKUP — give it a CUSIP, ISIN, SEDOL, ticker, estimate-vendor ticker, gvkey, regulator filer number, entity id or private-company-graph id and it returns the security (or, for an ISSUER key, every security under that issuer) plus which rung matched and whether that binding is still current. Exactly one identifier per call. RETIRED identifiers resolve by default — 759,618 of the 969,333 bindings on file are retired, which is precisely why a stale identifier in your own data still lands, and it comes back with the date it was replaced and by what. Issuer keys NEVER nominate one security: an issuer can carry a common line, other share classes and a foreign listing, so all of them are returned and the grain is stated. Use it to turn a CUSIP-keyed custodian file into tickers, to find the ticker behind a regulator filing, or to audit whether an identifier in your own data has gone stale. Rung coverage, measured 2026-08-02: CUSIP9 and CUSIP8 100% of 77,313 securities, ISIN 79.4%, SEDOL 74.2%, regulator filer number 67.8%, estimate-vendor ticker 37.2%.","inputSchema":{"type":"object","properties":{"cusip":{"type":"string"},"isin":{"type":"string"},"sedol":{"type":"string"},"ticker":{"type":"string"},"ibtic":{"type":"string"},"gvkey":{"type":"string"},"cik":{"type":"string"},"entity_id":{"type":"string"},"private_company_id":{"type":"string"},"include_retired":{"type":"boolean","default":true}}},"title":"Identifier Lookup","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Identifier Lookup"}},{"name":"reference_history","description":"IDENTIFIER HISTORY for one symbol — every identifier this security has ever been bound to, with the dates each binding started and ended, plus the dated events where the ISSUER changed its name, ticker or CUSIP. This is the part of a crosswalk a current-state table cannot give you: it answers 'what was this on 2015-06-30', 'when did this CUSIP change' and 'what was this company called then'. Returns the timeline grouped by identifier rung (each entry with valid_from, valid_thru and whether it is still current), the issuer change events with what changed at each one, and — with as_of — the exact set of identifiers in force on that date. Use it to back-map a historical holdings file, to audit identifier drift in your own data, or to explain a ticker that no longer exists. STALENESS, stated rather than implied: the issuer change log is a VINTAGE snapshot that lags the live security master (as-of 2026-04-20 when this shipped, 104 days old, newest change event 2026-01-30). Its age in days and its expected cadence are in every response, and any disagreement between it and the live spine is named explicitly rather than blended into one confident answer. Coverage is a number: 969,333 identifier bindings on file, 759,618 of them retired, 38,850 of 77,313 securities carrying at least one prior ticker.","inputSchema":{"type":"object","properties":{"symbol":{"type":"string","description":"Path parameter 'symbol' (required)."},"as_of":{"type":"string"},"prefer_country":{"type":"string"},"include_change_log":{"type":"boolean","default":true}},"required":["symbol"]},"title":"Identifier History","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Identifier History"}},{"name":"reference_batch","description":"BATCH CROSSWALK — up to 100 symbols resolved in ONE pass, each returning its current identifiers (CUSIP9, CUSIP8, ISIN, SEDOL, ticker, estimate-vendor ticker), its issuer keys (gvkey, CUSIP6, regulator filer number), which rung matched and its status. This is the endpoint for mapping a whole portfolio or watchlist in a single call rather than N of them. Every symbol comes back with an explicit status — resolved, historical (renamed or delisted; the security and what it trades as now are both returned), ambiguous (shared by more than one current security: the candidates are listed and NO identity is guessed) or unknown (not carried). Symbols beyond the 100 limit come back as explicit over_limit entries, never silently dropped, and the response reports how many of the requested symbols resolved as a number and a percentage (measured 2026-08-02 on a 102-symbol large-cap list: 100 looked up, 99 resolved, 1 historical, 2 over_limit).","inputSchema":{"type":"object","properties":{"symbols":{"type":"string"},"prefer_country":{"type":"string"}},"required":["symbols"]},"title":"Crosswalk (Batch)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Crosswalk (Batch)"}},{"name":"reference_coverage","description":"CROSSWALK COVERAGE — what the reference dataset actually contains, measured live and stated as numbers rather than adjectives: securities and issuers carried and how many are still active, identifier bindings held and how many are RETIRED, the percentage of securities carrying each rung, how many issuers bridge into the private-company graph and how those links break down by confidence grade, and how many dated issuer change events are on file. It also NAMES the rungs this crosswalk deliberately does not serve and why — a missing rung is a stated fact here, not a silent gap a customer discovers after integrating. Every source is listed with its own as-of date, its age in days and whether that age is beyond its expected refresh cadence, so a vintage component can never pass as current. Live-measured 2026-08-02: 77,313 securities (25,512 active), 58,179 issuers, 969,333 identifier bindings (209,715 current / 759,618 retired) across 9 indexed rungs, 26,189 issuers (45.0%) linked to the private graph. Call it before you buy, or before you build against it.","inputSchema":{"type":"object","properties":{}},"title":"Crosswalk Coverage","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Crosswalk Coverage"}},{"name":"features_catalogue","description":"FEATURE-STORE CATALOGUE — the derived research panels this platform computes for its own models: what exists, how much of it there is, how far back it goes, and how fresh it actually is. Every entry carries MEASURED coverage (rows, symbols, distinct observation dates, history window) and a measured freshness block. freshness.status is `current` when the producer is inside twice its own declared cadence, or `archival` when the producer has stopped but the dataset is a genuine historical panel — an archival dataset is still readable and EVERY read of it says so. A second, independent flag, stale_for_its_own_cadence, fires when the newest observation is old relative to the table's own typical gap: it catches a panel rewritten nightly whose data still ends months ago because the upstream licence lags. Datasets whose producer stopped and which are NOT panels are listed under `withheld` with the measurement that disqualified them and have NO route at all; `excluded` lists live datasets deliberately not sold here, with the reason. Live-measured 2026-08-02: 19 servable datasets totalling 17,062,613 rows — 14 current, 5 archival (spanning 1962, 1970, 2000, 2025-05 and 2026-05 forward) — plus 5 withheld and 2 excluded. Call it first: it is the only place the slugs for /api/v3/features/{dataset} are published.","inputSchema":{"type":"object","properties":{}},"title":"Feature Store Catalogue","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Feature Store Catalogue"}},{"name":"features_dataset","description":"READ ONE DERIVED FEATURE PANEL — the model-ready research features this platform computes for itself: price/return and liquidity features, monthly fundamentals, analyst-estimate dynamics, options and volatility-surface features, insider and institutional-ownership features, news-sentiment features, betas, regime and macro features. Discover the slugs via /api/v3/features/datasets — they are product names, not table names. With ?ticker= you get that symbol's observations newest first; without it you get the LATEST cross-section (every symbol on the most recent observation date), which is bounded by construction rather than by sorting the whole panel. Symbols resolve through the shared security resolver first and identity.identity_verified states whether the read was keyed on an authoritative identifier or on the resolved security's symbol; an ambiguous symbol is refused, never guessed. Every response carries the dataset's measured coverage (rows_total, symbols_total, observation_dates, history window) and its freshness, so an empty rows array arrives beside the count of symbols that DO have rows and can never be read as a dead upstream — `result` is the machine-readable outcome (rows, no_rows_for_symbol, no_rows_in_window). Five of the 19 servable datasets are `archival`: their producer has stopped, they are served for their history, and every response says so rather than implying currency. An unknown or withheld slug is a 404 and an unreadable store is a 503 — both refunded, because a billed 200 over an empty array is the defect this endpoint exists to remove.","inputSchema":{"type":"object","properties":{"dataset":{"type":"string","description":"Path parameter 'dataset' (required)."},"ticker":{"type":"string"},"limit":{"type":"integer","default":500,"minimum":1,"maximum":5000},"since":{"type":"string"},"until":{"type":"string"}},"required":["dataset"]},"title":"Feature Panel","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Feature Panel"}},{"name":"copilot_score_ticker","description":"Full per-ticker quant analysis. CALL THIS when the user asks about any specific stock (e.g. 'should I buy NVDA', 'what do you think of TSLA'). Returns blended_score, decile, conformal expected-return interval (90% band), 12-voter breakdown, factor tier, regime context, suggested position size, and a self-contained narrative. Use the narrative as a quotable summary; use the structured fields for follow-up questions. NAMESPACE: FIRM's universe is US EQUITIES. Nine tickers (BTC ETH LINK LTC COMP ARB NEAR APT ATOM) are ALSO crypto symbols; for those the response carries a `ticker_collision` block stating the score describes the US-listed EQUITY. If the user means the CRYPTO asset pass asset_class=crypto, which 404s (no FIRM crypto model yet). For ONE crypto sitting (liquid-book SCAN + scored-ordering RANK + top-N SLEEVE) call GET /api/crypto/sitting — that is DATA, signal_quality_mode=ordering_only, not a forecast. The full liquid book stays on GET /api/crypto/universe (not Alpaca's 36). For overnight movers / watchlist DATA call GET /api/crypto/overnight (X-API-Key) — a SLICE of that universe, data/context, not a score. For ONE US-equity sitting (full-book SCAN + attached factor RANK + top-N SLEEVE) call GET /api/equity/sitting — that is DATA, not a score, and do_not_place_from_mover_rank stays true. NEVER present an equity score as a crypto view.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"asset_class":{"type":"string","enum":["equity","crypto"],"default":"equity"}},"required":["ticker"]},"title":"Quant Score","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Quant Score"}},{"name":"copilot_top_picks","description":"Today's top N picks (long or short side). CALL THIS when the user asks 'what should I buy', 'give me trade ideas', 'top picks today', 'daily briefing', or similar list-of-ideas queries. Each pick comes with the same full quant analysis as score_ticker (score, interval, voter breakdown, narrative).","inputSchema":{"type":"object","properties":{"side":{"type":"string","enum":["long","short"],"default":"long"},"n":{"type":"integer","default":5,"minimum":1,"maximum":20}}},"title":"Today's Picks","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Today's Picks"}},{"name":"copilot_universe","description":"The ENTIRE scored universe in one call (limit=0 = all ~13k names), ranked, each with the model's absolute suggested_position_pct AND a relative normalized_weight that sums to ~100% across the returned set. Pass tickers=AAPL,NVDA,… to score+SIZE a specific holdings basket (the per-holding rebalance path); omit it to screen/rank the universe (limit/min_decile/side). Use normalized_weight for rebalance targets.","inputSchema":{"type":"object","properties":{"side":{"type":"string","enum":["long","short"],"default":"long"},"tickers":{"type":"string"},"limit":{"type":"integer","default":0,"minimum":0,"maximum":20000},"min_decile":{"type":"integer","default":1,"minimum":1,"maximum":10},"normalize":{"type":"boolean","default":true},"max_weight":{"type":"number","default":0.15}}},"title":"Scored Universe","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Scored Universe"}},{"name":"copilot_macro_regime","description":"Current macro regime + plain-English interpretation of how strong the model's edge is in this regime. CALL THIS when the user asks about market conditions, regime, 'is it a good time to invest', or how confident the model is right now.","inputSchema":{"type":"object","properties":{}},"title":"Market Regime","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Market Regime"}},{"name":"copilot_track_record","description":"Out-of-sample model performance — Sharpe, IC, conformal coverage, factor-decomp alpha. CALL THIS when the user asks 'how do I know this works', 'what's your track record', 'is this real alpha vs factor exposure'. Covers out-of-sample backtest, strict-OOS, conformal-validation and factor-decomposition metrics, refreshed weekly.","inputSchema":{"type":"object","properties":{}},"title":"Track Record","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Track Record"}},{"name":"copilot_signal_health","description":"CONTRACT C2 — is the alpha signal fit to trade, and do we actually know? CALL THIS BEFORE acting on /top-picks or /score. Returns a closed-vocabulary `status` (healthy | degraded | do_not_trade | unknown), a `tradeable` boolean to branch on, `decile_convention` (10_is_best), the per-horizon live IC, and prose guidance. Fail CLOSED on anything other than `healthy` — treat it as an empty candidate list. `unknown` is a real verdict, not a placeholder: it means no BELIEVABLE current measurement exists, which carries the same instruction as red. The contract checks whether the measurement is trustworthy, not merely recent — a drift job that re-stamps a frozen input publishes today's date over old numbers, and this refuses to grade that as fresh.","inputSchema":{"type":"object","properties":{}},"title":"Signal Health","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Signal Health"}},{"name":"copilot_live_ic_drift","description":"Live IC drift status — comparison of realised live IC vs training-time IC. The canonical alpha-decay early warning. CALL THIS when the user asks 'is the model still working?', 'any drift?', 'should we trust today's predictions?'. Returns ic_ratio (live / training) per horizon, drift status (green / yellow / red), and a plain-English narrative. Sub-second; refreshed daily after the close. ic_ratio < 0 = sign flip (halt new positions); ic_ratio < 0.3 = severe (retrain ASAP); ic_ratio > 1.0 = model outperforming training expectation.","inputSchema":{"type":"object","properties":{}},"title":"Signal Quality (Live)","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Signal Quality (Live)"}},{"name":"copilot_ticker_transparency","description":"ML-transparency aggregation for one ticker — collapses 5 individual tools (ml_drivers, ml_prediction, model_calibration, voter_ic_drift, voter_coverage) into a SINGLE call. Use when Brain's verdict needs the model-transparency layer ('why is the model saying this?'). Saves 4 HTTP calls per verdict. Returns a 5-layer payload + `degraded:bool` + `missing_layers:[...]` so partial failures still produce usable output. Cache TTL 60s. Pass `cache_max_age_s=0` to bypass cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"cache_max_age_s":{"type":"number","minimum":0,"maximum":3600}},"required":["ticker"]},"title":"Copilot Model Transparency","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Copilot Model Transparency"}},{"name":"copilot_ticker_smartmoney","description":"Smart-money aggregation for one ticker — collapses 7 individual tools (sec13f_changes, institutional_ownership, insider_trades, options_flow, darkpool, max_pain, gex) into ONE call. Use when Brain's verdict needs positioning context ('who's accumulating?', 'what is the options market saying?'). Saves 6 HTTP calls per verdict. Same `degraded` / `missing_layers` contract as ticker_transparency. Cache TTL 180s — positioning doesn't tick at chat cadence.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"cache_max_age_s":{"type":"number","minimum":0,"maximum":3600}},"required":["ticker"]},"title":"Copilot Smart-Money View","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Copilot Smart-Money View"}},{"name":"copilot_ticker_full","description":"OMNIBUS aggregation for one ticker — Brain's primary single-stock verdict path. Pulls BOTH the 5-layer transparency cluster AND the 7-layer smartmoney cluster in ONE call (up to 12 underlying tools in parallel inside FIRM). Replaces Brain's 24-72 HTTP-burst fan-out with a single call. Use for 'should I buy X?' / 'what do you think of Y?' / 'verdict on Z' shapes. `include_smartmoney` and `include_transparency` flags let comparison views skip clusters they don't need. Cache TTL 60s. Pass `cache_max_age_s=0` to bypass cache.","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"Path parameter 'ticker' (required)."},"include_smartmoney":{"type":"boolean","default":true},"include_transparency":{"type":"boolean","default":true},"candidate_weight_pct":{"type":"number","minimum":0,"maximum":100},"cache_max_age_s":{"type":"number","minimum":0,"maximum":3600}},"required":["ticker"]},"title":"Copilot Full Verdict","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Copilot Full Verdict"}}],"resources":[],"prompts":[]}