- Brand
- FinancialReports
- Category
- Finance
- Primary Subcategory
- Institutional Financial Data & Equity Research Platforms
Integration details
Description
FinancialFilings gives ChatGPT access to filings, call transcripts, and normalized financials for listed and delisted companies worldwide, 35 million+ filings across 85,000+ tickers, with 20+ years of history. Ask for any company's latest annual report, pull a specific financial line item with its currency and fiscal period, search a filing's full text, or compare metrics across peers. Sign in with your free FinancialFilings account using OAuth, no API key needed. Built on the open Model Context Protocol.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Institutional Financial Data & Equity Research Platforms
- Secondary Subcategories
- None listed
- Brand
- FinancialReports
- Access
- Account required
- First tracked
- 2026-06-25
- Tool count
- 18
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for FinancialFilings
Get updates when FinancialFilings’s Discoverability Score or category rank changes.
Competing in ChatGPT Institutional Financial Data & Equity Research Platforms
View Category18 tools agents can invoke
The full 30-code filing-type taxonomy (codes + categories). Read before filtering filings by type — especially for ESG, governance, M&A, dividends, transcripts, or any type beyond 10-K / IR / ER / MDA / DIRS. [Server current date: 2026-11-01 — treat this as today.]
get_fr_filing_type_taxonomy
The ISIC industry hierarchy (sections/divisions/groups/classes) and how to screen peers. Read for any sector, industry, or peer-comparison query, then screen with companies_list(sector=...). [Server current date: 2026-11-01 — treat this as today.]
get_fr_industry_classification_isic
When and how to fall back to filings_markdown_retrieve for values the normalized financials dataset doesn't carry, including processing_status caveats (a hint, not a gate) and pagination. [Server current date: 2026-11-01 — treat this as today.]
get_fr_markdown_fetch_strategy
What your API usage has cost this billing cycle: the same numbers as the API dashboard. Pay-as-you-go accounts get cycle spend, credits by category, the daily cap with today's spend, and the cycle ceiling (`payg`). Free accounts get their monthly credit pool (`free_credits`). Plans metered in requests get their request quota (`requests`). Sections that do not apply to the account are null. Free: this endpoint is never billed and does not count toward any quota. Each billed response also carries `X-Credits-Charged` and `X-Credits-Category` headers. **When to use this tool:** Use when the user asks what their API or MCP usage has cost, how much of their credits or spend cap is left, or why calls are being refused for spend. Returns this billing cycle's spend and credits by category, the daily cap and today's spend, and the free credit pool or request quota. Free: never billed, and it works after a spending cap is hit. **When NOT to use this tool:** Don't call it before every data request to "check budget" — call it when the user asks about cost or a call was refused. **Examples:** - How much have I spent this month? -> (Report payg.total_usd and payg.daily_cap) [Server current date: 2026-11-01 — treat this as today.]
usage_retrieve
**Cost:** 1 credit per request. Retrieve a paginated list of companies. **When to use this tool:** Use as the **first step** to resolve a company name, ticker, or partial match to a FinancialFilings internal ID. Required before calling any per-company tool (financials, filings, watchlist). CONFIRM the match — state the resolved company's full name and country before reporting data ("Apple" can surface "Apple Hospitality REIT"). PEER / SCREENING LISTS: include ONLY companies whose requested data you actually retrieved this session; if a candidate's data comes back empty, mark it "no data available" or drop it — never invent a figure to complete the list. A short honest list beats a long fabricated one. **When NOT to use this tool:** Don't use if you already have a company ID from a previous call. Don't use for ISIN lookups — use `isins_retrieve` instead. **Examples:** - Find Apple -> search="Apple" (Inspect results — 'Apple Inc.' vs 'Apple Hospitality REIT') - German automotive companies -> countries="DE", sector="C" (ISIC Section C = Manufacturing) [Server current date: 2026-11-01 — treat this as today.]
companies_list
**Cost:** 1 credit per request. Retrieve the 11 standardized disclosure types (categories) defined by the FRCF. [Server current date: 2026-11-01 — treat this as today.]
filing_categories_list
**Cost:** 1 credit per request. Retrieve a paginated list of all available filing types. **When to use this tool:** Call when the user names a form or report type that is not in the filing-type table in the instructions, to find its FinancialFilings code before filtering `filings_list`. A regulator's own form name (10-Q, 8-K, 6-K) is not a code: it goes on `filings_list` `source_filing_type`. [Server current date: 2026-11-01 — treat this as today.]
filing_types_list
**Cost:** 1 credit per request. List filings. All the filters below can be combined. **When to use this tool:** Use to search and filter regulatory filings across companies. Supports filtering by company, filing type, category, country, date range. Returns metadata — not filing content. VIEW: both views carry `processing_status`. `view='full'` adds more metadata fields and is larger, so pass it only when you need those fields. Never gate filing selection on `processing_status`: a null value means unknown, not "no markdown". LINKS for a human: `viewer_url`, except when `processing_status` is PENDING/QUEUED/PROCESSING/FAILED/SKIPPED and `file_extension` is not PDF/HTML/HTM/XHTML — that page is empty, so give the raw file link (`document_url` on default rows, `document` on view=full rows); if it is null, say no file link is available yet. A null status is not a reason to switch. **When NOT to use this tool:** Don't use to get filing content — use `filings_markdown_retrieve` after getting the filing ID. Don't use for financial KPIs — use `companies_financials_retrieve`. **Examples:** - Apple's most recent 10-K -> company=<id>, type='10-K', ordering='-release_datetime', page_size=1 (`type` takes ONE filing-type code and is jurisdiction-specific; `types` takes a comma-separated list. For cross-jurisdiction queries filter by `category` / `categories` (numeric FilingCategory ids) instead.) - All insider transactions at Tesla in the last 30 days -> company=<id>, type='DIRS', release_datetime_from='<today-minus-30d>T00:00:00Z' (release_datetime_from is a date-TIME (YYYY-MM-DDTHH:MM:SSZ). Compute the cutoff from the current date given in this tool's description — never hardcode one.) [Server current date: 2026-11-01 — treat this as today.]
filings_list
**Cost:** 1 credit per request. Search and resolve ISINs (International Securities Identification Numbers) to companies. [Server current date: 2026-11-01 — treat this as today.]
isins_list
Calculates the expected release window for the next annual report from when the company published its last five annual reports. `confidence` is the share of those reports released within the predicted window (0-100), not a probability. [Server current date: 2026-11-01 — treat this as today.]
companies_next_annual_report_retrieve
**Cost:** 1 credit per request. Match a list of your identifiers to our companies in one request. Each row can carry any mix of `isin`, `lei`, `cik`, `ticker` and `name`, plus an optional `ref` that is echoed back so you can join results to your rows. Results come back in input order. **Resolution order:** ISIN, LEI, CIK, ticker, venue ticker, name. The first hit wins, but every identifier you send is checked: if two point to different companies, the row is `ambiguous` with `identifier_conflict` and both in `candidates`. **A name alone never returns `matched`.** A name-only row is at best `ambiguous`, with candidates to choose from. **Tickers are checked against your `name`.** Tickers are reused across exchanges, so your name can pick the company that holds the ticker on another venue. A row matched only through a venue ticker is `ambiguous` + `name_disagrees` when the name disagrees, and `matched` + `security_listing_unverified` when you sent no name. If other companies hold the same ticker elsewhere, the row carries `multiple_tickers` and lists them in `candidates`. Add a country code (`WDI.DE`) to pin the exchange. **Billing:** one request is one call, whatever the row count. Up to 500 rows per request. Up to 50 rows that need a name lookup get one, within 25 seconds; rows resolved by an identifier don't count. Past either limit, a name-only row returns `not_covered` with `name_tier_skipped`, so split large name-heavy batches. **When to use this tool:** Use when the user hands you a **list** of identifiers — a spreadsheet column, a portfolio, a peer set — and you need FinancialFilings IDs for all of them. One request covers up to 500 rows and costs one call against quota regardless of row count, so it is far cheaper than a `companies_list` search per name. Pass an opaque `ref` per row to join the results back to the user's own rows. Act only on rows whose `status` is `matched`; for `ambiguous`, ask the user to choose from `candidates` rather than picking one yourself. **When NOT to use this tool:** Don't use for a single company — `companies_list` (name/ticker) or `isins_retrieve` (ISIN) is one hop and returns richer match context. Don't send more than 50 name-only rows in one request: rows past that cap return `not_covered` with `name_tier_skipped`, so split name-heavy batches. **Examples:** - Here are 40 tickers from my portfolio — pull their latest filings -> rows=[{"ref": "row-1", "ticker": "GOOG", "name": "Alphabet Inc."}, ...] (Resolve every ID in one call, then fan out to filings_list per matched row) - Do you cover these ISINs? -> rows=[{"isin": "US5949181045"}, {"isin": "US0378331005"}] (not_covered means no coverage — say so; never substitute a near match) [Server current date: 2026-11-01 — treat this as today.]
companies_resolve_create
**Cost:** 1 credit per request. Retrieve detailed information for a single company by its internal ID. **When to use this tool:** Use to get full company metadata (LEI, description, address and city, social links, stock exchanges, indices) after resolving the ID via `companies_list`. **When NOT to use this tool:** Don't use for financial data — use `companies_financials_retrieve`. Don't use just to confirm a company exists — `companies_list` already returns enough for identification. **Examples:** - What's the LEI for ASML? -> id=<company_id from companies_list> (Returns lei field) [Server current date: 2026-11-01 — treat this as today.]
companies_retrieve
**Cost:** 40 credits per request. **Experimental:** the response may change without an API version bump. Returns a company's standardized income statement, balance sheet and cash flow statement: `periods`, each holding its `statements`, each holding `line_items`. Use `depth` and `parent_code` on each line item to rebuild the statement hierarchy. **One statement per period.** When several filings report the same fiscal year, period and statement type, one is selected. A filing with the company's own financials beats one without (such as an employee benefit plan's report), the company's reporting currency beats another currency, and a complete statement beats a fragment. Only then does the latest filing win. A selected statement in a currency other than the company's carries `currency_mismatch: true`. **Currency is never converted.** `currency` is the currency the company presented in. A company that switches currency does not restate earlier years, so compare `currency.code` across periods before aggregating. A line item with its own `currency` comes from a dual-currency filing. **Values.** `value` and `raw_value` are exact decimal strings: parse them with a decimal type. `raw_value` and `scale` are `null` when a figure was computed rather than read off the page. `confidence` is set only where an independent check re-derived the figure and agreed: `null` means unjudged, not low confidence. `source_page` is the page of the filing's PDF a value read from that PDF is printed... **When to use this tool:** Use to get standardized financial line items (income statement, balance sheet, cash flow) for a company. Data is deduplicated across filings — the most recently published filing wins. SOURCING: attribute every figure to its fiscal period + period_end_date and reporting currency. GROUNDEDNESS (critical): report ONLY values present in the `periods` this call returns. If `period_count` is 0 or `periods` is empty, FinancialFilings has no *structured* financials for this company yet (common for US/SEC issuers — structured data is currently ESEF/EU-derived and being expanded). Do NOT stop and do NOT estimate — FALL BACK to the filing: call `filings_list` for this `id` filtered with `type` (or `types`) to an annual report (e.g. 10-K, 20-F, or the local annual type) with `ordering='-release_datetime'` and `page_size=10`, take the NEWEST row (do not gate on `processing_status` — it can be null, and null means unknown), retrieve it with `filings_markdown_retrieve`, and read the figures directly from the filing body — citing the filing type, date, and fiscal period. Never estimate, recall a figure from training knowledge, or attach a citation to a number you did not read from a tool result this session. PROVENANCE: treat a figure as as-reported ONLY when `raw_value` AND `scale` are BOTH non-null. If either is missing there is no as-reported pair, so you cannot assert the figure was read off the page — do not present it as sourced from the filing. An arithmetic tie between totals does NOT establish provenance: a computed figure is chosen to make the totals tie. To verify a figure, take `source_filing.id` (or the `sources` entry with `is_selected: true`, field `filing_id`) — it is already in this response, so no `filings_list` call is needed — and read it with `filings_markdown_retrieve` (no `processing_status` check first: the field is not on this response; a not-found error means no Markdown is available for that filing — do not promise it will appear). LINE ITEM CODES: `line_items` takes exact lower-case snake_case codes, comma-separated (not `;`); an unknown code is a 400 naming it. The codes most often guessed wrong: net_income -> net_income_loss, operating_income -> operating_income_loss, total_debt -> total_debt_bs, free_cash_flow -> levered_free_cash_flow_cf, capital_expenditure -> capital_expenditure_cf, operating_cash_flow -> cash_from_operations, eps -> basic_eps / diluted_eps, cash -> cash_and_equivalents. Not sure of a code? Omit `line_items` to get every line item. **When NOT to use this tool:** Don't use for filing documents or markdown content — use `filings_list` + `filings_markdown_retrieve`. Don't use without resolving the company ID first via `companies_list`. **Examples:** - Munich Re 2024 income statement -> id=<id>, fiscal_year=2024, statement_type='IS' (Use depth + parent_code to render Capital IQ-style hierarchy) - Compare EBITDA across 3 companies -> id=<id>, statement_type='IS', line_items='ebitda' (Call in parallel for each company. Always show currency.) [Server current date: 2026-11-01 — treat this as today.]
companies_financials_retrieve
**Cost:** 1 credit per request. Retrieve detailed information for a single filing by its ID. **When to use this tool:** Use to get full metadata for a single filing — source URL, PDF link, viewer URL, classification confidence, fiscal period. Call after `filings_list` when you need details beyond the list view. SHAREABLE LINKS: when a human needs to open the filing, hand them a PUBLIC link — `viewer_url` (the interactive web page) or `document` (the raw PDF/ZIP). NEVER give a user an `/api/...` URL — including the paginated `next`/`previous` links — those require credentials and 403 for an unauthenticated person. Filing CONTENT for you (the model) comes from `filings_markdown_retrieve(filing_id)`, not from a URL. **When NOT to use this tool:** Don't use for the actual filing content — use `filings_markdown_retrieve`. Don't use to search for filings — use `filings_list`. **Examples:** - Show me the source PDF for this filing -> id=<filing_id> (Returns document (raw PDF/ZIP URL) and proxy_url (rendered)) - Send me a link to read this filing -> id=<filing_id> (Share viewer_url (public web page) — never the /api/ markdown URL) [Server current date: 2026-11-01 — treat this as today.]
filings_retrieve
**Cost:** 6 credits per request (12 for premium filing types). Retrieve the raw processed content of a single filing in Markdown format. **Large filings.** An annual report can run to several hundred thousand tokens. Every response carries `X-Total-Chars`, the full document's length in characters. Pass `offset` and/or `limit` (characters) to read one window instead of the whole document; while characters remain after the window, the response also carries `X-Next-Offset`. To find the part you need first, use `GET /filings/{id}/markdown/search/?q=`. Each call, whole or windowed, is billed as one Markdown request. Through the MCP server, which pages large filings in chunks, a filing's Markdown is billed once per day. **When to use this tool:** Use to get the full text of a filing as Markdown. Supports pagination via offset/limit for long documents. Start with offset=0 and repeat with increasing offsets until the truncation marker is gone, you have found what you were asked for, or you have made 10 calls — whichever comes first. Stop at the cap and say the document was truncated rather than paginating a long filing indefinitely against the request budget. **When NOT to use this tool:** Don't use to search for filings — use `filings_list` first. Not every filing has Markdown content. If a `filings_list` row shows a `processing_status` other than `"COMPLETED"`, that filing has no Markdown available (it may still be processing, or may never get any) — if the user asked for THAT filing (e.g. the latest), say so rather than silently answering from an older one. If the field is null or absent, that means unknown — call this tool anyway; a not-found error means no Markdown is available for that filing (do not promise it will appear), while any other error is about access or availability. **Examples:** - Show me Apple's 10-K risk factors -> filing_id=<id>, offset=0, limit=50000 (Summarize specific sections — don't dump the whole document) Returns the full processed Markdown content of a filing in pageable chunks. For long filings, call this tool repeatedly with increasing `offset` values until the response no longer contains the truncation marker. Use a limit of 50000 chars (default) for most LLM context windows; the per-call cap is 150000 chars for the whole result (Claude.ai's documented tool-result ceiling), so a full-size slice is trimmed by the length of the header. [Server current date: 2026-11-01 — treat this as today.]
filings_markdown_retrieve
**Cost:** 1 credit per request. Retrieve details for a specific ISIN. **When to use this tool:** Use to resolve an ISIN (12-character code like US0378331005) to a company. Fastest path when the user provides an ISIN directly. **When NOT to use this tool:** Don't use for name or ticker lookups — use `companies_list` with the `search` parameter instead. **Examples:** - Look up US0378331005 -> code='US0378331005' (Returns the company associated with this ISIN) [Server current date: 2026-11-01 — treat this as today.]
isins_retrieve
Search ONE filing's processed Markdown for `query` and return ONLY the matching passages with their character offsets (e.g. query='going concern'). Use it INSTEAD of paging a long filing. Best for what only the document has: disclosures, risk and policy language, commitments, auditor and going-concern wording, and the sentence around a number. FOR A COMPANY-AND-PERIOD LINE ITEM — revenue, assets, cash flow, EPS and the rest — CALL companies_financials_retrieve FIRST: it returns those as structured values with their period and currency, which grepping a document cannot give you. STAY HERE INSTEAD when the question is what a PARTICULAR filing reported. That tool picks ONE statement per fiscal year, period and statement type across every filing that reports them, so a later restatement can come back in place of the filing you named — a wrong citation rather than a missing one. AND COME BACK HERE whenever that call does not answer: no coverage, an empty line item, or a refusal for your plan. A value that is absent or unavailable there is not an absent fact, and the figure is usually in the document. Case-insensitive. Each hit shows ~440 chars of context and an offset you can pass to filings_markdown_retrieve to read more around it. [Server current date: 2026-11-01 — treat this as today.]
filings_markdown_search
Search ONE query across SEVERAL filings in a single call — use this instead of calling filings_markdown_search once per filing when you are checking the same term across a set (e.g. the same disclosure across a company's filings, or across peers). SAME RULE AS THE SINGLE-FILING TOOL: for a company-and-period line item, call companies_financials_retrieve first — per company, not as a sweep here, which costs a read per filing. Stay here when the question is what a PARTICULAR filing reported: that tool may answer with a later restatement of the period instead. And come back here whenever it does not answer — no coverage, an empty line item, or a refusal for your plan; unavailable there is not absent. Case-insensitive. Returns per-filing hits with character offsets you can pass to filings_markdown_retrieve. Outcomes are reported SEPARATELY — matched, no match, searched only in part, and not searched — so you can tell a real absence from a filing that was truncated or never read. A filing can be BOTH matched and only partly searched — hits found before the byte cap are real, the tail past it is unknown. Max 20 filings per call. This searches only the filings you name — it does NOT search the whole corpus, so a 'no match' result says nothing about filings outside your list. [Server current date: 2026-11-01 — treat this as today.]
filings_markdown_search_batch
FinancialFilings ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve FinancialFilings's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are FinancialFilings alternatives on ChatGPT?
As of 2026-11-02, FinancialFilings competes with AeonData, Aiera, AIR Credit Intelligence, Alpha Vantage, ALPHAPORT.AI, AlphaYou - Market Intelligence, AnnuityRatesHQ, Balanços.AI and 72 more in ChatGPT Institutional Financial Data & Equity Research Platforms, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.