MCP 服务器

Parcellaire — cadastre, DVF & DPE

re.parcellai/parcellaire
数据与分析 地图与位置 房地产 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Provides French cadastral, property transaction, energy diagnostic, parcel context, geocoding, and property price estimation data.

estimate_property_price
Estimer le prix d'un bien immobilier
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.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type_bien', 'surface_m2'], 'properties': {'lat': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Latitude, si pas d'adresse"}, 'lng': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Longitude, si pas d'adresse"}, 'address': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Adresse du bien (option la plus simple)'}, 'type_bien': {'enum': ['maison', 'appartement'], 'type': 'string'}, 'classe_dpe': {'anyOf': [{'anyOf': [{'enum': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Classe DPE si connue (affine l'estimation)"}, 'code_insee': {'anyOf': [{'anyOf': [{'type': 'string', 'maxLength': 5, 'minLength': 5}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Code INSEE de la commune, si pas d'adresse"}, 'surface_m2': {'type': 'number', 'description': 'Surface habitable en m²', 'exclusiveMinimum': 0}, 'terrain_m2': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Surface du terrain en m² (maisons)'}, 'annee_construction': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}}, 'additionalProperties': False}
find_parcelles_by_address
Trouver les parcelles d'une adresse
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).
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['address'], 'properties': {'address': {'type': 'string', 'minLength': 3, 'description': "Adresse postale, ex: '10 quai des Chartrons, Bordeaux'"}}, 'additionalProperties': False}
find_parcelles_by_criteria
Retrouver un bien à partir de ses caractéristiques
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.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'commune': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Nom de la commune, ex: 'Angers'"}, 'date_dpe': {'anyOf': [{'anyOf': [{'type': 'string', 'pattern': '^\\d{4}-\\d{2}(-\\d{2})?$'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Date du DPE, 'AAAA-MM' ou 'AAAA-MM-JJ'"}, 'ges_kg_m2': {'anyOf': [{'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Émissions GES en kg CO2/m²/an'}, 'type_bien': {'anyOf': [{'anyOf': [{'enum': ['maison', 'appartement'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'classe_dpe': {'anyOf': [{'anyOf': [{'enum': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'classe_ges': {'anyOf': [{'anyOf': [{'enum': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'code_postal': {'anyOf': [{'anyOf': [{'type': 'string', 'maxLength': 5, 'minLength': 5}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Code postal, ex: '49100'"}, 'conso_dpe_kwh_m2': {'anyOf': [{'anyOf': [{'type': 'number', 'exclusiveMinimum': 0}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Consommation énergie primaire en kWh/m²/an'}, 'annee_construction': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'surface_terrain_m2': {'anyOf': [{'anyOf': [{'type': 'number', 'exclusiveMinimum': 0}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'surface_habitable_m2': {'anyOf': [{'anyOf': [{'type': 'number', 'exclusiveMinimum': 0}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}}, 'additionalProperties': False}
geolocate_listing
Géolocaliser une annonce immobilière
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.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': "URL complète de l'annonce immobilière"}}, 'additionalProperties': False}
get_commune_stats
Statistiques immobilières d'une 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).
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'commune': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Nom ou code postal de la commune, ex: 'Bordeaux'"}, 'insee_id': {'anyOf': [{'anyOf': [{'type': 'string', 'maxLength': 5, 'minLength': 5}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Code INSEE de la commune (prioritaire si fourni)'}}, 'additionalProperties': False}
get_dpe
Diagnostic de performance énergétique (DPE)
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.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dpe_id'], 'properties': {'dpe_id': {'type': 'string', 'minLength': 8, 'description': "Numéro ADEME du DPE, ex: '2233E1234567X'"}}, 'additionalProperties': False}
get_parcelle
Détails d'une parcelle cadastrale
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).
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['parcelle_id'], 'properties': {'include': {'anyOf': [{'anyOf': [{'type': 'array', 'items': {'enum': ['batiments', 'dvf', 'dpes', 'urbanisme', 'bdnb', 'piscines', 'rnc', 'majic_pm', 'sitadel'], 'type': 'string'}}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Sections à inclure. Défaut: ['batiments', 'dvf', 'dpes']"}, 'max_items': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 200, 'minimum': 1}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Nombre maximum d'éléments par section liste (défaut 30). Les sections tronquées sont signalées dans 'sections_tronquees'."}, 'parcelle_id': {'type': 'string', 'maxLength': 14, 'minLength': 14, 'description': "IDU de la parcelle, 14 caractères, ex: '33063000IK0001'"}}, 'additionalProperties': False}
get_parcelle_context
Environnement d'une parcelle
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.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['parcelle_id'], 'properties': {'fibre': {'type': 'boolean', 'description': 'Éligibilité fibre et opérateurs (ARCEP)'}, 'sante': {'type': 'boolean', 'description': 'Médecins, pharmacies… proches'}, 'ecoles': {'type': 'boolean', 'description': 'Écoles proches'}, 'loyers': {'type': 'boolean', 'description': 'Loyers de référence en €/m²'}, 'emprise': {'type': 'boolean', 'description': 'Emprise du bâti au sol'}, 'risques': {'type': 'boolean', 'description': 'Risques Géorisques : inondation, argiles, radon, sismicité, pollution…'}, 'terrain': {'type': 'boolean', 'description': 'Relief et altitude'}, 'recharge': {'type': 'boolean', 'description': 'Bornes de recharge proches'}, 'commerces': {'type': 'boolean', 'description': 'Commerces proches'}, 'filiation': {'type': 'boolean', 'description': 'Historique des découpages cadastraux'}, 'parcelle_id': {'type': 'string', 'maxLength': 14, 'minLength': 14, 'description': "IDU de la parcelle, 14 caractères, ex: '33063000IK0001'"}, 'restrictions_eau': {'type': 'boolean', 'description': "Arrêtés de restriction d'eau (sécheresse) en cours"}, 'secteur_scolaire': {'type': 'boolean', 'description': 'Établissements du secteur scolaire'}}, 'additionalProperties': False}
search_communes
Rechercher une commune
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.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'query': {'type': 'string', 'minLength': 1, 'description': "Nom de commune ou code postal, ex: 'Bordeaux' ou '33000'"}}, 'additionalProperties': False}
search_dpe
Rechercher des DPE dans une zone
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').
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'lat': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Latitude du centre (avec 'lng')"}, 'lng': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Longitude du centre (avec 'lat')"}, 'limit': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 50, 'minimum': 1}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'DPE par page (défaut 20, max 50)'}, 'offset': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 5000, 'minimum': 0}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'address': {'anyOf': [{'anyOf': [{'type': 'string', 'minLength': 3}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Adresse postale au centre de la zone'}, 'commune': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Nom de commune : toute la commune (ignore 'rayon_m')"}, 'rayon_m': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 2000, 'minimum': 50}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Rayon autour du centre en mètres (défaut 500, max 2000)'}, 'classe_dpe': {'anyOf': [{'anyOf': [{'enum': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'classe_ges': {'anyOf': [{'anyOf': [{'enum': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'parcelle_id': {'anyOf': [{'anyOf': [{'type': 'string', 'maxLength': 14, 'minLength': 14}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "IDU d'une parcelle au centre de la zone"}, 'date_dpe_max': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Date maximale du DPE, 'AAAA-MM-JJ'"}, 'date_dpe_min': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Date minimale du DPE, 'AAAA-MM-JJ'"}, 'type_batiment': {'anyOf': [{'anyOf': [{'enum': ['maison', 'appartement', 'immeuble'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "'immeuble' = DPE d'immeuble collectif entier"}, 'surface_max_m2': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'surface_min_m2': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'annee_construction_max': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'annee_construction_min': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}}, 'additionalProperties': False}
search_parcelles
Recherche cadastrale multicritères
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.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 50, 'minimum': 1}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Nombre de parcelles détaillées retournées par page (défaut 20, max 50)'}, 'siren': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'SIREN du propriétaire personne morale'}, 'offset': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Index de départ pour la pagination (défaut 0). Utiliser pagination.next_offset pour la page suivante.'}, 'region': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], '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)."}, 'commune': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Nom de la commune où chercher, ex: 'Angers'"}, 'date_dpe': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Date d'établissement du DPE. Format: '2021', '2021-06', ou plage '2019-2024'"}, 'viewport': {'anyOf': [{'anyOf': [{'type': 'object', 'required': ['sw_lat', 'sw_lng', 'ne_lat', 'ne_lng'], 'properties': {'ne_lat': {'type': 'number'}, 'ne_lng': {'type': 'number'}, 'sw_lat': {'type': 'number'}, 'sw_lng': {'type': 'number'}}}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Zone géographique explicite (alternative à commune). Hauteur ≤ 20 km pour un détail parcelle par parcelle'}, 'classe_dpe': {'anyOf': [{'anyOf': [{'enum': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Classe énergie d'un logement. Clé exacte: classe_dpe; valeur: une lettre A-G."}, 'classe_ges': {'anyOf': [{'anyOf': [{'enum': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Classe GES. Clé exacte: classe_ges; valeur: une lettre A-G.'}, 'date_vente': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Date de vente DVF. Format: '2021', '2021-06', ou plage '2019-2024'"}, 'departement': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Code ou nom du département, ex: '49', 'Maine-et-Loire'. Peut aussi restreindre une commune ou un viewport."}, 'has_piscine': {'anyOf': [{'anyOf': [{'type': 'boolean'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Uniquement les parcelles avec piscine'}, 'prix_vente_eur': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Prix de la dernière vente DVF en euros. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"}, 'has_copropriete': {'anyOf': [{'anyOf': [{'type': 'boolean'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Uniquement les parcelles en copropriété'}, 'conso_dpe_kwh_m2': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Consommation énergie primaire en kWh/m²/an (alternative à classe_dpe). Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"}, 'nombre_batiments': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Nombre de bâtiments sur la parcelle. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"}, 'annee_construction': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Année de construction (BDNB). Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"}, 'surface_piscine_m2': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Surface de la piscine en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"}, 'surface_batiment_m2': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Emprise au sol d'un bâtiment en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"}, 'surface_parcelle_m2': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], '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."}, 'surface_habitable_m2': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], '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'."}, 'has_permis_construire': {'anyOf': [{'anyOf': [{'type': 'boolean'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Uniquement les parcelles avec permis de construire'}, 'date_permis_construire': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Date du permis de construire. Format: '2021', '2021-06', ou plage '2019-2024'"}, 'has_proprietaire_personne_morale': {'anyOf': [{'anyOf': [{'type': 'boolean'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Uniquement les parcelles détenues par une personne morale (société, collectivité…)'}}, 'additionalProperties': False}
search_ventes_dvf
Ventes immobilières (DVF) dans une zone
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.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'lat': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Latitude du centre (avec 'lng')"}, 'lng': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Longitude du centre (avec 'lat')"}, 'tri': {'anyOf': [{'anyOf': [{'enum': ['date', 'distance'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Tri des ventes (défaut : date décroissante ; distance pour les plus proches)'}, 'limit': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 50, 'minimum': 1}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Ventes par page (défaut 20, max 50)'}, 'offset': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 5000, 'minimum': 0}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'address': {'anyOf': [{'anyOf': [{'type': 'string', 'minLength': 3}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Adresse postale au centre de la zone'}, 'commune': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Nom de commune : toute la commune (ignore 'rayon_m')"}, 'rayon_m': {'anyOf': [{'anyOf': [{'type': 'integer', 'maximum': 2000, 'minimum': 50}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': 'Rayon autour du centre en mètres (défaut 500, max 2000)'}, 'date_max': {'anyOf': [{'anyOf': [{'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Date maximale 'AAAA-MM-JJ'"}, 'date_min': {'anyOf': [{'anyOf': [{'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "Date minimale 'AAAA-MM-JJ' (défaut 2021-01-01)"}, 'type_bien': {'anyOf': [{'anyOf': [{'enum': ['maison', 'appartement', 'local'], 'type': 'string'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'parcelle_id': {'anyOf': [{'anyOf': [{'type': 'string', 'maxLength': 14, 'minLength': 14}, {'type': 'string', 'const': ''}]}, {'type': 'null'}], 'description': "IDU d'une parcelle au centre de la zone"}, 'prix_max_eur': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'prix_min_eur': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'surface_max_m2': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}, 'surface_min_m2': {'anyOf': [{'anyOf': [{'type': 'number'}, {'type': 'string', 'const': ''}]}, {'type': 'null'}]}}, 'additionalProperties': False}
已添加
search_ventes_dvf
2026年9月26日 02:40
已添加
search_dpe
2026年9月26日 02:40
已添加
find_parcelles_by_criteria
2026年9月26日 02:40
已添加
get_parcelle_context
2026年9月26日 02:40
已添加
geolocate_listing
2026年9月26日 02:40
已添加
search_parcelles
2026年9月26日 02:40
已添加
get_commune_stats
2026年9月26日 02:40
已添加
estimate_property_price
2026年9月26日 02:40
已添加
get_dpe
2026年9月26日 02:40
已添加
get_parcelle
2026年9月26日 02:40
已添加
find_parcelles_by_address
2026年9月26日 02:40
已添加
search_communes
2026年9月26日 02:40