{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "category": "",
    "endpoint": "https://mcp.rundum.immo/mcp",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/rundum-real-estate-appraisal.json",
    "kind": "mcp",
    "listed": "indexed",
    "liveUrl": "https://www.anchorterminal.com/api/v1/live/rundum-real-estate-appraisal.json",
    "markdownUrl": "https://www.anchorterminal.com/tools/rundum-real-estate-appraisal.md",
    "mcpTools": {
      "check": {
        "checker": "anchor-check/1.0",
        "totalTokens": 8434,
        "counts": {
          "error": 0,
          "note": 0,
          "warn": 2
        },
        "findings": [
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "calculate_property_depreciation",
            "message": "the definition is about 2,236 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "calculate_purchase_price_allocation",
            "message": "the definition is about 2,211 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          }
        ]
      },
      "checkedAt": "2026-10-04T22:25:10Z",
      "count": 5,
      "schemaTokens": 8434,
      "status": "ok",
      "tools": [
        {
          "name": "calculate_property_depreciation",
          "title": "Calculate German property depreciation",
          "description": "Calculate an indicative German real-estate depreciation (AfA) estimate through AfAMax.\n\nUse 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.",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "constructionYear": {
                "description": "Original year of construction.",
                "maximum": 9007199254740991,
                "minimum": 1800,
                "type": "integer"
              },
              "coreRenovationYear": {
                "anyOf": [
                  {
                    "maximum": 9007199254740991,
                    "minimum": 1801,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Year of a qualifying core renovation, if applicable."
              },
              "floorArea": {
                "description": "Living or usable floor area in square metres.",
                "maximum": 100000,
                "minimum": 10,
                "type": "number"
              },
              "includedInventory": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Movable inventory included in the purchase price, in EUR."
              },
              "landArea": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Land area in square metres."
              },
              "locale": {
                "anyOf": [
                  {
                    "enum": [
                      "de",
                      "en"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Language for upstream explanations; defaults to German."
              },
              "modernization": {
                "anyOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "bathrooms": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "facadeInsulation": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "floorplanImprovement": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "heating": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "interiorFitout": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "roof": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "utilities": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "windowsDoors": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Known state of eight modernization components. Ask for all eight when possible."
              },
              "modernizationLevel": {
                "anyOf": [
                  {
                    "enum": [
                      "none",
                      "partial",
                      "extensive"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Coarse modernization level used when detailed component data is unavailable."
              },
              "propertyType": {
                "description": "German residential property category.",
                "enum": [
                  "CONDOMINIUM",
                  "SINGLE_FAMILY_HOUSE",
                  "TWO_FAMILY_HOUSE",
                  "ROW_HOUSE",
                  "SEMI_DETACHED",
                  "APARTMENT_BUILDING",
                  "RESIDENTIAL_COMMERCIAL_BUILDING"
                ],
                "type": "string"
              },
              "purchasePrice": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Total purchase price in EUR."
              },
              "purchaseRelatedCosts": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Purchase-related costs in EUR."
              },
              "standardLandValue": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Standard land value in EUR per square metre."
              },
              "taxRate": {
                "anyOf": [
                  {
                    "exclusiveMinimum": 0,
                    "maximum": 0.6,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Personal marginal tax rate as a decimal, e.g. 0.42."
              }
            },
            "required": [
              "propertyType",
              "constructionYear",
              "floorArea"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "assumptions": {
                "additionalProperties": false,
                "properties": {
                  "buildingValueAssumed": {
                    "type": "boolean"
                  },
                  "modernizationAssumedNone": {
                    "type": "boolean"
                  },
                  "taxRateAssumed": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "modernizationAssumedNone",
                  "buildingValueAssumed",
                  "taxRateAssumed"
                ],
                "type": "object"
              },
              "attribution": {
                "additionalProperties": false,
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "provider": {
                    "enum": [
                      "AfaMax",
                      "AfAMax"
                    ],
                    "type": "string"
                  },
                  "url": {
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "provider",
                  "url",
                  "label"
                ],
                "type": "object"
              },
              "calculationId": {
                "minLength": 1,
                "type": "string"
              },
              "disclaimer": {
                "type": "string"
              },
              "input": {
                "additionalProperties": false,
                "properties": {
                  "constructionYear": {
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991,
                    "type": "integer"
                  },
                  "coreRenovationYear": {
                    "anyOf": [
                      {
                        "maximum": 9007199254740991,
                        "minimum": -9007199254740991,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "floorArea": {
                    "type": "number"
                  },
                  "includedInventory": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "landArea": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "locale": {
                    "enum": [
                      "de",
                      "en"
                    ],
                    "type": "string"
                  },
                  "modernization": {
                    "additionalProperties": false,
                    "properties": {
                      "bathrooms": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "facadeInsulation": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "floorplanImprovement": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "heating": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "interiorFitout": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "roof": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "utilities": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      },
                      "windowsDoors": {
                        "enum": [
                          "NOT_MODERNIZED",
                          "SLIGHTLY_MODERNIZED",
                          "PARTIALLY_MODERNIZED",
                          "MOSTLY_MODERNIZED",
                          "FULLY_MODERNIZED"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "roof",
                      "facadeInsulation",
                      "windowsDoors",
                      "heating",
                      "utilities",
                      "bathrooms",
                      "interiorFitout",
                      "floorplanImprovement"
                    ],
                    "type": "object"
                  },
                  "propertyType": {
                    "enum": [
                      "CONDOMINIUM",
                      "SINGLE_FAMILY_HOUSE",
                      "TWO_FAMILY_HOUSE",
                      "ROW_HOUSE",
                      "SEMI_DETACHED",
                      "APARTMENT_BUILDING",
                      "RESIDENTIAL_COMMERCIAL_BUILDING"
                    ],
                    "type": "string"
                  },
                  "purchasePrice": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "purchaseRelatedCosts": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "standardLandValue": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "taxRate": {
                    "type": "number"
                  }
                },
                "required": [
                  "propertyType",
                  "constructionYear",
                  "floorArea",
                  "purchasePrice",
                  "landArea",
                  "standardLandValue",
                  "includedInventory",
                  "purchaseRelatedCosts",
                  "coreRenovationYear",
                  "taxRate",
                  "locale",
                  "modernization"
                ],
                "type": "object"
              },
              "meta": {
                "additionalProperties": false,
                "properties": {
                  "apiVersion": {
                    "type": "string"
                  },
                  "calculatedAt": {
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
                    "type": "string"
                  },
                  "calculationMethod": {
                    "type": "string"
                  }
                },
                "required": [
                  "apiVersion",
                  "calculationMethod",
                  "calculatedAt"
                ],
                "type": "object"
              },
              "results": {
                "additionalProperties": false,
                "properties": {
                  "afaRatePerYear": {
                    "type": "number"
                  },
                  "annualAfaAmount": {
                    "type": "number"
                  },
                  "annualTaxSavings": {
                    "type": "number"
                  },
                  "appraisalWorthwhile": {
                    "type": "boolean"
                  },
                  "buildingValue": {
                    "type": "number"
                  },
                  "buildingValueSource": {
                    "enum": [
                      "actual",
                      "assumed"
                    ],
                    "type": "string"
                  },
                  "currency": {
                    "const": "EUR",
                    "type": "string"
                  },
                  "defaultAfaAmount": {
                    "type": "number"
                  },
                  "defaultAfaRatePerYear": {
                    "type": "number"
                  },
                  "modernizationPointsUsed": {
                    "maximum": 20,
                    "minimum": 0,
                    "type": "number"
                  },
                  "monthlyAfaAmount": {
                    "type": "number"
                  },
                  "monthlyTaxSavings": {
                    "type": "number"
                  },
                  "remainingUsefulLifeYears": {
                    "type": "number"
                  },
                  "taxRate": {
                    "type": "number"
                  }
                },
                "required": [
                  "afaRatePerYear",
                  "defaultAfaRatePerYear",
                  "annualAfaAmount",
                  "defaultAfaAmount",
                  "monthlyAfaAmount",
                  "annualTaxSavings",
                  "appraisalWorthwhile",
                  "monthlyTaxSavings",
                  "buildingValue",
                  "buildingValueSource",
                  "taxRate",
                  "remainingUsefulLifeYears",
                  "modernizationPointsUsed",
                  "currency"
                ],
                "type": "object"
              }
            },
            "required": [
              "calculationId",
              "input",
              "results",
              "assumptions",
              "attribution",
              "disclaimer",
              "meta"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "calculate_purchase_price_allocation",
          "title": "Calculate German purchase price allocation",
          "description": "Calculate a free, non-binding German property purchase-price allocation (Kaufpreisaufteilung) through AfAMax using the BMF Arbeitshilfe.\n\nUse 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.",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "coOwnershipDenominator": {
                "description": "Co-ownership denominator; required with the numerator for a condominium.",
                "exclusiveMinimum": 0,
                "type": "number"
              },
              "coOwnershipNumerator": {
                "description": "Co-ownership numerator (Miteigentumsanteil); required with the denominator for a condominium.",
                "exclusiveMinimum": 0,
                "type": "number"
              },
              "commercialShare": {
                "description": "Required for RESIDENTIAL_COMMERCIAL_BUILDING: whether the commercial share is under or over 50%.",
                "enum": [
                  "under_50",
                  "over_50"
                ],
                "type": "string"
              },
              "constructionYear": {
                "description": "Original construction year; it cannot be later than the purchase year.",
                "maximum": 9007199254740991,
                "minimum": 1800,
                "type": "integer"
              },
              "floorArea": {
                "description": "Living or usable floor area in square metres.",
                "exclusiveMinimum": 0,
                "type": "number"
              },
              "garages": {
                "description": "Number of above-ground garages. Improves the asset-method allocation by valuing parking separately. Ask the user if the property includes garages.",
                "maximum": 9007199254740991,
                "minimum": 0,
                "type": "integer"
              },
              "includedInventory": {
                "description": "Movable inventory included in the purchase price, in EUR. It is deducted before allocation.",
                "minimum": 0,
                "type": "number"
              },
              "landArea": {
                "description": "Plot area in square metres.",
                "exclusiveMinimum": 0,
                "type": "number"
              },
              "locale": {
                "default": "de",
                "description": "Language for the disclaimer and AfAMax attribution link. Defaults to German.",
                "enum": [
                  "de",
                  "en"
                ],
                "type": "string"
              },
              "monthlyNetColdRent": {
                "description": "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 property is rented or if they know the rental value.",
                "minimum": 0,
                "type": "number"
              },
              "propertyType": {
                "description": "German residential property category.",
                "enum": [
                  "CONDOMINIUM",
                  "SINGLE_FAMILY_HOUSE",
                  "TWO_FAMILY_HOUSE",
                  "ROW_HOUSE",
                  "SEMI_DETACHED",
                  "APARTMENT_BUILDING",
                  "RESIDENTIAL_COMMERCIAL_BUILDING"
                ],
                "type": "string"
              },
              "purchaseDate": {
                "description": "Date of the notarized purchase contract in YYYY-MM-DD format; must be from 1990-01-01 through today.",
                "type": "string"
              },
              "purchaseRelatedCosts": {
                "description": "Land transfer tax, notary, land-register, and broker costs in EUR. Defaults to 0.",
                "minimum": 0,
                "type": "number"
              },
              "standardLandValue": {
                "description": "Standard land value (Bodenrichtwert) in EUR per square metre.",
                "exclusiveMinimum": 0,
                "type": "number"
              },
              "totalPurchasePrice": {
                "description": "Total notarized purchase price in EUR.",
                "exclusiveMinimum": 0,
                "type": "number"
              },
              "undergroundParkingSpaces": {
                "description": "Number of covered underground parking spaces. Improves the asset-method allocation by valuing parking separately. Ask the user if the property includes underground parking.",
                "maximum": 9007199254740991,
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "propertyType",
              "totalPurchasePrice",
              "purchaseDate",
              "constructionYear",
              "floorArea",
              "landArea",
              "standardLandValue"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "applied": {
                "additionalProperties": false,
                "properties": {
                  "buildingShare": {
                    "type": "number"
                  },
                  "buildingValue": {
                    "type": "number"
                  },
                  "currency": {
                    "const": "EUR",
                    "type": "string"
                  },
                  "depreciationBase": {
                    "type": "number"
                  },
                  "landAllocation": {
                    "type": "number"
                  },
                  "landValue": {
                    "type": "number"
                  },
                  "method": {
                    "enum": [
                      "comparative",
                      "income",
                      "asset"
                    ],
                    "type": "string"
                  },
                  "totalAcquisitionCost": {
                    "type": "number"
                  },
                  "totalValue": {
                    "type": "number"
                  }
                },
                "required": [
                  "method",
                  "landValue",
                  "buildingValue",
                  "totalValue",
                  "buildingShare",
                  "totalAcquisitionCost",
                  "depreciationBase",
                  "landAllocation",
                  "currency"
                ],
                "type": "object"
              },
              "assetMethodDefaults": {
                "additionalProperties": false,
                "properties": {
                  "marketAdjustmentFactor": {
                    "const": 1,
                    "type": "number"
                  },
                  "regionalFactor": {
                    "const": 1,
                    "type": "number"
                  },
                  "standardLevel": {
                    "type": "number"
                  }
                },
                "required": [
                  "standardLevel",
                  "regionalFactor",
                  "marketAdjustmentFactor"
                ],
                "type": "object"
              },
              "attribution": {
                "additionalProperties": false,
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "provider": {
                    "enum": [
                      "AfaMax",
                      "AfAMax"
                    ],
                    "type": "string"
                  },
                  "url": {
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "provider",
                  "url",
                  "label"
                ],
                "type": "object"
              },
              "calculationId": {
                "minLength": 1,
                "type": "string"
              },
              "degenerate": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "method": {
                      "enum": [
                        "comparative",
                        "income",
                        "asset"
                      ],
                      "type": "string"
                    },
                    "reason": {
                      "enum": [
                        "operating-costs-exceed-rent",
                        "income-below-land-interest",
                        "no-building-value"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "method",
                    "reason"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "disclaimer": {
                "type": "string"
              },
              "input": {
                "additionalProperties": false,
                "properties": {
                  "coOwnershipDenominator": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "coOwnershipNumerator": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "commercialShare": {
                    "anyOf": [
                      {
                        "enum": [
                          "under_50",
                          "over_50"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "constructionYear": {
                    "type": "number"
                  },
                  "floorArea": {
                    "type": "number"
                  },
                  "garages": {
                    "type": "number"
                  },
                  "includedInventory": {
                    "type": "number"
                  },
                  "landArea": {
                    "type": "number"
                  },
                  "locale": {
                    "enum": [
                      "de",
                      "en"
                    ],
                    "type": "string"
                  },
                  "monthlyNetColdRent": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "propertyType": {
                    "enum": [
                      "CONDOMINIUM",
                      "SINGLE_FAMILY_HOUSE",
                      "TWO_FAMILY_HOUSE",
                      "ROW_HOUSE",
                      "SEMI_DETACHED",
                      "APARTMENT_BUILDING",
                      "RESIDENTIAL_COMMERCIAL_BUILDING"
                    ],
                    "type": "string"
                  },
                  "purchaseDate": {
                    "type": "string"
                  },
                  "purchasePrice": {
                    "description": "Property price after deducting included inventory.",
                    "type": "number"
                  },
                  "purchaseRelatedCosts": {
                    "type": "number"
                  },
                  "standardLandValue": {
                    "type": "number"
                  },
                  "totalPurchasePrice": {
                    "type": "number"
                  },
                  "undergroundParkingSpaces": {
                    "type": "number"
                  }
                },
                "required": [
                  "propertyType",
                  "totalPurchasePrice",
                  "purchasePrice",
                  "purchaseRelatedCosts",
                  "includedInventory",
                  "purchaseDate",
                  "constructionYear",
                  "floorArea",
                  "landArea",
                  "standardLandValue",
                  "commercialShare",
                  "coOwnershipNumerator",
                  "coOwnershipDenominator",
                  "garages",
                  "undergroundParkingSpaces",
                  "monthlyNetColdRent",
                  "locale"
                ],
                "type": "object"
              },
              "meta": {
                "additionalProperties": false,
                "properties": {
                  "apiVersion": {
                    "type": "string"
                  },
                  "calculatedAt": {
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
                    "type": "string"
                  },
                  "calculationMethod": {
                    "type": "string"
                  }
                },
                "required": [
                  "apiVersion",
                  "calculationMethod",
                  "calculatedAt"
                ],
                "type": "object"
              },
              "methods": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "buildingShare": {
                      "type": "number"
                    },
                    "buildingValue": {
                      "type": "number"
                    },
                    "currency": {
                      "const": "EUR",
                      "type": "string"
                    },
                    "depreciationBase": {
                      "type": "number"
                    },
                    "landAllocation": {
                      "type": "number"
                    },
                    "landValue": {
                      "type": "number"
                    },
                    "method": {
                      "enum": [
                        "comparative",
                        "income",
                        "asset"
                      ],
                      "type": "string"
                    },
                    "totalAcquisitionCost": {
                      "type": "number"
                    },
                    "totalValue": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "method",
                    "landValue",
                    "buildingValue",
                    "totalValue",
                    "buildingShare",
                    "totalAcquisitionCost",
                    "depreciationBase",
                    "landAllocation",
                    "currency"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "skipped": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "method": {
                      "enum": [
                        "comparative",
                        "income",
                        "asset"
                      ],
                      "type": "string"
                    },
                    "missing": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "method",
                    "missing"
                  ],
                  "type": "object"
                },
                "type": "array"
              }
            },
            "required": [
              "calculationId",
              "input",
              "applied",
              "methods",
              "skipped",
              "degenerate",
              "assetMethodDefaults",
              "attribution",
              "disclaimer",
              "meta"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "get_price_by_product",
          "title": "Get the price of an AfAMax appraisal product",
          "description": "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.\n\nprice.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.",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "expressDelivery": {
                "default": false,
                "description": "Express processing (3-5 business days / Expressbearbeitung). Adds a surcharge unless a free-express promotion is running.",
                "type": "boolean"
              },
              "locale": {
                "default": "de",
                "description": "Language of labels and of the link handed back. Match the user's language.",
                "enum": [
                  "de",
                  "en"
                ],
                "type": "string"
              },
              "product": {
                "description": "Which AfAMax product to price. `rnd` — Restnutzungsdauergutachten / remaining-useful-life appraisal, the basis for a higher AfA rate. `kurzgutachten` — Wertgutachten / short value appraisal. `vollgutachten` — Verkehrswertgutachten / full market-value appraisal (§ 194 BauGB). `kaufpreisaufteilung` — Kaufpreisaufteilung / purchase-price allocation report (land vs. building). `versetzbarkeitsgutachten` — Versetzbarkeitsgutachten / relocatability certificate for tiny houses, mobile homes, modular units and containers.",
                "enum": [
                  "rnd",
                  "kurzgutachten",
                  "vollgutachten",
                  "kaufpreisaufteilung",
                  "versetzbarkeitsgutachten"
                ],
                "type": "string"
              },
              "propertyType": {
                "description": "Optional. Together with totalFlatsCount, a two-family, apartment or mixed-use building with more than one flat adds a per-flat price.",
                "enum": [
                  "CONDOMINIUM",
                  "SINGLE_FAMILY_HOUSE",
                  "TWO_FAMILY_HOUSE",
                  "ROW_HOUSE",
                  "SEMI_DETACHED",
                  "APARTMENT_BUILDING",
                  "RESIDENTIAL_COMMERCIAL_BUILDING"
                ],
                "type": "string"
              },
              "totalFlatsCount": {
                "description": "Optional. Number of flats in the building / Anzahl Wohneinheiten.",
                "maximum": 1000,
                "minimum": 1,
                "type": "integer"
              },
              "viewingType": {
                "default": "none",
                "description": "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.",
                "enum": [
                  "none",
                  "exterior",
                  "interior_exterior"
                ],
                "type": "string"
              }
            },
            "required": [
              "product"
            ],
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "attribution": {
                "additionalProperties": false,
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "provider": {
                    "enum": [
                      "AfaMax",
                      "AfAMax"
                    ],
                    "type": "string"
                  },
                  "url": {
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "provider",
                  "url",
                  "label"
                ],
                "type": "object"
              },
              "currency": {
                "const": "EUR",
                "type": "string"
              },
              "disclaimer": {
                "type": "string"
              },
              "input": {
                "additionalProperties": false,
                "properties": {
                  "expressDelivery": {
                    "type": "boolean"
                  },
                  "propertyType": {
                    "anyOf": [
                      {
                        "enum": [
                          "CONDOMINIUM",
                          "SINGLE_FAMILY_HOUSE",
                          "TWO_FAMILY_HOUSE",
                          "ROW_HOUSE",
                          "SEMI_DETACHED",
                          "APARTMENT_BUILDING",
                          "RESIDENTIAL_COMMERCIAL_BUILDING"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "totalFlatsCount": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "viewingType": {
                    "enum": [
                      "none",
                      "exterior",
                      "interior_exterior"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "viewingType",
                  "expressDelivery",
                  "propertyType",
                  "totalFlatsCount"
                ],
                "type": "object"
              },
              "meta": {
                "additionalProperties": false,
                "properties": {
                  "apiVersion": {
                    "type": "string"
                  },
                  "generatedAt": {
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
                    "type": "string"
                  }
                },
                "required": [
                  "apiVersion",
                  "generatedAt"
                ],
                "type": "object"
              },
              "price": {
                "additionalProperties": false,
                "properties": {
                  "additionalPricePerUnit": {
                    "type": "number"
                  },
                  "additionalUnitsPrice": {
                    "type": "number"
                  },
                  "basePrice": {
                    "type": "number"
                  },
                  "expressSurcharge": {
                    "type": "number"
                  },
                  "freeExpressPromotionApplied": {
                    "type": "boolean"
                  },
                  "totalNetPrice": {
                    "type": "number"
                  },
                  "totalPrice": {
                    "description": "Sum of all amounts above. Every amount in `price` is gross, incl. German VAT.",
                    "type": "number"
                  },
                  "vatIncluded": {
                    "const": true,
                    "type": "boolean"
                  },
                  "vatRate": {
                    "description": "The German VAT rate included in the amounts, in percent.",
                    "type": "number"
                  },
                  "viewingSurcharge": {
                    "type": "number"
                  }
                },
                "required": [
                  "basePrice",
                  "viewingSurcharge",
                  "expressSurcharge",
                  "freeExpressPromotionApplied",
                  "additionalPricePerUnit",
                  "additionalUnitsPrice",
                  "totalPrice",
                  "vatIncluded",
                  "vatRate",
                  "totalNetPrice"
                ],
                "type": "object"
              },
              "product": {
                "enum": [
                  "rnd",
                  "kurzgutachten",
                  "vollgutachten",
                  "kaufpreisaufteilung",
                  "versetzbarkeitsgutachten"
                ],
                "type": "string"
              },
              "productLabel": {
                "type": "string"
              },
              "quoteId": {
                "minLength": 1,
                "type": "string"
              },
              "surchargeTable": {
                "additionalProperties": false,
                "properties": {
                  "express": {
                    "type": "number"
                  },
                  "exteriorViewing": {
                    "type": "number"
                  },
                  "interiorExteriorViewing": {
                    "type": "number"
                  },
                  "perAdditionalFlat": {
                    "type": "number"
                  }
                },
                "required": [
                  "exteriorViewing",
                  "interiorExteriorViewing",
                  "express",
                  "perAdditionalFlat"
                ],
                "type": "object"
              }
            },
            "required": [
              "quoteId",
              "product",
              "productLabel",
              "currency",
              "input",
              "price",
              "surchargeTable",
              "attribution",
              "disclaimer",
              "meta"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "get_available_appointments",
          "title": "List free AfAMax initial-call appointment slots",
          "description": "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.\n\nEach 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.",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "days": {
                "description": "How many calendar days to look ahead (1-21, default 7). / Anzahl Tage.",
                "maximum": 21,
                "minimum": 1,
                "type": "integer"
              },
              "from": {
                "description": "ISO 8601 date-time to start looking from. Defaults to now. / Frühester Zeitpunkt.",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                "type": "string"
              },
              "locale": {
                "default": "de",
                "description": "Language of the link handed back and the response labels. Match the user's language (most users are German-speaking).",
                "enum": [
                  "de",
                  "en"
                ],
                "type": "string"
              },
              "maxSlotsPerDay": {
                "description": "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`.",
                "maximum": 32,
                "minimum": 1,
                "type": "integer"
              }
            },
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "appointmentType": {
                "const": "initial_call",
                "type": "string"
              },
              "attribution": {
                "additionalProperties": false,
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "provider": {
                    "enum": [
                      "AfaMax",
                      "AfAMax"
                    ],
                    "type": "string"
                  },
                  "url": {
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "provider",
                  "url",
                  "label"
                ],
                "type": "object"
              },
              "days": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "date": {
                      "description": "Date in Europe/Berlin, YYYY-MM-DD.",
                      "type": "string"
                    },
                    "freeSlotCount": {
                      "description": "All free slots that day — can exceed `slots`, which is capped by maxSlotsPerDay.",
                      "type": "number"
                    },
                    "slots": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "localTime": {
                            "description": "Start time in Europe/Berlin, HH:mm — show this to the user.",
                            "type": "string"
                          },
                          "startDateTime": {
                            "description": "Slot start in UTC — pass this unchanged to book_appointment.",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "startDateTime",
                          "localTime"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "weekday": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "date",
                    "weekday",
                    "freeSlotCount",
                    "slots"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "description": {
                "type": "string"
              },
              "durationMinutes": {
                "type": "number"
              },
              "meta": {
                "additionalProperties": false,
                "properties": {
                  "apiVersion": {
                    "type": "string"
                  },
                  "generatedAt": {
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
                    "type": "string"
                  }
                },
                "required": [
                  "apiVersion",
                  "generatedAt"
                ],
                "type": "object"
              },
              "requestId": {
                "minLength": 1,
                "type": "string"
              },
              "timeZone": {
                "type": "string"
              }
            },
            "required": [
              "requestId",
              "appointmentType",
              "description",
              "days",
              "timeZone",
              "durationMinutes",
              "attribution",
              "meta"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "book_appointment",
          "title": "Book a free AfAMax initial call",
          "description": "Books a free 15-minute initial phone call with the AfAMax team, in two steps.\n\nSTEP 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.\n\nSTEP 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.\n\nCodes 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.",
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "email": {
                "description": "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.",
                "format": "email",
                "maxLength": 254,
                "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
                "type": "string"
              },
              "locale": {
                "description": "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 Termins.",
                "enum": [
                  "de",
                  "en"
                ],
                "type": "string"
              },
              "name": {
                "description": "Step 1 — the user's full name. / Vor- und Nachname.",
                "maxLength": 80,
                "minLength": 2,
                "type": "string"
              },
              "otp": {
                "description": "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.",
                "pattern": "^\\d{6}$",
                "type": "string"
              },
              "phone": {
                "description": "Step 1, optional — phone number for the call. / Telefonnummer für das Gespräch.",
                "maxLength": 40,
                "type": "string"
              },
              "startDateTime": {
                "description": "Step 1 — the chosen slot, copied exactly from get_available_appointments `startDateTime`.",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                "type": "string"
              },
              "verificationId": {
                "description": "Step 2 — the `verificationId` returned by step 1.",
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              }
            },
            "type": "object"
          },
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "additionalProperties": false,
            "properties": {
              "appointment": {
                "anyOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "customerInviteSent": {
                        "type": "boolean"
                      },
                      "durationMinutes": {
                        "type": "number"
                      },
                      "endDateTime": {
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
                        "type": "string"
                      },
                      "localDate": {
                        "type": "string"
                      },
                      "localTime": {
                        "type": "string"
                      },
                      "startDateTime": {
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
                        "type": "string"
                      },
                      "timeZone": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "startDateTime",
                      "endDateTime",
                      "localDate",
                      "localTime",
                      "timeZone",
                      "durationMinutes",
                      "customerInviteSent"
                    ],
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "attribution": {
                "additionalProperties": false,
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "provider": {
                    "enum": [
                      "AfaMax",
                      "AfAMax"
                    ],
                    "type": "string"
                  },
                  "url": {
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "provider",
                  "url",
                  "label"
                ],
                "type": "object"
              },
              "meta": {
                "additionalProperties": false,
                "properties": {
                  "apiVersion": {
                    "type": "string"
                  },
                  "generatedAt": {
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
                    "type": "string"
                  }
                },
                "required": [
                  "apiVersion",
                  "generatedAt"
                ],
                "type": "object"
              },
              "requestId": {
                "minLength": 1,
                "type": "string"
              },
              "status": {
                "description": "`verification_required`: ask the user for the code sent to `verification.maskedEmail`, then call again with verificationId + otp. `booked`: the appointment exists.",
                "enum": [
                  "verification_required",
                  "booked"
                ],
                "type": "string"
              },
              "verification": {
                "anyOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "expiresAt": {
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
                        "type": "string"
                      },
                      "maskedEmail": {
                        "type": "string"
                      },
                      "verificationId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "verificationId",
                      "maskedEmail",
                      "expiresAt"
                    ],
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "requestId",
              "status",
              "verification",
              "appointment",
              "attribution",
              "meta"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": true,
            "readOnlyHint": false
          }
        }
      ]
    },
    "name": "Rundum Immo Real Estate Appraisal",
    "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
    "packages": [
      {
        "registryType": "npm",
        "identifier": "@rundum-immo/real-estate-appraisal-mcp",
        "version": "0.2.0",
        "transport": "stdio"
      }
    ],
    "pageJsonUrl": "https://www.anchorterminal.com/tools/rundum-real-estate-appraisal.json",
    "popularity": {
      "githubStars": 0,
      "npmWeekly": 41
    },
    "registryName": "immo.rundum/real-estate-appraisal",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://mcp.rundum.immo/mcp"
      }
    ],
    "repository": "https://github.com/Rundum-Immo/real-estate-appraisal-mcp",
    "reviewed": false,
    "slug": "rundum-real-estate-appraisal",
    "source": "the official MCP registry",
    "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=immo.rundum/real-estate-appraisal",
    "summary": "German property depreciation, purchase-price allocation, appraisal prices and bookings via AfAMax.",
    "updatedAt": "2026-10-01T18:39:27Z",
    "url": "https://www.anchorterminal.com/tools/rundum-real-estate-appraisal",
    "vendor": "rundum.immo",
    "vendorUrl": "https://afamax.de",
    "version": "0.2.0",
    "websiteUrl": "https://afamax.de",
    "where": "both",
    "why": [
      "vendor"
    ]
  }
}
