Austria Property
Austrian property costs, buy-to-let underwriting, income tax and rent caps, cited to the statute
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"austria-property": {
"command": "npx",
"args": [
"austria-property-mcp"
]
}
}
}Ausführbare Pakete
0.6.0stdioRemote-Endpunkte
https://austria-property-mcp.jan-mastalier.workers.dev/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (3)
🟢estimate_acquisition_costs(valuationDate, detail, purchasePrice, broker, financing, ...)
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. The JSON lists the cited legal bases and sources once; pass detail "full" for every line item with its calculation and its own citations. Amounts in EUR. Not covered: bank or valuation fees, purchases within the family, exemptions for a primary residence.
Eingabe-Schema
{
"type": "object",
"properties": {
"valuationDate": {
"description": "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.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"detail": {
"description": "How much of the result to return as JSON. \"summary\" (default) keeps the key figures, flags, assumptions, limitations and deduplicated citations (about 40% of the size for underwrite_property, 60% for estimate_acquisition_costs). \"full\" adds every line item with its calculation and citations, the tax years and the rules used. The readable text is the same in both.",
"type": "string",
"enum": [
"summary",
"full"
]
},
"purchasePrice": {
"type": "number",
"description": "Purchase price in EUR (the agreed price for the property), e.g. 249000."
},
"broker": {
"anyOf": [
{
"type": "string",
"const": "none"
},
{
"type": "object",
"properties": {
"commissionPct": {
"type": "number",
"description": "Buyer's broker commission in % of the price, EXCLUDING 20% VAT. Listings often say '3% zzgl. 20% USt' → 3."
},
"sellerPaysCommission": {
"description": "Whether the seller also pays the broker. Affects the legal cap. Omit if unknown.",
"type": "boolean"
}
},
"required": [
"commissionPct"
]
}
],
"description": "Broker commission, or \"none\" if the purchase is commission-free (provisionsfrei)."
},
"financing": {
"description": "Mortgage financing, if any. Adds the court fee for registering the mortgage.",
"type": "object",
"properties": {
"loanAmount": {
"type": "number",
"description": "Loan amount in EUR."
},
"registeredMortgageAmount": {
"description": "Mortgage amount registered in the land register, if known. Defaults to 1.3 × the loan.",
"type": "number"
}
},
"required": [
"loanAmount"
]
},
"assumptions": {
"description": "Override default assumptions. Omit to use documented defaults.",
"type": "object",
"properties": {
"contractFeePct": {
"description": "Lawyer/notary contract and escrow fee, % of price excl. VAT. Default 1.5 (typical range 1–3).",
"type": "number"
},
"mortgageRegistrationFactor": {
"description": "Registered mortgage as a multiple of the loan. Default 1.3.",
"type": "number"
},
"grundbuchFiling": {
"description": "How the land-register application is filed. Default \"electronic\" (lawyer or notary).",
"type": "string",
"enum": [
"electronic",
"paper"
]
},
"grundbuchApplications": {
"description": "Number of separate land-register applications. Default 1.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
}
}
},
"required": [
"purchasePrice",
"broker"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢underwrite_property(valuationDate, detail, purchasePrice, broker, financing, ...)
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 and the Richtwert cap, 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. The JSON is compact by default (key figures, flags, citations); pass detail "full" for every line, the tax years and the rules used. Not covered: rent increases or interest-rate changes over time, tax credits, Richtwert surcharges and deductions (Zuschläge/Abschläge).
Eingabe-Schema
{
"type": "object",
"properties": {
"valuationDate": {
"description": "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.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"detail": {
"description": "How much of the result to return as JSON. \"summary\" (default) keeps the key figures, flags, assumptions, limitations and deduplicated citations (about 40% of the size for underwrite_property, 60% for estimate_acquisition_costs). \"full\" adds every line item with its calculation and citations, the tax years and the rules used. The readable text is the same in both.",
"type": "string",
"enum": [
"summary",
"full"
]
},
"purchasePrice": {
"type": "number",
"description": "Purchase price in EUR (the agreed price for the property), e.g. 249000."
},
"broker": {
"anyOf": [
{
"type": "string",
"const": "none"
},
{
"type": "object",
"properties": {
"commissionPct": {
"type": "number",
"description": "Buyer's broker commission in % of the price, EXCLUDING 20% VAT. Listings often say '3% zzgl. 20% USt' → 3."
},
"sellerPaysCommission": {
"description": "Whether the seller also pays the broker. Affects the legal cap. Omit if unknown.",
"type": "boolean"
}
},
"required": [
"commissionPct"
]
}
],
"description": "Broker commission, or \"none\" if the purchase is commission-free (provisionsfrei)."
},
"financing": {
"description": "Mortgage financing. Omit for a cash purchase.",
"type": "object",
"properties": {
"loanAmount": {
"type": "number",
"description": "Loan amount in EUR."
},
"ratePct": {
"type": "number",
"description": "Nominal annual interest rate in %, e.g. 3.9. Treated as fixed for the whole term."
},
"termYears": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Loan term in whole years, e.g. 25."
},
"registeredMortgageAmount": {
"description": "Mortgage amount registered in the land register, if known. Defaults to 1.3 × the loan.",
"type": "number"
}
},
"required": [
"loanAmount",
"ratePct",
"termYears"
]
},
"property": {
"description": "Property facts. Pass what you know; missing facts are flagged.",
"type": "object",
"properties": {
"livingAreaM2": {
"description": "Usable floor area (Nutzfläche) in m².",
"type": "number"
},
"ownership": {
"description": "condominium = Eigentumswohnung (Wohnungseigentum); house = single-family house; wholeBuilding = entire rental building.",
"type": "string",
"enum": [
"condominium",
"house",
"wholeBuilding"
]
},
"buildingPermitDate": {
"description": "Date of the building permit (Baubewilligung), YYYY-MM-DD. Decides whether MRG rent caps apply.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"buildingYear": {
"description": "Year the building was completed (Baujahr). Used as an estimate if the permit date is unknown.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"publicFunding": {
"description": "Whether the building was built with public funds (e.g. Wohnbauförderung).",
"type": "boolean"
},
"unitsInBuilding": {
"description": "Number of separate flats or business units in the building.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"state": {
"description": "Bundesland (ä → ae, ö → oe), e.g. \"wien\" for Vienna, \"steiermark\" for Graz. Needed for the Richtwert rent cap.",
"type": "string",
"enum": [
"burgenland",
"kaernten",
"niederoesterreich",
"oberoesterreich",
"salzburg",
"steiermark",
"tirol",
"vorarlberg",
"wien"
]
}
}
},
"rent": {
"type": "object",
"properties": {
"netColdMonthly": {
"type": "number",
"description": "Monthly net cold rent (Hauptmietzins) in EUR, excluding operating costs and VAT."
},
"operatingCostsMonthly": {
"description": "Monthly operating costs (Betriebskosten) in EUR, passed on to the tenant.",
"type": "number"
},
"fixedTerm": {
"description": "Whether the lease is fixed-term (befristet). For rent-capped flats this lowers the cap by 25%. Omit if unknown.",
"type": "boolean"
}
},
"required": [
"netColdMonthly"
],
"description": "Expected rent."
},
"ownerCosts": {
"description": "Costs the owner pays that cannot be passed on to the tenant.",
"type": "object",
"properties": {
"reserveFundMonthly": {
"description": "The flat's monthly repair-reserve contribution (Rücklage) in EUR. Defaults to the legal minimum per m² for condominiums.",
"type": "number"
},
"maintenanceMonthly": {
"description": "Monthly maintenance budget in EUR; overrides maintenancePctPerYear.",
"type": "number"
}
}
},
"tax": {
"description": "Facts for the income tax on rent and the depreciation (AfA). Omit to use flagged defaults (40% marginal rate, 40% land share).",
"type": "object",
"properties": {
"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"
},
"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.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"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"
}
}
},
"assumptions": {
"description": "Override default assumptions. Omit to use documented defaults.",
"type": "object",
"properties": {
"contractFeePct": {
"description": "Lawyer/notary contract and escrow fee, % of price excl. VAT. Default 1.5 (typical range 1–3).",
"type": "number"
},
"mortgageRegistrationFactor": {
"description": "Registered mortgage as a multiple of the loan. Default 1.3.",
"type": "number"
},
"grundbuchFiling": {
"description": "How the land-register application is filed. Default \"electronic\" (lawyer or notary).",
"type": "string",
"enum": [
"electronic",
"paper"
]
},
"grundbuchApplications": {
"description": "Number of separate land-register applications. Default 1.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"vacancyPct": {
"description": "Vacancy and rent loss, % of gross rent (rent + operating costs). Default 4.",
"type": "number"
},
"maintenancePctPerYear": {
"description": "Owner's maintenance, % per year of price plus acquisition costs. Default 0.2.",
"type": "number"
},
"managementPct": {
"description": "Letting/management fees paid by the owner, % of net cold rent. Default 0 (self-managed).",
"type": "number"
},
"marginalTaxRatePct": {
"description": "Owner's marginal income tax rate in %, applied to the rental result. Default 40. Ignored when tax.otherTaxableIncome is given.",
"type": "number"
}
}
}
},
"required": [
"purchasePrice",
"broker",
"rent"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_rules(date)
List the statutory values the engine uses on a date (tax and fee rates, broker caps, minimum repair reserve, MRG cut-off dates, Richtwerte per state, 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.
Eingabe-Schema
{
"type": "object",
"properties": {
"date": {
"description": "Return the rules valid on this date, YYYY-MM-DD. Defaults to today (Vienna time).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Nachweis