Skip to content

chathome.lu — Luxembourg Real Estate

by chathome.lu · remote · no sign-in to list tools · v1.0.0 · published by lu.chathome

Luxembourg real estate for AI agents: property search, price estimates, market data, commutes.

Deletes · 1Changes · 2

15 tools: 1 can delete or cancel things, 2 change things and 12 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http chathome https://chathome.lu/api/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "analyze_lease" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "analyze_lease" says "analyze": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

15 tools

Deletes or cancels 1Claude Code: deny
  • submit_inquirySubmit an inquiry about a listing.No findings

    Why it is in this group

    • The name "submit_inquiry" says "submit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Submit an inquiry about a listing. For chathome-hosted listings creates a conversation thread; for external agency listings returns agency contact details.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
Changes things 2Claude Code: ask
  • analyze_leaseAnalyze a caller-provided Luxembourg residential lease PDF or raw text, persist the full user-scoped analysis, and return a compact risk summary.1 finding

    Why it is in this group

    • The name "analyze_lease" says "analyze": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "analyze_lease" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "analyze_lease" says "analyze": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • render_listing_cardsRender one to eight exact results from a prior property search as an interactive MCP Apps photo carousel.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 12Claude Code: allow
  • compare_listingsCompare two to eight listings through one normalized AgentListing v2 response, including known and estimated costs, availability, property facts, official flood/noise checks, stati…No findings

    Why it is in this group

    • The name "compare_listings" says "compare": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_affordabilityCalculate Luxembourg mortgage affordability and state whether the property-price ceiling includes every acquisition cost or only currently known costs.No findings

    Why it is in this group

    • The name "get_affordability" says "get": a word for reading.
    Description, as the server wrote it
    Calculate Luxembourg mortgage affordability and state whether the property-price ceiling includes every acquisition cost or only currently known costs.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_commute_timesCommute time estimates from a Luxembourg commune to a major employment hub (Luxembourg City, Kirchberg EU Quarter, or Belval) across four transport modes.No findings

    Why it is in this group

    • The name "get_commute_times" says "get": a word for reading.
    Description, as the server wrote it
    Commute time estimates from a Luxembourg commune to a major employment hub (Luxembourg City, Kirchberg EU Quarter, or Belval) across four transport modes.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_inquiry_statusPoll an MCP agent inquiry conversation for agent replies.No findings

    Why it is in this group

    • The name "get_inquiry_status" says "get": a word for reading.
    Description, as the server wrote it
    Poll an MCP agent inquiry conversation for agent replies. Returns the current status and full message thread.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_listingGet the full fail-closed listing page: its public record, price history, area trend, family amenities, neighbourhood facts, property passport, parcel dossier, normalized costs, off…No findings

    Why it is in this group

    • The name "get_listing" says "get": a word for reading.
    Description, as the server wrote it
    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, a summary line built from its facts, proven features and measured area facts with their sources, our saved buy-vs-rent and investor estimate (listingTools: dated rate and rent, yields before and after vacancy, a known-costs-only example that is never a verdict, completeness flags), URL, and photos.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_listing_truthTrust-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 p…No findings

    Why it is in this group

    • The name "get_listing_truth" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_market_contextGet bounded, source-backed property context for a commune, with source dates and unknown states.No findings

    Why it is in this group

    • The name "get_market_context" says "get": a word for reading.
    Description, as the server wrote it
    Get bounded, source-backed property context for a commune, with source dates and unknown states.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_price_estimateAI-powered price estimate for a Luxembourg property.No findings

    Why it is in this group

    • The name "get_price_estimate" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_town_agenciesGet every estate agency with active listings in a supported Luxembourg town, including current buy/rent stock and asking-price ranges.No findings

    Why it is in this group

    • The name "get_town_agencies" says "get": a word for reading.
    Description, as the server wrote it
    Get every estate agency with active listings in a supported Luxembourg town, including current buy/rent stock and asking-price ranges.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_for_saleSearch properties for sale across supported Grande Région inventory by location, price, rooms, area, property type, and positive-evidence amenities, with explicit sort and complete…No findings

    Why it is in this group

    • The name "search_for_sale" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_rentalsSearch active Luxembourg rentals by location, rooms, area, property type, positive-evidence amenities, advertised base rent, or a separate strict confirmed monthly-obligation ceili…No findings

    Why it is in this group

    • The name "search_rentals" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_vibePreferred natural-language ('vibe') property search.No findings

    Why it is in this group

    • The name "search_vibe" says "search": a word for reading.
    Description, as the server wrote it
    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. The response's understanding block states what was understood; wishes in understanding.notChecked are not confirmed for any returned home. If the requested place cannot be resolved safely, it returns no listings plus a machine-readable unanswerable reason instead of substituting unrelated homes.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http chathome https://chathome.lu/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__chathome__search_vibe",
      "mcp__chathome__search_rentals",
      "mcp__chathome__search_for_sale",
      "mcp__chathome__get_listing",
      "mcp__chathome__compare_listings",
      "mcp__chathome__get_listing_truth",
      "mcp__chathome__get_market_context",
      "mcp__chathome__get_town_agencies",
      "mcp__chathome__get_price_estimate",
      "mcp__chathome__get_affordability",
      "mcp__chathome__get_commute_times",
      "mcp__chathome__get_inquiry_status"
    ],
    "ask": [
      "mcp__chathome__render_listing_cards",
      "mcp__chathome__analyze_lease"
    ],
    "deny": [
      "mcp__chathome__submit_inquiry"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as chathome. Review it before you use it.