Parcellaire — cadastre, DVF & DPE

French real estate data: cadastre, DVF sales, DPE energy ratings, price estimates, parcel context

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
83%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~6,902Tokens (tool definitions)
~4.3 KBTypical response size
Significant attention impact (5.39% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "parcellaire": {
      "url": "https://parcellai.re/api/mcp"
    }
  }
}

Remote endpoints

https://parcellai.re/api/mcpstreamable-http

What it can do

Tool inventory

Tools (12)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_communes(query)

Recherche une commune française par nom ou code postal. Retourne le code INSEE (nécessaire pour get_commune_stats), les coordonnées et l'URL de la page cadastre quand elle existe. À utiliser en premier quand on ne connaît que le nom d'une ville.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Nom de commune ou code postal, ex: 'Bordeaux' ou '33000'"
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢find_parcelles_by_address(address)

Géocode une adresse postale française (Base Adresse Nationale) puis retourne la ou les parcelles cadastrales correspondantes avec leur IDU. L'IDU permet ensuite d'appeler get_parcelle. Donner l'adresse la plus complète possible (numéro, rue, commune).

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "minLength": 3,
      "description": "Adresse postale, ex: '10 quai des Chartrons, Bordeaux'"
    }
  },
  "required": [
    "address"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_parcelle(parcelle_id, include, max_items)

Retourne les informations d'une parcelle cadastrale à partir de son IDU (14 caractères) : surface, adresse, parcelles adjacentes (qui la touchent, avec surface, bâti et nombre de DPE), et selon 'include' les bâtiments, transactions immobilières (dvf), diagnostics énergétiques (dpes), zonage d'urbanisme (urbanisme), données bâtiment BDNB (bdnb), piscines, copropriétés (rnc), propriétaires personnes morales (majic_pm), permis de construire (sitadel).

Input Schema

{
  "type": "object",
  "properties": {
    "parcelle_id": {
      "type": "string",
      "minLength": 14,
      "maxLength": 14,
      "description": "IDU de la parcelle, 14 caractères, ex: '33063000IK0001'"
    },
    "include": {
      "description": "Sections à inclure. Défaut: ['batiments', 'dvf', 'dpes']",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "batiments",
                  "dvf",
                  "dpes",
                  "urbanisme",
                  "bdnb",
                  "piscines",
                  "rnc",
                  "majic_pm",
                  "sitadel"
                ]
              }
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "max_items": {
      "description": "Nombre maximum d'éléments par section liste (défaut 30). Les sections tronquées sont signalées dans 'sections_tronquees'.",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 200
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "parcelle_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_dpe(dpe_id)

Retourne le résumé d'un DPE à partir de son numéro ADEME (13 caractères, présent sur les annonces immobilières et les diagnostics) : classe énergie, GES, surface, type de bien, localisation, ainsi qu'une estimation de prix du bien quand elle est possible.

Input Schema

{
  "type": "object",
  "properties": {
    "dpe_id": {
      "type": "string",
      "minLength": 8,
      "description": "Numéro ADEME du DPE, ex: '2233E1234567X'"
    }
  },
  "required": [
    "dpe_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢estimate_property_price(address, lat, lng, code_insee, type_bien, ...)

Estime le prix de vente d'une maison ou d'un appartement en France à partir des transactions DVF récentes et d'un modèle statistique national. Localisation par 'address' OU par 'lat' + 'lng' + 'code_insee'. Retourne un prix total, une fourchette, un prix au m² et des facteurs explicatifs.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "description": "Adresse du bien (option la plus simple)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "lat": {
      "description": "Latitude, si pas d'adresse",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "lng": {
      "description": "Longitude, si pas d'adresse",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "code_insee": {
      "description": "Code INSEE de la commune, si pas d'adresse",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "minLength": 5,
              "maxLength": 5
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "type_bien": {
      "type": "string",
      "enum": [
        "maison",
        "appartement"
      ]
    },
    "surface_m2": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Surface habitable en m²"
    },
    "classe_dpe": {
      "description": "Classe DPE si connue (affine l'estimation)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "annee_construction": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "terrain_m2": {
      "description": "Surface du terrain en m² (maisons)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "type_bien",
    "surface_m2"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_commune_stats(insee_id, commune)

Retourne les statistiques d'une commune française : parcelles et bâtiments, prix au m² et volumes de transactions DVF par année, répartition des classes DPE, taux de propriétaires, logements vacants, etc. Identifier la commune par 'insee_id' (fiable) ou par 'commune' (nom ou code postal).

Input Schema

{
  "type": "object",
  "properties": {
    "insee_id": {
      "description": "Code INSEE de la commune (prioritaire si fourni)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "minLength": 5,
              "maxLength": 5
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "commune": {
      "description": "Nom ou code postal de la commune, ex: 'Bordeaux'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search_parcelles(region, departement, commune, viewport, surface_parcelle_m2, ...)

Recherche des parcelles cadastrales dans une zone avec les filtres de la carte parcellai.re/carte : surfaces, DPE, ventes DVF, année de construction, piscines, permis de construire, copropriétés, propriétaires personnes morales… Définir la zone par 'commune' (nom), 'departement' (code ou nom), 'region' (code ou nom) OU par 'viewport'. Région + SIREN est supporté sans commune. Omettre les filtres non demandés ; une valeur vide ou null signifie aucun filtre. Retourne le nombre total de parcelles, une PAGE de résultats détaillés et un lien vers la carte interactive. Résultats paginés : 'nb_parcelles' est le total, mais seules 'limit' parcelles (défaut 20, max 50) sont détaillées à partir de 'offset'. Vérifier 'pagination.has_more' et relancer avec 'offset' = 'pagination.next_offset' pour les pages suivantes. Si la zone est trop large, retourne une répartition agrégée par commune.

Input Schema

{
  "type": "object",
  "properties": {
    "region": {
      "description": "Nom ou code INSEE de la région, ex: 'Bretagne', 'Île-de-France', '52'. Recherche dans tous ses départements couverts (France métropolitaine hors Corse).",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "departement": {
      "description": "Code ou nom du département, ex: '49', 'Maine-et-Loire'. Peut aussi restreindre une commune ou un viewport.",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "commune": {
      "description": "Nom de la commune où chercher, ex: 'Angers'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "viewport": {
      "description": "Zone géographique explicite (alternative à commune). Hauteur ≤ 20 km pour un détail parcelle par parcelle",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "sw_lat": {
                  "type": "number"
                },
                "sw_lng": {
                  "type": "number"
                },
                "ne_lat": {
                  "type": "number"
                },
                "ne_lng": {
                  "type": "number"
                }
              },
              "required": [
                "sw_lat",
                "sw_lng",
                "ne_lat",
                "ne_lng"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "surface_parcelle_m2": {
      "description": "Une seule surface de parcelle en m² par appel. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum). Un entier seul est quasi exact (tolérance d'arrondi) : pour une surface approximative (« environ 600 m² »), passer une plage, ex: '540-660'. Pour plusieurs surfaces exactes, effectuer un appel séparé par surface; ne jamais fournir de tableau ni de liste séparée par des virgules.",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "surface_habitable_m2": {
      "description": "Surface habitable (DPE) en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum). Un entier seul est quasi exact : pour une surface approximative, passer une plage, ex: '135-145'.",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "surface_batiment_m2": {
      "description": "Emprise au sol d'un bâtiment en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "nombre_batiments": {
      "description": "Nombre de bâtiments sur la parcelle. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "annee_construction": {
      "description": "Année de construction (BDNB). Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "classe_dpe": {
      "description": "Classe énergie d'un logement. Clé exacte: classe_dpe; valeur: une lettre A-G.",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "conso_dpe_kwh_m2": {
      "description": "Consommation énergie primaire en kWh/m²/an (alternative à classe_dpe). Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "classe_ges": {
      "description": "Classe GES. Clé exacte: classe_ges; valeur: une lettre A-G.",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "date_dpe": {
      "description": "Date d'établissement du DPE. Format: '2021', '2021-06', ou plage '2019-2024'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "prix_vente_eur": {
      "description": "Prix de la dernière vente DVF en euros. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "date_vente": {
      "description": "Date de vente DVF. Format: '2021', '2021-06', ou plage '2019-2024'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "has_piscine": {
      "description": "Uniquement les parcelles avec piscine",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "surface_piscine_m2": {
      "description": "Surface de la piscine en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "has_permis_construire": {
      "description": "Uniquement les parcelles avec permis de construire",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "date_permis_construire": {
      "description": "Date du permis de construire. Format: '2021', '2021-06', ou plage '2019-2024'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "has_copropriete": {
      "description": "Uniquement les parcelles en copropriété",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "has_proprietaire_personne_morale": {
      "description": "Uniquement les parcelles détenues par une personne morale (société, collectivité…)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "siren": {
      "description": "SIREN du propriétaire personne morale",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "limit": {
      "description": "Nombre de parcelles détaillées retournées par page (défaut 20, max 50)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 50
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "offset": {
      "description": "Index de départ pour la pagination (défaut 0). Utiliser pagination.next_offset pour la page suivante.",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢geolocate_listing(url)

Analyse l'URL d'une annonce immobilière française (SeLoger, PAP, Bien'ici, Le Figaro Immobilier…) : extrait les caractéristiques du bien (surface, DPE, commune, terrain) puis identifie les parcelles cadastrales candidates en croisant avec la base des DPE. Service gratuit avec une limite GLOBALE de 10 analyses par heure tous utilisateurs MCP confondus — si la limite est atteinte (erreur 429), NE PAS réessayer immédiatement.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "URL complète de l'annonce immobilière"
    }
  },
  "required": [
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_parcelle_context(parcelle_id, risques, fibre, loyers, ecoles, ...)

Retourne l'environnement d'une parcelle cadastrale (IDU 14 caractères) à partir de sources publiques (Géorisques, ARCEP, ministère de l'Éducation, observatoires des loyers…). Passer à true uniquement les sections utiles à la question, ex: { risques: true, fibre: true }. Sans aucune section à true, aucune donnée d'environnement n'est retournée.

Input Schema

{
  "type": "object",
  "properties": {
    "parcelle_id": {
      "type": "string",
      "minLength": 14,
      "maxLength": 14,
      "description": "IDU de la parcelle, 14 caractères, ex: '33063000IK0001'"
    },
    "risques": {
      "description": "Risques Géorisques : inondation, argiles, radon, sismicité, pollution…",
      "type": "boolean"
    },
    "fibre": {
      "description": "Éligibilité fibre et opérateurs (ARCEP)",
      "type": "boolean"
    },
    "loyers": {
      "description": "Loyers de référence en €/m²",
      "type": "boolean"
    },
    "ecoles": {
      "description": "Écoles proches",
      "type": "boolean"
    },
    "secteur_scolaire": {
      "description": "Établissements du secteur scolaire",
      "type": "boolean"
    },
    "commerces": {
      "description": "Commerces proches",
      "type": "boolean"
    },
    "sante": {
      "description": "Médecins, pharmacies… proches",
      "type": "boolean"
    },
    "recharge": {
      "description": "Bornes de recharge proches",
      "type": "boolean"
    },
    "restrictions_eau": {
      "description": "Arrêtés de restriction d'eau (sécheresse) en cours",
      "type": "boolean"
    },
    "terrain": {
      "description": "Relief et altitude",
      "type": "boolean"
    },
    "emprise": {
      "description": "Emprise du bâti au sol",
      "type": "boolean"
    },
    "filiation": {
      "description": "Historique des découpages cadastraux",
      "type": "boolean"
    }
  },
  "required": [
    "parcelle_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢find_parcelles_by_criteria(commune, code_postal, type_bien, surface_habitable_m2, surface_terrain_m2, ...)

Identifie les parcelles candidates d'un bien immobilier à partir de ses caractéristiques (celles d'une annonce : commune, surface, classe et consommation DPE, GES, date du DPE, année de construction, terrain), en croisant avec la base des DPE et des ventes DVF. Équivalent sans URL ni quota de geolocate_listing. Plus il y a de critères DPE (consommation en kWh/m²/an, émissions GES, date), plus le résultat est précis. Retourne jusqu'à 10 candidates triées par score.

Input Schema

{
  "type": "object",
  "properties": {
    "commune": {
      "description": "Nom de la commune, ex: 'Angers'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "code_postal": {
      "description": "Code postal, ex: '49100'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "minLength": 5,
              "maxLength": 5
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "type_bien": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "maison",
                "appartement"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "surface_habitable_m2": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "surface_terrain_m2": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "classe_dpe": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "conso_dpe_kwh_m2": {
      "description": "Consommation énergie primaire en kWh/m²/an",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "classe_ges": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "ges_kg_m2": {
      "description": "Émissions GES en kg CO2/m²/an",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "date_dpe": {
      "description": "Date du DPE, 'AAAA-MM' ou 'AAAA-MM-JJ'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "annee_construction": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search_dpe(address, parcelle_id, lat, lng, commune, ...)

Liste les diagnostics de performance énergétique (DPE ADEME) d'une zone : autour d'une adresse, d'une parcelle ou d'un point (rayon), ou dans toute une commune. Filtres : type de bâtiment, classes énergie/GES, surface, année de construction, date du DPE. Avec 'address' (numéro + rue), retourne aussi les DPE rattachés exactement à cette adresse. Résultats triés du plus récent au plus ancien et paginés ('limit', 'offset').

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "description": "Adresse postale au centre de la zone",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "minLength": 3
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "parcelle_id": {
      "description": "IDU d'une parcelle au centre de la zone",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "minLength": 14,
              "maxLength": 14
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "lat": {
      "description": "Latitude du centre (avec 'lng')",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "lng": {
      "description": "Longitude du centre (avec 'lat')",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "commune": {
      "description": "Nom de commune : toute la commune (ignore 'rayon_m')",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "rayon_m": {
      "description": "Rayon autour du centre en mètres (défaut 500, max 2000)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 50,
              "maximum": 2000
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "type_batiment": {
      "description": "'immeuble' = DPE d'immeuble collectif entier",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "maison",
                "appartement",
                "immeuble"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "classe_dpe": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "classe_ges": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "surface_min_m2": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "surface_max_m2": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "annee_construction_min": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "annee_construction_max": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "date_dpe_min": {
      "description": "Date minimale du DPE, 'AAAA-MM-JJ'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "date_dpe_max": {
      "description": "Date maximale du DPE, 'AAAA-MM-JJ'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "limit": {
      "description": "DPE par page (défaut 20, max 50)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 50
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "offset": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 5000
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search_ventes_dvf(address, parcelle_id, lat, lng, commune, ...)

Liste les ventes immobilières (DVF) d'une zone : autour d'une adresse, d'une parcelle ou d'un point (rayon), ou dans toute une commune — idéal pour trouver des biens comparables. Une ligne par vente : date, prix, type de bien, surface bâtie, pièces, terrain, parcelles, prix au m² (quand la vente porte sur un seul logement). Retourne aussi la médiane du prix au m² des ventes filtrées. Seules les ventes géolocalisées sont couvertes (depuis 2021). Filtrer par 'type_bien' pour des prix au m² comparables.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "description": "Adresse postale au centre de la zone",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "minLength": 3
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "parcelle_id": {
      "description": "IDU d'une parcelle au centre de la zone",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "minLength": 14,
              "maxLength": 14
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "lat": {
      "description": "Latitude du centre (avec 'lng')",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "lng": {
      "description": "Longitude du centre (avec 'lat')",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "commune": {
      "description": "Nom de commune : toute la commune (ignore 'rayon_m')",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "rayon_m": {
      "description": "Rayon autour du centre en mètres (défaut 500, max 2000)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 50,
              "maximum": 2000
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "type_bien": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "maison",
                "appartement",
                "local"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "surface_min_m2": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "surface_max_m2": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "prix_min_eur": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "prix_max_eur": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "date_min": {
      "description": "Date minimale 'AAAA-MM-JJ' (défaut 2021-01-01)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "date_max": {
      "description": "Date maximale 'AAAA-MM-JJ'",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "tri": {
      "description": "Tri des ventes (défaut : date décroissante ; distance pour les plus proches)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "date",
                "distance"
              ]
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "limit": {
      "description": "Ventes par page (défaut 20, max 50)",
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 50
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "offset": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 5000
            },
            {
              "type": "string",
              "const": ""
            }
          ]
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools