MCP server for French real-estate intelligence: real sale prices (DVF), transparent comparables-based valuations, official rent indicators & gross yield, energy ratings (DPE), natural risks and commune data for any French address. Zero API keys.
Strong domain-specific tool set with clear, detailed descriptions (avg 180 chars) and comprehensive input schemas using Zod validation. All 10 tools have descriptions and typed parameters with constraints. Naming follows verb_noun pattern (geocode_, property_, price_, estimate_, rent_, dpe_, natural_, commune_, reverse_). Output schemas are not explicitly documented in the source, which is a notable gap. Error handling wraps all tools uniformly but provides only generic 'Error: {message}' responses without recovery guidance. No tool annotations (readOnlyHint, destructiveHint) despite all being read-only operations.
Population, postcodes, département, région, surface and center coordinates of a French commune, by name or INSEE code.
Find official energy performance certificates (DPE: energy label A-G, GES label, surface, construction year) filed for a French address. Source: ADEME open data.
Transparent comparables-based valuation of a flat or house at a precise French address: weighted median of nearby single-dwelling notarized sales, adjusted to current market level, with every comp and weight returned for audit. Also returns the official rent indicator and gross rental yield.
Resolve a French address, street, or city to normalized candidates with coordinates, INSEE city code and BAN id (Base Adresse Nationale). Use this first if an address is ambiguous.
Official risk report for a French address or point: flood, clay shrink-swell, radon, earthquake, industrial sites... Source: Géorisques (Ministère de la Transition écologique).
Output schemas not documented. Tool descriptions explain what is returned (e.g., 'price-per-m² statistics', 'weighted median valuation'), but formal output schema definitions are absent from the source. LLMs cannot reliably extract fields or plan downstream tool chains without knowing the response structure.
Error handling is generic and non-actionable. All tools return 'Error: {message}' with isError=true, but do not categorize errors (retryable vs. user-fixable vs. fatal) or provide recovery guidance. An LLM cannot determine whether to retry, ask the user, or abandon the operation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Compute price-per-m² statistics (median, mean, quartiles, per-year evolution) from actual notarized sales around a French address or across a commune. Data 2021-2025.
One call, full dossier for a French address: price-per-m² market stats, recent notarized sales, energy diagnostics (DPE), natural & technological risks, commune profile, official rent indicators — plus a comparables-based valuation and gross yield when type_local and surface_m2 are provided. Ideal first call when a user asks about a specific property.
List actual notarized property sales (price, date, surface, rooms) recorded by the French tax administration (DVF) around an address, or for a whole commune if only a city is given. Data 2021-2025, no API key.
Official modelled asking rents (€/m²/month, charges included) for any French commune: apartments overall, 1-2 rooms, 3+ rooms, and houses. Source: Carte des loyers, Ministère du Logement / ANIL.
Find the nearest French address for GPS coordinates.
No tool annotations despite all tools being read-only. The MCP spec supports readOnlyHint, destructiveHint, and idempotentHint annotations. All 10 tools are read-only queries against public French government data sources (DVF, ADEME, Géorisques, BAN). Adding readOnlyHint=true would signal to agents that these tools are safe to call speculatively and can be retried without side effects.
Parameter descriptions lack format/constraint details. E.g., 'address' is described as 'Address in France' but does not specify accepted formats (street + number, city name, INSEE code, postal code). 'location' in rent_estimate accepts 'Address, commune name or INSEE code' but the description does not clarify which INSEE format (5-char code like '69123'). LLMs may pass invalid formats.
Pagination and result limits not consistently documented. property_sales and dpe_lookup accept 'limit' parameters with max values (100, 50), but price_per_m2, estimate_property, and rent_estimate do not expose limit controls. If these tools return large result sets, context window exhaustion is possible. Descriptions should state default and max result counts.