Skip to main content
Glama

chathome.lu — Luxembourg Real Estate

Search Rental Listings

search_rentals
Read-onlyIdempotent

Search active Luxembourg rentals by location, rooms, area, property type, positive-evidence amenities, advertised base rent, or a separate strict confirmed monthly-obligation ceiling. The strict ceiling excludes listings when required recurring charges, fees, evidence, or source freshness are incomplete. Returned counts include explicit completeness metadata; every sourced result links the original agency listing and states its latest catalogue re-sighting time.

Input Schema

NameRequiredDescriptionDefault
sortNo
limitNo
gardenNo
localeNoResponse locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu')
balconyNo
communeNoSupported municipality, city quarter or village name; use resolve_location if ambiguous
minBedsNo
elevatorNo
maxPriceNo
minPriceNo
furnishedNo
maxAreaSqmNo
minAreaSqmNo
parkingTypeNo
petsAllowedNo
minBathroomsNo
propertyTypeNo
includePhotosNo
maxTotalMonthlyNoRental-only confirmed all-in monthly ceiling; missing cost evidence is excluded
shownListingIdsNoAlready shown listing IDs, accumulated across pages. Excludes those IDs from this live result window; not a stable market snapshot.
includeCrossBorderNoInclude supported Grande Région inventory; default false keeps Luxembourg-only compatibility

Output Schema

NameRequiredDescriptionDefault
noteNo
totalYesExact number of listing objects returned in this response; not the number of matches in the market.
trustNo
sourceNo
hasMoreNo
rankingNo
sessionNo
followUpNo
listingsYes
countKindNo
truncatedNo
nextCursorNo
matchingCountNo
returnedCountNo
understandingNoWhat the engine understood from the request. notChecked lists wishes no returned home is confirmed to have.
searchExhaustiveNo
matchingCountKindNo
excludedUnprovenCountNoUpstream rows omitted because public facts could not prove every requested hard filter.
marketMatchingUpperBoundNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed47 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / balcony / description
      Removed value: -"Require a source-confirmed balcony"
    • changedInput schema / properties / commune / description
      Previous value: -"Luxembourg commune name or slug"New value: +"Supported municipality, city quarter or village name; use resolve_location if ambiguous"
    • addedInput schema / properties / commune / maxLength
      Added value: +150
    • addedInput schema / properties / commune / minLength
      Added value: +1
    • removedInput schema / properties / elevator / description
      Removed value: -"Require positive source evidence of a lift/elevator"
    • removedInput schema / properties / furnished / description
      Removed value: -"Require positive source evidence that the rental is furnished"
    • removedInput schema / properties / garden / description
      Removed value: -"Require a source-confirmed garden"
    • addedInput schema / properties / includeCrossBorder
      Added value: +{
      +  "description": "Include supported Grande Région inventory; default false keeps Luxembourg-only compatibility",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / includePhotos / description
      Removed value: -"Attach thumbnail photos of the top results as image content blocks (default: true). Set false for a lean text-only response."
    • removedInput schema / properties / limit / description
      Removed value: -"Number of results to return (max 50, default 20)"
    • changedInput schema / properties / limit / type
      Previous value: -"number"New value: +"integer"
    • removedInput schema / properties / maxAreaSqm / description
      Removed value: -"Maximum area in m²"
    • addedInput schema / properties / maxAreaSqm / maximum
      Added value: +100000
    • addedInput schema / properties / maxAreaSqm / minimum
      Added value: +0
    • removedInput schema / properties / maxPrice / description
      Removed value: -"Maximum advertised base monthly rent in EUR, excluding separate charges"
    • addedInput schema / properties / maxPrice / maximum
      Added value: +100000000
    • addedInput schema / properties / maxPrice / minimum
      Added value: +0
    • changedInput schema / properties / maxTotalMonthly / description
      Previous value: -"Strict maximum confirmed monthly obligation in EUR: advertised rent plus source-confirmed required recurring charges and fees. Listings with missing, estimated, conflicting, or stale cost evidence are excluded."New value: +"Rental-only confirmed all-in monthly ceiling; missing cost evidence is excluded"
    • addedInput schema / properties / maxTotalMonthly / maximum
      Added value: +100000
    • addedInput schema / properties / maxTotalMonthly / minimum
      Added value: +0
    • removedInput schema / properties / minAreaSqm / description
      Removed value: -"Minimum area in m²"
    • addedInput schema / properties / minAreaSqm / maximum
      Added value: +100000
    • addedInput schema / properties / minAreaSqm / minimum
      Added value: +0
    • removedInput schema / properties / minBathrooms / description
      Removed value: -"Minimum number of bathrooms"
    • addedInput schema / properties / minBathrooms / maximum
      Added value: +100
    • addedInput schema / properties / minBathrooms / minimum
      Added value: +0
    • changedInput schema / properties / minBathrooms / type
      Previous value: -"number"New value: +"integer"
    • removedInput schema / properties / minBeds / description
      Removed value: -"Minimum number of bedrooms"
    • addedInput schema / properties / minBeds / maximum
      Added value: +100
    • addedInput schema / properties / minBeds / minimum
      Added value: +0
    • changedInput schema / properties / minBeds / type
      Previous value: -"number"New value: +"integer"
    • removedInput schema / properties / minPrice / description
      Removed value: -"Minimum monthly rent in EUR"
    • addedInput schema / properties / minPrice / maximum
      Added value: +100000000
    • addedInput schema / properties / minPrice / minimum
      Added value: +0
    • removedInput schema / properties / parkingType / description
      Removed value: -"Require source-backed parking evidence"
    • removedInput schema / properties / petsAllowed / description
      Removed value: -"Require positive source evidence that pets are allowed"
    • removedInput schema / properties / propertyType / description
      Removed value: -"Property type: apartment, house, studio, room, etc."
    • addedInput schema / properties / propertyType / enum
      Added value: +[
      +  "apartment",
      +  "house",
      +  "studio",
      +  "room",
      +  "commercial",
      +  "office",
      +  "land",
      +  "multi_unit_building",
      +  "garage_parking"
      +]
    • addedInput schema / properties / shownListingIds
      Added value: +{
      +  "description": "Already shown listing IDs, accumulated across pages. Excludes those IDs from this live result window; not a stable market snapshot.",
      +  "items": {
      +    "pattern": "^[A-Za-z0-9_-]{1,128}$",
      +    "type": "string"
      +  },
      +  "maxItems": 200,
      +  "type": "array"
      +}
    • removedInput schema / properties / sort / description
      Removed value: -"Sort the proven result set. price-asc means base rent, not all-in monthly cost."
    • addedOutput schema / properties / listings / items / properties / match / properties / closeReasons
      Added value: +{
      +  "items": {
      +    "oneOf": [
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "concept": {
      +            "type": "string"
      +          },
      +          "criterionId": {
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "not_confirmed",
      +            "type": "string"
      +          },
      +          "label": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "criterionId",
      +          "concept",
      +          "label"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "actual": {
      +            "type": "number"
      +          },
      +          "concept": {
      +            "type": "string"
      +          },
      +          "criterionId": {
      +            "type": "string"
      +          },
      +          "delta": {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "direction": {
      +            "enum": [
      +              "over",
      +              "under"
      +            ],
      +            "type": "string"
      +          },
      +          "expected": {
      +            "type": "number"
      +          },
      +          "field": {
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "numeric",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "criterionId",
      +          "concept",
      +          "field",
      +          "expected",
      +          "actual",
      +          "delta",
      +          "direction"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "actualLocalityId": {
      +            "type": "string"
      +          },
      +          "actualName": {
      +            "type": "string"
      +          },
      +          "askedLocalityId": {
      +            "type": "string"
      +          },
      +          "askedName": {
      +            "type": "string"
      +          },
      +          "distanceKm": {
      +            "maximum": 12,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "kind": {
      +            "const": "nearby_commune",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "askedLocalityId",
      +          "actualLocalityId",
      +          "askedName",
      +          "actualName",
      +          "distanceKm"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / listings / items / properties / match / properties / resultKind / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "strict_match",
      -      "partial_match",
      -      "relaxed_alternative"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "match",
      +      "close"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / understanding / properties / checked / items / properties / force / enum
      Previous value: -[
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "dealbreaker",
      +  "must",
      +  "should",
      +  "nice"
      +]
    • changedOutput schema / properties / understanding / properties / commutes / items / properties / force / enum
      Previous value: -[
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "dealbreaker",
      +  "must",
      +  "should",
      +  "nice"
      +]
    • changedOutput schema / properties / understanding / properties / notChecked / items / properties / force / enum
      Previous value: -[
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "dealbreaker",
      +  "must",
      +  "should",
      +  "nice"
      +]
    • changedOutput schema / properties / understanding / properties / places / items / properties / force / enum
      Previous value: -[
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "dealbreaker",
      +  "must",
      +  "should",
      +  "nice"
      +]
  2. Changed6 schema fields changed
    • removedOutput schema / properties / listings / items / properties / match / properties / closeReasons
      Removed value: -{
      -  "items": {
      -    "oneOf": [
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "concept": {
      -            "type": "string"
      -          },
      -          "criterionId": {
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "not_confirmed",
      -            "type": "string"
      -          },
      -          "label": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "criterionId",
      -          "concept",
      -          "label"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "actual": {
      -            "type": "number"
      -          },
      -          "concept": {
      -            "type": "string"
      -          },
      -          "criterionId": {
      -            "type": "string"
      -          },
      -          "delta": {
      -            "minimum": 0,
      -            "type": "number"
      -          },
      -          "direction": {
      -            "enum": [
      -              "over",
      -              "under"
      -            ],
      -            "type": "string"
      -          },
      -          "expected": {
      -            "type": "number"
      -          },
      -          "field": {
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "numeric",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "criterionId",
      -          "concept",
      -          "field",
      -          "expected",
      -          "actual",
      -          "delta",
      -          "direction"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "actualLocalityId": {
      -            "type": "string"
      -          },
      -          "actualName": {
      -            "type": "string"
      -          },
      -          "askedLocalityId": {
      -            "type": "string"
      -          },
      -          "askedName": {
      -            "type": "string"
      -          },
      -          "distanceKm": {
      -            "maximum": 12,
      -            "minimum": 0,
      -            "type": "number"
      -          },
      -          "kind": {
      -            "const": "nearby_commune",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "askedLocalityId",
      -          "actualLocalityId",
      -          "askedName",
      -          "actualName",
      -          "distanceKm"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  "type": "array"
      -}
    • changedOutput schema / properties / listings / items / properties / match / properties / resultKind / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "match",
      -      "close"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "strict_match",
      +      "partial_match",
      +      "relaxed_alternative"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / understanding / properties / checked / items / properties / force / enum
      Previous value: -[
      -  "dealbreaker",
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "must",
      +  "should",
      +  "nice"
      +]
    • changedOutput schema / properties / understanding / properties / commutes / items / properties / force / enum
      Previous value: -[
      -  "dealbreaker",
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "must",
      +  "should",
      +  "nice"
      +]
    • changedOutput schema / properties / understanding / properties / notChecked / items / properties / force / enum
      Previous value: -[
      -  "dealbreaker",
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "must",
      +  "should",
      +  "nice"
      +]
    • changedOutput schema / properties / understanding / properties / places / items / properties / force / enum
      Previous value: -[
      -  "dealbreaker",
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "must",
      +  "should",
      +  "nice"
      +]
  3. Changed6 schema fields changed
    • addedOutput schema / properties / listings / items / properties / match / properties / closeReasons
      Added value: +{
      +  "items": {
      +    "oneOf": [
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "concept": {
      +            "type": "string"
      +          },
      +          "criterionId": {
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "not_confirmed",
      +            "type": "string"
      +          },
      +          "label": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "criterionId",
      +          "concept",
      +          "label"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "actual": {
      +            "type": "number"
      +          },
      +          "concept": {
      +            "type": "string"
      +          },
      +          "criterionId": {
      +            "type": "string"
      +          },
      +          "delta": {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "direction": {
      +            "enum": [
      +              "over",
      +              "under"
      +            ],
      +            "type": "string"
      +          },
      +          "expected": {
      +            "type": "number"
      +          },
      +          "field": {
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "numeric",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "criterionId",
      +          "concept",
      +          "field",
      +          "expected",
      +          "actual",
      +          "delta",
      +          "direction"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "actualLocalityId": {
      +            "type": "string"
      +          },
      +          "actualName": {
      +            "type": "string"
      +          },
      +          "askedLocalityId": {
      +            "type": "string"
      +          },
      +          "askedName": {
      +            "type": "string"
      +          },
      +          "distanceKm": {
      +            "maximum": 12,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "kind": {
      +            "const": "nearby_commune",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "askedLocalityId",
      +          "actualLocalityId",
      +          "askedName",
      +          "actualName",
      +          "distanceKm"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / listings / items / properties / match / properties / resultKind / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "strict_match",
      -      "partial_match",
      -      "relaxed_alternative"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "match",
      +      "close"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / understanding / properties / checked / items / properties / force / enum
      Previous value: -[
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "dealbreaker",
      +  "must",
      +  "should",
      +  "nice"
      +]
    • changedOutput schema / properties / understanding / properties / commutes / items / properties / force / enum
      Previous value: -[
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "dealbreaker",
      +  "must",
      +  "should",
      +  "nice"
      +]
    • changedOutput schema / properties / understanding / properties / notChecked / items / properties / force / enum
      Previous value: -[
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "dealbreaker",
      +  "must",
      +  "should",
      +  "nice"
      +]
    • changedOutput schema / properties / understanding / properties / places / items / properties / force / enum
      Previous value: -[
      -  "must",
      -  "should",
      -  "nice"
      -]New value: +[
      +  "dealbreaker",
      +  "must",
      +  "should",
      +  "nice"
      +]
  4. Changed1 schema field changed
    • addedOutput schema / properties / listings / items / properties / unknown
      Added value: +{
      +  "description": "Why each missingFields entry is unknown. not_in_search_result means get_listing may know it.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "field": {
      +        "type": "string"
      +      },
      +      "reason": {
      +        "enum": [
      +          "not_stated",
      +          "not_proven",
      +          "conflicted",
      +          "not_in_search_result"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "field",
      +      "reason"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  5. Changed4 schema fields changed
    • removedOutput schema / properties / coverageNotice
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "reason": {
      -      "const": "outside_luxembourg",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "reason"
      -  ],
      -  "type": "object"
      -}
    • addedOutput schema / properties / followUp
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "outcome": {
      +      "enum": [
      +        "applied",
      +        "answered"
      +      ],
      +      "type": "string"
      +    },
      +    "reply": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "outcome"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / session
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "brief": {
      +      "additionalProperties": {},
      +      "properties": {},
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "brief"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / understanding
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "What the engine understood from the request. notChecked lists wishes no returned home is confirmed to have.",
      +  "properties": {
      +    "checked": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "force": {
      +            "enum": [
      +              "must",
      +              "should",
      +              "nice"
      +            ],
      +            "type": "string"
      +          },
      +          "meaning": {
      +            "type": "string"
      +          },
      +          "needId": {
      +            "type": "string"
      +          },
      +          "operator": {
      +            "type": "string"
      +          },
      +          "unit": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "value": {
      +            "anyOf": [
      +              {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ]
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "meaning",
      +          "needId",
      +          "operator",
      +          "value",
      +          "unit",
      +          "force"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "commutes": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "destination": {
      +            "type": "string"
      +          },
      +          "force": {
      +            "enum": [
      +              "must",
      +              "should",
      +              "nice"
      +            ],
      +            "type": "string"
      +          },
      +          "maxMinutes": {
      +            "anyOf": [
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "mode": {
      +            "anyOf": [
      +              {
      +                "enum": [
      +                  "transit",
      +                  "drive",
      +                  "walk",
      +                  "bike"
      +                ],
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "destination",
      +          "mode",
      +          "maxMinutes",
      +          "force"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "excludedPropertyTypes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "notChecked": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "force": {
      +            "enum": [
      +              "must",
      +              "should",
      +              "nice"
      +            ],
      +            "type": "string"
      +          },
      +          "meaning": {
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "no_listing_fact",
      +              "fact_not_collected_yet"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "meaning",
      +          "force",
      +          "reason"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "offer": {
      +      "enum": [
      +        "whole",
      +        "room",
      +        "either"
      +      ],
      +      "type": "string"
      +    },
      +    "places": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "country": {
      +            "anyOf": [
      +              {
      +                "enum": [
      +                  "LU",
      +                  "FR",
      +                  "BE",
      +                  "DE"
      +                ],
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "force": {
      +            "enum": [
      +              "must",
      +              "should",
      +              "nice"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "radiusKm": {
      +            "anyOf": [
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "role": {
      +            "enum": [
      +              "live",
      +              "work",
      +              "near",
      +              "avoid"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "role",
      +          "kind",
      +          "country",
      +          "radiusKm",
      +          "force"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "propertyTypes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "transaction": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "buy",
      +            "rent"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "understood": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "understood",
      +    "transaction",
      +    "propertyTypes",
      +    "excludedPropertyTypes",
      +    "offer",
      +    "places",
      +    "commutes",
      +    "checked",
      +    "notChecked"
      +  ],
      +  "type": "object"
      +}
  6. Changed2 schema fields changed
    • changedInput schema / properties / maxPrice / description
      Previous value: -"Maximum monthly rent in EUR"New value: +"Maximum advertised base monthly rent in EUR, excluding separate charges"
    • addedInput schema / properties / maxTotalMonthly
      Added value: +{
      +  "description": "Strict maximum confirmed monthly obligation in EUR: advertised rent plus source-confirmed required recurring charges and fees. Listings with missing, estimated, conflicting, or stale cost evidence are excluded.",
      +  "type": "number"
      +}
  7. Changed34 schema fields changed
    • addedInput schema / properties / balcony
      Added value: +{
      +  "const": true,
      +  "description": "Require a source-confirmed balcony",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / elevator
      Added value: +{
      +  "const": true,
      +  "description": "Require positive source evidence of a lift/elevator",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / furnished
      Added value: +{
      +  "const": true,
      +  "description": "Require positive source evidence that the rental is furnished",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / garden
      Added value: +{
      +  "const": true,
      +  "description": "Require a source-confirmed garden",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / maxAreaSqm
      Added value: +{
      +  "description": "Maximum area in m²",
      +  "type": "number"
      +}
    • addedInput schema / properties / minBathrooms
      Added value: +{
      +  "description": "Minimum number of bathrooms",
      +  "type": "number"
      +}
    • addedInput schema / properties / parkingType
      Added value: +{
      +  "description": "Require source-backed parking evidence",
      +  "enum": [
      +    "off_street",
      +    "garage",
      +    "covered"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / petsAllowed
      Added value: +{
      +  "const": true,
      +  "description": "Require positive source evidence that pets are allowed",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / sort
      Added value: +{
      +  "description": "Sort the proven result set. price-asc means base rent, not all-in monthly cost.",
      +  "enum": [
      +    "relevance",
      +    "newest",
      +    "price-asc",
      +    "price-desc"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / excludedUnprovenCount
      Added value: +{
      +  "description": "Upstream rows omitted because public facts could not prove every requested hard filter.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / hasMore
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / listings / items / properties / amenities
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "balcony": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "elevator": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "furnished": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "garden": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "parking": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "petsAllowed": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "stepFreeAccess": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "wheelchairAccessible": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "furnished",
      +    "elevator",
      +    "parking",
      +    "balcony",
      +    "garden",
      +    "petsAllowed",
      +    "stepFreeAccess",
      +    "wheelchairAccessible"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / listings / items / properties / availability
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "availableFrom": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "moveInState": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "offerStatus": {
      +      "enum": [
      +        "available",
      +        "under_offer",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "offerStatus",
      +    "availableFrom",
      +    "moveInState"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / listings / items / properties / duplicates
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "confirmedOtherSources": {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "confirmedSourceCount": {
      +      "exclusiveMinimum": 0,
      +      "maximum": 9007199254740991,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "confirmedOtherSources",
      +    "confirmedSourceCount"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / listings / items / properties / fieldProvenance
      Added value: +{
      +  "additionalProperties": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "method": {
      +        "enum": [
      +          "source_structured",
      +          "source_text",
      +          "official_dataset",
      +          "calculation",
      +          "manual_review",
      +          "model_extraction",
      +          "model_only",
      +          "unknown"
      +        ],
      +        "type": "string"
      +      },
      +      "observedAt": {
      +        "anyOf": [
      +          {
      +            "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"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "publisher": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "sourceUrl": {
      +        "anyOf": [
      +          {
      +            "format": "uri",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "status": {
      +        "enum": [
      +          "confirmed",
      +          "estimated",
      +          "thin_sample",
      +          "stale",
      +          "context_only",
      +          "conflicted",
      +          "not_collected",
      +          "source_unavailable",
      +          "suppressed"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "publisher",
      +      "method",
      +      "sourceUrl",
      +      "observedAt"
      +    ],
      +    "type": "object"
      +  },
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / listings / items / properties / history
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "daysListed": {
      +      "anyOf": [
      +        {
      +          "maximum": 9007199254740991,
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "firstObservedAt": {
      +      "anyOf": [
      +        {
      +          "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"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "firstObservedBasis": {
      +      "const": "source_listing_date_or_chathome_ingest",
      +      "type": "string"
      +    },
      +    "lastChangedAt": {
      +      "anyOf": [
      +        {
      +          "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"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "priceDropTotalEur": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "firstObservedAt",
      +    "firstObservedBasis",
      +    "daysListed",
      +    "priceDropTotalEur",
      +    "lastChangedAt"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / listings / items / properties / location
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "address": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "city": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "confidence": {
      +      "enum": [
      +        "verified",
      +        "unverified",
      +        "contradicted",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "district": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "postalCode": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "precision": {
      +      "enum": [
      +        "exact_address",
      +        "street",
      +        "district",
      +        "commune_only",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "city",
      +    "district",
      +    "address",
      +    "postalCode",
      +    "precision",
      +    "confidence"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / listings / items / properties / match
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "allRequiredConstraintsSatisfied": {
      +      "anyOf": [
      +        {
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "reasons": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "maxItems": 3,
      +      "type": "array"
      +    },
      +    "requiredConstraints": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "actual": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "boolean"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "matched",
      +              "not_matched",
      +              "not_verified",
      +              "not_applied"
      +            ],
      +            "type": "string"
      +          },
      +          "target": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "boolean"
      +              },
      +              {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "status",
      +          "target",
      +          "actual"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "resultKind": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "strict_match",
      +            "partial_match",
      +            "relaxed_alternative"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "allRequiredConstraintsSatisfied",
      +    "resultKind",
      +    "requiredConstraints",
      +    "reasons"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / listings / items / properties / missingFields
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / listings / items / properties / officialScreening
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / property
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "airConditioning": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "colocation": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "completionYear": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "condition": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "constructionYear": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "floor": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "hasFloorplan": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "heatingEnergy": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "heatingType": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "landAreaSqm": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "privateRoomAreaSqm": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "rentByOwner": {
      +      "anyOf": [
      +        {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "rooms": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "totalFloors": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "rooms",
      +    "floor",
      +    "totalFloors",
      +    "constructionYear",
      +    "completionYear",
      +    "landAreaSqm",
      +    "privateRoomAreaSqm",
      +    "condition",
      +    "heatingType",
      +    "heatingEnergy",
      +    "airConditioning",
      +    "hasFloorplan",
      +    "rentByOwner",
      +    "colocation"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / listings / items / properties / propertyChecks
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / rent
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "agencyFee": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "agencyFeeBasis": {
      +          "anyOf": [
      +            {
      +              "enum": [
      +                "tenant_share",
      +                "total_commission",
      +                "unknown"
      +              ],
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "baseMonthly": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "chargesIncluded": {
      +          "anyOf": [
      +            {
      +              "type": "boolean"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "chargesMonthly": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "deposit": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "depositExceedsMaximum": {
      +          "anyOf": [
      +            {
      +              "type": "boolean"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "depositMaximum": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "estimatedMonthlyTotal": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "estimatedMonthlyTotalIsLowerBound": {
      +          "anyOf": [
      +            {
      +              "type": "boolean"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "estimatedUtilitiesMonthly": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "exactUpfrontCost": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "firstChargeAdvance": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "heatingMayBeDoubleCounted": {
      +          "anyOf": [
      +            {
      +              "type": "boolean"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "indicativeInsuranceMonthly": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "knownMonthlyLowerBound": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "knownUpfrontCost": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "mandatoryMoveInFeeTotal": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "mandatoryMoveInFees": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {},
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "mandatoryRecurringFeeTotal": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "mandatoryRecurringFees": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {},
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "monthlyTotal": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "monthlyTotalStatus": {
      +          "anyOf": [
      +            {
      +              "enum": [
      +                "known",
      +                "unknown_charges",
      +                "conflicting_charges",
      +                "invalid_price",
      +                "unknown_mandatory_recurring_fees"
      +              ],
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "reportedDeposit": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "unknownComponents": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "upfrontCostIsExact": {
      +          "anyOf": [
      +            {
      +              "type": "boolean"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "upfrontCostIsLowerBound": {
      +          "anyOf": [
      +            {
      +              "type": "boolean"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "baseMonthly",
      +        "chargesMonthly",
      +        "chargesIncluded",
      +        "monthlyTotal",
      +        "monthlyTotalStatus",
      +        "knownMonthlyLowerBound",
      +        "estimatedMonthlyTotal",
      +        "estimatedMonthlyTotalIsLowerBound",
      +        "estimatedUtilitiesMonthly",
      +        "indicativeInsuranceMonthly",
      +        "heatingMayBeDoubleCounted",
      +        "firstChargeAdvance",
      +        "reportedDeposit",
      +        "deposit",
      +        "depositMaximum",
      +        "depositExceedsMaximum",
      +        "agencyFee",
      +        "agencyFeeBasis",
      +        "mandatoryRecurringFees",
      +        "mandatoryRecurringFeeTotal",
      +        "mandatoryMoveInFees",
      +        "mandatoryMoveInFeeTotal",
      +        "knownUpfrontCost",
      +        "exactUpfrontCost",
      +        "upfrontCostIsLowerBound",
      +        "upfrontCostIsExact",
      +        "unknownComponents"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / schemaVersion
      Added value: +{
      +  "const": "agent-listing.v2",
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / properties / source
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "agencyConfirmedAt": {
      +          "anyOf": [
      +            {
      +              "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"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "agencyListingId": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "agencyName": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "lastSeenAt": {
      +          "anyOf": [
      +            {
      +              "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"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "listingUrl": {
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        "status": {
      +          "enum": [
      +            "active",
      +            "under_offer",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "statusBasis": {
      +          "enum": [
      +            "source_catalog_seen",
      +            "listing_record_active"
      +          ],
      +          "type": "string"
      +        },
      +        "type": {
      +          "const": "original_agency_listing",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "type",
      +        "agencyName",
      +        "listingUrl",
      +        "agencyListingId",
      +        "lastSeenAt",
      +        "status",
      +        "statusBasis",
      +        "agencyConfirmedAt"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / transport
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / valueContext
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "fairPrice": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {},
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "marketContext": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {},
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "priceIntegrity": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {},
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "priceIntegrity",
      +    "fairPrice",
      +    "marketContext"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / listings / items / required
      Previous value: -[
      -  "id",
      -  "url",
      -  "title",
      -  "status",
      -  "price",
      -  "currency",
      -  "listingType",
      -  "propertyType",
      -  "city",
      -  "district",
      -  "country",
      -  "beds",
      -  "baths",
      -  "areaSqm",
      -  "energyClass",
      -  "imageUrl",
      -  "agencyName",
      -  "latitude",
      -  "longitude"
      -]New value: +[
      +  "schemaVersion",
      +  "id",
      +  "url",
      +  "title",
      +  "status",
      +  "price",
      +  "currency",
      +  "listingType",
      +  "propertyType",
      +  "city",
      +  "district",
      +  "country",
      +  "beds",
      +  "baths",
      +  "areaSqm",
      +  "energyClass",
      +  "imageUrl",
      +  "agencyName",
      +  "source",
      +  "rent",
      +  "availability",
      +  "property",
      +  "location",
      +  "history",
      +  "duplicates",
      +  "amenities",
      +  "fieldProvenance",
      +  "officialScreening",
      +  "propertyChecks",
      +  "transport",
      +  "valueContext",
      +  "missingFields",
      +  "match",
      +  "latitude",
      +  "longitude"
      +]
    • addedOutput schema / properties / marketMatchingUpperBound
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / matchingCount
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / matchingCountKind
      Added value: +{
      +  "enum": [
      +    "exact",
      +    "lower_bound",
      +    "unavailable"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / nextCursor
      Added value: +{
      +  "type": "null"
      +}
    • addedOutput schema / properties / returnedCount
      Added value: +{
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / searchExhaustive
      Added value: +{
      +  "type": "boolean"
      +}
  8. Changed34 schema fields changed
    • addedOutput schema / properties / countKind
      Added value: +{
      +  "const": "returned",
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / properties / agencyName
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / areaSqm
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / baths
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / beds
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / charges
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / city
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / country
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "LU",
      +        "FR",
      +        "BE",
      +        "DE"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / currency
      Added value: +{
      +  "const": "EUR",
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / properties / description
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / district
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / energyClass
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / features
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / listings / items / properties / hasSourceCheckedFacts
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / listings / items / properties / id
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / properties / imageUrl
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / latitude
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / listingType
      Added value: +{
      +  "enum": [
      +    "rent",
      +    "sale"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / properties / longitude
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / matchReasons
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 3,
      +  "type": "array"
      +}
    • addedOutput schema / properties / listings / items / properties / photoUrls
      Added value: +{
      +  "items": {
      +    "format": "uri",
      +    "type": "string"
      +  },
      +  "maxItems": 5,
      +  "type": "array"
      +}
    • addedOutput schema / properties / listings / items / properties / price
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / pricePerSqm
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / propertyType
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / score
      Added value: +{
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedOutput schema / properties / listings / items / properties / status
      Added value: +{
      +  "const": "active",
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / properties / title
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / properties / url
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / required
      Added value: +[
      +  "id",
      +  "url",
      +  "title",
      +  "status",
      +  "price",
      +  "currency",
      +  "listingType",
      +  "propertyType",
      +  "city",
      +  "district",
      +  "country",
      +  "beds",
      +  "baths",
      +  "areaSqm",
      +  "energyClass",
      +  "imageUrl",
      +  "agencyName",
      +  "latitude",
      +  "longitude"
      +]
    • addedOutput schema / properties / ranking
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "planFingerprint": {
      +      "type": "string"
      +    },
      +    "probability": {
      +      "const": false,
      +      "type": "boolean"
      +    },
      +    "scoreKind": {
      +      "const": "request_fit",
      +      "type": "string"
      +    },
      +    "status": {
      +      "enum": [
      +        "available",
      +        "degraded"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "scoreKind",
      +    "probability"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / total / description
      Added value: +"Exact number of listing objects returned in this response; not the number of matches in the market."
    • addedOutput schema / properties / total / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / total / minimum
      Added value: +0
    • changedOutput schema / properties / total / type
      Previous value: -"number"New value: +"integer"
  9. Changed1 schema field changed
    • addedOutput schema / properties / coverageNotice
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "reason": {
      +      "const": "outside_luxembourg",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "reason"
      +  ],
      +  "type": "object"
      +}
  10. First observed

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent/openWorld annotations by disclosing that the strict ceiling drops listings with incomplete cost evidence, source freshness, or fees, and that results carry completeness metadata plus agency links and re-sighting timestamps. That is substantive behavioral context an agent could not infer from the annotations or schema, though return shape and pagination semantics remain unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the searchable dimensions, followed by the two nontrivial behaviors. Dense but free of filler; 'positive-evidence amenities' and 'latest catalogue re-sighting time' are slightly opaque coinages but earn their space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the description correctly focuses on filter semantics and result completeness. The main shortfall is silent pagination - shownListingIds is a non-obvious paging mechanism for a 21-parameter search tool whose results are explicitly described as not a stable snapshot.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Effective schema description coverage is only 24% across 21 parameters, so the description should carry more. It does add the highest-value distinction - advertised base rent (minPrice/maxPrice) versus a separate strict confirmed monthly-obligation ceiling (maxTotalMonthly) - and clarifies that amenity flags are positive-evidence only, but sort, limit, locale, includePhotos, parkingType, and shownListingIds receive no mention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (active Luxembourg rentals) with the filterable dimensions enumerated, which distinguishes it from search_for_sale by geography/asset class. It never names an actual sibling tool, so an agent must infer the boundary with search_vibe, get_listing, and compare_listings rather than being told.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The condition for using the strict ceiling versus the advertised base rent is implicit in the phrasing, and the exclusion behavior is described, but there is no explicit 'use this when...' or 'prefer X for Y' guidance. With 19 siblings covering overlapping territory (search_vibe, compare_listings, get_listing_truth), the absence of routing direction is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources