Vai al contenuto

Registro delle modifiche

Le modifiche all'API, al server MCP e ai dati, dalla più recente. Lo stesso elenco è disponibile su https://api.financial.md/changelog in formato Markdown e su https://api.financial.md/changelog.json in formato JSON.

2026-11-13 · api: Ownership, splits, dividends and prices: audit corrections

  • Insider transactions: an amended Form 4 replaces the lines of the form it amends from the amendment's acceptance; a pinned as_of before it still answers with the original.
  • Insider holdings: indirect lines are kept, one balance per stated nature of ownership (nature_of_ownership), so a trust and a partnership are no longer merged or dropped.
  • 13F holders of a company: periods lists only quarters whose filings are loaded; an original filing and a new-holdings amendment are added up, a restatement replaces, and the change against the prior quarter compares those totals.
  • Dividends: a sentence that declares a regular and a special dividend gives two events, each with its own dates.
  • Splits: a split no filer tagged is taken from an overnight price move by a whole ratio that the cover-page share counts repeat (source price_and_shares, xbrl_ratio null); a tagged split dated far from its ex-date is searched in a wider window before it is left unconfirmed.
  • Stock prices: weekend bars are no longer served. With as_of, adjust=splits and adjust=total_return use only splits and dividends that had gone ex by then.
  • Stated plainly: prices exist only for tickers that trade today. Delisted companies have statements and filings and no bars.

2026-11-13 · api: Fund letters are charged per call on agent.financial.md, and an empty answer is a 404

  • GET /v1/fund_letters and GET /v1/fund_letters/{id}: were free on agent.financial.md, now $0.10 per call over x402. This is the fund_letters row of the price sheet, which is now served. The figure on the sheet is unchanged.
  • GET /v1/fund_letters/sources stays free on both hosts: it says where the index comes from and holds no letter.
  • Behaviour change on both hosts: GET /v1/fund_letters with no matching letter now answers 404 not_found (error.details.reason no_fund_letters, with the filters it read). Before, this was a 200 with an empty items list.
  • Behaviour change on both hosts: GET /v1/fund_letters/{id} for an indexed letter from which no company mention and no stated return has been read answers 404 not_found (error.details.reason no_letter_content). Such a letter still appears in the list.
  • Charged as every priced route is: only for a 2xx answer, after the payment settles and before the answer leaves. A 400, a 404 or any other error is never charged, so an answer with nothing in it costs nothing. A charged answer carries the PAYMENT-RESPONSE receipt.
  • api.financial.md stays free without a key for these routes, within the keyless filing-layer limit. The MCP tool fund_letters stays free within the keyless limits; its description now names the per-call price.
  • No other route changes price. pricing.json, /.well-known/x402 and the OpenAPI x-price carry the new figures.

2026-11-13 · api: An empty estimates answer is a 404 and is not charged

  • GET /v1/company/estimates now answers 404 not_found when the company has no estimate in force and no guidance at as_of. error.details.reason is no_estimates_or_guidance and error.details.needs says what the method needs. Before, this was a 200 with empty lists.
  • Errors are never charged, so on agent.financial.md a call for such a company costs nothing. An answer with at least one estimate or one guidance statement is a 200 as before.

2026-11-13 · api: Behaviour change: ratios over a zero or negative denominator are withheld, and the screener compares like with like

  • A ratio whose denominator is zero or negative is no longer served as a number. The cell keeps its period and inputs, value is null and withheld_reason says zero_denominator or negative_denominator. Before, negative equity produced a large positive return on equity.
  • GET /v1/screen sorts and filters money metrics within one reporting currency. The default is the currency most companies of the screen report in (USD across the whole universe); currency= picks another. data.currency names it and data.excluded.other_currency counts the companies left out. Ratios and percentages are compared across currencies as before.
  • GET /v1/screen leaves out a company whose latest period ended more than 548 days before as_of. include_stale=true keeps those rows, and every item carries stale and currency. data.stale_after_days, data.excluded.stale and data.notes say what was left out and how to get it back.
  • The MCP screen tool takes currency and include_stale and repeats the notes in its summary.

2026-11-13 · docs: Corrections to statements that were wrong

  • Dividends: the entry of 2026-11-12 said a missing ex-date is never inferred. That was wrong. When a filing states a record date but no ex-date, the ex-date is derived by the settlement rule and labelled ex_date_method: settlement_rule. With no record date there is no ex-date.
  • Delisted companies: the docs said they were not loaded. They are in the directory with statements and filings under the CIK. They have no ticker lookup and no prices, so price history covers only companies listed today.
  • Proofs: documents listed a page among the proof fields every number carries. proof.page and proof.anchor are null on values from XBRL facts. Cite proof.source_url.
  • The landing page listed segments, company-reported KPIs and the earnings calendar as coming and counted thirteen ratios. All three are served and there are thirty ratio ids. Prices are raw by default, with split-adjusted and total-return values on request.
  • The MCP host's llms.txt and skill.md print the public API address, not the address of the deployment behind it.

2026-11-13 · api: Behaviour change: an unknown query parameter is a 400, and an empty grid says why

  • Every /v1 route now refuses a query parameter it does not read. Before, the parameter was ignored: ?period=quarterly answered 200 with annual periods. Now it answers 400 invalid_request.
  • The error names each bad parameter with the closest valid one (details.unknown_parameters[].did_you_mean), lists every parameter the route reads (details.valid_parameters), and its first remedy is the corrected URL when every name has a close match.
  • The valid names are the ones in the OpenAPI document for the route. ticker= and symbol= are still read as company= on company routes. A refused call is never charged and does not use the daily allowance.
  • A statement or ratio grid that answers 200 with no periods now carries data.note (why it is empty: no data at all, no periods of that period_type, or an as_of before the first filing we hold) and meta.remedies with the call that does return rows.
  • MCP tools send only parameters the routes read, and their summaries repeat the note and the next call for an empty grid.

2026-11-13 · api: Model-based estimates, company guidance and signals

  • GET /v1/company/estimates now answers with FinancialMD's own model-based baseline estimates: the next four quarters and two fiscal years of revenue, operating income, net income, diluted EPS and free cash flow, each with an 80 percent interval, every component value and the proof ids of the facts it read. Every row says generated_by: model and names the method version fmd-baseline-1.
  • These are not consensus and not analyst or Street estimates. They are computed only from the company's SEC filings and its own published guidance by a published method: https://financial.md/docs/estimates lists every formula.
  • The same answer carries the guidance the company stated in its own filings (8-K earnings releases, 10-Q, 10-K), each with the sentence, its position in the document and a link; rule-based signals (guidance raised or lowered against the prior statement, estimate revisions, results against guidance and against our own prior estimate); and the track record of the method, replayed point in time, per company and for all companies.
  • Signals are descriptive. There are no ratings, no price targets and no advice.
  • Consensus stays not covered. The 404 not_covered answer for it moved to GET /v1/company/estimates/consensus; GET /v1/company/analyst_ratings is unchanged. Both now name GET /v1/company/estimates as the alternative and say what it is and is not.
  • MCP: new tool company_estimates. GET /proof/{id} resolves estimate and guidance proof ids.
  • Coverage: dataset agentic_estimates is served.
  • Price: GET /v1/company/estimates is a metered route. It is free within the keyless limits, like the ratios route. On agent.financial.md it costs $0.25 per call over x402, charged only when the call is answered. That is above the $0.10 default cap of v1 x402 clients and within the $1 default of v2 clients. GET /v1/company/estimates/consensus stays an unpriced 404.

2026-11-13 · api: Fund letter index at /v1/fund_letters

  • GET /v1/fund_letters no longer answers 404 not_covered. It serves an index of the shareholder letters and performance discussions inside SEC N-CSR and N-CSRS filings: fund, manager, period, the link to the document on EDGAR, where the section starts and ends, its SHA-256, the returns the letter states for the fund, and the companies it names.
  • Each company mention carries a stance (new_position, added, held, trimmed, exited, short, watching or mentioned), topic tags, and at most one short attributed quote. Mentions are found by rule and labelled generated_by: rule with a method version and a confidence. They are FinancialMD's reading of the letter, not the manager's statement and not advice.
  • It is an index, not an archive: no letter text is hosted, and every item links the original. Filters: company, fund, manager, cik, period, from, to, source, kind and stance; as_of gives the mentions as they were known at a time.
  • GET /v1/fund_letters/{id} returns one letter. GET /v1/fund_letters/sources lists the sources with their legal basis, the manager websites on the seed list with the robots.txt and terms URLs recorded for each, and counts. Manager websites are listed but not fetched yet, and model extraction is off; coverage says so.
  • MCP: one new tool, fund_letters.

2026-11-13 · api: Planned prices of as_filed and value raised to the per-call minimum

  • Two planned outputs, not served yet: as_filed and value were $0.02 per call over x402, now $0.05. With this, no row of the price sheet is under the $0.05 per-call minimum.
  • No served route changes price, and no other planned output changes price. The keyless free limits are unchanged.

2026-11-13 · api: Company logos: openly licensed files, or a generated tile

  • GET /v1/company/logo now answers for every company (it answered 404 not_covered). format=json describes the image; format=svg and format=png (size 32 to 512) return it. MCP tool company_logo does the same.
  • kind wikimedia_commons: a logo file from Wikimedia Commons, taken only when the company matched a Wikidata item by CIK, LEI or ticker with confidence and the file is public domain or under a verified open licence. source carries the file page, author, licence, the public-domain rationale, retrieval time and hashes; attribution is in data.attribution and meta.attribution.
  • kind generated: a monogram tile drawn from the ticker in a colour derived from the company id, for every company without an accepted file. It is marked generated_by and never imitates the real mark.
  • Logos are trademarks of their owners whatever their copyright status. They are served to identify the company only; no endorsement is implied. data.use_policy says so and names the contact for corrections and removal. A removal takes effect at once.

2026-11-13 · api: Identifier cross-reference, fund net assets and returns from SEC filings, and price returns

  • GET /v1/identifiers/xref takes one identifier (ticker, CIK, LEI, FIGI, fund series or class id, FMD id) and returns the others we hold, each with its source and licence. A CUSIP or ISIN you already hold can be looked up: the answer names the SEC filing that reported it. GET /v1/identifiers/master pages the open identifiers of every company. No licensed identifier master is used.
  • GET /v1/fund/nav serves what SEC filings state: series net assets and each class's monthly total return from Form N-PORT, a total return index computed from those returns, and NAV and market price per share of closed-end funds from Form N-CEN with the premium or discount. SEC filings carry no daily NAV; the route says so.
  • GET /v1/company/stock_prices/returns serves price return, total return, annualised return and maximum drawdown over 1m to max windows, computed from single-venue closes and the splits and dividends in SEC filings.
  • Every price response now states its delay in source.delay: end of day, each session available the day after it trades, never real time.
  • Period type gains monthly (fund returns) and window (price returns). Proof ids gain the fund_return kind.
  • MCP tools identifier_xref, fund_nav and price_returns.

2026-11-13 · api: Issuers on EU and UK regulated markets: statements from their ESEF annual reports

  • Companies that file an ESEF annual financial report and do not file with the SEC are in the directory. They have no CIK: GET /v1/companies lists them with registry: "esef", their lei and their country, and takes registry= and country= as filters. A full LEI in q matches exactly.
  • company= takes lei:<LEI> (or a bare 20-character LEI) on every company route. meta.company.matched_by is then lei.
  • GET /v1/company/profile adds registry, reporting_currency, accounting_standard and registrations (every regulator the company is known at). For an SEC company registry is sec and registrations is empty unless it also files elsewhere.
  • The standardized and as-reported statement routes, the filing routes, /v1/screen, /proof and /v1/verify work for these issuers. Values come from the IFRS facts of the report, in the reporting currency, never converted. Each value's proof names the report, the IFRS tag and a link to the original. known.from is the day the report was published.
  • An accession for these reports is the report's identifier at the source (for example <LEI>-2024-12-31-ESEF-FR-0); accession parameters now take up to 64 characters.
  • Routes built from SEC forms and US market data (ownership, prices, splits, dividends, events, segments, KPIs, daily valuation) answer 404 not_covered for these issuers, with remedies naming what is served.
  • GET /v1/coverage splits filers outside the SEC by regulator: EU and UK regulated markets are served; Japan and Korea wait on API keys; UK private company accounts are not built.
  • /v1/screen compares raw amounts in each company's reporting currency. Add country= to keep a screen within one market.

2026-11-13 · api: Per-call prices on agent.financial.md changed

  • The price sheet of 2026-11-13 replaces the sheet of 2026-11-12. It takes effect when this release is deployed. Prices are per call over x402; pricing.json and the OpenAPI x-price carry them.
  • GET /v1/company/financials/{statement}/standardized: was $0.005, now $0.05 (from a funded key: was $0.002, now $0.02).
  • GET /v1/company/ratios and GET /v1/company/ratios/daily/{ratio_id}: was $0.005, now $0.05 (from a funded key: was $0.002, now $0.02).
  • POST /v1/verify: was $0.02, now $0.05.
  • GET /v1/company/kpis, GET /v1/company/segments and GET /v1/screen: was $0.05, now $0.10.
  • Every per-call x402 price on a served route is now at least $0.05 (was $0.005). Every served route fits the $0.10 default cap of x402 v1 clients and the $1 default cap of v2 clients.
  • Planned outputs, not served yet: peers and filing_diff were $0.05, now $0.10; new rows are fund_letters $0.10, filing_summary $0.10, estimates $0.25, bull_bear $0.25 and company_report $0.50. as_filed, value, brief and cached research are unchanged.
  • A payment signed for an old price is refused before anything is charged, and the 402 carries the new quote. A payment that settled at the old price, or whose settlement was still unknown, is finished at the amount it was signed for when the same PAYMENT-SIGNATURE is sent again.
  • The keyless free limits are unchanged: api.financial.md stays free without a key, 25 metered calls a day. Every other route stays free.

2026-11-13 · api: Politician trades: U.S. House periodic transaction reports

  • GET /v1/politician_trades serves the trades members of the U.S. House reported in periodic transaction reports, read from the House Clerk's published index and report files. It no longer answers 404 not_covered. Filters: member, chamber, company, type, from, to, date_field.
  • Each row has the filer's own words under as_filed, the official report at source_url with its retrieval time, and FinancialMD's additions (matched company, confidence) under financialmd. Handwritten reports are listed as unparsed with the link, never guessed.
  • The route is published at no charge and is never priced. Every answer carries data.notice: 5 U.S.C. 13107(c)(1) limits how anyone may use this data, and it names the corrections and removal contact.
  • MCP tool politician_trades returns the same answer. Senate reports are not loaded.

2026-11-13 · api: Paid routes describe themselves to x402 catalogues

  • The 402 answer of a priced route on agent.financial.md carries the x402 Bazaar discovery block (extensions.bazaar): the query parameters with an example, and the JSON Schema of the answer, both generated from the OpenAPI document.
  • GET /.well-known/x402 on both hosts lists the priced routes, prices, network, asset and receiving address, and says so when per-call payment is off.
  • llms.txt, llms-full.txt and skill.md show a runnable example of paying for one call with an x402 fetch client while per-call payment is on.
  • The MCP server's 402 message, tool descriptions and documents now say per-call payment is open only while it is.

2026-11-13 · api: Filing documents as PDF and page images

  • GET /v1/filing/{accession}/document?format=pdf returns the filing's primary document printed to US Letter pages. The text is selectable and each page footer names the filing and the page.
  • format=pages answers the page count with the links. format=png&page=N returns one page as a PNG at 144 dpi, so an answer can cite a page. The PDF and page images carry X-FMD-Page-Count and an ETag.
  • The first request for a document renders it and can take some seconds; a 503 with Retry-After means it is still rendering. Documents past 20 MB of HTML or 1,500 pages answer 404 not_covered with the limits and the EDGAR link.
  • The JSON form's pdf object now carries url, pages_url and page_image_url_template. MCP tool filing_document takes format and page and returns the same links.

2026-11-13 · api: Our own event feed, issuer releases and earnings-call materials

  • GET /v1/news/feed: one event per SEC filing across 8-K, 6-K, Schedule 13D and 13G, Rule 425, S-1 and late-filing notices, plus insider-buying clusters. Each event has a type, an importance from 1 to 5 with the rule that set it, a headline made by rule from the filing's own facts (headline_generated_by: rule), key numbers with the quoted sentence, and the filing link. Amendments collapse into the event they amend.
  • GET /v1/news/issuer_releases: releases issuers published about themselves. SEC exhibit 99 releases, and headline, link and time from issuers' own feeds. No article text from any publisher.
  • GET /v1/company/call_materials, GET /v1/call_material/{id} and GET /v1/calls_calendar: earnings releases, prepared remarks, shareholder letters, presentations and any call transcript the issuer itself filed with the SEC, as passages with sections, speaker turns and topic tags; and the calls issuers announced, with a link to the issuer's own webcast page.
  • This is not wire news and not a transcript archive: most issuers do not file a transcript, and we do not transcribe webcasts. Wire news and licensed transcripts stay not covered; GET /v1/coverage lists these routes as their alternatives.
  • A filed document that carries another party's copyright notice is served as structure only (text null, text_served false) with its SEC link.
  • MCP tools event_feed, issuer_releases, call_materials, call_material and calls_calendar.

2026-11-13 · api: AI-written research: company reports, bull and bear cases, filing summaries

  • GET /v1/company/research answers a company report (business, segments, financial trajectory, capital allocation, risks). GET /v1/company/bull_bear answers the bull case and the bear case. GET /v1/filing/{accession}/summary answers the summary of one 10-K, 10-Q, 8-K or 20-F.
  • A model writes them from our standardized facts and the company's own filings only. Every number is re-checked against the fact store and every claim cites fact proof ids or a filing passage with its character span; a report with an uncited or mismatched number is repaired or not published. data.grounding counts what passed.
  • Every answer says generated_by model and names the model, the method version, the generation time and the filings it had seen. Reports are versioned and answer as_of. They are not reported fact, not a rating, carry no price target and are not investment advice.
  • Descriptive quality scores (profitability, leverage, growth stability, dilution) come by published rule from our own ratios; the formulas are in docs/ai-research.md.
  • Reports are written on a schedule for a small set of companies; a company without one answers 404 not_found with details.status. MCP tools company_research and filing_summary.
  • Per call over x402 on agent.financial.md: the filing summary is $0.10, the bull and bear cases $0.25 and the company report $0.50. api.financial.md serves the same routes without a key within the keyless daily limits. pricing.json and the OpenAPI x-price carry the prices.
  • A call is charged only when it is answered. An unknown company or filing, a form that is not summarised, and a company or filing without a published report answer 404 and are never charged.
  • The bull and bear cases and the company report are above the $0.10 default cap of x402 v1 clients, which must be raised to buy them; they fit the $1 default cap of v2 clients. So are the model-based estimates at $0.25; every other priced route fits the $0.10 cap.

2026-11-13 · api: A ticker keeps its history across a reorganisation; total revenue is checked before it is served

  • A company formed by a holding-company reorganisation or a rename carries its predecessor's history: standardized statements, ratios, the filing list and daily prices include what the predecessor reported before the effective date, and each proof names the predecessor's filing. The grid says so in data.notes (code continues_predecessor).
  • Profiles list predecessors and successors with the kind of link, its effective date and whether the history is included (it is not for a merger or a spin-off).
  • Total revenue is taken from the tag the filing's own arithmetic supports: when a filing tags a minor line with the usual revenue tag beside a larger total, the total is used if revenue less cost of revenue equals gross profit for it.
  • An annual revenue figure that differs from the neighbouring year by more than 20 times while cost of revenue stays within 5 times is withheld (the cell is empty) instead of served.

2026-11-13 · api: Foreign filers on Forms 20-F, 40-F and 6-K

  • period_type=semi_annual serves half years for filers that furnish half-year XBRL on Form 6-K, and period_type=ltm serves their trailing twelve months. An interim grid with no rows now says why in data.notes and names the calls that have rows in meta.remedies.
  • As-reported grids are in the reporting currency of each period; a row's unit is the unit of every cell in it. Convenience translations into another currency are left out of rows and counted in data.convenience_translations. period_type=semi_annual is accepted.
  • A ticker a delisted company used to trade under resolves to it: meta.company.matched_by is former_ticker and meta.company.former_listing gives the dates. Profiles list former_listings, and depositary share listings have kind adr with kind_basis.
  • Annual reports that SEC companyfacts carries with almost no facts are read from the filing's own XBRL instance, and more IFRS lines are standardized (selling and administrative expense, depreciation, capital expenditure, dividends, share counts).

2026-11-13 · api: Per-call payment is open on agent.financial.md

  • Priced routes on agent.financial.md take x402 payments in USDC on Base (eip155:8453). A priced route answers 402 with a PAYMENT-REQUIRED header; send the call again with PAYMENT-SIGNATURE.
  • Prices are the sheet of 2026-11-12: standardized statements and ratios $0.005, verify $0.02, KPIs, segments and the screen $0.05. Every other route is free. pricing.json and the OpenAPI x-price carry them.
  • A call that fails is not charged. The same signed payment sent again within 15 minutes gets the same answer without a second charge.
  • api.financial.md stays free without a key, within the daily limits.

2026-11-13 · api: Requests are merged, voted on and tracked until they ship

  • Similar requests merge into one demand item (by kind, company and concept); a repeat request is a vote. POST /v1/request-data answers with request_id, item_id, the item's status and its request and requester counts.
  • GET /v1/request-data/{id} answers the status (new, triaged, planned, done or wontfix), our public note and, once done, the endpoint or tool that serves it. MCP tool request_status does the same (thirty-seven tools in all).
  • Requested and shipped: https://financial.md/requested lists the items a person reviewed and titled, aggregate only, with the JSON feed GET /v1/requested. Nothing is listed automatically.
  • People can request data or analysis from the terminal's form, the command palette, every empty or not-covered state and the footer. No email address is collected: follow a request by its id.
  • Data that needs a licence is closed as wontfix with a note pointing to GET /v1/coverage; later requests for it still count as votes.

2026-11-13 · api: metric_alias replaces fiscal_alias

  • Concept rows (GET /v1/company/metrics, statements, ratios) carry metric_alias: another id accepted wherever concept_id is. fiscal_alias is deprecated: it is still sent with the same value until the next release, then removed. The MCP output schemas follow.

2026-11-13 · api: 8-K news, full-text search, and a coverage map with clear not_covered answers

  • GET /v1/news: 8-K filings across all companies, newest first, each with its items, event types, a headline and an importance from 1 to 5 (FinancialMD's rule by item number). Filter by event_type, importance_min, company and dates. Not wire news.
  • GET /v1/company/events gains importance_min, and importance and headline on every filing.
  • GET /v1/search/filings: keyword search across EDGAR documents since 2001 through SEC EDGAR full-text search, with FinancialMD ids for the companies on each document.
  • GET /v1/coverage lists every dataset with its status. Licensed datasets (consensus estimates, analyst ratings, transcripts, real-time prices) and those not built or waiting on a decision answer 404 not_covered at their own path (/v1/company/estimates, /v1/company/analyst_ratings, /v1/company/transcripts, /v1/company/stock_prices/intraday, /v1/company/logo, /v1/politician_trades, /v1/fund_letters) with the reason and alternatives in error.details.

2026-11-13 · mcp: news, filing_search and coverage tools

  • news: 8-K news across all companies with importance; filing_search: keyword search over EDGAR documents; coverage: what FinancialMD serves and does not (consensus estimates, transcripts, real-time prices and other licensed data are named as not covered, with alternatives). company_events takes importance_min.

2026-11-12 · api: Tell us what data you need

  • POST /v1/request-data takes { kind, want, why?, company?, endpoint_or_tool? }: free, keyless, never charged, reviewed weekly. GET /v1/request-data describes the body.
  • unknown_company, not_covered, unknown_concept, an unknown ratio and an unknown /v1/ route answer with a request_data remedy; an empty search or screen carries one in meta.remedies.
  • A ticker= query parameter is read as company= when company= is absent. An unknown_company remedy names the directory search for the value.
  • MCP tool request_data does the same from an agent.

2026-11-12 · api: One price sheet for the agent host (planned, not charged)

  • Planned per-call prices on agent.financial.md: standardized statements and ratios $0.005 ($0.002 from a funded key), verify $0.02, KPIs, segments and the screen $0.05. Fields and the filing layer stay free.
  • Every per-call x402 price is at least $0.005, and answers stay within the $1 default cap of x402 v2 clients. The sheet is in llms.txt, the OpenAPI x-price (with keyed_usd where it differs) and docs/API.md section 6.1.
  • Nothing is charged today: per-call payment is not switched on.

2026-11-12 · api: Dividends with dates, total return, Form 3 holdings, fund types and fees

  • GET /v1/company/dividend_events: cash dividends with declaration, record, ex and pay dates as filed and how each was captured; when a filing states a record date but no ex-date, the ex-date is derived by the settlement rule and labelled ex_date_method: settlement_rule; with no record date there is no ex-date.
  • GET /v1/company/stock_prices?adjust=total_return adds a dividend-adjusted series beside the split-adjusted one.
  • GET /v1/company/ownership/insider_holdings serves Form 3, 4 and 5 holding lines; insider holders include them.
  • GET /v1/fund/profile: a fund's type and ETF flag from N-CEN and each share class's prospectus fees (VOO 0.03 percent). N-PORT holders of a company take period= and read only the newest window.
  • MCP tools dividends and fund_profile (thirty-two tools in all).

2026-11-12 · api: Company-reported metrics

  • GET /v1/company/kpis serves adjusted (non-GAAP) measures and operating KPIs read from the companies' own earnings releases and reports, point in time, with a confidence label (high = printed identically in two or more places).
  • Each value's proof resolves to its citation: accession, document, table, row and value index, character span, raw printed text and the GAAP reconciliation table. Values two documents print differently are withheld and never served.
  • MCP tool company_kpis (thirty tools in all).

2026-11-12 · api: Delisted and inactive filers, employees, shares per class

  • Profiles carry listing status (active, delisted with its date, inactive), business address, incorporation country, former names and filing dates from SEC submissions.
  • GET /v1/screen covers active companies by default; status=delisted|inactive|all opts in.
  • Profiles carry the newest head count at confidence 0.90 or more with its source sentence, and cover-page shares per share class, never summed.

2026-11-12 · api: Share classes, names, foreign filers and speed

  • A ticker naming one share class (BRK-A) is served as that listing on prices and valuation, never swapped for another; meta.company.listing names it.
  • Name search matches common and Chinese names of widely held companies; the MCP company_lookup falls back to a name search when a word is not a ticker.
  • country is no longer US for foreign filers whose country is not stored (null, or CA for Canadian provinces); a missing fiscal year end comes from the latest annual report.
  • Faster: filing lookups by accession, 13F holders and holdings, and screens (ten-minute universe window, warmed at its start).

2026-11-12 · api: Split-aware valuation, screening on multiples, capital ratios

  • Valuation ratios put share counts on the close's basis with confirmed splits (share_adjustment on the value); only unexplained split-sized moves withhold a point.
  • GET /v1/screen filters and sorts on market_cap, pe_ttm, ev_ebitda_ttm and the other valuation ids.
  • net_interest_margin is renamed nii_to_avg_loans_securities: net interest income over average net loans plus securities, which is not a bank's reported NIM (docs/ratios.md). CET1, tier 1 and tier 1 leverage ratios as filed in XBRL.
  • Proof ids of segment facts, N-PORT values and calendar events resolve at GET /proof/{id}. Listings OpenFIGI types as ADR are not priced.
  • Segments carry the filer's exact period_start and period_end (the SEC data sets round dates to month ends), with period_exact and fsds_period_end.

2026-11-11 · api: Valuation ratios on IEX closes

  • GET /v1/company/ratios adds market_cap, enterprise_value, pe_ttm, ps_ttm, pb, ev_ebitda_ttm, ev_ebit_ttm, fcf_yield and dividend_yield, priced at the last IEX close on or before each period end.
  • GET /v1/company/ratios/daily/{ratio_id} serves a valuation ratio one point per session, each using the facts known that evening.
  • Every valuation value lists the close's proof first in proof.inputs; GET /proof/{id} recomputes it. data.price_basis says which listing was used and why a company is not priced (several share classes, an ADR, no prices).
  • Bank ratios (net_interest_margin, efficiency_ratio, loans_to_deposits) and insurer ratios (loss_ratio, acquisition_cost_ratio).

2026-11-11 · api: OAuth 2.1 for MCP connectors

  • RFC 8414 metadata at /.well-known/oauth-authorization-server; dynamic client registration, Client ID Metadata Documents, PKCE (S256), refresh-token rotation, revocation.
  • Tokens carry the keyless daily limits in an allowance of their own. No account, no payment.
  • GET /v1/me reports key.audience, key.expires_at and tier.

2026-11-11 · api: Share-class tickers in any spelling

  • BRK.B, BRK-B, BRK/B and brk-b resolve to one listing; a bare root such as BRK resolves to the company whose class listings it names.

2026-11-11 · mcp: Ten new tools and 26 skills

  • New tools: ratios_daily, corporate_actions, events_calendar, company_events, segments, insider_holders, fund_holders, fund_holdings, identifiers, filing_document (twenty-nine in all); stock_prices takes adjust "splits".
  • 26 task skills under /skills/, all of them in one /skills.zip.

2026-11-11 · api: Splits, dividends, calendar, 8-K events, segments, insider holders, funds, identifiers

  • New routes: /v1/company/splits, /v1/company/dividends, /v1/events_calendar, /v1/company/events, /v1/company/segments, /v1/company/ownership/insider_holders, /v1/company/ownership/funds, /v1/funds, /v1/fund/holdings, /v1/company/identifiers.
  • GET /v1/company/stock_prices?adjust=splits adds split-adjusted values (confirmed splits only).

2026-11-11 · api: Filing documents; derivation in proofs

  • GET /v1/filing/{accession}/document links a filing's EDGAR pages; format=html serves the primary document.
  • Proofs of derived values (Q4, LTM, formula lines) list every as-reported fact with its weight and a sum check.
  • GET /v1/company/metrics lists the concepts each template shows, so a bank's list matches its statements.

2026-11-11 · docs: Reference pages

  • Swagger UI at /docs, the whole reference in one file at /llms-full.txt, and this changelog at /changelog.

2026-11-10 · api: Daily prices from IEX

  • GET /v1/company/stock_prices serves daily bars built from trades at IEX only, with the venue's citation in meta.attribution and a proof per number.

2026-11-10 · api: Ownership

  • Insider transactions (Forms 3, 4, 5), institutional holders of a company and a manager's holdings (Form 13F), with proofs back to each form.

2026-11-10 · api: Classification

  • Profiles say where sector and industry come from: the filer's SIC code in its EDGAR submissions document.

2026-11-09 · api: Screen, filing facts and the supplemental statement

  • GET /v1/screen filters and sorts every covered company on latest-period metrics.
  • GET /v1/filing/{accession}/facts returns every mapped fact a filing tagged, by statement.
  • Share counts and per-share figures in /v1/company/financials/supplemental/standardized; sector and industry on company lists.

2026-11-08 · api: Version 1

  • Standardized and as-reported statements with proofs, point-in-time reads (as_of, original, history), ratios, verify, proofs, the changes feed, and the discovery files.