chathome.lu — Luxembourg Real Estate
REMOTE · CHATHOME.LU · SCANNED SEP 20
Luxembourg real estate for AI agents: property search, price estimates, market data, commutes.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability76
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3964 tokens (~247/item across 16 items; 15 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability check failed: schema churn in the 29 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 1 additions. See how to fix → Fail
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 90% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
How do I install the chathome.lu — Luxembourg Real Estate MCP server?
chathome.lu — Luxembourg Real Estate is a hosted endpoint at https://chathome.lu/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · chathome.lu
claude mcp add --transport http lu-chathome-chathome 'https://chathome.lu/api/mcp'
{
"mcpServers": {
"lu-chathome-chathome": {
"url": "https://chathome.lu/api/mcp"
}
}
} {
"servers": {
"lu-chathome-chathome": {
"type": "http",
"url": "https://chathome.lu/api/mcp"
}
}
} [mcp_servers.lu-chathome-chathome] url = "https://chathome.lu/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"lu-chathome-chathome": {
"type": "remote",
"url": "https://chathome.lu/api/mcp",
"enabled": true
}
}
} openclaw mcp add lu-chathome-chathome --url 'https://chathome.lu/api/mcp' --transport streamable-http
mcp_servers:
lu-chathome-chathome:
url: "https://chathome.lu/api/mcp" {
"McpServers": {
"lu-chathome-chathome": {
"Transport": "http",
"Url": "https://chathome.lu/api/mcp"
}
}
} assistant mcp add lu-chathome-chathome -t streamable-http -u 'https://chathome.lu/api/mcp'
{
"mcpServers": {
"lu-chathome-chathome": {
"type": "http",
"url": "https://chathome.lu/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 86 to 90.
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83.
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 73 to 76.
- 13 Sept 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “get_market_context” rewrote its description, which is the text the model reads security
- Tool “search_rentals” rewrote its description, which is the text the model reads security
- Prompt “compare-communes” was removed ▼ functional
- “search_rentals” added an optional parameter “maxTotalMonthly” cosmetic
- “search_rentals” reworded the description of “maxPrice” cosmetic
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63.
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 56.
- 7 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 46 to 50.
- 4 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 36 to 40.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://chathome.lu/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=chathome.lu | CN=YE1,O=Let's Encrypt,C=US | 9 Sept 2026 | 8 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 6073ff2e7a9d51e62ca32111c98fac6227b |
| SANs: *.chathome.lu, chathome.lu | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of chathome.lu. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| lu. | present | 20752 | 8 | Verified |
| chathome.lu. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://chathome.lu/.well-known/oauth-protected-resource", scope="listings:read market:read"
Bearer resource_metadata="https://chathome.lu/.well-known/oauth-protected-resource", scope="listings:read market:read" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| content-security-policy | base-uri 'self'; object-src 'none'; frame-ancestors 'self' |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(self), geolocation=(self) |
Protected resource metadata
| Document | https://chathome.lu/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://chathome.lu/api/mcp |
| Authorisation server | https://chathome.lu |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://chathome.lu/api/mcp | Verified | 200 | |
| http (plaintext) | http://chathome.lu/api/mcp | HTTPS enforced | 301 | https://chathome.lu/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_lease Analyze Lease ~153
Analyze a caller-provided Luxembourg residential lease PDF or raw text, persist the full user-scoped analysis, and return a compact risk summary. Do not provide payment-card data, government identifiers, health data, passwords, API keys, or authentication codes.
| Name | Type | Req | Description |
|---|---|---|---|
| fileName | string | – | – |
| language | string | – | – |
| pdfBase64 | string | – | Base64-encoded PDF bytes. Do not pass URLs, payment-card data, government identifiers, health data, passwords, API keys, or authentication codes. |
| text | string | – | Raw lease text when a PDF is not available. Do not pass URLs, payment-card data, government identifiers, health data, passwords, API keys, or authentication codes. |
| Name | Type | Req | Description |
|---|---|---|---|
| clauses | array | yes | – |
| isLease | boolean | yes | – |
| overallRiskScore | number | yes | – |
| persisted | boolean | yes | – |
| severityCounts | object | yes | – |
| trust | object | yes | – |
No examples provided.
compare_listings Compare Listings ~120
Compare two to eight listings through one normalized AgentListing v2 response, including known and estimated costs, availability, property facts, official flood/noise checks, station frequency, commute summaries, value context, provenance, freshness, duplicates, constraints, and explicit unknown fields.
| Name | Type | Req | Description |
|---|---|---|---|
| ids | array | yes | Two to eight listing IDs returned by a ChatHome search tool |
| locale | string | – | Response locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu') |
| Name | Type | Req | Description |
|---|---|---|---|
| comparisonFields | array | yes | – |
| listings | array | yes | – |
| notFoundIds | array | yes | – |
| schemaVersion | string | yes | – |
| trust | object | yes | – |
No examples provided.
get_affordability Get Affordability ~265
Calculate Luxembourg mortgage affordability and state whether the property-price ceiling includes every acquisition cost or only currently known costs.
| Name | Type | Req | Description |
|---|---|---|---|
| annualNetIncome | number | yes | User-confirmed annual household net income |
| bellegenAktCreditAvailable | number | – | Aggregate unused Bëllegen Akt balance explicitly confirmed for the acquirers |
| bellegenAktEligibleBuyers | integer | – | Explicitly confirmed eligible acquirer count |
| employmentType | string | yes | – |
| energyClassDiscountPct | number | – | – |
| floodZoneRateAdjustmentPct | number | – | – |
| householdType | string | yes | – |
| isFirstTimeBuyer | boolean | – | Deprecated optional compatibility signal; never proves Bëllegen entitlement |
| isPersonalResidence | boolean | – | Deprecated residence-use compatibility flag; prefer residenceUse |
| loanTermYears | integer | – | – |
| marketRate | number | – | – |
| maxDebtToIncomeRatio | number | yes | Explicit housing-payment share of net income, e.g. 0.35 |
| monthlyDebts | number | – | Existing monthly debt payments |
| residenceUse | string | – | Residence use; omitted or unknown preserves an unconfirmed Bëllegen position |
| residencyType | string | yes | – |
| savingsAvailable | number | yes | Available savings/down payment |
| Name | Type | Req | Description |
|---|---|---|---|
| confidence | string | yes | – |
| freshness | string | yes | – |
| maxPropertyPrice | number | yes | – |
| maxPropertyPriceCostBasis | string | yes | – |
| trust | object | yes | – |
No examples provided.
get_commute_times Get Commute Times ~121
Commute time estimates from a Luxembourg commune to a major employment hub (Luxembourg City, Kirchberg EU Quarter, or Belval) across four transport modes.
| Name | Type | Req | Description |
|---|---|---|---|
| commune | string | yes | Luxembourg commune name or slug to get commute times from, e.g. 'esch-sur-alzette', 'differdange' |
| destination | string | yes | Commute destination: lux-city (Luxembourg City centre), kirchberg (EU Quarter), or belval (Esch/Belval) |
| mode | string | yes | Transport mode |
| Name | Type | Req | Description |
|---|---|---|---|
| commune | string | yes | – |
| destination | string | yes | – |
| distanceKm | – | yes | – |
| minutes | – | yes | – |
| mode | string | yes | – |
| source | – | yes | – |
| stale | boolean | yes | – |
| trust | object | yes | – |
No examples provided.
get_inquiry_status Get Inquiry Status ~50
Poll an MCP agent inquiry conversation for agent replies. Returns the current status and full message thread.
| Name | Type | Req | Description |
|---|---|---|---|
| conversationId | string | yes | The conversation ID returned by submit_inquiry when kind is conversation_created |
| Name | Type | Req | Description |
|---|---|---|---|
| conversationId | string | yes | – |
| messages | array | yes | – |
| status | string | yes | – |
| trust | object | yes | – |
No examples provided.
get_listing Get Listing Details ~136
Get the full fail-closed listing page: its public record, price history, area trend, family amenities, neighbourhood facts, property passport, parcel dossier, normalized costs, official checks, transport, provenance, unknown fields, URL, and photos.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Listing ID |
| includePhotos | boolean | – | Attach thumbnail photos of the listing as image content blocks (default: true). Set false for a lean text-only response. |
| locale | string | – | Response locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu') |
| Name | Type | Req | Description |
|---|---|---|---|
| listing | object | yes | – |
| listingPage | object | yes | – |
| listingPageContext | object | yes | – |
| trust | object | yes | – |
No examples provided.
get_listing_truth Get Listing Truth ~103
Trust-layer view of the full fail-closed listing page, including its public record and page context, normalized costs, official checks, sources, freshness, explicit unknowns, and privacy-safe correction totals. No reporter identities are exposed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Listing ID |
| locale | string | – | Response locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu') |
| Name | Type | Req | Description |
|---|---|---|---|
| corrections | object | yes | – |
| listing | object | yes | – |
| listingPage | object | yes | – |
| listingPageContext | object | yes | – |
| trust | object | yes | – |
No examples provided.
get_market_context Get Market Context ~98
Get bounded, source-backed property context for a commune, with source dates and unknown states.
| Name | Type | Req | Description |
|---|---|---|---|
| commune | string | yes | Luxembourg commune slug or name (e.g. 'luxembourg', 'esch-sur-alzette', 'kirchberg') |
| locale | string | – | Response locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu') |
| Name | Type | Req | Description |
|---|---|---|---|
| commune | string | yes | – |
| trust | object | yes | – |
No examples provided.
get_price_estimate Get Price Estimate ~193
AI-powered price estimate for a Luxembourg property. The chathome valuation model is trained and backtested on historical property listing asking prices, not deed-level sales. Returns an estimated price, confidence interval, and comparable listing statistics.
| Name | Type | Req | Description |
|---|---|---|---|
| areaSqm | number | yes | Living area in square metres |
| bedrooms | integer | – | Number of bedrooms |
| commune | string | yes | Luxembourg commune name or slug, e.g. 'luxembourg', 'esch-sur-alzette' |
| constructionYear | integer | – | Year the property was built, e.g. 1995 |
| energyClass | string | – | Energy performance certificate class, e.g. 'A', 'B', 'C' |
| listingType | string | yes | Whether the property is for rent or sale |
| propertyType | string | yes | Property type, e.g. 'apartment', 'house', 'studio', 'penthouse' |
| Name | Type | Req | Description |
|---|---|---|---|
| areaSqm | number | yes | – |
| commune | string | yes | – |
| estimatedPrice | number | – | – |
| listingType | string | yes | – |
| propertyType | string | yes | – |
| trust | object | yes | – |
No examples provided.
get_town_agencies Get Town Agencies ~106
Get every estate agency with active listings in a supported Luxembourg town, including current buy/rent stock and asking-price ranges.
| Name | Type | Req | Description |
|---|---|---|---|
| commune | string | yes | One of the supported Luxembourg town names or slugs, e.g. 'Mersch' or 'esch-sur-alzette' |
| locale | string | – | Response locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu') |
| Name | Type | Req | Description |
|---|---|---|---|
| activeListings | number | yes | – |
| agencies | array | yes | – |
| agencyCount | number | yes | – |
| buyListings | number | yes | – |
| commune | string | yes | – |
| communeSlug | string | yes | – |
| localityId | string | yes | – |
| measuredAt | string | yes | – |
| pageUrl | string | yes | – |
| rentListings | number | yes | – |
| source | string | yes | – |
| trust | object | yes | – |
| unclassifiedListings | number | yes | – |
No examples provided.
render_listing_cards Show Listing Cards ~147
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.
| Name | Type | Req | Description |
|---|---|---|---|
| heading | string | – | Short user-facing heading grounded in the search request |
| listings | array | yes | One to eight exact listing IDs from search_vibe, search_rentals, or search_for_sale, in display order |
| locale | string | – | Response locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu') |
| Name | Type | Req | Description |
|---|---|---|---|
| countKind | string | – | – |
| coverageNotice | object | – | – |
| excludedUnprovenCount | integer | – | Upstream rows omitted because public facts could not prove every requested hard filter. |
| hasMore | boolean | – | – |
| listings | array | yes | – |
| marketMatchingUpperBound | – | – | – |
| matchingCount | – | – | – |
| matchingCountKind | string | – | – |
| nextCursor | null | – | – |
| note | string | – | – |
| ranking | object | – | – |
| returnedCount | integer | – | – |
| searchExhaustive | boolean | – | – |
| source | string | – | – |
| total | integer | yes | Exact number of listing objects returned in this response; not the number of matches in the market. |
| truncated | boolean | – | – |
| trust | object | – | – |
No examples provided.
search_for_sale Search Properties For Sale ~367
Search properties for sale across supported Grande Région inventory by location, price, rooms, area, property type, and positive-evidence amenities, with explicit sort and completeness metadata. Every sourced result identifies and links the original agency listing and states its latest catalogue re-sighting time; thumbnails of the top results are attached as image content blocks.
| Name | Type | Req | Description |
|---|---|---|---|
| balcony | boolean | – | Require a source-confirmed balcony |
| commune | string | – | Luxembourg commune name or slug |
| elevator | boolean | – | Require lift/elevator evidence |
| furnished | boolean | – | Require furnished evidence |
| garden | boolean | – | Require a source-confirmed garden |
| includePhotos | boolean | – | Attach thumbnail photos of the top results as image content blocks (default: true). Set false for a lean text-only response. |
| limit | number | – | Number of results to return (max 50, default 20) |
| locale | string | – | Response locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu') |
| maxAreaSqm | number | – | Maximum area in m² |
| maxPrice | number | – | Maximum sale price in EUR |
| minAreaSqm | number | – | Minimum area in m² |
| minBathrooms | number | – | Minimum number of bathrooms |
| minBeds | number | – | Minimum number of bedrooms |
| minPrice | number | – | Minimum sale price in EUR |
| parkingType | string | – | Require source-backed parking evidence |
| petsAllowed | boolean | – | Require pets-allowed evidence |
| propertyType | string | – | Property type: apartment, house, villa, etc. |
| sort | string | – | Sort by relevance, listing date, or asking price |
| Name | Type | Req | Description |
|---|---|---|---|
| countKind | string | – | – |
| coverageNotice | object | – | – |
| excludedUnprovenCount | integer | – | Upstream rows omitted because public facts could not prove every requested hard filter. |
| hasMore | boolean | – | – |
| listings | array | yes | – |
| marketMatchingUpperBound | – | – | – |
| matchingCount | – | – | – |
| matchingCountKind | string | – | – |
| nextCursor | null | – | – |
| note | string | – | – |
| ranking | object | – | – |
| returnedCount | integer | – | – |
| searchExhaustive | boolean | – | – |
| source | string | – | – |
| total | integer | yes | Exact number of listing objects returned in this response; not the number of matches in the market. |
| truncated | boolean | – | – |
| trust | object | – | – |
No examples provided.
search_rentals Search Rental Listings ~452
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.
| Name | Type | Req | Description |
|---|---|---|---|
| balcony | boolean | – | Require a source-confirmed balcony |
| commune | string | – | Luxembourg commune name or slug |
| elevator | boolean | – | Require positive source evidence of a lift/elevator |
| furnished | boolean | – | Require positive source evidence that the rental is furnished |
| garden | boolean | – | Require a source-confirmed garden |
| includePhotos | boolean | – | Attach thumbnail photos of the top results as image content blocks (default: true). Set false for a lean text-only response. |
| limit | number | – | Number of results to return (max 50, default 20) |
| locale | string | – | Response locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu') |
| maxAreaSqm | number | – | Maximum area in m² |
| maxPrice | number | – | Maximum advertised base monthly rent in EUR, excluding separate charges |
| maxTotalMonthly | number | – | 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 ar… |
| minAreaSqm | number | – | Minimum area in m² |
| minBathrooms | number | – | Minimum number of bathrooms |
| minBeds | number | – | Minimum number of bedrooms |
| minPrice | number | – | Minimum monthly rent in EUR |
| parkingType | string | – | Require source-backed parking evidence |
| petsAllowed | boolean | – | Require positive source evidence that pets are allowed |
| propertyType | string | – | Property type: apartment, house, studio, room, etc. |
| sort | string | – | Sort the proven result set. price-asc means base rent, not all-in monthly cost. |
| Name | Type | Req | Description |
|---|---|---|---|
| countKind | string | – | – |
| coverageNotice | object | – | – |
| excludedUnprovenCount | integer | – | Upstream rows omitted because public facts could not prove every requested hard filter. |
| hasMore | boolean | – | – |
| listings | array | yes | – |
| marketMatchingUpperBound | – | – | – |
| matchingCount | – | – | – |
| matchingCountKind | string | – | – |
| nextCursor | null | – | – |
| note | string | – | – |
| ranking | object | – | – |
| returnedCount | integer | – | – |
| searchExhaustive | boolean | – | – |
| source | string | – | – |
| total | integer | yes | Exact number of listing objects returned in this response; not the number of matches in the market. |
| truncated | boolean | – | – |
| trust | object | – | – |
No examples provided.
search_vibe Vibe Search ~303
Preferred natural-language ('vibe') property search. Pass the user's request as prose and the engine matches on lifestyle, mood, proximity, and soft preferences via embeddings + LLM reasoning. Healthy runs return source-grounded match reasons and a 0-100 request-fit score (not a probability); degraded runs explicitly omit ranking claims. Every sourced result identifies and links the original agency listing and states its latest catalogue re-sighting time. If the requested place is outside current coverage, it returns no listings plus a machine-readable coverageNotice instead of substituting unrelated homes.
| Name | Type | Req | Description |
|---|---|---|---|
| includePhotos | boolean | – | Attach thumbnail photos of the top results as image content blocks (default: true). Set false for a lean text-only response. |
| intent | string | – | Whether to search rentals or properties for sale (default: "rent") |
| limit | number | – | Number of results to return (max 50, default 20) |
| locale | string | – | Response locale: en, fr, de, lu (Luxembourgish), pt (default: en; 'lb' is a deprecated alias for 'lu') |
| query | string | yes | Natural-language description of what the user wants, in their own words — e.g. "quiet 2-bed near Kirchberg with a balcony under €2000" or "bright family house with a garden, short commute to Belval,… |
| Name | Type | Req | Description |
|---|---|---|---|
| countKind | string | – | – |
| coverageNotice | object | – | – |
| excludedUnprovenCount | integer | – | Upstream rows omitted because public facts could not prove every requested hard filter. |
| hasMore | boolean | – | – |
| listings | array | yes | – |
| marketMatchingUpperBound | – | – | – |
| matchingCount | – | – | – |
| matchingCountKind | string | – | – |
| nextCursor | null | – | – |
| note | string | – | – |
| ranking | object | – | – |
| returnedCount | integer | – | – |
| searchExhaustive | boolean | – | – |
| source | string | – | – |
| total | integer | yes | Exact number of listing objects returned in this response; not the number of matches in the market. |
| truncated | boolean | – | – |
| trust | object | – | – |
No examples provided.
submit_inquiry Submit Inquiry ~106
Submit an inquiry about a listing. For chathome-hosted listings creates a conversation thread; for external agency listings returns agency contact details.
| Name | Type | Req | Description |
|---|---|---|---|
| agentName | string | – | Optional display name for the inquiring agent |
| contactEmail | string | – | Optional contact email for the inquiring agent |
| listingId | string | yes | The ID of the listing to inquire about |
| message | string | yes | Inquiry message to send to the listing owner (10–5000 characters) |
| Name | Type | Req | Description |
|---|---|---|---|
| conversationId | string | – | – |
| kind | string | yes | – |
| listingId | string | – | – |
| trust | object | yes | – |
No examples provided.
What is the chathome.lu — Luxembourg Real Estate MCP server?
chathome.lu — Luxembourg Real Estate is an MCP server listed in the public MCP registry as lu.chathome/chathome. Luxembourg real estate for AI agents: property search, price estimates, market data, commutes. This page covers its hosted endpoint (https://chathome.lu/api/mcp).
Is the chathome.lu — Luxembourg Real Estate MCP server safe to use?
chathome.lu — Luxembourg Real Estate scores 92 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the chathome.lu — Luxembourg Real Estate MCP server expose?
chathome.lu — Luxembourg Real Estate exposes 15 tools: search_vibe, search_rentals, search_for_sale, render_listing_cards, get_listing, and 10 more. Their descriptions and schemas cost roughly 2,720 tokens of context every time the server is loaded.
Does the chathome.lu — Luxembourg Real Estate MCP server require authentication?
Yes. chathome.lu — Luxembourg Real Estate asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the chathome.lu — Luxembourg Real Estate MCP server still maintained?
chathome.lu — Luxembourg Real Estate is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.