add_to_watchlist
ChatGPTAdd up to 50 ticker symbols to one of the person's watchlists. Symbols already on the list are reported in already_present, not duplicated. Symbols Catalyst does not support are reported in rejected and never added. With no watchlist_id or watchlist_name, the default list is used; give at most one of them. This changes the person's own Catalyst watchlists and requires their "Edit your watchlists" approval.
compare_ticker_fundamentals
ChatGPTCompare selected stored financial ratios across 1-10 explicit tickers. Omit metrics for all public metrics. Ratios are multiples; _pct values are already percentages. Preserve each company's timestamp and missing data. No automatic peers, averages, currency conversions or new analytics. Use get_ticker_fundamentals for a single company snapshot.
compare_ticker_performance
ChatGPTCompare stored split-adjusted price returns for 1-10 tickers over YTD, 1m, 3m, 6m or 1y. Not dividend total returns, live prices or currency-adjusted comparisons. Source price currency is not supplied; do not add dollar signs or assume USD. split_adjusted=false means no split adjustment was needed, not that splits are ignored. Actual baseline/end dates can differ by ticker; latest end is before today in New York. Missing baselines remain null; do not substitute an IPO start.
create_watchlist
ChatGPTCreate a new watchlist for the person, optionally with up to 50 starting ticker symbols. Symbols Catalyst does not support are reported in rejected and never added. This changes the person's own Catalyst watchlists and requires their "Edit your watchlists" approval.
delete_watchlist
ChatGPTPermanently delete one of the person's watchlists; confirm with the person first. Give exactly one of watchlist_id or watchlist_name. The default list cannot be deleted. The response lists the tickers it removed, so the list can be recreated with create_watchlist if the person asks. This changes the person's own Catalyst watchlists and requires their "Edit your watchlists" approval.
get_article
ChatGPTOpen one Catalyst deep dive (composed research article) by the id a Catalyst hand-off or get_ticker_articles gave you: full body, highlights, revision and update time, and the stories it cites (open each with get_insight). Articles are revised in place, so state the revision time you used. Catalyst keeps the newest 15 per company; an older id is not found. Quote verbatim or label summaries.
get_company_profile
ChatGPTGet stored company identity and description for one ticker. Does not return quotes, insights, financials, or company/industry narratives. Missing coverage is null.
get_economic_calendar
ChatGPTGet scheduled economic releases, optionally filtered by UTC dates, country/region code and importance (1-3). Default window is today plus six days; maximum 31 inclusive days. Actual/previous/consensus/forecast are source display strings; survey consensus differs from provider forecast. scheduled_at can be null when only a date is known; timestamp is write time. No live-actual guarantee or computed surprise. For company earnings use get_ticker_earnings.
get_fund_holdings
ChatGPTGet a fund's stored direct holdings by exact ticker alias; not name search, institutional holders of a stock or recursive fund look-through. Weights are signed whole-fund FRACTIONS (0.05 = 5%) of net assets, so they can sum above 1 when a fund holds securities-lending collateral; preserve shorts, duplicates and coverage. ticker is a verified application security; reported_ticker is the original source symbol and must not be used as a company link. fund.timestamp, portfolio_date and published_at are different dates; holdings come from quarterly SEC portfolio reports, not current issuer files. Restart paging if snapshot changes; ambiguous aliases return an error, not an arbitrary fund. Unit investment trusts (SPY, DIA, MDY) and trusts that file no SEC portfolio report (IBIT, gold or commodity trusts) are not covered; a 404 says why.
get_industry_state
ChatGPTGet the stored narrative for one industry by the exact opaque ID returned by list_industries or ticker context. Pass the returned ID unchanged, not URL-encoded; the adapter encodes the path segment. Includes all current cohort tickers (retired symbols left out), not ticker-relative peers. Preserve timestamp and null narrative fields. Not a market-wide news aggregation or performance snapshot.
get_insight
ChatGPTOpen one Catalyst story (insight) by the id an app card, a Catalyst hand-off or another Catalyst tool gave you. Returns that exact stored story even when the insight feed hides it as a duplicate (status hidden_duplicate; lead_story is the story it was grouped under, which can be older or newer than the one you opened, so compare published_at; the reader may have seen either), raw stories never processed (status raw_only), and the stored source text verbatim in pages of up to 20,000 characters; follow text.next_offset as text_offset only when you need more. Accepts app card suffixes such as _impact. Not a search: use get_ticker_feed or get_market_feed to find stories. Preserve published_at (for press releases and SEC filings published_at is corrected for a known source time-zone error) and label paraphrases as summaries.
get_market_context
ChatGPTGet stored COUNTRY/COMMODITY market narratives together with sentiment. For sentiment-only questions, use get_market_sentiment instead; do not fetch country/commodity narratives. For one country or commodity, pass ids (e.g. united_states or crude_oil) or category; entries not asked for are left out, not uncovered. One successful call returns everything stored for what it asked; reuse it for this answer rather than repeating the same call for more detail. If your client truncates it, acknowledge that limitation. Not live quotes, a calendar, or sentiment history. Preserve source timestamps and distinguish missing coverage from neutral conditions.
get_market_feed
ChatGPTDiscover recent insights across the market, or use q for semantic search. This is the insight feed, not the signals leaderboard; for stock signals to act on, use list_signal_candidates first. Optional tickers requires q. No market-wide score filters. Semantic mode excludes order/cursor and is bounded, not exhaustive. q ranks by similarity only, with no recency weighting: time words in q do not filter dates, so set from/to as ISO dates for time-bounded questions. Perplexity market-summary cards (machine-written macro roll-ups re-rendered every few minutes) are left out, as in the Catalyst app. Dates filter and order by the stored publication time; for press releases and SEC filings published_at is corrected for a known source time-zone error, so a few items can show a published_at up to about 5 hours past the requested window end, or appear slightly out of order. Raw content is opt-in; never automatically fetch all pages.
get_market_movers
ChatGPTGet stored gainers/losers for the market or one sector/industry. scope=sector/industry requires an exact name from get_market_performance; omit name for market. limit applies separately per direction, maximum 10. Coverage is stored price-move lists, not a comprehensive exchange scan and not the Catalyst signals leaderboard. For stock signals to act on, use list_signal_candidates. NOT live, premarket or after-hours movers; no volume or price filters. Preserve snapshot date.
get_market_performance
ChatGPTGet stored sector or industry performance snapshots, including average_change_pct and cap_weighted_change_pct. Both are market-cap weighted: the stored average is not an equal-weighted or median move, and the two differ only by a slightly narrower universe for the cap-weighted one. Omit name to discover exact group names for this tool and get_market_movers. These names are NOT narrative industry IDs. Preserve snapshot date, even on holidays; not live performance. Missing metrics stay null and unknown names return empty items.
get_market_sentiment
ChatGPTUse this for sentiment-only questions: latest market sentiment score AND components, or its daily history. Do not use get_market_context unless country/commodity narratives are also requested. With NO arguments returns the latest stored headline and components. Supplying ANY date/order/limit/offset argument switches to daily HISTORY; use limit for recent/retained history, not latest mode. History has headline scores/ratings, not past components or intraday points. comparison values are CNN's own reported scores, not computed from the history: previous_close can differ from the history value for that date, which is CNN's end-of-day reading. The latest headline score is stored as a whole number. Preserve source dates; no refresh, interpolation or ticker-specific sentiment.
get_my_holdings
ChatGPTRead an authorized page of Catalyst holdings, including asset_class/security_type and available cost basis, institution values, timestamped quotes and estimated position values. Use each amount’s currency; null means unknown. valuation.currency is set only when all populated amounts share one known currency. No FX conversion or summed portfolio valuation. Entire-portfolio quantities include source and quantity_basis; converted units are not necessarily shares. Selected brokerage quantities are returned only when institution-reported. Use eligible_for_company_research before company research; funds, cash and unknown instruments are not companies. Each holding’s fund reference links to fund_compositions, included once per canonical fund on this page. These are dated direct constituents, not recursive user exposure: signed weights are fractions of the whole fund (0.05 means 5%), never renormalized; unmapped tickers remain null. Check status, portfolio_as_of, completeness and coverage; missing composition is not an empty fund. Large compositions have page.has_more and a get_fund_holdings continuation with ticker/offset. Optional ticker exactly filters stored symbols. Holdings next_cursor is separate: retain ticker/limit and restart on snapshot change. Requires explicit portfolio consent; no trading or account credentials.
get_my_portfolio
ChatGPTRead status, holdings counts, and available update times for the Catalyst portfolio or specific brokerage accounts the user shared with this assistant. Requires explicit portfolio approval through Catalyst sign-in; an API key is not required for assistant connection. Entire-portfolio permission includes manual, CSV, brokerage, and future holdings; selected brokerage permission covers only those accounts. Use get_my_holdings for positions, per-field currencies, asset classifications, and dated fund compositions. No total portfolio valuation, currency conversion, performance, trades or account credentials. Unavailable or stale accounts are identified explicitly.
get_my_watchlists
ChatGPTRead the person's own Catalyst watchlists in their order, each with its id, name, whether it is the default list, and its ticker symbols. Requires their portfolio or watchlist approval through Catalyst sign-in. Read-only: no quotes, research or changes.
get_research_handoff
ChatGPTUse FIRST when a Catalyst hand-off names this tool, or to get everything current about one signal, company, fund, story (insight) or deep dive in one call. Give exactly one of signal_id, ticker, insight_id or article_id. Returns the subject plus research sections chosen by Catalyst; each section states its coverage, freshness, date, caveats and the tool that returns more. Sections that are out of date (freshness stale), unreadable right now (status unavailable) or missing (coverage not_covered) carry no figures: treat them as missing and never fill them in from older data. portfolio_access says whether this connection may read the user's holdings with get_my_holdings. Not live quotes, advice or orders.
get_ticker_analysts
ChatGPTGet recent analyst rating/target updates and stored price-target consensus for one ticker. analysts_limit bounds updates only; no history cursor. Consensus reference price and upside belong to its stored batch, not live prices or complete Street coverage. Update target strings are source text, not precise current targets; currency is not inferred. Use screen_price_targets for cross-ticker screening.
get_ticker_articles
ChatGPTGet full stored composed research articles for one ticker, distinct from its latest digest or individual insight feed. Optional q searches semantically; omit offset with q. q ranks by similarity only, with no recency weighting: time words in q do not filter dates, so set from/to for time-bounded questions. Dates filter article publication. Chronological mode supports offset pagination. Prefer bounded retrieval and brief verbatim excerpts with source links; do not present paraphrases as quotations. No new article generation.
get_ticker_congressional_trades
ChatGPTGet stored congressional transactions for one ticker. Dates filter transaction date, not filing date; types match full source text (Sale is distinct from Sale (Full)). Amount ranges are not exact dollars or midpoint estimates. Duplicates remain. Timestamp is snapshot refresh time; no live/complete-history guarantee or cursor.
get_ticker_context
ChatGPTGet Catalyst's stored AI-enriched research for one ticker: latest company digest, company narrative with bull/bear views and watch items, and industry narrative with peers. Use for the company investment backdrop, not a basic company description, individual news insights, financial ratios, or technical indicators. Returns only digest, ticker_state, industry_state and meta. Preserve each section's timestamp; these are separately updated snapshots, not live facts or newly generated analysis. Missing coverage is null, not a neutral outlook. Some stored company-narrative text ends mid-word where its writer hit a length cap (storyline summaries 700 characters, overview 900, headline 220): quote it as stored and never complete it.
get_ticker_earnings
ChatGPTGet one company's stored earnings calendar with recent/upcoming dates and reported/estimated values where available. Not exhaustive earnings history or a market-wide earnings calendar. Dates are calendar days, not exact release times; timestamp is document refresh time. Preserve reporting_symbol and unknown currency; do not infer USD or per-share listing conversions.
get_ticker_feed
ChatGPTGet recent insights and source metadata for one ticker; filter by source, publication dates, and scores. Optional q searches semantically: omit order/cursor in that mode; results are bounded indexed matches, not exhaustive. q ranks by similarity only, with no recency weighting: time words in q do not filter dates, so set from/to as ISO dates for time-bounded questions. Perplexity market-summary cards (machine-written macro roll-ups re-rendered every few minutes) are left out, as in the Catalyst app. Dates filter and order by the stored publication time; for press releases and SEC filings published_at is corrected for a known source time-zone error, so a few items can show a published_at up to about 5 hours past the requested window end, or appear slightly out of order. impact_score is signed, not a 0-100 scale or absolute-magnitude filter. Other score bounds are 0-100. Returns only feed and meta. Raw content is opt-in; follow next_cursor only when more results are needed.
get_ticker_financials
ChatGPTGet historical filing-reported financial facts, not vendor ratios or reconstructed statements. Omit concept to discover exact XBRL concepts; concept/family filters match exactly. Dates filter period END, not filing date. period.label is null: identify a period by its start and end, never by a calendar-quarter name (fiscal years differ, e.g. NVDA's Q2 FY2027 ends 2026-07-26). Preserve unit, dimensions, period boundaries and restatement evidence. aggregation is stored semantics, NOT quarterly/annual selection. No TTM summation, FX conversion or annual-to-quarter inference; limit counts facts.
get_ticker_fundamentals
ChatGPTGet 15 stored company financial ratios and percentages for one ticker: valuation multiples, margins, returns, growth, debt and liquidity. Returns only fundamentals and meta, not financial statements, historical series, analyst forecasts, company narratives or technical indicators. Preserve TTM versus quarterly labels, multiples and percentage units. Timestamp is document refresh time, not fiscal-period end or a live price calculation. Ratios use the provider's company basis. Missing coverage or individual metrics are null; do not substitute estimates or zeros.
get_ticker_insiders
ChatGPTGet stored insider transactions for one ticker, with transaction-date bounds and exact transaction-code filters. Grants, exercises, amendments and derivative legs may coexist; do not equate every acquisition with open-market buying or sum duplicate economic trades. Only codes P and S are purchases and sales (SEC Form 4: open market or private); A is a Rule 16b-3 grant or award, and its $0 price is the reported price, not a purchase price; M, F and G are exempt derivative exercises, exercise-price or tax payment in shares, and gifts. Preserve source amounts and unknown currency. Bounded latest list, no cursor or complete-history claim.
get_ticker_option_market
ChatGPTRead the public options tables for one ticker. Returns whether the ticker is optionable, the latest settled expiry open-interest rollup from options_oi_expiry_daily, and current quotes from options_quote_now (bid, ask, last, IV, and greeks) for unexpired contracts near the stored spot. Quote volume and open_interest are null because the quote feed carries neither, greeks are null when the source sent none, and bar open_interest is null. Pass contract (an OCC symbol from the quote list) to read that quote plus price bars: bar=daily reads options_daily_prices, hour reads options_hourly_prices, five_minute reads options_five_minute_prices. bar requires contract. This is not settled contract-level open interest; use get_ticker_options for that chain. Strikes are in source price units. Do not infer a currency or a contract multiplier. Not an order and not proof of trader intent.
get_ticker_options
ChatGPTGet stored options open-interest positioning and a bounded contract page for one ticker. Not executed order flow, option quotes, every listed contract or proof of trader intent. For quotes, greeks, the expiry open-interest rollup, or contract price bars, use get_ticker_option_market. Summary totals cover the WHOLE stored chain, ignoring expiry/type/page filters. Preserve session_date and batch timestamp. Strike is in source price units; do not infer a currency or add dollar signs. Opaque IDs are not tradable OCC symbols; no contract multiplier is inferred. Restart pagination if the snapshot changes.
get_ticker_ownership
ChatGPTGet institutional 13F positions for one ticker from the newest stored quarter whose 13F filing deadline (45 days after quarter end, moved off a weekend) has passed, so a quarter still being filed is not shown as its holder list; if none has passed, the newest stored quarter. report_date is the position-reporting date, not filing receipt time or live holdings. Bounded ranked holder list; no ownership percentages, new position values, history or totals are calculated. Empty coverage is an empty list with null report_date. For a fund's constituents use get_fund_holdings.
get_ticker_projection
ChatGPTGet Catalyst's stored 12-month projection and assumptions. Not analyst consensus or a guaranteed forecast. Distinguish volatility-envelope bands from LLM scenarios using band.basis; sigma and nominal_coverage are fractions, percentage-suffixed fields are percentages. Numeric prices have no verified currency; source prose using $ does not verify USD. Do not add dollar signs to numeric fields. Preserve computation/reference-price dates. No new model generation.
get_ticker_risk
ChatGPTGet stored ticker risk: universe-relative 1-10 rank, volatility, downside deviation, VaR, drawdown and Sortino, with lookback and universe size. Not a new risk calculation, prediction, history or market-wide risk screen. Preserve percent units and computation timestamp; null is missing coverage, not low risk.
get_ticker_share_statistics
ChatGPTGet stored shares outstanding and float for one ticker, in MILLIONS of shares. Preserve source basis and timestamp; no whole-share, ADR or share-class conversion, float-percent calculation or history. Float may exceed outstanding due to source dates/bases; do not clamp it. Not short interest.
get_ticker_technicals
ChatGPTGet the latest stored daily technical indicators for one ticker: moving averages, RSI, MACD, Bollinger bands, ATR, volume, returns, relative strength and regime labels. Returns only technicals and meta. Report trade_date as the session and timestamp as computation time. Close is that stored session's closing price, NOT a live quote; price units do not imply a currency. No intraday/history lookup, indicator refresh or generated technical analysis. Missing coverage or individual indicators are null, not neutral or zero.
get_ticker_valuation
ChatGPTGet Catalyst's stored present-business valuation model, methodology and supporting assumptions. Not a future price target, analyst consensus, live quote or new generation. Preserve computation timestamp, reference-price timestamp/basis and source-native units. Numeric prices have no verified currency; do not add dollar signs or assume USD. Negative premium values and missing coverage remain as stored.
list_industries
ChatGPTList available narrative industries and their exact opaque IDs. Use to discover industry_id for get_industry_state; never derive an ID from a name or change its punctuation. This is not the sector/industry performance group catalog.
list_signal_candidates
ChatGPTFIRST TOOL for stock signals to act on, Catalyst signals, or the signals leaderboard. Reads live signals.candidates rows in the engine's rank order, the same order as the Catalyst app (then composite_score, then consecutive emissions), and attaches signals.themes, signals.theme_memberships, and signals.ticker_risk for those symbols. Not get_market_movers and not the insight feed. Expired rows are omitted. composite_score is a 75-100 strength score combining Catalyst's event and technical detectors; it is not a probability, win rate or confidence, and scores above 99 are common. consecutive_emissions counts scanner cycles (about 20 a trading day) that emitted the signal since it first appeared; missed cycles do not reset it, so it is not conviction, and the news behind a signal can change while it rises. Prices, entry, stop, and target are stored setup hints, not live quotes, forecasts or orders. direction is both, long, or short. symbol is one exact ticker. theme is one exact theme slug and includes its subthemes. limit is 1-25, default 15. Unknown symbol or theme returns empty lists. At most eight theme memberships per symbol. Do not substitute top gainers.
remove_from_watchlist
ChatGPTRemove up to 50 ticker symbols from one of the person's watchlists. Symbols that were not on the list are reported in not_present. With no watchlist_id or watchlist_name, the default list is used; give at most one of them. This changes the person's own Catalyst watchlists and requires their "Edit your watchlists" approval.
rename_watchlist
ChatGPTRename one of the person's watchlists. Give exactly one of watchlist_id or watchlist_name to choose the list. This changes the person's own Catalyst watchlists and requires their "Edit your watchlists" approval.
reorder_watchlist
ChatGPTSet the order of the ticker symbols on one of the person's watchlists. List exactly the symbols already on it, each once; nothing is added or removed. With no watchlist_id or watchlist_name, the default list is used; give at most one of them. This changes the person's own Catalyst watchlists and requires their "Edit your watchlists" approval.
reorder_watchlists
ChatGPTSet the order of the person's watchlists. List every watchlist id from get_my_watchlists exactly once. This changes the person's own Catalyst watchlists and requires their "Edit your watchlists" approval.
screen_price_targets
ChatGPTScreen stored analyst price-target consensus across the market or explicit tickers. Filters combine with AND; signed upside bounds include negatives. Sorted by stored upside descending, not requested ticker order. Reference prices/upside are dated batch values, not live quotes or guarantees. Currency and complete Street coverage are not established. For one ticker's consensus plus recent actions use get_ticker_analysts.
search_tickers
ChatGPTFind ticker symbols by company name or symbol prefix. Use when the symbol is unknown or ambiguous; do not guess from company names.