["10-K","10-Q"]), not comma-separated strings. Plan access matters here: a Free key covers the snapshot/valuation recipes in full; insider, compare, filings, technicals, and price-action need Starter or Builder (plans and limits).
One-symbol brief
Serves prompts like “What’s going on with AAPL?”, “Give me a read on Apple”, “Should I be paying attention to NVDA?”: a single ticker, no specific sub-topic. Calls: snapshot is usually enough. Add insider (Starter+) only when the prompt hints at recent officer/director trading; add valuation when it hints at price-versus-worth. On a Free key, skip the activity line and say it was not consulted rather than guessing.- REST
- MCP
snapshot and insider fixtures (numbers copied verbatim; the insider rollup returns ten recent transactions and a 90-day summary, trimmed here to the relevant lines):
aapl-brief.txt
as_of timestamps differ: the snapshot and the Form 4 rollup were computed on different days. Surface both rather than collapsing them into one. The snapshot’s quick P/E ships as an object, pe_ttm: {value: 36.81, vs_5y: "near_5y_high"}; read the number at .value and report the vs_5y band as a position within AAPL’s own five-year range, never as a cheap/expensive verdict.
Valuation check
Serves “Is AAPL expensive?”, “Is NVDA cheap right now?”, “How does the multiple look?”. Snapshot gives price context; valuation gives the multiples and where each ranks against the symbol’s own history (a window-scoped label likenear_5y_low, plus a price-vs-fundamentals decomposition). Report the rank as low/high vs the symbol’s own range, never as a cheap/undervalued verdict. Skip fundamentals unless the user asks why the multiple is what it is.
- REST
- MCP
change is present only on pe_ttm, ps_ttm, and the anchor multiple; its absence on pb or ev_ebitda_ttm is expected, not missing data. The vs_own_history.percentile and label rank each multiple against the symbol’s own 3/5/10-year history only — never peers, a sector median, or a fair-value target. A low percentile or near_5y_low is not a “cheap” verdict, and a falling multiple can mean fundamentals rose rather than price fell (read change.driver, e.g. fundamentals_outran_price).
ETFs do not get valuation multiples: /v2/valuation for an ETF returns HTTP 200 with freshness: "unsupported". Treat that as the answer, not a failure.
Compare a basket
Serves “Compare NVDA, AMD, and INTC”, “How do these three stack up?”. Onecompare call returns an aligned row per symbol. If the user wants more, deepen only the symbol they fixate on.
symbols takes 2-12 tickers; 13 or more returns PARAM_INVALID. The default field set is price,pct_1y,vs_spy_pct_1y,pe_ttm,rsi_14,trending; any field a symbol cannot supply is listed in fields_omitted_by_symbol.
- REST
- MCP
compare returns multiples as bare floats: it unwraps snapshot’s {value, vs_5y} to the number, so a compare row has no per-multiple vs_5y label. A negative pe_ttm means trailing losses, not a cheap multiple: keep the sign and say so. Any row carrying a non-meaningful multiple also gets a per-row flags array (e.g. flags: ["pe_ttm_negative_not_meaningful"]); read it and surface the caveat. flags is omitted when no caveats apply.
SEC risk review
Serves “What are the risks in Apple’s latest 10-K?”, “Summarize Tesla’s risk factors”. Resolve the symbol, list filings, pick the latest 10-K’s accession, then pull the section text and summarize only that text.- REST
- MCP
char_count 68069, far more than fits one answer. Summarize the themes (macro and tariff exposure, supply-chain concentration, competition, legal and regulatory) and say the text was condensed. Do not add a single fact that is not in the returned text: no news, no consensus, no stock move, no memory.
The 1,125 foreign private issuers (~20% of the universe) file 20-F/40-F/6-K, so /v2/filings returns unsupported for them. See coverage and gaps.
Insider scan
Serves “Any notable insider activity in AAPL?”, “Are executives selling?”. Oneinsider call returns the trailing 90-day Form 4 rollup plus recent transactions.
limit ranges 1-200 (default 10). The rollup scans the latest 200 Form 4 filings; if it truncates, summary_90d.notices says so.
- REST
- MCP
value_usd as { "available": false, "reason": ... }. Keep the reason; do not impute a dollar value. ten_b5_1 is three-state and never a bare false: it is either true (the filing affirmatively cites a Rule 10b5-1 plan) or the envelope { "available": false, "reason": "trading_plan_not_disclosed" }. Read that envelope as undisclosed, not as “discretionary” or “no plan”: print “not disclosed”, never “false”. Selling pressure in the rollup is not a sell signal; report it, do not advise on it.
Technical timing
Serves “Is AAPL overbought?”, “Is the trend extended?”. Technicals gives indicators and zones; price-action gives volume, extremes, gaps, and drawdowns. Add history only when the user wants the actual series.- REST
- MCP
period; it maps to REST’s range (whose own legacy alias is also period). Do not imply execution readiness or tell the user to enter or exit a trade.
Choose endpoints
For a prompt no recipe covers, pick the smallest route set by job.