Austria Property
Server Details
Austrian property costs, buy-to-let underwriting, income tax and rent caps, cited to the statute
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- mastalier1997/austria-property-mcp
- GitHub Stars
- 0
- Server Listing
- austria-property-mcp
TDQS
Scored across 3 tools
Each tool has a distinct primary purpose: a transaction-cost estimator, a statutory-rules reference, and a full rental-investment underwriting model. The only mild overlap is that acquisition costs appear both as a standalone estimator and as a component of underwrite_property, but the descriptions make the intended use of each clear.
All three names follow a clean snake_case verb_noun pattern (estimate_acquisition_costs, get_rules, underwrite_property) with consistent verb-first ordering. No camelCase mixing or inconsistent conventions.
Three tools for a narrow, well-defined domain (Austrian residential property cost and investment analysis) is reasonable, and each tool earns its place. It is slightly thin, since the rules lookup could plausibly be folded in, but nothing feels redundant or padded.
The surface covers buying costs, the underlying statutory parameters, and rental deal evaluation, which are the core workflows for this domain. Explicitly excluded items (income tax on rent, family purchases, exact Richtwert cap) are documented rather than silently missing, so agents can work around them.
Available Tools
3 toolsestimate_acquisition_costsAustrian property purchase costsARead-onlyIdempotentInspect
Calculate the one-off costs of buying residential property in Austria on top of the price (Kaufnebenkosten): real estate transfer tax (Grunderwerbsteuer), land-register court fees, broker commission with a check against the legal maximum, and lawyer/notary contract costs, each with VAT where it applies. Use when someone asks what buying a specific flat or house in Austria costs in total. Every statutory line cites its legal basis and source. Amounts in EUR. Not covered: bank or valuation fees, purchases within the family, exemptions for a primary residence.
| Name | Required | Description | Default |
|---|---|---|---|
| broker | Yes | Broker commission, or "none" if the purchase is commission-free (provisionsfrei). | |
| financing | No | Mortgage financing, if any. Adds the court fee for registering the mortgage. | |
| assumptions | No | Override default assumptions. Omit to use documented defaults. | |
| purchasePrice | Yes | Purchase price in EUR (the agreed price for the property), e.g. 249000. | |
| valuationDate | No | Date whose rules apply, YYYY-MM-DD, usually today or the expected signing date. Defaults to today (Vienna time). Covered: 2025-04-01 to 2027-12-31. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, openWorldHint=false, so the safe, deterministic, offline nature of the call is covered. The description adds genuinely new behavioral context: each statutory line cites its legal basis and source, amounts are in EUR, and a broker commission cap check is performed. It omits any statement about output shape or performance, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence, then trigger, then two short factual notes, then exclusions — no padding and each sentence carries information. The middle two sentences ('Every statutory line cites its legal basis and source', 'Amounts in EUR') are terse but additive rather than redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a pure read-only computation with no output schema, the description covers what is computed, when to use it, currency, and hard exclusions. It stops short of describing the returned breakdown (line items plus total) or citing the covered legal-period window, which the agent only learns from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the field descriptions are already rich (VAT-exclusive commission, 'zzgl. 20% USt' example, defaults for contractFeePct and mortgage factor). The description's parameter-relevant content ('broker commission with a check against the legal maximum', 'each with VAT where it applies') largely restates what the schema already says under sellerPaysCommission and the fee fields, so the 3 baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Calculate') and resource ('one-off costs of buying residential property in Austria / Kaufnebenkosten'), then enumerates the exact cost lines included (Grunderwerbsteuer, land-register fees, broker commission, lawyer/notary costs). That level of scope detail makes it unmistakable next to a generic rules lookup like get_rules or an underwriting tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use when someone asks what buying a specific flat or house in Austria costs in total') and explicit exclusions ('Not covered: bank or valuation fees, purchases within the family, exemptions for a primary residence'). It does not name or route to sibling alternatives (get_rules, underwrite_property), so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rulesStatutory rules and assumptionsRead-onlyIdempotentInspect
List the statutory values the engine uses on a date (tax and fee rates, broker caps, minimum repair reserve, MRG cut-off dates, AfA rates, land shares, income tax brackets), each with legal basis, source URL and the date it was last verified, plus the default assumptions and risk thresholds. Use to cite sources or to explain how a number was calculated.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Return the rules valid on this date, YYYY-MM-DD. Defaults to today (Vienna time). |
underwrite_propertyUnderwrite an Austrian buy-to-let purchaseRead-onlyIdempotentInspect
Analyse an Austrian residential property as a rental investment: acquisition costs, annuity loan payment, monthly cash flow before and after income tax, gross and net yield, cash-on-cash return, debt cover (DSCR), break-even rent, whether statutory rent caps (MRG) apply, depreciation (AfA) with the legal land share, a 25-year Liebhaberei check, and risk flags. Use when evaluating whether a specific flat or house is a good buy-to-let deal. Inputs in EUR; rents and owner costs are monthly and net of VAT. Pass what you know: missing facts fall back to documented assumptions and are flagged. Not covered: rent increases or interest-rate changes over time, tax credits, the exact Richtwert cap.
| Name | Required | Description | Default |
|---|---|---|---|
| tax | No | Facts for the income tax on rent and the depreciation (AfA). Omit to use flagged defaults (40% marginal rate, 40% land share). | |
| rent | Yes | Expected rent. | |
| broker | Yes | Broker commission, or "none" if the purchase is commission-free (provisionsfrei). | |
| property | No | Property facts. Pass what you know; missing facts are flagged. | |
| financing | No | Mortgage financing. Omit for a cash purchase. | |
| ownerCosts | No | Costs the owner pays that cannot be passed on to the tenant. | |
| assumptions | No | Override default assumptions. Omit to use documented defaults. | |
| purchasePrice | Yes | Purchase price in EUR (the agreed price for the property), e.g. 249000. | |
| valuationDate | No | Date whose rules apply, YYYY-MM-DD, usually today or the expected signing date. Defaults to today (Vienna time). Covered: 2025-04-01 to 2027-12-31. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
underwrite_property2 fields changed- added
Input schema / properties / assumptions / properties / marginalTaxRatePctAdded value: +{ + "description": "Owner's marginal income tax rate in %, applied to the rental result. Default 40. Ignored when tax.otherTaxableIncome is given.", + "type": "number" +} - added
Input schema / properties / taxAdded value: +{ + "description": "Facts for the income tax on rent and the depreciation (AfA). Omit to use flagged defaults (40% marginal rate, 40% land share).", + "properties": { + "averageLandPricePerM2": { + "description": "Average price of building land in the municipality, EUR per m². Under 400 in a town under 100,000 inhabitants → 20% land share.", + "type": "number" + }, + "landSharePct": { + "description": "Land share of the purchase in %, if proven (e.g. expert opinion). Otherwise presumed at 20, 30 or 40% by law.", + "type": "number" + }, + "municipalityInhabitants": { + "description": "Inhabitants of the municipality (e.g. Vienna ≈ 2,000,000). Decides the presumed land share together with the land price.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "otherTaxableIncome": { + "description": "Owner's other taxable income per year in EUR (e.g. gross salary minus social security). Enables the exact income tax tariff.", + "type": "number" + } + }, + "type": "object" +}
3 tool updates
- First observed
estimate_acquisition_costs - First observed
get_rules - First observed
underwrite_property
Related MCP Connectors
Austria — consolidated federal law and case law, from the Bundeskanzleramt's…
UK buy-to-let maths: true net yield, cashflow, Section 24, stamp duty and area rental yields.
German property depreciation (AfA), Restnutzungsdauer, Kaufpreisaufteilung & appraisals via AfAMax
UK property finance: bridging cost, dev appraisal, BTL stress test, stamp duty (SDLT/LBTT/LTT).
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to search and retrieve Austrian federal legislation, provisions, case law, and EU implementation data with verbatim source citations and currency validation.54 npmApache 2.0
- AlicenseAqualityDmaintenanceAustria's legal information system (RIS): federal & state law, case law, gazettes, change monitoring.1045 PyPI1Apache 2.0
- AlicenseAqualityBmaintenanceExact French real-estate legal calculations for AI agents: IRL rent revision, service-charge reconciliation, compliant rent receipts — legal basis included in every answer.41MIT
- AlicenseAqualityAmaintenanceEnables searching and retrieving Austrian federal legislation and case law from the official legal information system RIS, with verifiable ELI and ECLI identifiers.664 PyPIApache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.