# European Financial Data — Full agent and documentation guide > European company research for AI workflows. Use the hosted Model Context Protocol (MCP) server as the primary connection. Coverage and source freshness vary by company and dataset. The service is in beta; testing access is free and does not require payment. ## Start here - Website: https://eurofindata.com/ - Agent connection instructions: https://eurofindata.com/agents.md - Concise documentation index: https://eurofindata.com/llms.txt - Structured machine-readable connection manifest: https://eurofindata.com/agent-manifest.json - MCP endpoint: https://api.eurofindata.com/mcp (Streamable HTTP) - REST API reference: https://eurofindata.com/docs/api-reference (for scripts and applications) ## Documentation map ### Introduction European company data for your AI agent. Connect through MCP and work with the evidence. Page: https://eurofindata.com/docs Topics: Connect your agent, What you can access, Working with the data. ### Quickstart Connect your agent and verify its first company data query. Page: https://eurofindata.com/docs/quickstart Topics: Create an account key, Connect your agent, Ask your first question, Next steps. ### Connect with a prompt Give your AI agent one short instruction to configure and verify its connection. Page: https://eurofindata.com/docs/agent-onboarding Topics: Copy the setup prompt, What your agent will do, After connecting. ### MCP client setup Configure Claude Code, Cursor, or another Streamable HTTP client. Page: https://eurofindata.com/docs/mcp Topics: Connection details, Claude Code, Cursor, Your first query. ### Tools and research Discover MCP tools for financials, adjusted measures, KPIs, guidance, and sources. Page: https://eurofindata.com/docs/mcp-tools Topics: Discover tools, Margin history, Adjusted measures, KPIs and guidance, Filing sources, Other datasets. ### Coverage Understand the company universe and check availability before querying. Page: https://eurofindata.com/docs/coverage Topics: Company universe, Check company coverage, Reporting periods. ### Data provenance Trace a number to its source and understand reporting periods and freshness. Page: https://eurofindata.com/docs/provenance Topics: Sources and identifiers, Verify a number, Check freshness. ### Authentication Create, use, rotate, and revoke your account API keys. Page: https://eurofindata.com/docs/authentication Topics: Create a key, Authenticate requests, Rotate and revoke. ### Usage and limits Understand your shared account allowance and handle request limits. Page: https://eurofindata.com/docs/rate-limits Topics: Account allowance, What counts, Handle request limits. ### REST API Use the same data in scripts and applications: endpoints, parameters, and responses. Page: https://eurofindata.com/docs/api-reference Topics: Base URL, Companies, Financial statements, Other datasets, Errors and pagination. ## Worked research and comparisons Index: https://eurofindata.com/research The complete research articles follow, including methods, prompts, tables, source links and limitations. They are generated from the same editorial content as the public HTML pages. The documentation map above remains an index; this file does not claim to contain the complete body of every documentation page. ## Analyze ASML’s operating margin with an AI agent > A reproducible five-year ASML example with statement values, a margin chart, source filings and a prompt you can run. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/asml-operating-margin ### The short answer In this stored EU-IFRS/ESEF sample, ASML’s annual operating margin moves from 37.8% in 2021 to 36.9% in 2025. The calculation uses operating income divided by revenue, in the same currency and reporting period. It is not ASML’s US GAAP operating-margin series. ### Ask a question the data can answer “What happened to profitability?” needs a definition before it needs a chart. Here we use annual operating income as a share of revenue, on the stored EU-IFRS/ESEF basis. The sample contains five annual periods ending 31 December, from 2021 to 2025. #### Research prompt ```text Find ASML in European Financial Data. Check its coverage, then retrieve the available annual income statements for 2021–2025 in their original currency. Calculate operating income / revenue × 100 for each complete year. Show the values in a table and line chart, retain missing values, and identify the source filings. Confirm the EU-IFRS/ESEF accounting basis; do not mix it with the US GAAP series. Explain any restatement limitations before interpreting the trend. ``` Connect MCP first; check whether the required data exists. Connect through the [MCP setup guide](https://eurofindata.com/docs/mcp) first. A new query may return revised records or more periods than this dated example. ### The numbers behind the chart ASML dated annual sample (2026-10-04). Amounts in full currency units. EU-IFRS/ESEF basis. | Period end | Currency | Revenue | Operating income | Operating margin % | Source | Source document | | --- | --- | --- | --- | --- | --- | --- | | 2021-12-31 | EUR | 18611000000 | 7043900000 | 37.8 | esef | [ESEF](https://filings.xbrl.org/724500Y6DUVHQD6OXN27/2021-12-31/ESEF/NL/0/asml-2021-12-31-en.json) | | 2022-12-31 | EUR | 21173400000 | 7321000000 | 34.6 | esef | [ESEF](https://filings.xbrl.org/724500Y6DUVHQD6OXN27/2022-12-31/ESEF/NL/0/asml-2022-12-31-en.json) | | 2023-12-31 | EUR | 27558500000 | 9511900000 | 34.5 | esef | [ESEF](https://filings.xbrl.org/724500Y6DUVHQD6OXN27/2023-12-31/ESEF/NL/0/asml-2023-12-31-en.json) | | 2024-12-31 | EUR | 28262900000 | 9937100000 | 35.2 | esef | [ESEF](https://filings.xbrl.org/724500Y6DUVHQD6OXN27/2024-12-31/ESEF/NL/0/asml-2024-12-31-en.json) | | 2025-12-31 | EUR | 32667300000 | 12054000000 | 36.9 | esef | [ESEF](https://filings.xbrl.org/724500Y6DUVHQD6OXN27/2025-12-31/ESEF/NL/0/asml-2025-12-31-1-en.json) | For 2025, €12.054 billion divided by €32.6673 billion gives approximately 36.9%. On these stored values, margin is about 0.9 percentage points below 2021 and 1.7 points above 2024. Percentage-point changes compare the margins directly; they are not percentage growth in operating profit. 2025 operating margin = 12,054,000,000 / 32,667,300,000 × 100 ≈ 36.9% ### Reproduce and verify the result 1. Resolve ASML and retain its LEI, `724500Y6DUVHQD6OXN27`, to check the filing entity. 2. Discover the live tool schemas, then use `get_company_coverage` and `get_income_statements` with annual periods and original currency. 3. Use `get_company_filings` to connect the statement’s filing identifier to a report reference. Open the source and verify the period, unit and concept. 4. Recalculate from the full numeric values before rounding the display. Do not mix values from separate accounting bases or incompatible report versions. The linked ESEF JSON is machine-readable source data. Preserve its concept, period and entity context when checking a value. For interpretation, also read the issuer’s financial statement notes. ### What this example establishes The sample establishes a calculation and a five-year pattern. It does not explain the causes of the changes. A causal answer needs report narrative, product mix and relevant accounting context. The agent should distinguish a retrieved observation from an explanation it has inferred. > These are stored ESEF statement values, not a claim about the latest quarter or every presentation used in ASML’s investor materials. Check the accounting basis before comparing them with another source. For a longer-history example that contains a real gap, see the [SAP walkthrough](https://eurofindata.com/research/sap-financial-history-missing-data). ### Verify the accounting basis in the readable report The [2025 EU-IFRS annual report, page 270](https://ourbrand.asml.com/m/6ea363f69344ebd4/original/asml-2025-annual-report-based-on-ifrs.pdf#page=270), presents total net sales of €32,667.3 million and operating income of €12,054.0 million. These match the 2025 sample after scaling from millions to full EUR units. The report is a 25 MB PDF. ASML also publishes US GAAP results. A different operating figure in a US GAAP presentation is not automatically a data error; reconcile the reporting basis before comparing. The margin here describes the EU-IFRS statement series. Illustrative tool calls; discover live schemas first ```text search_companies(query="ASML", limit=5) get_company_coverage(ticker="ASML") get_income_statements(ticker="ASML", period="annual", limit=5) get_company_filings(ticker="ASML", limit=5) ``` Download the sample JSON or CSV below to recompute from unrounded inputs. For a ready-to-run script, use the [Python walkthrough](https://eurofindata.com/research/european-financial-data-python). ### Reproduce the sample Dated sample: 2026-10-04. Not live data. Amounts are in full currency units. EU-IFRS/ESEF; not the US GAAP series. CSV empty numeric cells mean missing values, not zero. - [Sample JSON](https://eurofindata.com/research/asml-operating-margin/sample.json) - [Sample CSV](https://eurofindata.com/research/asml-operating-margin/sample.csv) ### Sources and further reading - [ASML 2025 EU-IFRS annual report, consolidated profit or loss, page 270 (PDF)](https://ourbrand.asml.com/m/6ea363f69344ebd4/original/asml-2025-annual-report-based-on-ifrs.pdf#page=270) - [ASML FY2025 ESEF source used in this example](https://filings.xbrl.org/724500Y6DUVHQD6OXN27/2025-12-31/ESEF/NL/0/asml-2025-12-31-1-en.json) - [ESMA: European Single Electronic Format](https://www.esma.europa.eu/issuer-disclosure/electronic-reporting) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Read LVMH’s reported and adjusted measures carefully](https://eurofindata.com/research/lvmh-reported-vs-adjusted-profit) - [Build a SAP margin history without filling the gaps](https://eurofindata.com/research/sap-financial-history-missing-data) - [How to check whether financial data is actually current](https://eurofindata.com/research/financial-data-freshness) --- ## Where to get European financial data for AI agents > Choose between issuer reports, public registers and data services for European company research. Start with the question and verify coverage. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/european-financial-data-for-ai-agents ### The short answer Choose a source for the company, reporting period and type of evidence you need. An agent connection makes retrieval easier; it does not establish complete company coverage or turn annual accounts into live market prices. ### Choose evidence for the question A financial statement, a share-price series and a regulatory disclosure describe different things. “European financial data” is too broad a specification for choosing a provider. Write down the companies, periods and fields needed for one real question, then check whether the proposed source can supply them. A practical starting point for source selection | Question | Evidence to look for | Important check | | --- | --- | --- | | How did operating margin change? | Annual or interim income statements | Same period type, currency, reporting entity and accounting basis | | What did management adjust? | Issuer-defined measures and their report reconciliation | Original labels and consistent definitions | | What short positions are disclosed? | The relevant regulator’s dated publications | Jurisdiction, disclosure threshold and aggregate versus holder-level records | | What is the stock worth right now? | A current, licensed quote source | Exchange, timestamp, delay and use permissions | | What explains the change? | The original report and relevant narrative | Evidence supporting the explanation, not only a numeric correlation | ### Three routes to the evidence **Original reports and registers.** An issuer’s report or a regulator’s publication lets you inspect the source directly. You take responsibility for finding documents, resolving entities, handling revisions and extracting the fields you need. **Structured filing data.** ESEF reports combine readable documents with tagged financial information. Tags help extraction, but contexts, units, issuer extensions and report versions still need interpretation. A tagged report is not automatically a ready-made comparable time series. **A data service.** A service can package retrieval and normalization behind tools or an API. Evaluate it with your own list of issuers and periods. A large company directory does not establish that every company has statements, KPIs or current prices. Our beta is one option for available European financial statements and regulatory disclosures. See [the direct-filings comparison](https://eurofindata.com/research/public-filings-vs-financial-data-mcp) for the work each route leaves with you. ### Use a small acceptance query #### Research prompt ```text I want to research ASML and SAP using European Financial Data. Resolve each company, show the available annual statement periods, and check the relevant source freshness. Retrieve one recent annual income statement for each in its original currency. Report missing fields, source labels and filing references. Tell me which parts of a margin comparison still need source verification before calculating it. ``` Connect MCP first; check whether the required data exists. Start with a query whose answer you can check in a published report. Then test a missing period and an unsupported issuer. An agent should acknowledge both situations rather than replace missing values with invented figures or silently switch sources. ### Decide what belongs in your workflow For interactive research, a compatible MCP client can select and call tools. For a repeatable application, a [REST workflow](https://eurofindata.com/research/mcp-vs-rest-financial-data) gives you direct control over requests. Neither interface changes the underlying coverage. > Our beta does not currently refresh share prices automatically. KPI and guidance coverage is limited, and not every issuer has a long historical series. Check live tools and issuer coverage before planning a project around a dataset. Testing currently allows 300 successful data requests per account per UTC day, shared across MCP, REST and the dashboard, with up to five active keys and no payment required. Each question may require several calls. Check your dashboard for account usage. ### Turn a broad search into a useful shortlist If you search for a free financial data API, first distinguish a downloadable sample from continuing account access. Our public examples are fixed snapshots; the authenticated service has a shared daily allowance. Neither is a promise of a complete, unrestricted financial database. For provider selection, start with [the provider and marketplace guide](https://eurofindata.com/research/financial-data-providers-marketplaces-directories). For a repeatable data integration, try the [Python statement example](https://eurofindata.com/research/european-financial-data-python). Current stock-price research needs an appropriately entitled quote source and remains outside our active price refresh. ### Sources and further reading - [ESMA: European Single Electronic Format](https://www.esma.europa.eu/issuer-disclosure/electronic-reporting) - [Our current coverage and limitations](https://eurofindata.com/docs/coverage) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Financial Datasets vs European Financial Data](https://eurofindata.com/research/financial-datasets-vs-european-financial-data) - [Public filings or a financial data MCP server?](https://eurofindata.com/research/public-filings-vs-financial-data-mcp) - [Ticker, ISIN or LEI: find the right European company](https://eurofindata.com/research/company-identifiers-ticker-isin-lei) --- ## Financial Datasets vs European Financial Data > Compare Financial Datasets with a research workflow focused on Europe: free MCP testing, source-linked statement examples and regulatory disclosures. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/financial-datasets-vs-european-financial-data ### The short answer For European company research with an AI agent, start with European Financial Data: try available statements and regulatory disclosures with 300 successful data requests per UTC day and no payment required. Inspect a complete ASML example before signing up. Financial Datasets is also worth evaluating for its documented US and UK datasets and planned EU rollout. Published by European Financial Data. Provider facts were checked against the linked documentation on 17 October 2026. This is a publisher comparison, not a paid-account benchmark; plans and coverage can change. ### Start with the European company question Ask your agent for ASML’s annual operating margins, then inspect the statement inputs and the matching report. European Financial Data gives you a concrete European research workflow to try before you choose a wider data stack. - **Free to test:** 300 successful data requests per account per UTC day. No payment required. - **Built around your agent:** hosted MCP for compatible clients, plus REST when you need a script. - **Evidence you can inspect:** public worked examples, downloadable inputs and source references. [Create a free account →](https://eurofindata.com/sign-up)[See the ASML calculation and its sources ↗](https://eurofindata.com/research/asml-operating-margin) European statements and regulatory disclosures. Check company and period coverage; current share prices are outside the active refresh scope. ### Start with market coverage, then test issuers Financial Datasets’ [market-coverage documentation](https://docs.financialdatasets.ai/market-coverage) lists US and UK financials and an EU launch planned for 23 October 2026. This comparison was checked on 17 October, so that planned launch is not treated as an available service or as evidence of its eventual depth. European Financial Data focuses on European company statements and regulatory datasets. You can start with free MCP testing, inspect dated public examples and follow the available filing references. Countries represented in the dataset span Europe; use issuer-level coverage to check the companies and periods you need. Documented positioning checked on 17 October 2026; not a speed or accuracy benchmark | Decision | Financial Datasets | European Financial Data | | --- | --- | --- | | Market scope | US and UK documented; EU launch listed as planned | European company focus; issuer and dataset coverage vary | | Agent workflow | Documents agent connectors and API access | Hosted MCP with an account bearer key; REST also available | | Try the workflow | Check current plan access and limits | 300 successful data requests per UTC day, no payment required; public samples need no account | | Price-dependent research | Documents stock-price datasets; check entitlements and market coverage | Automatic share-price refresh is not currently enabled | | Evidence checks | Evaluate required endpoint, period and provenance in their docs | Inspect issuer coverage, source freshness and available filing references | ### Why start here for European research If your project starts with US filings, investigate Financial Datasets against that requirement. For UK research, its own coverage documentation already describes annual financials; it would be misleading to present it as a US-only option. For European company statements and regulatory disclosures, start with our MCP tools and one useful research task. The [ASML example](https://eurofindata.com/research/asml-operating-margin) makes the calculation, inputs and filing links visible so you can judge whether this workflow suits you. Do not choose on the presence of “AI” or “MCP” in a feature list. The meaningful test is whether your client can retrieve the needed evidence, preserve its context and explain what is missing. ### Run the same acceptance task 1. Choose the same issuers, identifiers, annual periods and original currency on each service. 2. Request the same statement lines. Preserve the exact request and returned source metadata. 3. Check one original filing, including accounting basis and any restatement. 4. Compare missingness and traceability. Measure latency yourself if it matters, using the same workload and a stated method. 5. Review current access limits, terms and price entitlements before relying on a production integration. We have not run an authenticated paid-account comparison, tested their advertised ingestion latency or independently audited their accuracy. There is no numerical quality ranking on this page. ### What to check again before deciding Market rollouts and coverage can change quickly. Reopen the linked provider coverage page, especially after the announced EU date. For our beta, also check [current limitations](https://eurofindata.com/docs/coverage): historical depth varies, KPIs and guidance are sparse, and source errors can delay updates. Start with our free account and one European company question. Use the public ASML inputs as a reference, then ask your agent for the latest available records. That gives you a concrete result to compare with your existing workflow before you build an integration. ### What was checked for this comparison We read the linked provider overview and market-coverage pages on 17 October 2026 and compared their documented scope with our current beta documentation and dated examples. We did not authenticate to a competitor account or measure its returned records. Our inspectable evidence is the [ASML EU-IFRS example](https://eurofindata.com/research/asml-operating-margin), its source filings and its downloadable inputs. For an access comparison, use our documented testing limit and the other provider’s current plan terms; no unverified price or “unlimited” claim is assumed. The planned EU date is a time-sensitive statement about their documentation, not a permanent differentiator. Recheck availability after 23 October before relying on it. ### Sources and further reading - [Financial Datasets: market coverage](https://docs.financialdatasets.ai/market-coverage): Provider documentation checked on 17 October 2026; planned markets are not treated as available. - [Financial Datasets: product documentation](https://docs.financialdatasets.ai/introduction) - [Our current coverage and limitations](https://eurofindata.com/docs/coverage) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Alpha Vantage vs European Financial Data](https://eurofindata.com/research/alpha-vantage-vs-european-financial-data) - [Where to get European financial data for AI agents](https://eurofindata.com/research/european-financial-data-for-ai-agents) - [Analyze ASML’s operating margin with an AI agent](https://eurofindata.com/research/asml-operating-margin) --- ## Alpha Vantage vs European Financial Data > Looking beyond stock prices? Try European company statements and regulatory disclosures with your AI agent, with free testing and source-linked examples. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/alpha-vantage-vs-european-financial-data ### The short answer If your question is about European company accounts or regulatory disclosures, start with our free MCP workflow and a source-linked example. Alpha Vantage also offers MCP and documents price series and technical indicators. Choose the data for your question: our active refresh does not include share prices. Published by European Financial Data. Provider facts were checked against the linked documentation on 17 October 2026. This is a publisher comparison, not a paid-account benchmark; plans and coverage can change. ### Go from a company question to the accounts When your research moves beyond a price chart, start with statements and disclosures. Ask your agent to retrieve the available ASML and SAP periods, calculate comparable margins and show the source context. - **Free to test:** 300 successful data requests per account per UTC day. No payment required. - **Built around your agent:** hosted MCP for compatible clients, plus REST when you need a script. - **Evidence you can inspect:** public worked examples, downloadable inputs and source references. [Create a free account →](https://eurofindata.com/sign-up)[See how the SAP example handles missing years ↗](https://eurofindata.com/research/sap-financial-history-missing-data) European statements and regulatory disclosures. Check company and period coverage; current share prices are outside the active refresh scope. ### Price research and filing research need different inputs Alpha Vantage’s [API documentation](https://www.alphavantage.co/documentation/) covers global equity time series, technical indicators, financial statements and other market datasets. It also links to its [official MCP server](https://mcp.alphavantage.co/). Our beta focuses on available European company financials and regulatory disclosures, with automatic share-price refresh currently disabled. That difference matters more than the transport. A technical price study needs adjusted prices and a clear treatment of corporate actions; a reported-profit comparison needs statement periods, definitions and filing context. Ask for the specific evidence your task requires. A workflow comparison, checked against linked documentation on 17 October 2026 | Your requirement | What to evaluate | | --- | --- | | Historical price series or technical indicators | Alpha Vantage’s documented endpoints, adjustments, exchange symbols and access entitlements | | European statements and regulatory disclosures | Our issuer-level coverage, required periods and source records | | An agent connection | Both offer MCP; test compatibility with your client and private key configuration | | Commercial or public redistribution | The applicable provider and source permissions; a free account alone does not settle these rights | ### Do not treat a stored price as a live quote If your question depends on a current price, verify the exchange, currency, quote timestamp and delay. Also check whether the intended use is supported by the data entitlement. Our API being available does not mean our stored price records are current. For statement research, check annual versus interim periods, reporting currency, duplicate report versions and the original measure. Availability of a company in a symbol search is not proof that the required fundamental dataset is populated. We have not benchmarked Alpha Vantage’s paid service, audited its coverage against our issuer universe or tested identical queries across the two services. This page does not assign either service an accuracy or latency score. ### A trial that reveals the useful differences 1. Pick three actual issuers and one research question, with explicit dates and fields. 2. Confirm security and reporting-entity identifiers before joining data from different services. 3. Compare the available observations and source metadata, keeping absent values separate from zero. 4. Check the live documentation for endpoint limits and permissions relevant to your use. #### Research prompt ```text Check whether European Financial Data can answer my question before analyzing it: compare the annual operating margins available for ASML and SAP. Resolve the issuers, inspect coverage and freshness, then report which periods have both revenue and operating income in the original currency. Keep missing values and incompatible periods out of the comparison, and explain any remaining source checks. ``` Connect MCP first; check whether the required data exists. ### Choose for the work you will actually do For European statement and disclosure research, try our free account and the ASML workflow first. Add a price-oriented integration when your question needs it. A combined workflow should retain the source of each value and use explicit identifiers rather than assuming that matching ticker strings refer to the same instrument. For repeatable application requests, read [MCP vs REST](https://eurofindata.com/research/mcp-vs-rest-financial-data). For a report-backed calculation, start with the [ASML walkthrough](https://eurofindata.com/research/asml-operating-margin). ### Match the security before combining prices and statements A price series can refer to one listing or a depositary receipt, while a financial statement describes the reporting group. Confirm the instrument, exchange, trading currency and statement currency before combining them. Do not treat a depositary receipt as one ordinary share without checking its terms. The [identifier guide](https://eurofindata.com/research/company-identifiers-ticker-isin-lei) explains why ticker, ISIN and LEI serve different roles. Use the same issuer/period/basis test when comparing statement data, and an explicit adjustment and timestamp test when evaluating a price feed. This comparison is based on provider documentation, not an authenticated Alpha Vantage benchmark. Our source-linked examples demonstrate our method; they do not score the other service. ### Sources and further reading - [Alpha Vantage: API documentation](https://www.alphavantage.co/documentation/) - [Alpha Vantage: official MCP server](https://mcp.alphavantage.co/) - [Our current coverage and limitations](https://eurofindata.com/docs/coverage) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Financial Datasets vs European Financial Data](https://eurofindata.com/research/financial-datasets-vs-european-financial-data) - [MCP vs REST for financial research](https://eurofindata.com/research/mcp-vs-rest-financial-data) - [How to check whether financial data is actually current](https://eurofindata.com/research/financial-data-freshness) --- ## Public filings or a financial data MCP server? > Let your agent retrieve European financial records, then check the source report. A practical way to reduce repeated retrieval and calculation work. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/public-filings-vs-financial-data-mcp ### The short answer Start with our MCP workflow when you want an agent to find European company records and calculate from structured statements. Follow the original filing to verify definitions and accounting context. The ASML example shows the complete path, from retrieved inputs to a source-checked operating margin. This comparison describes the work left to the researcher by each approach. European Financial Data operates the MCP service discussed; original issuer reports and public registers remain important sources in our own workflow. ### Use each format for what it preserves A report is evidence in its published context. Structured filing data makes selected facts easier to retrieve. MCP gives a compatible agent a way to call tools. These layers can work together: an agent retrieves a statement, computes a ratio, then opens the report to verify the accounting context. What each research route leaves with you | Route | Useful for | Work you still need to do | | --- | --- | --- | | Original report or register | Narrative, definitions, reconciliations and direct source inspection | Find the right entity and version; extract and check values | | Tagged ESEF / Inline XBRL | Machine-readable facts tied to reporting contexts | Interpret concepts, units, dimensions, extensions and report versions | | Normalized financial records | Repeated queries and consistent field access | Check mappings, missingness, accounting basis and provenance | | An MCP connection | Retrieving data within an agent session | Check the tools, source coverage and the agent’s calculations | ### ESEF and PDFs are not interchangeable [ESMA’s ESEF guidance](https://www.esma.europa.eu/issuer-disclosure/electronic-reporting) describes annual reports as XHTML, with Inline XBRL tagging for consolidated IFRS financial statements. The readable presentation and tagged facts coexist. A PDF may be easier to browse, but extracting its table layout usually needs different tooling. Tags reduce some extraction work; they do not remove judgment. The same label can occur in several contexts, and issuer extension concepts may require a definition before mapping them to a shared metric. A PDF extraction also needs checks for units, column headings, negative signs and comparative periods. For narrative questions such as “Why did management change its outlook?”, open the original announcement or report. A statement row cannot supply that explanation on its own. ### A practical hybrid workflow 1. Resolve the reporting entity and record its identifiers. 2. Inspect coverage, then retrieve only the statements or disclosures needed. 3. Follow the available filing reference and match the source period, units and measure. 4. Read notes or reconciliations where definitions affect the result. 5. Present the calculation separately from any interpretation, with source links and missingness. #### Research prompt ```text Retrieve ASML’s latest available annual income statement and its matching filing reference. Keep the source period and currency. Calculate operating margin only if revenue and operating income are both present. Open the original report to check the accounting basis. If you cannot read the document, return the calculation with that verification step explicitly unresolved. ``` Connect MCP first; check whether the required data exists. ### Use MCP for repeated research For repeated company research, start with our MCP workflow: resolve the issuer, retrieve structured records and let your agent calculate from the returned inputs. This reduces repeated retrieval and table-handling work. Keep the original document close for definitions and unusual accounting questions; the LVMH example shows why that step matters. > Our statement tools do not guarantee complete narrative text, a direct document URL on every record or universal extraction of every KPI. A filing index entry is not a promise that every part of its document is parsed. The [LVMH example](https://eurofindata.com/research/lvmh-reported-vs-adjusted-profit) shows why an extracted measure still needs its original definition. ### A tagged number needs its full context For ASML’s 2025 calculation, the [readable EU-IFRS statement](https://ourbrand.asml.com/m/6ea363f69344ebd4/original/asml-2025-annual-report-based-on-ifrs.pdf#page=270) uses millions of euros, while the extracted sample stores full EUR units. Both can be correct. A factor-of-a-million difference is a units problem unless the source says otherwise. Also inspect whether a fact is an annual duration or a point-in-time balance, whether it belongs to the consolidated group or a segment, and whether a newer filing supersedes it. Selecting the first concept with a familiar label can pick the wrong context even when extraction succeeds. Store the context with the value. That is the part of the workflow that makes a retrieved number useful evidence rather than an isolated cell. ### Sources and further reading - [ESMA: European Single Electronic Format](https://www.esma.europa.eu/issuer-disclosure/electronic-reporting) - [XBRL International: public filing index](https://filings.xbrl.org/) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Where to get European financial data for AI agents](https://eurofindata.com/research/european-financial-data-for-ai-agents) - [Read LVMH’s reported and adjusted measures carefully](https://eurofindata.com/research/lvmh-reported-vs-adjusted-profit) - [Analyze ASML’s operating margin with an AI agent](https://eurofindata.com/research/asml-operating-margin) --- ## MCP vs REST for financial research > Ask company questions through MCP, or use REST for a script. Start with a free account and use the same underlying financial data across both. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/mcp-vs-rest-financial-data ### The short answer For researching a company with an AI agent, start with MCP: ask a question and let the client call the available financial-data tools. Use REST when you are writing a script or application that needs explicit requests. Both use the same underlying data and share your free account allowance. ### Choose how you want to run the research In an agent session, you can ask a question, inspect the plan and let the client call available tools. In an application, you may want the same explicit requests on every run, controlled error handling and a stored record of the inputs. MCP and REST support these different interaction patterns. Choosing an interface for European Financial Data | Requirement | MCP workflow | REST workflow | | --- | --- | --- | | An exploratory company question | The agent discovers tools and selects calls | You select endpoints and parameters in code | | A scheduled application task | Requires a client or agent runtime that you operate | Fits a script or job with explicit requests | | Reproducibility | Save actual tool calls, parameters, inputs and calculations | Save requests, parameters, inputs and calculations | | Account usage | Shares the account’s successful-request allowance | Shares the same allowance with MCP and the dashboard | ### An interface does not add data coverage Our two interfaces use the underlying financial data service. Changing the protocol does not fill a missing reporting year, enable current prices or improve an issuer’s KPI coverage. Inspect the available tool schemas or API reference and check the required data before making a research promise. A natural-language answer can also include model reasoning beyond the retrieved records. Keep that reasoning distinct from observed values. For a repeatable margin calculation, retain revenue, operating income, period, currency, source and the formula, regardless of which interface retrieved them. ### Start with a small verified request For MCP, follow the [client setup guide](https://eurofindata.com/docs/mcp). The hosted server uses Streamable HTTP and an account API key in an authorization header. Your client must support that connection format. For REST, use the [API reference](https://eurofindata.com/docs/api-reference) and its actual parameter schemas. 1. Create an account key and store it in private client configuration. 2. Resolve one supported company and inspect coverage. 3. Retrieve one annual statement, preserving its source and period. 4. Verify one number against its filing before expanding the workflow. Do not put a real key in a shared prompt, public example, URL or committed configuration. Website sign-in credentials and data API keys have different roles. ### Plan for usage and unavailable data The current free testing allowance is 300 successful data requests per account per UTC day, shared across interfaces and keys, with up to five active keys. One question can trigger multiple data calls. MCP connection and tool discovery do not consume that data allowance. An application still needs a sensible response to exhausted allowance, a failed source or an empty result. An agent should likewise report those conditions instead of substituting an unverified answer. Review [freshness checks](https://eurofindata.com/research/financial-data-freshness) when deciding whether a returned observation is suitable for the task. ### Run the same bounded task through either interface MCP tool call · discover current schemas first ```text get_income_statements(ticker="ASML", period="annual", limit=5) ``` Equivalent REST request · private key already configured ```text curl --fail-with-body 'https://api.eurofindata.com/v1/financials/income-statements?ticker=ASML&period=annual&limit=5' \ -H "Authorization: Bearer $EUROFINDATA_API_KEY" ``` MCP statement records currently use `period_end`; REST exposes `report_period` in its named response array. Normalize those fields deliberately if one analysis handles both. Compare the actual returned values, periods and sources; do not assume byte-identical response shapes. The [Python example](https://eurofindata.com/research/european-financial-data-python) handles the sample and REST shapes explicitly and preserves missing values. ### Sources and further reading - [MCP setup and authentication](https://eurofindata.com/docs/mcp) - [REST API reference](https://eurofindata.com/docs/api-reference) - [Account limits](https://eurofindata.com/docs/rate-limits) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Public filings or a financial data MCP server?](https://eurofindata.com/research/public-filings-vs-financial-data-mcp) - [How to check whether financial data is actually current](https://eurofindata.com/research/financial-data-freshness) - [Ticker, ISIN or LEI: find the right European company](https://eurofindata.com/research/company-identifiers-ticker-isin-lei) --- ## Read LVMH’s reported and adjusted measures carefully > A 2024 LVMH sample shows why revenue, net income and issuer-defined recurring profit need different labels and source checks. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/lvmh-reported-vs-adjusted-profit ### The short answer A recurring-profit measure and net income answer different questions. In this LVMH sample, preserve the issuer’s original APM label and reconcile its definition before comparing it with a statement line or another company’s adjusted profit. ### Start with the exact measure “Show LVMH’s profit” is ambiguous. Net income, operating income and an issuer-defined recurring measure are different quantities. An agent needs the original label, reporting period and definition before using one as a substitute for another. This worked example uses our stored 2024 LVMH records. It pairs two financial-statement values with selected issuer-defined alternative performance measures, or APMs. The point is to preserve the differences, not to produce a single preferred profit number. #### Research prompt ```text Find LVMH and check coverage for the year ended 2024-12-31. Retrieve its annual income statement and available alternative performance measures. Present statement values and APMs separately. Preserve each APM’s original label, concept, currency and source. Locate the issuer’s definitions and reconciliations in the original report; if you cannot verify a definition, say so. Do not relabel recurring profit as net income or invent an adjusted EBITDA figure. ``` Connect MCP first; check whether the required data exists. ### Read the records side by side LVMH stored sample · year ended 31 December 2024 · 4 October 2026 snapshot | Measure | Record type | EUR billions | | --- | --- | --- | | Revenue | Financial statement | 84.683 | | Net profit, including non-controlling interests | Financial statement | 12.958 | | Recurring operating profit incl. associates | Issuer-defined APM | 19.571 | | Operating free cash flow | Issuer-defined APM | 10.478 | | Cost of net debt | Issuer-defined APM | 0.442 | The recurring-profit record carries the original label *Profit Loss From Operating Activities Recurring Including Share Of Profit Of Equity Accounted Investees*. Its inclusion of associates is part of the label and must survive a summary. The sample also contains operating free cash flow and cost of net debt. These should retain their own definitions and sign conventions; their presence does not make them interchangeable with a standardized cash-flow statement line. ### What to check in the original report 1. Match the reporting entity, annual period and currency. 2. Locate the issuer’s definition and any reconciliation to reported financial statements. 3. Check which adjustments are included, their amounts and whether the comparative period uses the same definition. 4. For a cross-company comparison, repeat the definition check for each issuer. A shared word such as “adjusted” does not establish a shared calculation. The MCP tools `get_income_statements`, `get_apm_metrics` and `get_company_filings` can support retrieval. Discover their current schemas before calling them. The presence of an extension-tag value does not establish that its full narrative reconciliation is available as a structured field. ### Separate extraction from interpretation A useful output includes the original measure name, a short explanation supported by the report, and an explicit note where a reconciliation is unavailable. Do not infer that an empty APM response means the issuer never published adjusted measures. > The stored sample is not the latest LVMH results and does not demonstrate complete APM, guidance or operational KPI coverage. Verify the source before using these values in a decision. ### Net profit and the group share are different values [LVMH’s investor key figures](https://www.lvmh.com/en/investors/investors-and-analysts) distinguish 2024 net profit of €12.958 billion from the group share of net profit of €12.550 billion. Our sample’s €12.958 billion record is the total, including non-controlling interests; it must not be labelled profit attributable solely to the parent’s shareholders. That difference also matters for per-share calculations. Use the correct attributable profit measure and the appropriate share count rather than dividing total group net profit by a convenient number of shares. [ESMA’s APM guidance](https://www.esma.europa.eu/publications-data/questions-answers/1885) addresses definitions, labels, reconciliations and consistency. In this research workflow, retain the issuer’s definition and locate its reconciliation when required; a recognizable metric name alone is insufficient. Illustrative tool calls; discover live schemas first ```text get_company_coverage(ticker="LVMH") get_income_statements(ticker="LVMH", period="annual", limit=3) get_apm_metrics(ticker="LVMH", period_end="2024-12-31", limit=20) ``` ### Reproduce the sample Dated sample: 2026-10-04. Not live data. Amounts are in full currency units. Statement and issuer-defined APM records; preserve measure definitions. CSV empty numeric cells mean missing values, not zero. - [Sample JSON](https://eurofindata.com/research/lvmh-reported-vs-adjusted-profit/sample.json) - [Sample CSV](https://eurofindata.com/research/lvmh-reported-vs-adjusted-profit/sample.csv) ### Sources and further reading - [LVMH: investor key figures, including net profit and group share](https://www.lvmh.com/en/investors/investors-and-analysts) - [ESMA: definitions, labels, reconciliations and consistency of APMs](https://www.esma.europa.eu/publications-data/questions-answers/1885) - [LVMH 2024 ESEF source for the sample](https://filings.xbrl.org/IOG4E947OATN0KJYSD45/2024-12-31/ESEF/FR/0/IOG4E947OATN0KJYSD45-2024-12-31-0-fr.json) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) - [Our current coverage and limitations](https://eurofindata.com/docs/coverage) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Analyze ASML’s operating margin with an AI agent](https://eurofindata.com/research/asml-operating-margin) - [Public filings or a financial data MCP server?](https://eurofindata.com/research/public-filings-vs-financial-data-mcp) - [How to check whether financial data is actually current](https://eurofindata.com/research/financial-data-freshness) --- ## Build a SAP margin history without filling the gaps > An eleven-period SAP sample with a missing revenue value demonstrates honest tables, chart gaps and mixed-source financial history. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/sap-financial-history-missing-data ### The short answer Our stored SAP sample includes annual periods from 2015 to 2025, but revenue is missing for 2017. That year’s operating margin must remain missing. An eleven-year span is not the same as eleven complete, comparable observations. ### A longer history can still be incomplete Our stored SAP sample spans 2015–2025. Its 2017 row has operating income but no revenue, so an operating-margin calculation for that period has no denominator. Replacing the missing value with zero would create a meaningless result; interpolating revenue would introduce an estimate that is not in the source record. #### Research prompt ```text Resolve SAP and check the annual statement periods available. Build an operating-margin history using operating income divided by revenue. Keep missing values missing, leave gaps in the chart, and identify each row’s source and currency. Flag changes of source, accounting basis and report version. Do not describe the series as complete or comparable until those checks pass. ``` Connect MCP first; check whether the required data exists. ### Keep the missing year visible SAP dated annual sample (2026-10-04). Amounts in full currency units. Mixed sources; historical comparability requires verification. | Period end | Currency | Revenue | Operating income | Operating margin % | Source | Source document | | --- | --- | --- | --- | --- | --- | --- | | 2015-12-31 | EUR | 20793000000 | 4252000000 | 20.4 | sec_edgar_xbrl | Not available | | 2016-12-31 | EUR | 22062000000 | 5135000000 | 23.3 | sec_edgar_xbrl | Not available | | 2017-12-31 | EUR | Not available | 4877000000 | Not available | bundesanzeiger | Not available | | 2018-12-31 | EUR | 24708000000 | 5703000000 | 23.1 | bundesanzeiger | Not available | | 2019-12-31 | EUR | 27553000000 | 4473000000 | 16.2 | bundesanzeiger | Not available | | 2020-12-31 | EUR | 27338000000 | 6623000000 | 24.2 | esef | [ESEF](https://filings.xbrl.org/529900D6BF99LW9R2E68/2020-12-31/ESEF/DE/0/sap-2020-12-31AR.json.gz) | | 2021-12-31 | EUR | 26953000000 | 6308000000 | 23.4 | sec_edgar_xbrl | Not available | | 2022-12-31 | EUR | 29520000000 | 5914000000 | 20.0 | sec_edgar_xbrl | Not available | | 2023-12-31 | EUR | 31207000000 | 5799000000 | 18.6 | sec_edgar_xbrl | Not available | | 2024-12-31 | EUR | 34176000000 | 4665000000 | 13.6 | sec_edgar_xbrl | Not available | | 2025-12-31 | EUR | 36800000000 | 9617000000 | 26.1 | sec_edgar_xbrl | Not available | The table preserves the requested period even when the calculation is unavailable. A line should stop at the missing observation and resume at the next complete one. Connecting the points across 2017 would suggest continuity that we have not established. This sample combines SEC XBRL, Bundesanzeiger and ESEF records. The source column describes the stored records; it does not prove that every historical value was manually reconciled to a specific original document. ### Check comparability before telling a story Consistent field names are useful, but they do not settle accounting comparability. Ask whether the observations cover the same reporting entity, consolidation scope, annual duration, currency and measure definition. An acquisition, discontinued operation or restatement may change the interpretation of a trend even when every cell is populated. 1. Ask for all required years and compare that list with the returned periods. 2. Check for multiple records for the same year. Choose a report version deliberately rather than averaging duplicates. 3. Retain source labels and filing identifiers. Locate the original report when the comparison matters. 4. State which observations are missing or still require reconciliation. ### A useful answer includes the unresolved work A defensible answer could say: “The stored series contains eleven annual periods and ten calculable margins; 2017 revenue is missing. Sources differ, so this is a starting table for reconciliation.” That is more useful than presenting a smooth chart as a finished accounting comparison. > This page intentionally preserves the 4 October sample. It does not claim the gap still exists in today’s live response. Run a fresh query to check whether a later import has repaired it. For a simpler calculation with direct ESEF source links, use the [ASML example](https://eurofindata.com/research/asml-operating-margin). ### A report-period history is not a point-in-time backtest A row for 2015 tells you which reporting period it describes. It does not, by itself, tell you when that version of the number became available to an investor. Later reports can restate earlier periods, and a source-normalization change can alter an imported field. Before a backtest, establish the publication/availability date and report vintage for every observation. This dated mixed-source sample is a missing-data demonstration, not a validated point-in-time series. Downloading it does not remove that distinction. For an accounting comparison, inspect original reports and choose a consistent definition. Keep 2017 as a visible gap until the relevant source and mapping are verified. ### Reproduce the sample Dated sample: 2026-10-04. Not live data. Amounts are in full currency units. Mixed stored sources; comparability and historical report versions require verification. CSV empty numeric cells mean missing values, not zero. - [Sample JSON](https://eurofindata.com/research/sap-financial-history-missing-data/sample.json) - [Sample CSV](https://eurofindata.com/research/sap-financial-history-missing-data/sample.csv) ### Sources and further reading - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) - [Our current coverage and limitations](https://eurofindata.com/docs/coverage) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Analyze ASML’s operating margin with an AI agent](https://eurofindata.com/research/asml-operating-margin) - [How to check whether financial data is actually current](https://eurofindata.com/research/financial-data-freshness) - [Ticker, ISIN or LEI: find the right European company](https://eurofindata.com/research/company-identifiers-ticker-isin-lei) --- ## Research European short-position disclosures with an agent > Separate named-holder disclosures, aggregate short positions and observation dates. Includes the UK’s July 2026 regime change and a usable research prompt. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/european-short-position-disclosures ### The short answer Public short-position records are regulatory disclosures, not a complete picture of all short exposure. Keep holder-level and aggregate series separate, and verify the jurisdiction and applicable reporting regime before interpreting a change. ### A disclosure is not the whole short market Public short-position data reflects a reporting framework. It may identify a holder, aggregate positions by issuer or omit positions below an applicable threshold. Before asking who is short a company, identify the jurisdiction, publication type and date. The absence of a named holder is not evidence that nobody is short. Equally, an aggregate total cannot be assigned to individual funds. Keep those distinctions in the question you give the agent. #### Research prompt ```text Research the latest available public short-position disclosures for a supported European company that I name. Resolve its identifiers, check coverage and source freshness, and identify the regulator and disclosure regime. Separate holder-level records from aggregate totals and historical positions. Show observation dates and source references, describe coverage limits, and do not infer undisclosed holders or treat an empty response as zero short interest. ``` Connect MCP first; check whether the required data exists. ### The UK changed its publication model in July 2026 The [FCA’s disclosure guidance](https://www.fca.org.uk/markets/short-selling/notification-disclosure-net-short-positions) states that the new UK short-selling regime applies from 13 July 2026. Its public output aggregates reported net short positions by company without identifying individual position holders. A holder-level historical series and a current aggregate series therefore describe different publication models. Our tools distinguish `get_short_positions` from `get_aggregate_short_interest`. For UK research, do not present older named-holder records as current holder identities. Discover live schemas and inspect the source dates before choosing a series. Keep these disclosure types separate | Record | What it can support | What it cannot establish | | --- | --- | --- | | Named-holder disclosure | A disclosed holder and position at a stated date | Every undisclosed position or present-day exposure | | Aggregate issuer total | The published total under the relevant regime | Which individual funds make up that total | | Historical record | A dated observation or a disclosed change | That the position is still open today | ### Use a defensible comparison method 1. Match the issuer and security identifiers, not only the displayed name. 2. Retain the position date and publication date when provided. Do not use request time as the observation date. 3. Check whether the regulator has revised a publication and whether the response is current or historical. 4. For a cross-country comparison, document differences in aggregation and disclosure rules before ranking issuers. 5. Link the relevant register or record source. If a direct record link is unavailable, say which source metadata was returned. Use small requests initially. A cross-company list is a starting set of disclosures, not proof of a complete European market snapshot. This guide supplies a research method, not a current position table. ### Report the limits alongside the result A useful summary states what is published, by whom, for which date and under which regime. A changing total may reflect a position change, a correction or reporting mechanics. The disclosure alone does not establish a fund’s thesis or a future price move. Read the [identifier guide](https://eurofindata.com/research/company-identifiers-ticker-isin-lei) before combining these records with company statements, and check [freshness](https://eurofindata.com/research/financial-data-freshness) before describing a result as current. ### Choose the tool for the publication model Illustrative tool calls; discover live schemas first ```text get_company_coverage(ticker="") get_data_freshness(stale_only=false) get_short_positions(ticker="", active_only=true, limit=10) get_aggregate_short_interest(ticker="", current_only=true, limit=10) ``` These are bounded calls for two different datasets, not values to add together. Choose the appropriate publication series after resolving the issuer and jurisdiction. The aggregate total may include positions that were not individually named in an older public series. A good output records issuer/ISIN, regime, position date, publication date when available, whether the value is aggregate or holder-level, and the original source. This guide intentionally provides no invented “current” position or fund name. ### Sources and further reading - [FCA: notification and disclosure of net short positions](https://www.fca.org.uk/markets/short-selling/notification-disclosure-net-short-positions) - [FCA: publication of aggregate net short positions](https://handbook.fca.org.uk/handbook/ssr6/ssr6s3) - [Our current coverage and limitations](https://eurofindata.com/docs/coverage) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Ticker, ISIN or LEI: find the right European company](https://eurofindata.com/research/company-identifiers-ticker-isin-lei) - [How to check whether financial data is actually current](https://eurofindata.com/research/financial-data-freshness) - [Where to get European financial data for AI agents](https://eurofindata.com/research/european-financial-data-for-ai-agents) --- ## Ticker, ISIN or LEI: find the right European company > Avoid mixing an issuer with a listing, security or subsidiary. A practical identity checklist for European financial research with AI agents. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/company-identifiers-ticker-isin-lei ### The short answer A ticker identifies a symbol in a market context, an ISIN identifies a security, and an LEI identifies a legal entity. Resolve the reporting company first and retain its identifiers when joining financial statements and disclosures. ### A company name is a search term, not a join key A familiar brand can correspond to a parent company, operating subsidiary and several listed securities. A ticker is meaningful in its market context. If an agent joins data using a name or symbol alone, it can silently mix different entities or instruments. Resolve the reporting company before requesting statements or joining disclosures. Record the returned name, country, exchange context and available identifiers, then compare them with the source you intend to use. Identifiers have different scopes | Identifier | What you are identifying | Check before joining | | --- | --- | --- | | Ticker and market context | A trading symbol in a particular listing context | Exchange or MIC, share class, and any cross-listing | | ISIN | A security | Whether two records refer to the same instrument rather than merely the same issuer | | LEI | A legal entity | The entity that issued the filing and the consolidation scope of the statements | ### Follow a concrete issuer through a filing The ASML ESEF sources used in our [margin example](https://eurofindata.com/research/asml-operating-margin) identify the entity with LEI `724500Y6DUVHQD6OXN27`. That lets the researcher check that the linked source belongs to the intended legal entity rather than relying only on the word “ASML”. An LEI is not an accounting-scope guarantee. You still need to check whether the figures are consolidated, their reporting period and the accounting basis. Likewise, different securities issued by the same company can share an issuer relationship while retaining different security identifiers. ### Ask the agent to show its identity checks #### Research prompt ```text Before analyzing the company I name, search for matching entities in European Financial Data. Show the returned company name, country, ticker and market context, ISIN and LEI where available. If several entities or listings could match, ask me to choose. Check that the statement filing belongs to the intended reporting entity. Retain these identifiers when joining regulatory disclosures; flag an ambiguous or missing match instead of guessing. ``` Connect MCP first; check whether the required data exists. Use `search_companies` to find candidates, then inspect `get_company_coverage` for the selected company. These tools accept several forms of identifier, but that convenience does not eliminate the need to inspect the resolved entity. ### Keep a record of the join 1. Save the original search term and the resolved identifiers. 2. Identify whether the next dataset is keyed by issuer, security, listing or another entity. 3. Use an explicit mapping and record its source when identifiers differ. 4. Leave an unmatched record unresolved; do not silently use the nearest name. This matters for short positions, ownership and debt instruments as well as statements. A subsidiary’s legal-entity relationship does not automatically make its figures interchangeable with consolidated parent-company accounts. ### Do not infer an exchange from an ISIN [ANNA’s identifier guidance](https://anna-web.org/identifiers/) describes ISINs as identifiers for financial instruments. An ISIN is not itself an exchange identifier. Retain market context, such as a MIC, when the question concerns a particular listing or price. [GLEIF describes the LEI](https://www.gleif.org/en/organizational-identity/lei-vlei/the-legal-entity-identifier-lei) as a legal-entity identifier. A matched LEI helps link a company to its filing, but it does not state that every security or subsidiary has identical accounting scope. If the task concerns an ADR or multiple share classes, resolve that security relationship explicitly. When there is no unambiguous match, return the candidates and the unresolved identifier instead of selecting the closest name. ### Sources and further reading - [ANNA: ISIN and other financial identifiers](https://anna-web.org/identifiers/) - [GLEIF: the Legal Entity Identifier](https://www.gleif.org/en/organizational-identity/lei-vlei/the-legal-entity-identifier-lei) - [GLEIF: ISIN-to-LEI relationship files](https://www.gleif.org/en/lei-data/lei-mapping/download-isin-to-lei-relationship-files) - [ASML ESEF source with entity context](https://filings.xbrl.org/724500Y6DUVHQD6OXN27/2025-12-31/ESEF/NL/0/asml-2025-12-31-1-en.json) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Research European short-position disclosures with an agent](https://eurofindata.com/research/european-short-position-disclosures) - [Build a SAP margin history without filling the gaps](https://eurofindata.com/research/sap-financial-history-missing-data) - [Where to get European financial data for AI agents](https://eurofindata.com/research/european-financial-data-for-ai-agents) --- ## How to check whether financial data is actually current > Separate reporting period, publication date, ingestion success and request time. A practical freshness checklist for financial-data agents. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/financial-data-freshness ### The short answer A successful request proves the service returned a response. To assess freshness, check the report period, publisher date, source update status and unresolved ingestion gaps. A recent ingestion run can still contain old observations. ### Four dates describe four different events Do not replace one date with another | Date | What it describes | What it does not prove | | --- | --- | --- | | Reporting period end | The period the financial observation relates to | When the report was published or imported | | Publication or filing date | When the source made the report available | That the data pipeline has processed it | | Ingestion or processing time | When a collection or extraction step ran | That the source contains newer observations | | Request time | When you asked the service for a result | That any returned observation is recent | A newly retrieved annual statement can correctly describe an older financial year. Conversely, a recent ingestion run can succeed without discovering every newer filing. Assess freshness in the context of the question and the publisher’s reporting cycle. ### Read the status and the underlying observation Our `get_data_freshness` tool exposes per-source information. Inspect `latest_data_date`, `last_success_at`, `freshness_state`, `automatically_refreshed` and the refresh job status when returned. Check the filing backlog and any blocked reason as well. #### Research prompt ```text Before using European Financial Data for my research question, inspect the required company coverage and source freshness. Separate the latest observation period from the latest successful refresh. Report stale, failed, skipped or blocked sources and relevant filing backlog. Tell me whether the evidence is recent enough for this question, and which original publisher checks are still needed. Do not treat a successful request or healthy server as proof that all data is current. ``` Connect MCP first; check whether the required data exists. A source can be skipped because access credentials or permission are missing. It can fail validation because a source period is inconsistent. Those states should remain visible rather than being summarized as a successful update. ### Apply the checks to the actual data family For annual statements, check the latest available reporting year and whether a later filing has been published. For a short-position disclosure, check the position date and publication regime. For prices, check an actual quote timestamp and delay; our automatic share-price refresh is currently disabled. KPI and guidance extraction has limited coverage. A successful general filing import does not prove those derived fields were extracted or verified. Inspect the requested dataset and original document before describing it as current or complete. Our source pipeline runs recurring, bounded jobs. Bounded discovery means work can remain in catch-up queues, and upstream errors can delay an otherwise scheduled source. A schedule states intent; observed outcomes establish what ran. ### Make the answer auditable 1. State when you retrieved the data and the periods it actually covers. 2. Preserve source and filing references with the returned values. 3. Record relevant freshness warnings and unresolved gaps. 4. Label calculations and inferences separately from retrieved observations. 5. Recheck the original publisher when the latest report or a material decision depends on it. > The worked examples in this research library are explicitly dated snapshots. Their editorial review date does not turn their underlying observations into live data. ### Turn a freshness status into a research decision Interpret the source state with the question’s recency requirement | Observation | Practical response | | --- | --- | | Recent successful scan, old latest reporting period | Check whether the publisher has a newer report and whether discovery caught it | | Source error or unresolved filing backlog | State the gap; verify the original publisher before calling the result latest | | Skipped or permission-gated feed | Do not describe it as automatically updated | | A dated public example | Use it to reproduce a method; query current records for a new question | These are interpretation cases, not a live status panel. A state labelled current can still be unsuitable for a task that needs intraday prices; the expected reporting cycle and the user’s question determine what “recent enough” means. ### Sources and further reading - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) - [Our current coverage and limitations](https://eurofindata.com/docs/coverage) - [MCP tools and research limitations](https://eurofindata.com/docs/mcp-tools) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Analyze ASML’s operating margin with an AI agent](https://eurofindata.com/research/asml-operating-margin) - [Build a SAP margin history without filling the gaps](https://eurofindata.com/research/sap-financial-history-missing-data) - [Research European short-position disclosures with an agent](https://eurofindata.com/research/european-short-position-disclosures) --- ## Finnhub vs European Financial Data > A practical alternative for European company research: free MCP testing, inspectable financial examples and regulatory disclosures. Compare scope and access. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/finnhub-vs-european-financial-data ### The short answer European Financial Data is a practical starting point for European statement and disclosure research: no payment required, a hosted MCP connection and public examples with downloadable inputs. Finnhub offers a broader documented market-data catalog and its own MCP service; check the datasets and plan your task needs. Published by European Financial Data. Provider facts were checked against the linked documentation on 17 October 2026. This is a publisher comparison, not a paid-account benchmark; plans and coverage can change. ### Try a European research task today Bring one European company question to your agent. Use our hosted MCP tools to explore available statements and regulatory disclosures, then inspect the evidence behind the answer. The public ASML example shows what a reproducible result looks like. - **Free to test:** 300 successful data requests per account per UTC day. No payment required. - **Built around your agent:** hosted MCP for compatible clients, plus REST when you need a script. - **Evidence you can inspect:** public worked examples, downloadable inputs and source references. [Create a free account →](https://eurofindata.com/sign-up)[Inspect a complete ASML worked example ↗](https://eurofindata.com/research/asml-operating-margin) European statements and regulatory disclosures. Check company and period coverage; current share prices are outside the active refresh scope. ### Compare the data requirement before the interface [Finnhub’s documentation](https://finnhub.io/docs/api/financials-reported) includes financial statements, as-reported financials and market-data endpoints. Its enterprise page describes global fundamental coverage. Those descriptions do not establish that every dataset is included in a free account or that a specific issuer has the periods you need. Start with European Financial Data when you want to explore European accounts and regulatory disclosures with your agent. Free testing includes 300 successful data requests per account per UTC day and up to five active keys. You can inspect a worked example and its inputs before creating an account. For current quotes, you will need a separate feed: automatic share-price refresh is disabled here. Acceptance questions for the plan and issuers you will actually use | Requirement | Check with Finnhub | Check with European Financial Data | | --- | --- | --- | | Annual company financials | Required symbols, statement type, periods and plan access | Resolve issuer; inspect populated statement periods and source records | | Market prices or estimates | Required exchange, timestamp, delay, dataset and entitlement | Current prices are outside the active refresh scope; estimates coverage needs checking | | AI-agent retrieval | Official hosted MCP; its guide documents OAuth sign-in | Streamable HTTP with a private account bearer key; client must support custom headers | | Inspect before integrating | Check the relevant endpoint, sample and plan access | Public worked examples with CSV/JSON inputs; free account testing with no payment required | | Repeatable research | Save fields, units, source identifiers and report versions | Retain the same evidence and explicitly preserve missing observations | ### Use a test that can fail clearly Choose the same issuer and reporting period on each service. First request revenue and operating income, then locate the source report. Compare the original numbers and accounting basis before comparing a derived margin. An empty response, an entitlement error and an unsupported issuer are different outcomes. Our [ASML example](https://eurofindata.com/research/asml-operating-margin) gives you a dated EU-IFRS sample and downloadable inputs for that calculation. It establishes how our sample works, not a head-to-head test of Finnhub. We have not used a paid Finnhub account to measure comparative latency, accuracy or historical completeness. ### Check access terms and the actual workload Consult [Finnhub’s commercial access information](https://api.finnhub.io/pricing-startups-and-enterprise) for its current enterprise terms. Review the relevant plan rather than extending a free-account description to production or redistribution. Finnhub’s [official MCP guide](https://finnhub.io/static/finnhub-how-to-connect-mcp-server.html) documents OAuth authentication and plan-based dataset access. Our hosted MCP uses an account bearer key and needs a client that can send that header. Both support the protocol; their setup and entitlements still differ. For our beta, account allowance is shared across MCP, REST and the dashboard. Tool discovery does not consume a data request, but an analysis may make several data calls. Neither a handshake nor one successful example demonstrates exhaustive company coverage. ### When to shortlist each Start your European research trial with one company and one question. Create a free account, connect a compatible agent and retrieve the annual statement behind an operating-margin calculation. You can also explore available regulatory disclosures without building a separate request for each step. For Finnhub’s market, fundamentals or estimates products, validate the necessary plan and identifiers against your wider requirements. For a script rather than an agent session, use the [Python financial-statements walkthrough](https://eurofindata.com/research/european-financial-data-python). ### Sources and further reading - [Finnhub: financials as reported and API documentation](https://finnhub.io/docs/api/financials-reported) - [Finnhub: official hosted MCP setup and authentication](https://finnhub.io/static/finnhub-how-to-connect-mcp-server.html) - [Finnhub: commercial and enterprise access](https://api.finnhub.io/pricing-startups-and-enterprise) - [Our current coverage and limitations](https://eurofindata.com/docs/coverage) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [FinancialData.Net vs European Financial Data](https://eurofindata.com/research/financialdata-net-vs-european-financial-data) - [Alpha Vantage vs European Financial Data](https://eurofindata.com/research/alpha-vantage-vs-european-financial-data) - [Get European company financial statements in Python](https://eurofindata.com/research/european-financial-data-python) --- ## FactSet vs European Financial Data > Try a focused European research workflow before building a larger integration. Compare free MCP testing with FactSet’s institutional data and tools. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/factset-vs-european-financial-data ### The short answer If your immediate goal is to research European companies with an agent, you can start here with a free account and a real statement query. European Financial Data offers a focused workflow you can inspect before committing to an integration. Evaluate FactSet for its broader institutional products, entitlements and service requirements. Published by European Financial Data. Provider facts were checked against the linked documentation on 17 October 2026. This is a publisher comparison, not a paid-account benchmark; plans and coverage can change. ### Start small. Get to an actual research result. You can try European company research before planning an institutional integration. Inspect our public financial examples, create a free account and connect your agent to available statements and disclosures. - **Free to test:** 300 successful data requests per account per UTC day. No payment required. - **Built around your agent:** hosted MCP for compatible clients, plus REST when you need a script. - **Evidence you can inspect:** public worked examples, downloadable inputs and source references. [Create a free account →](https://eurofindata.com/sign-up)[Explore the LVMH profit measures example ↗](https://eurofindata.com/research/lvmh-reported-vs-adjusted-profit) European statements and regulatory disclosures. Check company and period coverage; current share prices are outside the active refresh scope. ### Start with the workflow you are buying [FactSet’s developer guidance](https://developer.factset.com/learn/mcp-sample-banking-workflows) describes global standardized fundamental data and ownership workflows. It also maintains an [MCP catalog](https://developer.factset.com/mcp-catalog). An agent connection is therefore not a capability unique to our service. European Financial Data gives developers and researchers a focused way to try European company analysis: create a free account, connect an agent and ask a real question. Public examples show the calculation and source material before you integrate. If that is your immediate task, you can evaluate the workflow directly; broader institutional requirements deserve a separate product and service review. Separate a working sample from institutional acceptance requirements | Requirement | What to establish | | --- | --- | | Data scope | Required issuer list, identifiers, history, fields and accounting treatment | | Research interface | Actual entitled tools and compatibility with your client | | Operational requirements | Contracted availability, support, incident handling and delivery commitments | | Historical research | Point-in-time availability, revisions and the treatment of delisted securities | | Usage rights | Internal analysis, display, redistribution or other intended use | ### When an institutional platform is the right starting point If the requirement includes an existing FactSet workflow, cross-asset products, organization-wide entitlements or specific contractual obligations, begin with the relevant FactSet product and your agreement. Confirm each required capability with the provider; a general catalog entry does not mean every product is included in one subscription. FactSet’s examples show how its own entity-resolution and content tools can fit together. Preserve those identifiers when testing a workflow rather than assuming a plain ticker will resolve identically across services. ### Where a focused beta can be useful Start a European statement or regulatory-disclosure question with our [source-linked ASML calculation](https://eurofindata.com/research/asml-operating-margin) or [short-position research method](https://eurofindata.com/research/european-short-position-disclosures). Check issuer coverage before creating a larger integration. Our prices are not automatically refreshed, historical depth varies, and KPI/guidance coverage is limited. Our current free testing policy also caps successful data requests. These limits matter if your acceptance task assumes a current quote, a long panel or high-volume use. ### Try a useful workflow first You can evaluate our ASML workflow without a procurement decision or payment details. Inspect the public inputs, then use a free account for a fresh query against available records. For a larger integration, compare your issuer list, periods, fields and service requirements. This focused trial does not establish contractual or dataset equivalence to FactSet. For a broader shortlist, see [providers, marketplaces and directories](https://eurofindata.com/research/financial-data-providers-marketplaces-directories). ### Sources and further reading - [FactSet: MCP banking workflows and fundamentals](https://developer.factset.com/learn/mcp-sample-banking-workflows) - [FactSet: MCP catalog](https://developer.factset.com/mcp-catalog) - [Our current coverage and limitations](https://eurofindata.com/docs/coverage) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Financial data providers, marketplaces and directories](https://eurofindata.com/research/financial-data-providers-marketplaces-directories) - [Finnhub vs European Financial Data](https://eurofindata.com/research/finnhub-vs-european-financial-data) - [Ticker, ISIN or LEI: find the right European company](https://eurofindata.com/research/company-identifiers-ticker-isin-lei) --- ## FinancialData.Net vs European Financial Data > Try European financial research over MCP without a paid plan. Compare free testing, statement examples and FinancialData.Net’s documented access requirements. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/financialdata-net-vs-european-financial-data ### The short answer For trying European financial research over MCP without a paid plan, start with European Financial Data. You get 300 successful data requests per UTC day, no payment required, and public examples to inspect first. FinancialData.Net’s MCP documentation currently requires a Professional or Enterprise subscription; its market-data products may suit a different workload. Published by European Financial Data. Provider facts were checked against the linked documentation on 17 October 2026. This is a publisher comparison, not a paid-account benchmark; plans and coverage can change. ### Try MCP without a paid plan If you want to see whether an agent can help with European company analysis, you can test that here without a paid subscription. Connect your client, retrieve available statements and use the ASML example as a reference for the calculation. - **Free to test:** 300 successful data requests per account per UTC day. No payment required. - **Built around your agent:** hosted MCP for compatible clients, plus REST when you need a script. - **Evidence you can inspect:** public worked examples, downloadable inputs and source references. [Create a free account →](https://eurofindata.com/sign-up)[Try the ASML research example ↗](https://eurofindata.com/research/asml-operating-margin) European statements and regulatory disclosures. Check company and period coverage; current share prices are outside the active refresh scope. ### These are different services [FinancialData.Net](https://financialdata.net/), Financial Datasets at financialdatasets.ai, and European Financial Data at eurofindata.com are distinct services. Similar search terms and names do not establish a relationship or shared dataset. FinancialData.Net documents market data, company statements and API access. Its [MCP page](https://financialdata.net/mcp-server) also offers an agent connection and currently states that access requires a Professional or Enterprise subscription. Check that page for any changes to access. Our service offers free, limited testing for available European statements and regulatory disclosures. The current allowance is 300 successful data requests per account per UTC day, shared across interfaces, with up to five active keys. We do not currently refresh share prices automatically. ### Compare the required records and access A shortlist checklist, not an independently measured feature score | Question | FinancialData.Net | European Financial Data | | --- | --- | --- | | How do I connect? | REST and a documented MCP service; check current plan requirements | Hosted MCP or REST using an account bearer key | | Can I try MCP without paying? | MCP documentation currently requires Professional or Enterprise | Free testing: 300 successful data requests per account per UTC day; no payment required | | Does it have my European issuer? | Check its symbols, exchange coverage and required endpoint | Resolve the issuer and inspect its populated datasets | | Can I use a price-dependent calculation? | Verify the entitled feed, timestamp and adjustments | Do not treat stored prices as current; active refresh is disabled | | Can I reproduce a statement calculation? | Verify units, reporting period, source and accounting basis | Use dated public examples, then verify live records and source filings | ### Use one comparable task Request the same annual period and measure for the same reporting company. Do not compare one provider’s US GAAP number with another provider’s EU-IFRS number and label the difference an error without reconciling it. Our [ASML example](https://eurofindata.com/research/asml-operating-margin) makes this distinction explicit. Keep missing observations, access errors and unsupported endpoints separate in your notes. We have not run a paid-account benchmark against FinancialData.Net, verified its advertised uptime or measured a difference in response quality. Provider descriptions are linked so readers can check them directly. ### Choose by evidence, not the similar name Choose European Financial Data when your next step is to try an agent on European statements or disclosures without paying for MCP access. Start with the ASML sample, then run a fresh query using your free account. Evaluate FinancialData.Net’s documented market and statement products against any wider requirements. If the actual question is about financialdatasets.ai, read the [separate Financial Datasets comparison](https://eurofindata.com/research/financial-datasets-vs-european-financial-data). Review the applicable access terms and usage rights for your own application. A successful sample call does not establish permission to display or redistribute every underlying dataset. ### Sources and further reading - [FinancialData.Net: product overview](https://financialdata.net/) - [FinancialData.Net: API documentation](https://financialdata.net/documentation) - [FinancialData.Net: MCP server and access requirements](https://financialdata.net/mcp-server) - [Our current coverage and limitations](https://eurofindata.com/docs/coverage) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Financial Datasets vs European Financial Data](https://eurofindata.com/research/financial-datasets-vs-european-financial-data) - [Finnhub vs European Financial Data](https://eurofindata.com/research/finnhub-vs-european-financial-data) - [Financial data providers, marketplaces and directories](https://eurofindata.com/research/financial-data-providers-marketplaces-directories) --- ## Financial data providers, marketplaces and directories > Understand where Finnhub, FactSet, FinancialData.Net, Datarade and Find My Moat fit when choosing a financial-data source. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/financial-data-providers-marketplaces-directories ### The short answer A provider supplies a data service, a marketplace helps you source suppliers, and a directory helps you discover tools. Keyword overlap can surface all three. Evaluate the underlying dataset and delivery contract rather than assuming every search competitor is an interchangeable API. Published by European Financial Data. The examples below identify different roles in a research workflow; they are not an endorsement, paid listing, market-share ranking or an independent product benchmark. ### Search competitors can serve different jobs A search for financial data can return a direct API, an institutional platform, a marketplace or an editorial directory. They can overlap in search results while supplying different things to a user. Ask who delivers the actual dataset, how it is accessed and which agreement covers its use. Examples checked against first-party pages on 17 October 2026 | Example | Role described by its own site | What to evaluate next | | --- | --- | --- | | [Finnhub](https://finnhub.io/docs/api/financials-reported) | Financial-data API | Required dataset, symbols, periods and actual plan | | [FactSet](https://developer.factset.com/mcp-catalog) | Financial data and analytics platform with APIs/MCP | The specific products, entitlements and workflow | | [FinancialData.Net](https://financialdata.net/documentation) | Financial-data API with a documented MCP offering | Issuer coverage, endpoint fields and access requirements | | [Datarade](https://providers.datarade.ai/apply) | Marketplace connecting data providers and buyers | The underlying supplier, sample and delivery/licensing terms | | [Find My Moat](https://www.findmymoat.com/) | Directory of investing tools, with research content | The listed product’s own documentation and evidence | ### A marketplace helps you source a supplier Datarade describes a marketplace where providers publish their products and connect with buyers. A marketplace result is a lead to a dataset or supplier, not proof that every listed product shares one API schema or license. Inspect the particular product, ask for a representative sample and identify who operates delivery. For a directory such as Find My Moat, use categories and comparisons to build a shortlist. Then open each shortlisted tool’s own documentation. The directory’s search visibility does not establish the underlying service’s issuer coverage or suitability for your task. ### Ask the same questions of the actual supplier 1. Which reporting entities and instruments are covered, and how are identifiers mapped? 2. Which periods and fields are available under the actual access plan? 3. Can a value be traced to an original source, with units and report version retained? 4. Is the required data current, historical, revised or point-in-time? 5. What interface, operational support and usage rights does the intended application require? Try a complete record, a missing period and a genuinely unsupported case. Record what happens instead of converting every failure into an empty array. ### Build a shortlist around one research question For a first European company question, start with the [source-selection guide](https://eurofindata.com/research/european-financial-data-for-ai-agents). Use the provider comparisons for narrower questions rather than treating every service here as a direct replacement for every other one. Our public ASML, SAP and LVMH examples are small, dated demonstrations. They can help you inspect a method, but they do not establish a complete financial database, current prices or a universal right to redistribute source data. ### Sources and further reading - [Finnhub: API documentation](https://finnhub.io/docs/api/financials-reported) - [FactSet: MCP catalog](https://developer.factset.com/mcp-catalog) - [FinancialData.Net: documentation](https://financialdata.net/documentation) - [Datarade: marketplace and provider workflow](https://providers.datarade.ai/apply) - [Find My Moat: directory and research overview](https://www.findmymoat.com/) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [FactSet vs European Financial Data](https://eurofindata.com/research/factset-vs-european-financial-data) - [FinancialData.Net vs European Financial Data](https://eurofindata.com/research/financialdata-net-vs-european-financial-data) - [Where to get European financial data for AI agents](https://eurofindata.com/research/european-financial-data-for-ai-agents) --- ## Get European company financial statements in Python > A runnable Python example using a public dated sample or an authenticated REST request. Preserve nulls, currency, sources and annual reporting periods. By European Financial Data. Reviewed 17 October 2026. Canonical article: https://eurofindata.com/research/european-financial-data-python ### The short answer Use the public ASML sample to test the calculation without an account, then switch deliberately to the authenticated income-statement endpoint for current available records. These are company financial statements, not live stock prices. MCP remains the primary option for interactive agent research. ### Start with a public financial-statement sample This example uses the same dated ASML EU-IFRS records as the [margin walkthrough](https://eurofindata.com/research/asml-operating-margin). It computes an operating margin, not a stock return or live quote. Python’s standard library is sufficient. Download the [sample JSON](https://eurofindata.com/research/european-financial-data-python/sample.json) and [Python script](https://eurofindata.com/research/european-financial-data-python/example.py). The public sample requires no account and consumes no account allowance. Its amounts are in full EUR units; the display table elsewhere rounds to billions. Run the downloaded files ```text python3 european-financial-data.py --input european-financial-data-python-sample.json ``` The output identifies a dated sample, retains reporting periods and source labels, and calculates approximately 36.9% for 2025. Missing or zero revenue produces an unavailable margin, not a division error or invented zero. ### The complete calculation Python 3 · standard library · same source as the download ```text """Read a dated public sample or explicitly request available live statements. No third-party Python packages are required. Store real account keys privately. """ import argparse import json import os from decimal import Decimal from pathlib import Path from urllib.error import HTTPError, URLError from urllib.request import Request, urlopen parser = argparse.ArgumentParser() mode = parser.add_mutually_exclusive_group(required=True) mode.add_argument("--input", type=Path, help="Downloaded public sample JSON") mode.add_argument("--live", action="store_true", help="Use account allowance") args = parser.parse_args() if args.live: key = os.environ.get("EUROFINDATA_API_KEY") if not key: raise SystemExit("Set EUROFINDATA_API_KEY privately before using --live.") url = ("https://api.eurofindata.com/v1/financials/income-statements" "?ticker=ASML&period=annual&limit=5") request = Request(url, headers={"Authorization": "Bearer " + key}) try: with urlopen(request, timeout=30) as response: payload = json.load(response) except HTTPError as error: raise SystemExit(f"Data request failed: HTTP {error.code}. Check access and allowance.") except URLError: raise SystemExit("Data request failed. Check connectivity and try later.") rows = payload.get("income_statements", []) print("LIVE REQUEST: verify source freshness, accounting basis and report versions.") else: payload = json.loads(args.input.read_text(encoding="utf-8")) if payload.get("is_live") is not False or payload.get("issuer") != "ASML": raise SystemExit("Expected the dated ASML public sample.") rows = payload.get("records", []) print("DATED SAMPLE:", payload["sample_as_of"], payload["accounting_basis"]) if not isinstance(rows, list) or not rows: raise SystemExit("No statements returned. An empty result is not zero revenue.") seen = set() for row in sorted(rows, key=lambda value: value.get("report_period", value.get("period_end", ""))): period = row.get("report_period", row.get("period_end")) currency = row.get("currency") identity = (period, currency) if not period or not currency or identity in seen: raise SystemExit("Missing period/currency or duplicate period. Select a report version first.") seen.add(identity) revenue, income = row.get("revenue"), row.get("operating_income") margin = None if revenue is not None and income is not None and Decimal(str(revenue)) != 0: margin = Decimal(str(income)) / Decimal(str(revenue)) * 100 display = "not available" if margin is None else f"{margin:.1f}%" print(period, currency, "revenue=", revenue, "operating_income=", income, "margin=", display, "source=", row.get("source", "not supplied")) ``` The script refuses duplicate period/currency records so you can choose a report version deliberately. That is a basic guard, not a complete point-in-time or accounting-comparability check. ### Switch deliberately to an authenticated request For current available records, create an account key and set `EUROFINDATA_API_KEY` privately in your environment. Run the script with `--live`. This makes an authenticated request to the annual income-statement endpoint and uses the account’s shared allowance. Live mode · an account key must already be configured privately ```text python3 european-financial-data.py --live ``` The REST response uses `income_statements` and `report_period`; the curated sample uses `records` and `period_end`. The script handles both intentionally. A new live response can have different periods, values or gaps from the static sample. Read the [endpoint reference](https://eurofindata.com/docs/api-reference#financial-statements) and [freshness guide](https://eurofindata.com/research/financial-data-freshness). A returned statement still needs its source and accounting-basis checks. The code has been tested with the public sample and fixture responses; this page does not claim a fresh customer-authenticated live run. ### For an interactive question, use MCP A script is useful for an explicit calculation or application. If you want to ask follow-up questions in a compatible agent, start with [MCP setup](https://eurofindata.com/docs/mcp) and let the client discover the available tools. Both interfaces share account usage and underlying coverage. The same rule applies either way: preserve periods, units, currency and source, and distinguish a missing observation from a zero value. ### Reproduce the sample Dated sample: 2026-10-04. Not live data. Amounts are in full currency units. EU-IFRS/ESEF; not the US GAAP series. CSV empty numeric cells mean missing values, not zero. - [Sample JSON](https://eurofindata.com/research/european-financial-data-python/sample.json) - [Sample CSV](https://eurofindata.com/research/european-financial-data-python/sample.csv) ### Sources and further reading - [ASML 2025 EU-IFRS annual report, consolidated profit or loss, page 270 (PDF)](https://ourbrand.asml.com/m/6ea363f69344ebd4/original/asml-2025-annual-report-based-on-ifrs.pdf#page=270) - [ASML FY2025 machine-readable source](https://filings.xbrl.org/724500Y6DUVHQD6OXN27/2025-12-31/ESEF/NL/0/asml-2025-12-31-1-en.json) - [REST statement endpoint and response shape](https://eurofindata.com/docs/api-reference#financial-statements) - [Our source and freshness documentation](https://eurofindata.com/docs/provenance) ### Put your next company question to work. Free testing · No payment required · 300 successful data requests per account per UTC day - [Create a free account](https://eurofindata.com/sign-up) - [Connect your agent](https://eurofindata.com/agents.md) ### Keep exploring - [Analyze ASML’s operating margin with an AI agent](https://eurofindata.com/research/asml-operating-margin) - [MCP vs REST for financial research](https://eurofindata.com/research/mcp-vs-rest-financial-data) - [How to check whether financial data is actually current](https://eurofindata.com/research/financial-data-freshness) These are public editorial pages, not tool outputs. Worked values use dated stored samples. Comparisons are published by European Financial Data, disclose the relationship and link to provider documentation; they are not independent reviews or paid-service benchmarks. Check current provider coverage and live source freshness before relying on them. ## What the service can do Connect an MCP-capable agent to search supported European companies, check issuer coverage and data freshness, and retrieve available financial statements, market data, ownership information, issuer disclosures, KPIs, guidance, and related datasets. Tool availability and data coverage vary; discover the connected server's live tools and schemas before use. Check the coverage and provenance documentation before making claims about historical depth, source, units, or freshness. For a research answer, resolve the issuer first, check its available periods, retrieve only needed records, and present reporting periods, units, currencies, sources, and missing values. Derived calculations should be labelled and reproducible. Do not treat missing values as zero or promise universal 20-year history. The hosted MCP currently authenticates with an account API key in an Authorization bearer header. Sign-in credentials for the website are separate from financial-data API keys. Keep account keys in a private client secret store; never put them in a URL, public prompt, or committed file. MCP handshakes and tool discovery do not consume the data allowance; data requests through MCP, REST, and the dashboard share account usage. ## Complete agent setup and capability guide --- name: european-financial-data-setup description: Connect an agent to European Financial Data through MCP or REST, then verify one data request. --- # Connect to European Financial Data Help the user connect their agent or application and verify a small real query. European Financial Data provides company identifiers, financial statements, market data, and European disclosures. The service is in beta; coverage and source freshness vary. ## Start here Read the public connection manifest at https://eurofindata.com/agent-manifest.json for structured endpoints, authentication, verification calls, and capability limits. This is our documented connection description, not an OAuth or automatic client-registration endpoint. Testing access is free. No payment, card details, checkout, or subscription is required for setup. An account key is required; access and usage limits are shown in the user's dashboard. Do not invent an allowance value or promise unlimited public access. Follow this order: check the client's MCP support; locate or create an account key privately; configure the connection; discover tool schemas; verify one small query; then answer the user's research question. Ask the user only for the next input that is actually missing. Do not navigate dashboard or payment screens when the required key is already configured. ## Choose a connection Use hosted MCP when the user's client supports Streamable HTTP and custom authorization headers. Use REST for scripts, notebooks, or clients without that MCP capability. No server installation is required for the hosted connection. - MCP endpoint: https://api.eurofindata.com/mcp - MCP transport: Streamable HTTP - REST base URL: https://api.eurofindata.com/v1 - OpenAPI schema: https://api.eurofindata.com/openapi.json - Authentication for both: Authorization: Bearer - Create and manage account keys: https://eurofindata.com/dashboard/api-keys The current hosted MCP uses account API keys. An OAuth sign-in flow and public client-directory integrations are not available. A Clerk application key is not a financial-data API key. Check whether EUROFINDATA_API_KEY is already configured locally without displaying its value. If a key is missing, guide the user to create a named key and store it in a private environment variable or client secret configuration. Do not ask them to paste the secret into chat, put it in a URL, or commit it to a repository. Configure only the client the user is using and preserve existing MCP servers. ## Connect an MCP client For Claude Code, with the account key already in the local environment: ```bash claude mcp add --transport http european-financial-data 'https://api.eurofindata.com/mcp' \ --header "Authorization: Bearer $EUROFINDATA_API_KEY" ``` Check the connection with /mcp or claude mcp list. For Cursor, add the following server entry to the user's private ~/.cursor/mcp.json, merging it with existing entries. Replace the placeholder privately with the account key, or use the client's supported secret/environment mechanism: ```json { "mcpServers": { "european-financial-data": { "url": "https://api.eurofindata.com/mcp", "headers": { "Authorization": "Bearer " } } } } ``` For another client, configure the endpoint, Streamable HTTP transport, and bearer header above. If it cannot send custom headers, use REST. Reload MCP connections or start a new session if the client does not discover newly added tools. ## Verify access Discover the available MCP tools and their schemas. Call search_companies with query ASML, then get_income_statements with ticker ASML, period annual, and limit 1. Do not guess tool names or request arguments when the client can discover them. With REST, make these two small requests using the same bearer header: ```bash curl 'https://api.eurofindata.com/v1/companies/search?q=ASML&limit=1' \ -H "Authorization: Bearer $EUROFINDATA_API_KEY" curl 'https://api.eurofindata.com/v1/financials/income-statements?ticker=ASML&period=annual&limit=1' \ -H "Authorization: Bearer $EUROFINDATA_API_KEY" ``` Report the company identifier, report period, currency, and source returned. Explain which connection was configured and whether verification succeeded. Do not claim success from a successful handshake alone. ## Answer research questions 1. Resolve the company with search_companies. Confirm that the requested issuer is in the dataset. 2. Check get_company_coverage and get_data_freshness before selecting datasets or promising a historical range. Inspect automatically_refreshed, refresh_job_status, refresh_blocked_reason, last_success_at, latest_data_date, freshness_state, and filing_backlog. A recent successful import does not guarantee complete coverage or that a new report exists. 3. For margin history, use get_income_statements and get_financial_metrics. Operating margin is operating income divided by revenue. Missing or zero revenue cannot produce a valid margin; preserve it as missing. Use actual reporting periods and report gaps. 4. For issuer-defined adjusted measures, use get_apm_metrics and retain the original label, period, currency, and definition. An APM is not interchangeable with an IFRS line item. 5. Use get_operational_kpis for available operating KPIs. Coverage is sparse. Use get_forward_guidance only when records exist and verify its raw_excerpt against the original announcement; guidance extraction is heuristic and may need correction. 6. Use get_company_filings(ticker="ASML", limit=5) to locate indexed financial-report references, source URLs, reporting periods, content hashes, parser quality, archive status, and superseded reports. Match statement filing IDs to returned report IDs. Use get_sec_filings for additional SEC documents where covered. These tools return references, not arbitrary full-text search or Item 7 extraction. Narrative analysis requires opening the original source documents with a suitable document/browsing tool. Production database verification on 6 October 2026 found five ASML annual income-statement periods (2021–2025). The 2025 record contains revenue of EUR 32,667,300,000 and operating income of EUR 12,054,000,000, giving a derived operating margin of about 36.9%. These are dated verification examples, not live query results; retrieve current records before answering. Nvidia and Google/Alphabet are outside the current company universe. SAP has eleven annual periods (2015–2025), with a missing revenue value in 2017. Do not claim universal twenty-year history, complete KPI coverage, current quotes, or data updated seconds after publication. When producing a table or chart, keep the reporting period, units, currency, and source beside the values. Do not turn nulls into zeros, silently bridge missing chart points, or present a derived record summary as a verbatim filing quote. Include source links when the response supplies them; do not invent citations. ## Worked examples and source comparisons Read https://eurofindata.com/research for public, source-backed examples and comparisons. Use the complete Markdown versions below to fetch articles. https://eurofindata.com/llms-full.txt includes all research bodies, prompts, tables and sources; https://eurofindata.com/agent-manifest.json lists the individual HTML/Markdown and sample-download resources. - [Analyze ASML’s operating margin with an AI agent](https://eurofindata.com/research/asml-operating-margin/index.md): Worked example. - [Where to get European financial data for AI agents](https://eurofindata.com/research/european-financial-data-for-ai-agents/index.md): Field guide. - [Financial Datasets vs European Financial Data](https://eurofindata.com/research/financial-datasets-vs-european-financial-data/index.md): Comparison. - [Alpha Vantage vs European Financial Data](https://eurofindata.com/research/alpha-vantage-vs-european-financial-data/index.md): Comparison. - [Public filings or a financial data MCP server?](https://eurofindata.com/research/public-filings-vs-financial-data-mcp/index.md): Comparison. - [MCP vs REST for financial research](https://eurofindata.com/research/mcp-vs-rest-financial-data/index.md): Comparison. - [Read LVMH’s reported and adjusted measures carefully](https://eurofindata.com/research/lvmh-reported-vs-adjusted-profit/index.md): Worked example. - [Build a SAP margin history without filling the gaps](https://eurofindata.com/research/sap-financial-history-missing-data/index.md): Worked example. - [Research European short-position disclosures with an agent](https://eurofindata.com/research/european-short-position-disclosures/index.md): Field guide. - [Ticker, ISIN or LEI: find the right European company](https://eurofindata.com/research/company-identifiers-ticker-isin-lei/index.md): Field guide. - [How to check whether financial data is actually current](https://eurofindata.com/research/financial-data-freshness/index.md): Field guide. - [Finnhub vs European Financial Data](https://eurofindata.com/research/finnhub-vs-european-financial-data/index.md): Comparison. - [FactSet vs European Financial Data](https://eurofindata.com/research/factset-vs-european-financial-data/index.md): Comparison. - [FinancialData.Net vs European Financial Data](https://eurofindata.com/research/financialdata-net-vs-european-financial-data/index.md): Comparison. - [Financial data providers, marketplaces and directories](https://eurofindata.com/research/financial-data-providers-marketplaces-directories/index.md): Field guide. - [Get European company financial statements in Python](https://eurofindata.com/research/european-financial-data-python/index.md): Worked example. These articles are editorial guidance, not live tool output. Samples are dated 4 October 2026. ASML uses EU-IFRS/ESEF values; do not substitute its US GAAP series. LVMH's total net profit includes non-controlling interests and differs from the group share. CSV amounts are in full currency units; empty numeric cells mean missing values. Retrieve current records for a new research question. Comparisons disclose that we publish them. They use provider documentation and our examples, not authenticated paid-service benchmarks. Financial Datasets, FinancialData.Net, Finnhub and FactSet are distinct services. Datarade is a marketplace and Find My Moat is a directory; do not treat these roles as interchangeable APIs. Follow current provider documentation for availability and entitlements. ## Refresh scope As configured on 6 October 2026, the worker has 75 bounded jobs, including daily ESEF discovery for all 27 supported countries, ECB rates and official regulatory disclosures, weekly GLEIF/ESMA work, and monthly macro, insurance and ownership registers. ESEF imports process at most 25 reports from three index pages per country per run, prioritizing new reports while retaining historical catch-up. Segments/APMs/KPIs advance through per-report checkpoints. Inspect the actual job outcome: configured does not mean refreshed or complete. Failed sources and dependencies remain visible. Prices and related Yahoo feeds, ETF holdings, news, and sources lacking required credentials remain skipped; historical records are not live quotes. Current insurance aggregates distinguish annual and finalized quarterly series. The freshness summary counts registered datasets and processing jobs, not independent publishers. A stale flag can mean old observations or an overdue processing run; it does not necessarily mean an ingestion failure. Credential-gated skipped sources are reported separately. Check the relevant source rows, including skipped/error states, rather than inferring research quality from the total alone. HTTP readiness confirms availability, not freshness. ## Usage and troubleshooting REST data requests and MCP data tool calls share the user's account allowance. Connecting and listing tools do not consume data allowance. Check usage at https://eurofindata.com/dashboard/usage. Expensive workbook and artifact creation are disabled in the initial hosted beta. - Missing tools: reload connections or open a new client session, then discover tools again. - 401: verify the configured account key and bearer header without printing the key. - 429: honor Retry-After and the account reset time. Use bounded backoff. - 503 or an unavailable endpoint: stop and explain what needs fixing; do not repeatedly retry. - Revoked keys: create a replacement through the dashboard and update the private client configuration. ## Documentation - Index: https://eurofindata.com/llms.txt - Connection manifest: https://eurofindata.com/agent-manifest.json - Quickstart: https://eurofindata.com/docs/quickstart - MCP setup: https://eurofindata.com/docs/mcp - MCP tools and research: https://eurofindata.com/docs/mcp-tools - Authentication: https://eurofindata.com/docs/authentication - Coverage: https://eurofindata.com/docs/coverage - Provenance: https://eurofindata.com/docs/provenance - API reference: https://eurofindata.com/docs/api-reference