Data fields
Every field returned by the MCP server – per tool, with type, meaning
and the rule for when a field is empty (null).
get_company_details or get_full_record.
10-field card per hit – for searching, ranking, scanning.
Full profile of a company (all sections below).
Superset of the profile: full taxonomy + lineage.
1 search_companies → card
Compact extract. Codes are already resolved to labels here
(e.g. GmbH, Oberösterreich).
| Field | Type | Meaning | null when … |
|---|---|---|---|
fnr | string | Firmenbuch number (e.g. 078052h) | never |
name | string | Company name | never |
legal_form | string | Legal-form label (e.g. GmbH) | unknown |
bundesland | string | Bundesland label (e.g. Wien) | unknown |
size_gkl | string | UGB filing class: W micro, K small, M medium, G large (not equal to balance-sheet size – holdings often file as small) | unknown |
bilanzsumme_band | string | honest size band by balance-sheet total | no statement available |
bilanzsumme_latest | number € | Balance-sheet total of the most recent statement | no statement available |
manager_name | string | Name of the primary authorised representative (public Firmenbuch data; year of birth yes, no day/month) | not provided |
equity_ratio_latest | 0–1 | Equity ratio (most recent year) | not calculable |
revenue_latest | number € | Revenue (most recent year) | no P&L in the most recent statement |
growth_profile | string | shrinking/stable/growing/fast_growing | < 2 comparable years |
has_guv_latest | bool | does the most recent statement have a P&L? | – (always set) |
2 get_company_details → profile
The company sits under result. Raw codes are returned here
(e.g. legal_form: "GES" = GmbH, bundesland: "O" = Oberösterreich).
The full code tables are further down under
Code tables.
identity · Master data
| Field | Type | Meaning |
|---|---|---|
fnr | string | Firmenbuch number |
register_id | string | technical ID, format AT_<fnr> |
name | string | Company name |
legal_form | string | Legal form as code (GES = GmbH family; all codes) |
status | string | active / historical / deleted |
court | string | null | responsible Firmenbuch court (often empty) |
location · Registered seat
| Field | Type | Meaning |
|---|---|---|
country | string | Country, always AUT |
bundesland | string | Bundesland as code, e.g. W Wien, O Oberösterreich (all codes) |
city | string | City |
postal_code | string | Postal code |
street | string | null | Street (often empty) |
company · Key data
| Field | Type | Meaning |
|---|---|---|
stammkapital | number | null | Share capital in € (often empty) |
first_filing_year | int | first available statement year |
last_filing_year | int | most recent available statement year |
filing_years_available | int | number of available statement years |
founded_year | int | null | year founded, if derivable |
founded_source | string | null | origin of the founded year |
description | null | not populated in V1 |
size · Size classification
| Field | Type | Meaning |
|---|---|---|
gkl | string | Size class: W micro, K small, M medium, G large |
bilanzsumme_band | string | Balance-sheet-total band, small to very_large |
peer_percentiles | object | Percentile rank per ratio within the company's own size class (e.g. bilanzsumme: 99.3 = larger than 99.3%) |
financials · Financial data
First the header fields, then the positions – each as a time series (year → value).
| Field | Type | Meaning |
|---|---|---|
latest_year | int | most recent statement year |
has_guv_latest | bool | does the most recent year have a P&L? |
revenue_basis | string | null | origin of the revenue value |
latest | object | headline values for the most recent year (subset) |
bilanz | object | Balance-sheet positions (see below) |
guv | object | P&L positions (see below; empty {} when there is no P&L) |
Balance-sheet positions in financials.bilanz
| Position | Meaning |
|---|---|
| Total | |
bilanzsumme | Balance-sheet total (sum of all assets, equal to sum of liabilities and equity) |
| Assets | |
anlagevermoegen | Non-current assets (long-term assets) |
sachanlagen | Property, plant and equipment (land, buildings, machinery) |
finanzanlagen | Financial assets (participations, securities) |
umlaufvermoegen | Current assets (short-term assets) |
vorraete | Inventory (stock on hand) |
forderungen | Receivables (e.g. trade receivables) |
cash | Cash and equivalents (cash on hand, bank balances) |
| Liabilities & equity | |
eigenkapital | Equity |
stammkapital | Share capital (subscribed capital) |
kapitalruecklagen | Capital reserves |
gewinnruecklagen | Retained earnings reserves |
bilanzgewinn_verlust | Net profit / loss carried forward |
rueckstellungen | Provisions |
verbindlichkeiten | Liabilities (debt) |
P&L positions in financials.guv · only when has_guv
| Position | Meaning |
|---|---|
umsatzerloese | Revenue |
materialaufwand | Cost of materials |
personalaufwand | Personnel expenses |
abschreibungen | Depreciation and amortisation |
ebit | Operating result (before financial result and taxes) – see note |
ebitda | Operating result plus depreciation – see note |
jahresueberschuss | Net income / loss for the year |
ebit
we use the reported Betriebserfolg (operating result before
financial result and taxes), and as ebitda the operating result plus
depreciation. This does not match the strict EBIT definition
(earnings before interest and taxes, including the financial result); treat it as a
simplified approximation. For companies with a material financial or participation
result (e.g. holdings) the values can deviate noticeably.guv = {}, revenue_latest = null, and
margin-based ratios stay empty. Filter explicitly with has_guv /
has_guv_latest.ratios · Financial ratios
13 ratios, each as a time-series object. Margin and return ratios require a P&L and otherwise stay empty.
| Ratio | Meaning |
|---|---|
equity_ratio | Equity ratio (equity / balance-sheet total) |
debt_ratio | Debt ratio (debt / balance-sheet total) |
debt_to_equity | Debt-to-equity ratio (debt / equity) |
working_capital_ratio | Working-capital ratio |
anlagedeckungsgrad_1 | Fixed-asset coverage I (equity / non-current assets) |
ebit_margin | EBIT margin (EBIT / revenue) – EBIT = operating result, see note above |
ebitda_margin | EBITDA margin (EBITDA / revenue) |
net_margin | Net margin (net income / revenue) |
personalkostenquote | Personnel-cost ratio (personnel expenses / revenue) |
materialaufwandsquote | Material-cost ratio (cost of materials / revenue) |
roa | Return on assets (ROA) |
roe | Return on equity (ROE) |
capital_profile | qualitative capital-structure profile |
Each ratio object contains, among others, latest,
latest_year, history (year → value), avg_3y/avg_5y,
min_5y/max_5y, volatility, trend as well as
growth measures.
growth · Growth
| Field | Type | Meaning |
|---|---|---|
profile | string | null | shrinking / stable / growing / fast_growing (empty with < 2 comparable years) |
method | string | null | calculation basis for the profile |
employees · Employees
| Field | Type | Meaning |
|---|---|---|
latest / latest_year / history | object | null | Employee count per year – often empty, since the Firmenbuch records employee counts only sporadically |
filings · Filed annual statements + events
| filings[] field | Type | Meaning |
|---|---|---|
stichtag | string | Balance-sheet date of the statement |
format | string | Source format (e.g. legacy_finanzonline, jab_4_0) |
parsed | bool | parsed by machine? |
gkl | string | Size class at filing time |
doc_key · document_url · pdf_doc_key | string | null | Document references (partly empty) |
events[] – register events; mostly empty in V1.
management · Management
| Field | Type | Meaning |
|---|---|---|
n_signatories_latest | int | Number of authorised signatories (most recent year) |
signatories_stable_years | int | Years of stable management |
primary_manager.age | int | current age of the primary manager (year-based) |
primary_manager.birth_year | int | Year of birth (year only) |
primary_manager.role_label | string | Role (e.g. Managing Director) |
primary_manager.vertretung | string | null | Type of representation (sole / joint) |
3 get_full_record → full record
Contains everything from the profile plus:
financials.positions– the complete 317-position taxonomy (every UGB position)financials.passthrough– unknown source codes including history (lossless)financials.completeness– quality measure (position count per year)financials.guv_years– list of years with a P&Lmanagement.signatories_history– authorised signatories per yearderivations–metrics_version+ formula registry of the ratios
Same here: names stay hidden (GDPR).
4 Filters, sorting, pages
Arguments of search_companies.
| Filter | Meaning |
|---|---|
name | Substring of the company name |
legal_form | Legal form, e.g. GmbH |
bundesland | Plain name, e.g. Wien |
size_gkl | Size class W/K/M/G |
bilanzsumme_min / _max | Balance-sheet total from / to (€) |
equity_ratio_min / _max | Equity ratio from / to (0–1) |
revenue_min / _max | Revenue from / to (€) |
employees_min / _max | Employees from / to |
growth_profile | shrinking / stable / growing / fast_growing |
has_guv · has_guv_latest | only companies with a P&L (ever / in the most recent year) |
last_filing_year_min | most recent statement at least from this year |
founded_year_min / _max | Year founded from / to |
gf_age_min | primary manager at least X years old (succession screen) |
manager_name | Substring of the authorised representative's name (public Firmenbuch data) |
status | active / inactive / all |
Sorting: sort = { field, descending } over, among others,
bilanzsumme, equity_ratio, revenue.
Pages: page (from 1), page_size (default 25).
5 Code tables
Bundesland (code → plain name): B Burgenland · K Kärnten ·
N Niederösterreich · O Oberösterreich · S Salzburg ·
St Steiermark · T Tirol · V Vorarlberg · W Wien.
Legal form: The granular Firmenbuch code is in the profile
(legal_form). The GmbH family is the prefix GE…
(GES ≈ 99.7%); the search card labels it as GmbH.
Size class gkl: W micro · K small ·
M medium · G large.
6 Example response
This is what a full get_company_details response looks like for a fictional
example company (abbreviated; time series are illustrative). Fields with
null or empty objects/lists are also part of the response and are sent
where useful, so the agent can tell the difference between "not present"
and "unknown".
Note: all values below are fictional and serve only to illustrate the structure.
// Response envelope "schema_version": "1.0", "data_version": "2026-06-27", "provenance": { "source": "Österreichisches Firmenbuch / BMJ – Justiz", "license": "CC BY 4.0", "data_version": "2026-06-27", "schema_version": "1.0", "built_at": "2026-06-27T07:32:14Z" }, "result": { "identity": { "fnr": "999999x", "register_id": "AT_999999x", "name": "Beispiel Industrie GmbH", "legal_form": "GES", // code → label "GmbH" (see §5) "status": "active", "court": null }, "location": { "country": "AUT", "bundesland": "O", // Oberösterreich "city": "Linz", "postal_code": "4020", "street": null }, "company": { "stammkapital": 35000, "first_filing_year": 2014, "last_filing_year": 2024, "filing_years_available": 11, "founded_year": 2013, "founded_source": "first_filing-1", "description": null }, "size": { "gkl": "M", // medium "bilanzsumme_band": "large", "peer_percentiles": { "bilanzsumme": 82.4, "equity_ratio": 71.3, "revenue": 68.9 } }, "financials": { "latest_year": 2024, "has_guv_latest": true, "revenue_basis": "umsatzerloese", "latest": { "bilanzsumme": 12450000, "eigenkapital": 5230000, "umsatzerloese": 18900000, "ebit": 1430000, "ebitda": 2210000, "jahresueberschuss": 980000 }, "bilanz": { "bilanzsumme": { "latest": 12450000, "latest_year": 2024, "history": { "2022": 10840000, "2023": 11620000, "2024": 12450000 } }, "eigenkapital": { "latest": 5230000, "history": { "2022": 4380000, "2023": 4790000, "2024": 5230000 } } // … more balance-sheet positions (verbindlichkeiten, anlagevermoegen, vorraete, cash, …) }, "guv": { "umsatzerloese": { "latest": 18900000, "history": { "2022": 16200000, "2023": 17550000, "2024": 18900000 } }, "ebit": { "latest": 1430000, "history": { "2022": 1180000, "2023": 1290000, "2024": 1430000 } } // … materialaufwand, personalaufwand, abschreibungen, jahresueberschuss, … } }, "ratios": { "equity_ratio": { "latest": 0.42, "latest_year": 2024, "history": { "2022": 0.404, "2023": 0.412, "2024": 0.42 }, "avg_3y": 0.412, "min_5y": 0.39, "max_5y": 0.42, "trend": "rising", "growth_1y": 0.019, "growth_3y_cagr": 0.021 }, "ebit_margin": { "latest": 0.076, "trend": "stable" } // … debt_ratio, debt_to_equity, working_capital_ratio, anlagedeckungsgrad_1, // ebitda_margin, net_margin, personalkostenquote, materialaufwandsquote, // roa, roe, capital_profile }, "growth": { "profile": "growing", "method": "revenue_3y_cagr" }, "employees": null, // only sporadically recorded in the Firmenbuch "management": { "n_signatories_latest": 2, "signatories_stable_years": 4, "primary_manager": { "age": 52, "birth_year": 1974, // year only (GDPR) "role_label": "GESCHÄFTSFÜHRER/IN (handelsrechtlich)", "vertretung": "selbständig" } }, "filings": [ { "stichtag": "2024-12-31", "format": "jab40_semantic", "parsed": true, "gkl": "M", "eingereicht": "2025-08-12", "document_url": "https://justizonline.gv.at/…", "pdf_doc_key": null } // … older statements, sorted by stichtag descending ], "events": [] }
In the search card (search_companies)
codes are already resolved to labels (e.g. legal_form: "GmbH",
bundesland: "Oberösterreich"). In the full profile and in
get_full_record the raw codes are returned — the tables above in §5 explain
the resolution.
7 Status & warranty
Every response carries provenance.data_version and built_at
(build time of the delivered data). The data comes from the
Austrian Firmenbuch (BMJ – Justiz, EU High Value Dataset,
CC BY 4.0), is processed automatically and provided without warranty
as to accuracy, completeness or timeliness. The official Firmenbuch extract is
always authoritative.
Developer variant of this page: FIELD_REFERENCE.md in the repo.