Skip to main content
Glama

chathome.lu — Luxembourg Real Estate

Show Listing Cards

render_listing_cards
Read-onlyIdempotent

Render one to eight exact results from a prior property search as an interactive MCP Apps photo carousel. Call a search tool first, then copy its listing IDs and any returned match scores/reasons without alteration. The tool re-reads canonical public listing facts before display.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
localeNoResponse locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu')
headingNoShort user-facing heading grounded in the search request
listingsYesOne to eight exact listing IDs from search_vibe, search_rentals, or search_for_sale, in display order

Output Schema

TableJSON 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. 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"
      +}
  2. 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"
      +}
  3. Changed25 schema fields changed
    • 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"
      +}
  4. 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"
  5. Changed1 schema field changed
    • addedOutput schema / properties / coverageNotice
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "reason": {
      +      "const": "outside_luxembourg",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "reason"
      +  ],
      +  "type": "object"
      +}
  6. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the tool 're-reads canonical public listing facts before display' (data may be refreshed, not a blind echo of cached input) and enforces the 1–8 display cap. It does not discuss rendering failures or locale fallback behavior.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the capability and cardinality limit, followed by the prerequisite and the data-freshness note. No filler or restatement of the title.

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

Completeness5/5

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

With an output schema present, return values need not be described, and annotations carry the safety profile. The description supplies the missing pieces an agent actually needs: the search-first prerequisite, the 1–8 constraint, exact-copy semantics, and the canonical re-read behavior.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description earns above baseline by stressing that listing IDs, scores, and match reasons must be copied 'without alteration' — a constraint on how the parameters must be sourced that the schema only implies. It does not add meaning for locale or heading.

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

Purpose5/5

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

States a specific verb ('Render') and resource ('one to eight exact results ... as an interactive MCP Apps photo carousel'), and distinguishes itself from the search siblings by operating on results of a prior search rather than performing one. An agent can tell this display tool apart from search_vibe/search_rentals without opening any schema.

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

Usage Guidelines4/5

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

Explicit prerequisite: 'Call a search tool first, then copy its listing IDs and any returned match scores/reasons without alteration.' This tells the agent the ordering and the input provenance clearly. It does not state when-not to use it or name a preferred search sibling in the prose, so it stops short of a 5.

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