immo.rundum/real-estate-appraisal
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | Listen address | 0.0.0.0 |
| PORT | No | Listen port | 3000 |
| LOG_LEVEL | No | debug, info, warn, or error | info |
| PUBLIC_HOSTS | No | Comma-separated allowed Host header names | mcp.rundum.immo |
| AFAMAX_API_URL | No | Public calculation endpoint | https://afamax.de/api/v1/afa-calculation |
| AFAMAX_TIMEOUT_MS | No | Upstream timeout | 10000 |
| AFAMAX_KPA_API_URL | No | Public purchase-price allocation endpoint | https://afamax.de/api/v1/purchase-price-allocation |
| AFAMAX_SERVICE_TOKEN | No | Required trusted-service credential in HTTP mode |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| calculate_property_depreciationA | Calculate an indicative German real-estate depreciation (AfA) estimate through AfAMax. Use this for residential German property, including remaining useful life, annual/monthly AfA, statutory comparison, and estimated tax savings. 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. |
| calculate_purchase_price_allocationA | 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 and the depreciable building. 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. |
| get_price_by_productA | Returns AfAMax's current list price in EUR, incl. German VAT (19%), for one product — Restnutzungsdauergutachten (rnd), Wertgutachten (kurzgutachten), Verkehrswertgutachten (vollgutachten), Kaufpreisaufteilung or Versetzbarkeitsgutachten — 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. The response attribution links to the product page; cite it as the source when reporting the price. |
| get_available_appointmentsA | 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. |
| book_appointmentA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool targets a distinct action: two separate calculators (depreciation vs. purchase-price allocation), a pricing lookup, a slot listing, and a booking flow. There is no meaningful overlap between them, and descriptions clearly delimit scope.
All names follow a consistent snake_case verb_noun pattern (calculate_*, get_*, book_*). No mixed conventions or vague verbs; the pattern is predictable throughout.
Five tools are well-scoped for this domain: two estimation calculators plus the pricing and appointment-booking lifecycle. Nothing feels padded or missing at the count level.
The surface covers calculations, price quoting, slot discovery, and a two-step booking flow, which is solid for the stated purpose. Minor gaps exist (e.g., no tool to retrieve an ordered appraisal/report status), but agents can work around them.