real_estate_intel
ActiveTool of @gapup/mcp-knowledge
Real estate intelligence aggregator with a best-in-class French dataset (DVF — Demandes de Valeurs Foncières — 100% of FR transactions since 2019, public, keyless) plus UK Land Registry Price Paid (all UK transactions 1995+). Four modes: (1) property — full transaction history for a specific address; (2) comparables — median/std price/m² within a radius (default 500m); (3) market — annual price series, YoY change, volume, trend by commune; (4) valuation — two-method estimate (comparables median + hedonic regression if n≥30) with confidence scoring (high/medium/low). All sources are free and require no API key. ICP: PropTech agents, REITs, fund managers, family offices, insurance. SLA: ≤25s p95 (sources fetched in parallel, 8s budget each). Cache: 24h TTL (DVF data is stable). Quality score: 30 pts DVF retrieved, 20 pts geocoding, 20 pts UK LR retrieved, 15 pts if comparables count ≥10, 15 pts if method quality achieved. Status: failed/<60/≥60 → failed/partial/final. No env vars required.
Parameters schema
{
"type": "object",
"required": [
"mode",
"location"
],
"properties": {
"mode": {
"enum": [
"property",
"comparables",
"market",
"valuation"
],
"type": "string",
"description": "property: transactions at an address | comparables: sample around a point | market: commune/neighbourhood market stats | valuation: price estimate for a given surface"
},
"async": {
"type": "boolean",
"description": "If true, returns a job_id immediately (<200ms) instead of waiting for the result. Poll the result with job_result(job_id). Use for slow tools to avoid client timeouts."
},
"date_to": {
"type": "string",
"description": "ISO date YYYY-MM-DD — latest transaction date"
},
"location": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude"
},
"lon": {
"type": "number",
"description": "Longitude"
},
"city": {
"type": "string",
"description": "City name"
},
"address": {
"type": "string",
"description": "Street address (full or partial)"
},
"country": {
"type": "string",
"description": "ISO country code or full name"
},
"radius_m": {
"type": "number",
"description": "Search radius in metres for comparables (default 500)"
},
"insee_code": {
"type": "string",
"description": "French INSEE commune code (5 digits, e.g. '75104' for Paris 4e)"
}
},
"description": "Location descriptor. One of: {address, city?, country?} | {lat, lon, radius_m?} | {insee_code} for FR communes."
},
"date_from": {
"type": "string",
"description": "ISO date YYYY-MM-DD — earliest transaction date"
},
"max_results": {
"type": "number",
"maximum": 50,
"minimum": 5,
"description": "Maximum number of results to return (5–50, default 20)"
},
"surface_max": {
"type": "number",
"description": "Maximum surface in m² (±20% tolerance applied for comparables)"
},
"surface_min": {
"type": "number",
"description": "Minimum surface in m² (±20% tolerance applied for comparables)"
},
"property_type": {
"enum": [
"apartment",
"house",
"land",
"commercial",
"all"
],
"type": "string",
"description": "Filter by property type (default: all)"
}
}
}No endpoints wrapped at confidence ≥ 0.70.
Parent server
@gapup/mcp-knowledge
https://github.com/getgapup/gapup-mcp
2/7 registries