{
  "name": "ChatHome",
  "description": "Grande Région real estate platform with 14 MCP tools for region-wide property search, Luxembourg market intelligence, lease analysis, and listing inquiries. 2 read-only tools (search_vibe, get_market_context) run with no account at all; the rest need an API key or OAuth.",
  "version": "1.5.0",
  "mcpVersion": "2025-11-25",
  "serverUrl": "https://chathome.lu/api/mcp",
  "transport": "streamable-http",
  "healthUrl": "https://chathome.lu/api/mcp/health",
  "authentication": {
    "type": "oauth2",
    "required": false,
    "requiredForToolCalls": false,
    "anonymousTools": [
      "search_vibe",
      "get_market_context"
    ],
    "authorizationUrl": "https://chathome.lu/.well-known/oauth-authorization-server"
  },
  "openapi": "https://chathome.lu/openapi.json",
  "capabilities": {
    "tools": true,
    "resources": true,
    "prompts": true
  },
  "tools": [
    {
      "name": "search_vibe",
      "title": "Vibe Search",
      "description": "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. Returns listings ranked by relevance with a 0-100 score, match reasons, source-checked public facts, photo URLs, and a canonical chathome.lu URL; thumbnail photos of the top results are attached as image content blocks.",
      "scope": "listings:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "search_rentals",
      "title": "Search Rental Listings",
      "description": "Search rental properties across supported Grande Région inventory by location, price, beds, area, and property type. Results include source-checked public facts, photo URLs, and a canonical chathome.lu URL; thumbnails of the top results are attached as image content blocks.",
      "scope": "listings:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "search_for_sale",
      "title": "Search Properties For Sale",
      "description": "Search properties for sale across supported Grande Région inventory by location, price, beds, area, and property type. Results include source-checked public facts, photo URLs, and a canonical chathome.lu URL; thumbnails of the top results are attached as image content blocks.",
      "scope": "listings:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "render_listing_cards",
      "title": "Show Listing Cards",
      "description": "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.",
      "scope": "listings:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "get_listing",
      "title": "Get Listing Details",
      "description": "Get source-checked public facts for a property by ID, with canonical URL and available gallery photos. Facts without source evidence are returned as unknown rather than guessed.",
      "scope": "listings:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "get_listing_truth",
      "title": "Get Listing Truth",
      "description": "Trust-layer view of a listing: known facts, their sources, freshness/verification, which important facts are still unknown (to confirm with the agent), and a privacy-safe summary of user-reported corrections. No reporter identities are exposed.",
      "scope": "listings:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "get_market_context",
      "title": "Get Market Context",
      "description": "Get real estate market data and liveability scores for a commune — prices, trends, schools, transport.",
      "scope": "market:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "get_town_agencies",
      "title": "Get Town Agencies",
      "description": "Get every estate agency with active listings in a supported Luxembourg town, including current buy/rent stock and asking-price ranges.",
      "scope": "market:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "get_price_estimate",
      "title": "Get Price Estimate",
      "description": "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.",
      "scope": "market:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "get_affordability",
      "title": "Get Affordability",
      "description": "Calculate Luxembourg mortgage affordability and state whether the property-price ceiling includes every acquisition cost or only currently known costs.",
      "scope": "market:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "get_commute_times",
      "title": "Get Commute Times",
      "description": "Commute time estimates from a Luxembourg commune to a major employment hub (Luxembourg City, Kirchberg EU Quarter, or Belval) across four transport modes.",
      "scope": "market:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "analyze_lease",
      "title": "Analyze Lease",
      "description": "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.",
      "scope": "documents:write",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "submit_inquiry",
      "title": "Submit Inquiry",
      "description": "Submit an inquiry about a listing. For chathome-hosted listings creates a conversation thread; for external agency listings returns agency contact details.",
      "scope": "inquiries:write",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_inquiry_status",
      "title": "Get Inquiry Status",
      "description": "Poll an MCP agent inquiry conversation for agent replies. Returns the current status and full message thread.",
      "scope": "inquiries:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    }
  ],
  "resources": [
    {
      "uriTemplate": "chathome://listing/{id}",
      "description": "A ChatHome property listing by ID"
    }
  ],
  "prompts": [
    {
      "name": "find-family-home",
      "description": "Guided search for family-friendly rental properties across the Grande Région."
    },
    {
      "name": "compare-communes",
      "description": "Side-by-side comparison of two Luxembourg communes using market and liveability data."
    },
    {
      "name": "match-properties",
      "description": "Compose affordability and vibe search; only use complete or user-stated ceilings definitively, and keep known-cost-only comparisons provisional."
    }
  ],
  "contact": {
    "website": "https://chathome.lu",
    "documentation": "https://chathome.lu/mcp",
    "developerReference": "https://chathome.lu/llms.txt",
    "contentIndex": "https://chathome.lu/llms-full.txt",
    "agentSkill": "https://chathome.lu/skills/chathome/SKILL.md"
  },
  "categories": [
    "real-estate",
    "housing",
    "property-search"
  ],
  "geography": {
    "listingSearchCoverage": "Grande Région",
    "marketDataCoverage": "Luxembourg",
    "languages": [
      "en",
      "fr",
      "de",
      "lu",
      "pt"
    ]
  }
}