§ 01

The fundamental surface.

# filings & risk factors
get_sec_filings(ticker, form_type="10-K", limit=5)
get_risk_factors(ticker)                 # Item 1A excerpt from latest 10-K

# corporate actions
get_dividends(ticker, limit=20)
get_splits(ticker, limit=20)
get_short_interest(ticker)              # days-to-cover, % of float

# news & market color
get_news(ticker=None, limit=10)          # ticker-scoped or broad
market_movers(direction="gainers", exchange="US", limit=10)

# metadata
get_ticker_details(ticker)               # sector, industry, market cap, employees
search_tickers(query, limit=10)           # resolve names → symbols
§ 02

Risk factors — the alpha hiding in the boilerplate.

Item 1A of every 10-K is the company telling investors, in writing and under legal liability, what could go wrong. Most readers skim it because it sounds boilerplate. The signal is in the changes year-over-year. A factor that appears for the first time, or shifts from a one-paragraph mention to a four-paragraph mention, is management telling you what they are now actually worried about.

"Read the risk factors. Then read last year's risk factors. The diff is the alpha."

get_risk_factors(ticker) returns the latest section so a Claude prompt can compare it to the prior year on demand. The library does not perform the diff for you — that's a judgment call about what counts as a meaningful change. The tool surfaces the source text. The reading is still yours.

§ 03

Dividends, splits, short interest.

Three corporate-action signals, three different audiences:

§ 04

News & market movers.

get_news with a ticker returns ticker-scoped headlines. Without a ticker, it returns the broad market news flow. market_movers returns the day's biggest gainers, losers, or most-actives by exchange. Both are sentiment surfaces — useful for a quick read on what the desk is talking about, dangerous if treated as signal.

Design note

News tools return headlines and timestamps, not engagement metrics, sentiment scores, or "news score" rollups. The reason is that any sentiment score is a model on top of the headlines, and that model belongs in the user's prompt where they can inspect it — not buried inside a tool that pretends the score is data. Stuffing a black-box sentiment number into a "fundamentals API" is how trust degrades.

§ 05

Metadata — the connective tissue.

get_ticker_details and search_tickers are unglamorous and load-bearing. The first returns sector, industry, market cap, employee count, headquarters, exchange listing, and CIK — the fields that make a ticker comparable to its peers. The second resolves "Apple" to "AAPL" and "Berkshire" to both "BRK.A" and "BRK.B" so the rest of the stack doesn't have to guess.

The reason these matter: cross-sectional analysis is impossible without consistent metadata. Comparing AAPL's margin to "the rest of tech" requires a sector classifier; correlating short interest to performance across an industry requires an industry classifier. Without metadata, every analysis is one ticker at a time.

§ 06

What this page is not.