---
name: chathome-luxembourg-property
description: Search Luxembourg real estate (rent and buy), get price estimates, affordability, commute times, and commune market data from chathome.lu. Use for Luxembourg housing or relocation questions.
license: Free to use and redistribute unmodified. Listing data belongs to chathome.lu and source agencies.
compatibility: Works best with the chathome MCP connector (https://chathome.lu/api/mcp); the public HTTP endpoints need only internet access.
metadata:
  version: "1.0.0"
  author: chathome.lu
  homepage: https://chathome.lu/en/mcp
---

# chathome — Luxembourg Real Estate

chathome.lu is Luxembourg's AI-native property marketplace: live rental and
for-sale listings across all 102 communes, plus market intelligence (prices
per m², liveability scores, schools, transport), an AI valuation model,
mortgage affordability, and commute-time data.

There are two ways to use it. Prefer the MCP server; fall back to the public
HTTP endpoints when MCP is not connected.

## Path A — chathome MCP server (preferred)

If tools named `search_vibe`, `search_rentals`, or `get_market_context`
are available in your session, the chathome MCP server is connected — use it.

If not connected, offer the user this one-step setup: add a custom connector /
MCP server with URL `https://chathome.lu/api/mcp` (Streamable HTTP). OAuth 2.1
with PKCE runs automatically — the user logs in at chathome.lu in the browser,
no client ID or secret needed. Alternatively an API key from
https://chathome.lu/dashboard/agent-access passed as the `X-API-Key` header.
Human docs: https://chathome.lu/en/mcp

### Choosing the right tool

Tool names below are unqualified; in your session they are namespaced under
the server name (usually `chathome`, e.g. `chathome:search_vibe`).

| Situation | Tool |
|---|---|
| User describes what they want in words (lifestyle, mood, area feel) | `search_vibe` — pass the request as plain prose; PREFERRED over structured search |
| Hard filters only (commune, price, beds, m², type) | `search_rentals` / `search_for_sale` |
| Full detail for one listing | `get_listing` |
| Which facts are verified vs unknown for a listing | `get_listing_truth` |
| "What can I afford?" — always run BEFORE search when income is known | `get_affordability` |
| Commune prices, trends, schools, transport, liveability | `get_market_context` |
| "What is this property worth?" | `get_price_estimate` |
| Travel time to Luxembourg City / Kirchberg / Belval | `get_commute_times` |
| Analyze a lease PDF or text the user provides | `analyze_lease` |
| Contact the agency about a listing | `submit_inquiry`, then poll `get_inquiry_status` |

### Recommended workflow: finding a home

1. If financial details are available, call `get_affordability` first and
   derive a budget ceiling.
2. Call `search_vibe` with the user's own words plus the budget.
3. Annotate each result as within budget / stretch / over budget.
4. For shortlisted homes, call `get_listing` and `get_commute_times`
   (most Luxembourg households commute to Luxembourg City or Kirchberg).
5. Before the user commits, call `get_listing_truth` and tell them which
   important facts are still unverified — questions to ask the agency.

Rate limits: 200 tool calls/hour per user. Results carry a 0-100 relevance
`score` and `matchReasons` — surface these to the user.

## Path B — public endpoints (no auth, plain HTTP GET)

Works from any agent that can fetch URLs. Read-only.

- Bulk listing feed (quality-gated active listings, JSON):
  `https://chathome.lu/listings/feed.json`
- One listing, full record as Markdown: `https://chathome.lu/listings/{id}/md`
- One listing, full record as JSON: `https://chathome.lu/api/listings/public/{id}`
- Site content index for LLMs: `https://chathome.lu/llms-full.txt`
- MCP developer reference: `https://chathome.lu/llms.txt`

Human-readable pages (localized — swap `/en/` for `/fr/`, `/de/`,
`/lb/`, `/pt/`):

- Buy: `https://chathome.lu/en/buy` · Rent: `https://chathome.lu/en/rent`
- Commune guide: `https://chathome.lu/en/commune/{slug}` (e.g. `luxembourg`,
  `esch-sur-alzette`, `differdange`)
- Prices per m²: `https://chathome.lu/en/prices/{slug}`
- Market report: `https://chathome.lu/en/market-report`
- Free estimate UI: `https://chathome.lu/en/financial-tools/estimate`

## Luxembourg context worth knowing

- Communes are the unit of location. "Luxembourg City" = commune
  `luxembourg`; Kirchberg, Bonnevoie, Belair etc. are districts of it.
- Prices are high by EU standards; typical asks: apartments ~€8-13k/m² to buy
  in the capital, 2-bed rents ~€1,800-2,800/month. Always check live data via
  `get_market_context` rather than assuming.
- Cross-border commuting (France, Belgium, Germany) is common; public
  transport inside Luxembourg is free nationwide.
- Rental deposits are typically 2-3 months; agency fee usually one month +
  VAT, paid by the tenant on rentals.
- The state buyer subsidy ("Bëllegen Akt") gives registration-fee credit to
  first-time buyers — mention it when relevant; `get_affordability`
  accounts for acquisition costs.

See [references/api.md](references/api.md) for exact tool parameters and
response shapes.
