Endpoints: 39,967MCP servers: 22,496Payout addresses: 2,533Paid calls: 3,294Letters: 54Defects: 1,976counted 1 min ago
teppi

Server definition

Hash
sha256:eba96cab1ede2bb09553d569f28f7647dd1276acae71ac5d3e5fc7596510b49c
What it is
What a remote MCP server returned when asked what it offers: 3 tools

The blob, as servednamed by its sha256

{ "instructions": "Austrian residential property calculations with cited legal sources (RIS).\n- estimate_acquisition_costs: purchase costs on top of the price (Kaufnebenkosten).\n- underwrite_property: full buy-to-let analysis (costs, loan, cash flow before and after income tax, yields, break-even rent, MRG rent caps with the Richtwert, AfA, Liebhaberei check, risk flags).\n- get_rules: the statutory values and default assumptions behind the numbers, for citing.\nAll amounts are EUR; rents and owner costs are monthly and net of VAT. Results are deterministic calculations, not investment, tax or legal advice; say so when presenting them.", "tools": [ { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "assumptions": { "description": "Override default assumptions. Omit to use documented defaults.", "properties": { "contractFeePct": { "description": "Lawyer/notary contract and escrow fee, % of price excl. VAT. Default 1.5 (typical range 1–3).", "type": "number" }, "grundbuchApplications": { "description": "Number of separate land-register applications. Default 1.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "grundbuchFiling": { "description": "How the land-register application is filed. Default \"electronic\" (lawyer or notary).", "enum": [ "electronic", "paper" ], "type": "string" }, "mortgageRegistrationFactor": { "description": "Registered mortgage as a multiple of the loan. Default 1.3.", "type": "number" } }, "type": "object" }, "broker": { "anyOf": [ { "const": "none", "type": "string" }, { "properties": { "commissionPct": { "description": "Buyer's broker commission in % of the price, EXCLUDING 20% VAT. Listings often say '3% zzgl. 20% USt' → 3.", "type": "number" }, "sellerPaysCommission": { "description": "Whether the seller also pays the broker. Affects the legal cap. Omit if unknown.", "type": "boolean" } }, "required": [ "commissionPct" ], "type": "object" } ], "description": "Broker commission, or \"none\" if the purchase is commission-free (provisionsfrei)." }, "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.", "enum": [ "summary", "full" ], "type": "string" }, "financing": { "description": "Mortgage financing, if any. Adds the court fee for registering the mortgage.", "properties": { "loanAmount": { "description": "Loan amount in EUR.", "type": "number" }, "registeredMortgageAmount": { "description": "Mortgage amount registered in the land register, if known. Defaults to 1.3 × the loan.", "type": "number" } }, "required": [ "loanAmount" ], "type": "object" }, "purchasePrice": { "description": "Purchase price in EUR (the agreed price for the property), e.g. 249000.", "type": "number" }, "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.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "purchasePrice", "broker" ], "type": "object" }, "name": "estimate_acquisition_costs", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "date": { "description": "Return the rules valid on this date, YYYY-MM-DD. Defaults to today (Vienna time).", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "type": "object" }, "name": "get_rules", "outputSchema": null }, { "description": "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).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "assumptions": { "description": "Override default assumptions. Omit to use documented defaults.", "properties": { "contractFeePct": { "description": "Lawyer/notary contract and escrow fee, % of price excl. VAT. Default 1.5 (typical range 1–3).", "type": "number" }, "grundbuchApplications": { "description": "Number of separate land-register applications. Default 1.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "grundbuchFiling": { "description": "How the land-register application is filed. Default \"electronic\" (lawyer or notary).", "enum": [ "electronic", "paper" ], "type": "string" }, "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" }, "mortgageRegistrationFactor": { "description": "Registered mortgage as a multiple of the loan. Default 1.3.", "type": "number" }, "vacancyPct": { "description": "Vacancy and rent loss, % of gross rent (rent + operating costs). Default 4.", "type": "number" } }, "type": "object" }, "broker": { "anyOf": [ { "const": "none", "type": "string" }, { "properties": { "commissionPct": { "description": "Buyer's broker commission in % of the price, EXCLUDING 20% VAT. Listings often say '3% zzgl. 20% USt' → 3.", "type": "number" }, "sellerPaysCommission": { "description": "Whether the seller also pays the broker. Affects the legal cap. Omit if unknown.", "type": "boolean" } }, "required": [ "commissionPct" ], "type": "object" } ], "description": "Broker commission, or \"none\" if the purchase is commission-free (provisionsfrei)." }, "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.", "enum": [ "summary", "full" ], "type": "string" }, "financing": { "description": "Mortgage financing. Omit for a cash purchase.", "properties": { "loanAmount": { "description": "Loan amount in EUR.", "type": "number" }, "ratePct": { "description": "Nominal annual interest rate in %, e.g. 3.9. Treated as fixed for the whole term.", "type": "number" }, "registeredMortgageAmount": { "description": "Mortgage amount registered in the land register, if known. Defaults to 1.3 × the loan.", "type": "number" }, "termYears": { "description": "Loan term in whole years, e.g. 25.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "loanAmount", "ratePct", "termYears" ], "type": "object" }, "ownerCosts": { "description": "Costs the owner pays that cannot be passed on to the tenant.", "properties": { "maintenanceMonthly": { "description": "Monthly maintenance budget in EUR; overrides maintenancePctPerYear.", "type": "number" }, "reserveFundMonthly": { "description": "The flat's monthly repair-reserve contribution (Rücklage) in EUR. Defaults to the legal minimum per m² for condominiums.", "type": "number" } }, "type": "object" }, "property": { "description": "Property facts. Pass what you know; missing facts are flagged.", "properties": { "buildingPermitDate": { "description": "Date of the building permit (Baubewilligung), YYYY-MM-DD. Decides whether MRG rent caps apply.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "buildingYear": { "description": "Year the building was completed (Baujahr). Used as an estimate if the permit date is unknown.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "livingAreaM2": { "description": "Usable floor area (Nutzfläche) in m².", "type": "number" }, "ownership": { "description": "condominium = Eigentumswohnung (Wohnungseigentum); house = single-family house; wholeBuilding = entire rental building.", "enum": [ "condominium", "house", "wholeBuilding" ], "type": "string" }, "publicFunding": { "description": "Whether the building was built with public funds (e.g. Wohnbauförderung).", "type": "boolean" }, "state": { "description": "Bundesland (ä → ae, ö → oe), e.g. \"wien\" for Vienna, \"steiermark\" for Graz. Needed for the Richtwert rent cap.", "enum": [ "burgenland", "kaernten", "niederoesterreich", "oberoesterreich", "salzburg", "steiermark", "tirol", "vorarlberg", "wien" ], "type": "string" }, "unitsInBuilding": { "description": "Number of separate flats or business units in the building.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "type": "object" }, "purchasePrice": { "description": "Purchase price in EUR (the agreed price for the property), e.g. 249000.", "type": "number" }, "rent": { "description": "Expected rent.", "properties": { "fixedTerm": { "description": "Whether the lease is fixed-term (befristet). For rent-capped flats this lowers the cap by 25%. Omit if unknown.", "type": "boolean" }, "netColdMonthly": { "description": "Monthly net cold rent (Hauptmietzins) in EUR, excluding operating costs and VAT.", "type": "number" }, "operatingCostsMonthly": { "description": "Monthly operating costs (Betriebskosten) in EUR, passed on to the tenant.", "type": "number" } }, "required": [ "netColdMonthly" ], "type": "object" }, "tax": { "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" }, "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.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "purchasePrice", "broker", "rent" ], "type": "object" }, "name": "underwrite_property", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:eba96cab1ede2bb09553d569f28f7647dd1276acae71ac5d3e5fc7596510b49c | sha256sum