{
  "name": "normi",
  "display_name": "Normi — French Real Estate Data (DVF + DPE + BDNB)",
  "description": "MCP server providing structured access to French property data. Query DVF transaction prices by commune, département or region. Find comparables, analyze price trends, compare neighborhoods, get market health scores, and run automated property valuations (AVM). Includes DPE energy performance data: green premium by class, thermal sieve share, and price impact of energy ratings. Includes BDNB building stock data: construction year, materials, renovation potential, and age-based price premiums. Portfolio management and webhook alerts for Pro/Enterprise users. 17M+ DVF transactions, 22.5M+ DPE diagnostics, and 20M+ BDNB buildings since 2014.",
  "version": "1.2.0",
  "homepage": "https://normi.fr",
  "docs": "https://normi.fr/docs",
  "transport": {
    "http": "https://mcp.normi.fr/mcp",
    "auth": ["oauth2", "bearer"],
    "oauth_protected_resource": "https://mcp.normi.fr/.well-known/oauth-protected-resource/mcp",
    "auth_note": "Sign in with OAuth 2.1 (paste the URL into claude.ai, ChatGPT or any remote MCP client and approve), or send a Normi API key as a Bearer token. Free tier: 500 credits/month, no payment required."
  },
  "languages": ["fr", "en"],
  "categories": ["real-estate", "data", "france", "property", "finance", "energy"],
  "datasets": [
    {
      "id": "dvf",
      "name": "DVF — Demandes de Valeurs Foncières",
      "description": "All French property sales since 2014. Price, area, type, location. 17M+ transactions.",
      "coverage": "France métropolitaine + DOM-TOM",
      "update_frequency": "annual",
      "source": "DGFiP (Direction Générale des Finances Publiques)",
      "source_url": "https://www.data.gouv.fr/fr/datasets/demandes-de-valeurs-foncieres/"
    },
    {
      "id": "dpe",
      "name": "DPE — Diagnostics de Performance Énergétique",
      "description": "Energy performance certificates for French buildings. 22.5M+ records. Cross-referenced with DVF to expose price impact of energy ratings.",
      "coverage": "France métropolitaine",
      "update_frequency": "weekly incremental",
      "source": "ADEME (Agence de la transition écologique)",
      "source_url": "https://data.ademe.fr/datasets/dpe-v2-logements-existants"
    },
    {
      "id": "bdnb",
      "name": "BDNB — Base de Données Nationale des Bâtiments",
      "description": "National building database covering 20M+ French buildings. Construction year, number of floors, number of housing units, wall and roof materials, primary usage. Cross-referenced with DVF transactions by spatial proximity to enrich property data with building characteristics.",
      "coverage": "France métropolitaine",
      "update_frequency": "annual",
      "source": "CSTB (Centre Scientifique et Technique du Bâtiment)",
      "source_url": "https://bdnb.io"
    }
  ],
  "tools": [
    {
      "name": "search_properties",
      "credits": 5,
      "description": "Search DVF property transactions with location, type, price and surface filters. Returns individual transactions or summary stats."
    },
    {
      "name": "get_market_stats",
      "credits": 5,
      "description": "Get aggregate market statistics for a location: median/average price, price per m², transaction count."
    },
    {
      "name": "find_comparables",
      "credits": 10,
      "description": "Find comparable recent sales near a target property for valuation. Returns similarity scores and estimated value."
    },
    {
      "name": "get_price_trends",
      "credits": 10,
      "description": "Analyze price evolution over time for a location. Returns time series with month/quarter/year granularity."
    },
    {
      "name": "compare_neighborhoods",
      "credits": 10,
      "description": "Side-by-side comparison of 2-5 locations: price per m², volume, year-over-year change."
    },
    {
      "name": "get_market_activity",
      "credits": 10,
      "description": "Analyze transaction volume and market activity level (hot/normal/slow) with seasonality."
    },
    {
      "name": "get_market_heatmap",
      "credits": 15,
      "description": "Aggregated market data by postal code zone for an entire department or major city."
    },
    {
      "name": "get_property_history",
      "credits": 20,
      "description": "Full transaction history for a specific address, with price appreciation and annualized return."
    },
    {
      "name": "estimate_property",
      "credits": 10,
      "description": "Automated property valuation (AVM) — returns a backtest-calibrated low/mid/high price range and how much the nearby comparables agree."
    },
    {
      "name": "get_market_score",
      "credits": 10,
      "description": "Market health score (0–100) for a location: combines transaction volume trend, price trend, and price dispersion."
    },
    {
      "name": "get_dpe_stats",
      "credits": 10,
      "description": "DPE energy class distribution for a location: count and share of A–G rated properties, average energy consumption."
    },
    {
      "name": "get_dpe_premium",
      "credits": 10,
      "description": "Price premium/discount of energy performance ratings. Shows how much A/B-rated properties sell above D (baseline) and F/G below."
    },
    {
      "name": "dpe_market_analysis",
      "credits": 10,
      "description": "Combined DPE market analysis: prix médians par classe A–G, prime verte (A/B premium over D), passoires thermiques share (F/G), and yearly evolution since 2014."
    },
    {
      "name": "portfolio_add",
      "credits": 10,
      "description": "Add a property to your portfolio. Automatically computes an AVM estimate for Maison/Appartement (10 credits) or stores metadata only for other types (2 credits)."
    },
    {
      "name": "portfolio_list",
      "credits": 0,
      "description": "List all properties in your portfolio with cached estimates."
    },
    {
      "name": "portfolio_get",
      "credits": 0,
      "description": "Get a single portfolio property by ID. Auto-refreshes estimates older than 30 days (10 credits if refresh triggered)."
    },
    {
      "name": "portfolio_update",
      "credits": 0,
      "description": "Update metadata for a portfolio property. Changing location, surface or type invalidates the cached estimate."
    },
    {
      "name": "portfolio_delete",
      "credits": 0,
      "description": "Permanently delete a property from your portfolio."
    },
    {
      "name": "alert_create",
      "credits": 0,
      "description": "Create a webhook alert for new DVF transactions matching your criteria (location, type, price range). Fires a POST to your webhook_url on each match. Pro/Enterprise plan required."
    },
    {
      "name": "alert_list",
      "credits": 0,
      "description": "List all webhook alerts (active and inactive) for this API key. Pro/Enterprise plan required."
    },
    {
      "name": "alert_update",
      "credits": 0,
      "description": "Update an existing webhook alert filters or webhook URL. Set is_active: false to pause without deleting. Pro/Enterprise plan required."
    },
    {
      "name": "alert_delete",
      "credits": 0,
      "description": "Permanently delete a webhook alert. Pro/Enterprise plan required."
    },
    {
      "name": "get_building_context",
      "credits": 2,
      "description": "Get building characteristics (construction year, floors, wall material) from the BDNB national building database for a DVF transaction ID."
    },
    {
      "name": "analyze_building_age_prices",
      "credits": 10,
      "description": "Median price/m² by construction decade for a location — shows the premium or discount of each building era vs. the area median."
    },
    {
      "name": "score_renovation_potential",
      "credits": 10,
      "description": "Score (0–100) renovation opportunity: identifies pre-1975 buildings priced below the area median, with discount magnitude and dominant wall material."
    },
    {
      "name": "analyze_building_stock",
      "credits": 5,
      "description": "Aggregate building stock from BDNB by construction decade, usage type, and housing units. Counts ALL buildings, not just those with DVF sales records."
    }
  ]
}
