Last updated: 2026-SEP-02
Building blocks for an investment-research application of my own: the data feeds it can sit on, UI patterns and components, applications worth studying as references, and books on the craft. Hand-curated on this page.
| Fiscal.ai | Institutional-grade fundamentals platform + REST API / MCP server. Formerly FinChat (rebranded mid-2025); founded by Braden Dennis (CEO), Ryan White (CTO), Adrian Iwanicki (COO), Kevin Bojan (CPO); backed by Social Leverage; SOC 2 Type II. Already the FA research link on every ticker here (fiscal.json slug = <ExchangeCode>-<TICKER>). |
|---|---|
| Site / docs | fiscal.ai · docs.fiscal.ai (API reference, getting started, MCP, webhooks, rate limits) · Swagger at api.fiscal.ai/docs |
| Coverage | 100,000+ public stocks, ETFs and funds globally on the terminal (data sourced from S&P Market Intelligence); verified segment/KPI data for ~2,300–2,500 of the largest companies by market cap. API: USA, Canada and US ADRs = full coverage on most endpoints; UK / EU = partial on select endpoints. Thin on microcaps and frontier markets; equities-focused (no fixed income / FX / derivatives). |
| History | Financials 20+ years annual / 40+ quarters; stock prices 30+ years (EOD + 15-min-delayed intraday); adjusted metrics 5+ years; fund letters 5+ years; ownership 3 years. Terminal tiers cap history: Free 10 yr financials / 2 yr KPIs, Pro 15 / 10, Max 20+ / 15+. |
| Data types (API) | Company profile & list; income statement / balance sheet / cash flow — as-reported and standardized; ratios (+ daily ratio series), shares outstanding, adjusted metrics; segments & KPIs (/v2/company/segments-and-kpis); insider & institutional ownership (13F holdings); events calendar; stock splits; EOD + intraday prices; filings (metadata, PDF, per-page image); IR events with transcripts and call audio; company news + top news; fund letters (by letter, investor, company); logos. |
Endpoints (base https://api.fiscal.ai) | GET /v3/companies-list · /v3/company/profile · /v1/company/financials/{income-statement|balance-sheet|cash-flow-statement}/{as-reported|standardized} · /v1/standardized-metrics-list · /v1/company/ratios, /ratios/daily/{ratioId}, /v1/ratios-list · /v1/company/shares-outstanding · /v1/company/adjusted-metrics · /v2/company/segments-and-kpis · /v1/company/ownership/insider/{holders|transactions}, /institutional/holders, /v1/ownership/institutional/{holdings|holders} · /v1/events-calendar · /v1/company/stock-splits · /v3/company/stock-prices, /v1/company/stock-prices/intraday · /v2/company/filings, /v1/filing/{id}/pdf, /v1/filing/{id}/page/{n}/image · /v1/company/ir-events, /ir-events/transcript/{eventKey}, /ir-events/audio/{eventKey} · /v1/company/news, /v1/top-news · /v1/fund-letters…, /v1/company/fund-letters · /v2/company/logo. (v1/v2 companies-list, profile, filings and stock-prices are deprecated in favour of v3.) |
| Identifiers & auth | companyKey in EXCHANGE_TICKER form (e.g. NASDAQ_MSFT). REST auth = &apiKey=… query parameter (key created in the dashboard: API Key → create organization → Data API). Example: GET https://api.fiscal.ai/v3/company/profile?companyKey=NASDAQ_MSFT&apiKey=KEY. |
| MCP server | https://api.fiscal.ai/mcp (legacy SSE: /mcp/sse). Claude Code: claude mcp add --transport http fiscal https://api.fiscal.ai/mcp (OAuth browser sign-in, or --header "Authorization: Bearer KEY"); also ChatGPT developer-mode connector, Cursor / VS Code mcp.json. Routes to the same REST endpoints with the same entitlements and rate limits — it does not widen plan coverage. |
| Webhooks | Fire on updates to financial statements, EPS / shares outstanding, adjusted metrics, segments & KPIs, company news, IR resources (transcripts, recordings, decks, press releases), profile metadata and filings. Registered under Manage API Keys (endpoint URL + signing secret). POST JSON {event_type, timestamp, company_key, statement_type, file_type, metadata}; endpoint must be public, answer 2xx within 20 s. |
| Limits | Free API: 100 companies, 50 requests/min, 250 requests/day (resets midnight UTC); one review cites a free API trial of 25 companies / 250 calls per day. Paid API limits are "sized to your use case" in the terms of sale. Errors: 400 / 401 invalid key / 403 feature not on plan / 404 company not found / 429 rate limit / 500. |
| Pricing (2026) | Terminal: Free $0 (10 yr financials, basic screener, 1 dashboard of 30 rows, DCF) · Pro $49/mo or $39/mo billed yearly ($468/yr; 15 yr financials, 10 dashboards, AI summaries, analyst revisions) · Max $99/mo or $79/mo yearly ($948/yr; 20+ yr history, unlimited dashboards, audit trails, data export, team billing). API & MCP is a separate data-feed plan, priced custom via sales. |
| Terminal features | AI copilot with source citations, natural-language screener, segment/KPI charts, Super Investors (13F) tracking, DCF models, custom dashboards, transcripts / filings / press releases, Excel-style exports on Max. Clients cited: Morgan Stanley, Raymond James, Manulife, Franklin Templeton, Allianz, EY, PwC. ChatGPT app launched June 2026. |
| Fit for this hub | Could replace the Yahoo scrapes behind fetch_prices.py / fetch_fundamentals.py (annual FCF, market cap, shares) with standardized statements + daily ratios, and add segment KPIs, transcripts and fund letters per ticker. Caveats: the free API's 100-company cap is well below the ~1,400 securities tracked here (needs the paid feed); non-US coverage is partial, so the foreign home-exchange rows (.TO, .L, .AX, .KS…) would still need a second source. Sources: docs.fiscal.ai (Sep 2026), findmymoat.com and matchmybroker.com reviews (2026). |
To collect — component libraries, charting, table/grid patterns, design references.
To collect — research terminals and portfolio tools worth studying (e.g. Qualtrim, Stock Analysis, Seeking Alpha, Fiscal.ai's own terminal).
To collect — books on building financial software, data engineering and product design.
Hand-curated notes for building an investment-research application — not investment advice. This page is edited by hand (no generator writes it); the research data it describes is the same feed set that powers the rest of the hub.