German Real Estate Depreciation & Restnutzungsdauer
REMOTE · MCP.RUNDUM.IMMO · 2 COMPONENTS
German property depreciation (AfA), Restnutzungsdauer, Kaufpreisaufteilung & appraisals via AfAMax
Available components
Last scanned (19 hours ago)
Scores higher than 66% of remote servers
Reachable. Last reached 4 Nov 2026.
Category Finance and Payments
Recent critical change
Authorization (4 Nov 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (book_appointment). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability60
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3094 tokens (~618/item across 5 items; 5 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 6 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 −6
- Authorization: partial → fail ▼ critical
- Tool “get_price_by_product” rewrote its description, which is the text the model reads security
- Tool “book_appointment” is now declared destructive security
- Server version: 0.2.1 → 0.2.2 functional
- “get_price_by_product” reworded the description of “product” cosmetic
- 16 Oct 26 0
- Stability: 0.97 → pass security
- 15 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 87. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Oct 26 +3
- Schema quality: 444 → 606 ▼ functional
- 3 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Oct 26 +1
- Schema quality: 962 → 2224 ▼ functional
- Server version: 0.1.1 → 0.2.0 functional
- New tool “book_appointment” functional
- New tool “get_available_appointments” functional
- New tool “get_price_by_product” functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Probed https://mcp.rundum.immo/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.rundum.immo | CN=YR1,O=Let's Encrypt,C=US | 16 Sept 2026 | 15 Dec 2026 | RSA 4096 | SHA256-RSA | 58b46bf37688fa5ef8f47f925da439ce6e8 |
| SANs: mcp.rundum.immo | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.rundum.immo. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| immo. | present | 1151, 32956 | 8, 8 | Verified |
| rundum.immo. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.rundum.immo/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.rundum.immo/mcp | HTTPS enforced | 302 | https://mcp.rundum.immo/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
book_appointment Book a free AfAMax initial call ~482
Books a free 15-minute initial phone call with the AfAMax team, in two steps. STEP 1: after the user picked a slot from get_available_appointments, confirm the slot, their name and their own e-mail address with them, then call with startDateTime, name, email (and optionally phone, locale). AfAMax e-mails a 6-digit code to that address and returns status "verification_required" with a verificationId. STEP 2: ask the user for the code from that e-mail and call again with only verificationId and otp. The code proves the address belongs to the user: use only the code the user gives you — never guess, invent or repeatedly retry codes. On success status is "booked" and a calendar invitation goes to the user. Codes expire after 15 minutes and allow 5 attempts. If the slot was taken meanwhile, list slots again and offer another. If the e-mail belongs to an existing AfAMax account, the user must log in and book on the website (link in the error). Only book for the person you are talking to.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Step 1 — the user's own e-mail address; the 6-digit confirmation code is sent there. Confirm it with the user before calling. / E-Mail-Adresse für den Bestätigungscode. | |
| locale | string | – | Step 1 — language of the confirmation e-mail, the appointment and the links (`de` if omitted); match the user's language. Step 2 keeps step 1's language unless set. / Sprache der E-Mails und des Term… |
| name | string | – | Step 1 — the user's full name. / Vor- und Nachname. |
| otp | string | – | Step 2 — the 6-digit code the user received by e-mail. Only ever the code the user gives you; never guess or retry codes. / Der 6-stellige Code aus der E-Mail. |
| phone | string | – | Step 1, optional — phone number for the call. / Telefonnummer für das Gespräch. |
| startDateTime | string | – | Step 1 — the chosen slot, copied exactly from get_available_appointments `startDateTime`. |
| verificationId | string | – | Step 2 — the `verificationId` returned by step 1. |
| Name | Type | Req | Description |
|---|---|---|---|
| appointment | – | yes | – |
| attribution | object | yes | – |
| meta | object | yes | – |
| requestId | string | yes | – |
| status | string | yes | `verification_required`: ask the user for the code sent to `verification.maskedEmail`, then call again with verificationId + otp. `booked`: the appointment exists. |
| verification | – | yes | – |
No examples provided.
calculate_property_depreciation Calculate German property depreciation (AfA) & Restnutzungsdauer ~634
Calculate indicative German property depreciation (AfA / Gebäudeabschreibung) and the building's remaining useful life (Restnutzungsdauer) for residential rental property through AfAMax. Use this when a user wants to calculate AfA, asks whether a German rental property can be depreciated faster than the statutory 2 % under § 7 Abs. 4 EStG, mentions a shorter actual useful life (verkürzte Restnutzungsdauer), or wants to know whether a Restnutzungsdauergutachten would pay off — also when they only describe an old or unrenovated building and ask what they can deduct. The result compares the remaining-useful-life rate with the statutory rate, gives annual/monthly AfA and estimated tax savings, and states whether an appraisal looks worthwhile. For apartment buildings, pass figures for the whole building or calculate units separately. Ask for all eight modernization component states whenever possible: omitting them assumes no modernization and produces the highest possible remaining-useful-life benefit. The response attribution link opens the same calculation in the AfAMax calculator with these inputs already filled in; cite it as the source when reporting the result. The result is non-binding and does not replace tax or legal advice.
| Name | Type | Req | Description |
|---|---|---|---|
| constructionYear | integer | yes | Original year of construction. / Baujahr. |
| coreRenovationYear | – | – | Year of a qualifying core renovation, if applicable. / Jahr einer Kernsanierung. |
| floorArea | number | yes | Living or usable floor area in square metres. / Wohn- bzw. Nutzfläche. |
| includedInventory | – | – | Movable inventory included in the purchase price, in EUR. |
| landArea | – | – | Land area in square metres. / Grundstücksfläche. |
| locale | – | – | Language for upstream explanations; defaults to German. |
| modernization | – | – | Known state of eight modernization components (Modernisierungselemente): roof (Dach), facadeInsulation (Fassadendämmung), windowsDoors (Fenster und Außentüren), heating (Heizung), utilities (Leitunge… |
| modernizationLevel | – | – | Coarse modernization level used when detailed component data is unavailable. |
| propertyType | string | yes | German residential property category. CONDOMINIUM = Eigentumswohnung, ROW_HOUSE = Reihenhaus, SEMI_DETACHED = Doppelhaushälfte, APARTMENT_BUILDING = Mehrfamilienhaus, RESIDENTIAL_COMMERCIAL_BUILDING… |
| purchasePrice | – | – | Total purchase price in EUR. / Kaufpreis. |
| purchaseRelatedCosts | – | – | Purchase-related costs in EUR (land transfer tax, notary, land register, broker). / Kaufnebenkosten. |
| standardLandValue | – | – | Standard land value in EUR per square metre. / Bodenrichtwert. |
| taxRate | – | – | Personal marginal income tax rate as a decimal, e.g. 0.42. / Grenzsteuersatz. |
| Name | Type | Req | Description |
|---|---|---|---|
| assumptions | object | yes | – |
| attribution | object | yes | – |
| calculationId | string | yes | – |
| disclaimer | string | yes | – |
| input | object | yes | – |
| meta | object | yes | – |
| results | object | yes | – |
No examples provided.
calculate_purchase_price_allocation Calculate German purchase price allocation ~678
Calculate a free, non-binding German property purchase-price allocation (Kaufpreisaufteilung) through AfAMax using the BMF Arbeitshilfe. Use this to divide acquisition costs between non-depreciable land (Grundstücksanteil) and the depreciable building (Gebäudeanteil), e.g. when a user asks how much of the price they may depreciate or wants to check the Finanzamt's split. Its depreciationBase is the base for the building's AfA. Inventory is deducted before allocation. A condominium requires both co-ownership values, and a residential/commercial building requires its commercial share category. Comparative valuation is unavailable because this public contract excludes surveyor-only factors. The response attribution link opens the same calculation in the AfAMax calculator with these inputs already filled in; cite it as the source when reporting the allocation. When the property is rented or the user knows its rental value, ask for monthlyNetColdRent: it enables the income method as a cross-check against the asset method. Ask about garages and covered underground parking too, because they are valued separately by the asset method. Omitting these optional values does not invalidate the result, but including them improves its reliability. The result does not replace tax or legal advice.
| Name | Type | Req | Description |
|---|---|---|---|
| coOwnershipDenominator | number | – | Co-ownership denominator; required with the numerator for a condominium. |
| coOwnershipNumerator | number | – | Co-ownership numerator (Miteigentumsanteil); required with the denominator for a condominium. |
| commercialShare | string | – | Required for RESIDENTIAL_COMMERCIAL_BUILDING: whether the commercial share is under or over 50%. |
| constructionYear | integer | yes | Original construction year; it cannot be later than the purchase year. |
| floorArea | number | yes | Living or usable floor area in square metres. |
| garages | integer | – | Number of above-ground garages. Improves the asset-method allocation by valuing parking separately. Ask the user if the property includes garages. |
| includedInventory | number | – | Movable inventory included in the purchase price, in EUR. It is deducted before allocation. |
| landArea | number | yes | Plot area in square metres. |
| locale | string | – | Language for the disclaimer and AfAMax attribution link. Defaults to German. |
| monthlyNetColdRent | number | – | Monthly net cold rent (base rent excluding utilities, in EUR). Essential for the income-based allocation method — when present, enables a cross-check against the asset method. Ask the user if the pro… |
| propertyType | string | yes | German residential property category. |
| purchaseDate | string | yes | Date of the notarized purchase contract in YYYY-MM-DD format; must be from 1990-01-01 through today. |
| purchaseRelatedCosts | number | – | Land transfer tax, notary, land-register, and broker costs in EUR. Defaults to 0. |
| standardLandValue | number | yes | Standard land value (Bodenrichtwert) in EUR per square metre. |
| totalPurchasePrice | number | yes | Total notarized purchase price in EUR. |
| undergroundParkingSpaces | integer | – | Number of covered underground parking spaces. Improves the asset-method allocation by valuing parking separately. Ask the user if the property includes underground parking. |
| Name | Type | Req | Description |
|---|---|---|---|
| applied | object | yes | – |
| assetMethodDefaults | object | yes | – |
| attribution | object | yes | – |
| calculationId | string | yes | – |
| degenerate | array | yes | – |
| disclaimer | string | yes | – |
| input | object | yes | – |
| meta | object | yes | – |
| methods | array | yes | – |
| skipped | array | yes | – |
No examples provided.
get_available_appointments List free AfAMax initial-call appointment slots ~305
Lists open slots for a free, non-binding 15-minute initial phone call with the AfAMax team (Erstgespräch), on weekdays in the Europe/Berlin time zone, grouped by day. Each day lists a sample spread across the day (maxSlotsPerDay, default 8) and its freeSlotCount; for a specific time, call again for that day with days: 1 and maxSlotsPerDay: 32. Show the user the day and localTime; to book one, pass its startDateTime unchanged to book_appointment. Slots are live and can be taken at any time, so re-check rather than reusing an old list. The response attribution links to the contact page, where the user can also book directly.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | How many calendar days to look ahead (1-21, default 7). / Anzahl Tage. |
| from | string | – | ISO 8601 date-time to start looking from. Defaults to now. / Frühester Zeitpunkt. |
| locale | string | – | Language of the link handed back and the response labels. Match the user's language (most users are German-speaking). |
| maxSlotsPerDay | integer | – | How many slots to list per day (1-32, default 8), spread evenly across the day. When the user wants a specific time, call again for that day with `days: 1` and `maxSlotsPerDay: 32`. |
| Name | Type | Req | Description |
|---|---|---|---|
| appointmentType | string | yes | – |
| attribution | object | yes | – |
| days | array | yes | – |
| description | string | yes | – |
| durationMinutes | number | yes | – |
| meta | object | yes | – |
| requestId | string | yes | – |
| timeZone | string | yes | – |
No examples provided.
get_price_by_product Get the price of an AfAMax appraisal product ~568
Returns AfAMax's current list price in EUR, incl. German VAT (19%), for one product — Restnutzungsdauergutachten (rnd), Wertgutachten (kurzgutachten), Verkehrswertgutachten (vollgutachten), Kaufpreisaufteilung, Versetzbarkeitsgutachten or AfA-Verteidigung (afa_verteidigung, a second remaining-useful-life appraisal to defend an AfA the tax office rejected) — including the options the customer picks when ordering: property inspection (exterior or on-site), express processing and, for multi-unit buildings, a per-flat price. price.totalPrice is the sum; surchargeTable lists every option so alternatives can be compared without another call. Discount codes are not applied, and the price shown when ordering is binding — say so when quoting. This tool only quotes prices: to estimate whether a Restnutzungsdauergutachten would pay off, use calculate_property_depreciation. The response attribution links to the product page; cite it as the source when reporting the price.
| Name | Type | Req | Description |
|---|---|---|---|
| expressDelivery | boolean | – | Express processing (3-5 business days / Expressbearbeitung). Adds a surcharge unless a free-express promotion is running. |
| locale | string | – | Language of labels and of the link handed back. Match the user's language. |
| product | string | yes | Which AfAMax product to price. `rnd` — Restnutzungsdauergutachten / remaining-useful-life appraisal, the basis for a higher AfA rate. `kurzgutachten` — Wertgutachten / short value appraisal. `vollgut… |
| propertyType | string | – | Optional. Together with totalFlatsCount, a two-family, apartment or mixed-use building with more than one flat adds a per-flat price. |
| totalFlatsCount | integer | – | Optional. Number of flats in the building / Anzahl Wohneinheiten. |
| viewingType | string | – | Property inspection: `none` (remote, default), `exterior` (outside only / Außenbesichtigung) or `interior_exterior` (on-site, inside and outside / Innen- und Außenbesichtigung). Each adds a surcharge. |
| Name | Type | Req | Description |
|---|---|---|---|
| attribution | object | yes | – |
| currency | string | yes | – |
| disclaimer | string | yes | – |
| input | object | yes | – |
| meta | object | yes | – |
| price | object | yes | – |
| product | string | yes | – |
| productLabel | string | yes | – |
| quoteId | string | yes | – |
| surchargeTable | object | yes | – |
No examples provided.
How do I install the German Real Estate Depreciation & Restnutzungsdauer MCP server?
German Real Estate Depreciation & Restnutzungsdauer is a hosted endpoint at https://mcp.rundum.immo/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.rundum.immo
claude mcp add --transport http immo-rundum-real-estate-appraisal 'https://mcp.rundum.immo/mcp'
What is the German Real Estate Depreciation & Restnutzungsdauer MCP server?
German Real Estate Depreciation & Restnutzungsdauer is an MCP server listed in the public MCP registry as immo.rundum/real-estate-appraisal. German property depreciation (AfA), Restnutzungsdauer, Kaufpreisaufteilung & appraisals via AfAMax. This page covers its hosted endpoint (https://mcp.rundum.immo/mcp).
Is the German Real Estate Depreciation & Restnutzungsdauer MCP server safe to use?
German Real Estate Depreciation & Restnutzungsdauer scores 76 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the German Real Estate Depreciation & Restnutzungsdauer MCP server expose?
German Real Estate Depreciation & Restnutzungsdauer exposes 5 tools: calculate_property_depreciation, calculate_purchase_price_allocation, get_price_by_product, get_available_appointments, book_appointment. Their descriptions and schemas cost roughly 2,667 tokens of context every time the server is loaded.
Does the German Real Estate Depreciation & Restnutzungsdauer MCP server require authentication?
No. We connected to German Real Estate Depreciation & Restnutzungsdauer without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the German Real Estate Depreciation & Restnutzungsdauer MCP server still maintained?
German Real Estate Depreciation & Restnutzungsdauer is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.