Parcellaire — cadastre, DVF & DPE
Server Details
French real estate data: cadastre, DVF sales, DPE energy ratings, price estimates, parcel context
- Status
- Healthy
- Uptime
- 99.9% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 14 tools
Most tools target clearly distinct resources: parcelles, DPE, DVF, communes, price estimation. However, several tools overlap in retrieving parcelles (find_parcelles_by_address, find_parcelles_by_criteria, search_parcelles, geolocate_listing) and get_parcelle vs get_parcelle_context can be confused since get_parcelle's 'include' already covers urbanisme/zoning-adjacent data. The detailed descriptions largely resolve these boundaries, but an agent still needs care to pick the right entry point.
Names consistently use snake_case verb_noun structure (estimate_property_price, get_parcelle, search_dpe, find_place). Minor deviations exist: 'find_' vs 'search_' vs 'get_' are used somewhat interchangeably for retrieval, and 'geolocate_listing' uses a different verb style, but the overall pattern is predictable and readable.
14 tools is well within the ideal 3-15 range and each tool earns its place, covering distinct data sources (cadastre, DPE, DVF, commune stats, geocoding, feedback) without obvious redundancy.
The surface covers the full domain lifecycle: geocoding (commune/place/address), parcelle lookup with rich includes, DPE lookup and search, DVF sales search, commune stats, and price estimation, plus a feedback channel. Minor gaps (e.g. no direct intercommunalité-level stats or dedicated building/BDNB standalone tool) are workable through existing 'include' options.
Available Tools
15 toolsestimate_property_priceEstimer le prix d'un bien immobilierRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude, si pas d'adresse | |
| lng | No | Longitude, si pas d'adresse | |
| address | No | Adresse du bien (option la plus simple) | |
| type_bien | Yes | Type de bien : 'maison' ou 'appartement' | |
| classe_dpe | No | Classe DPE si connue (affine l'estimation) | |
| code_insee | No | Code INSEE de la commune, si pas d'adresse | |
| surface_m2 | Yes | Surface habitable en m² (annonce ou DPE du logement), ex: 85. Jamais l'emprise au sol d'un bâtiment. | |
| terrain_m2 | No | Surface du terrain en m² (maisons) | |
| annee_construction | No | Année de construction, ex: 1975 (affine l'estimation) |
find_parcelles_by_addressTrouver les parcelles d'une adresseARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Adresse postale, ex: '10 quai des Chartrons, Bordeaux' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate readOnly, idempotent, and non-destructive behavior. The description adds the geocoding source (Base Adresse Nationale), the return of one or more parcels with IDU, and the follow-up call to get_parcelle, which is useful behavioral context beyond the annotations. It does not say how ambiguity or no-match geocoding is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences carry the entire message: purpose, output and downstream use, and input guidance. There is no filler and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with rich annotations, the description covers the input format, expected output (parcels with IDU), and the next tool in the chain. It omits explicit failure or empty-result behavior, but that is a minor gap for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single 'address' parameter with an example, so the baseline is 3. The description adds value by recommending the most complete address format (numéro, rue, commune), which improves geocoding precision.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific action and resource: geocode a French postal address with the Base Adresse Nationale and return the corresponding cadastral parcels with their IDU. It is clear and distinct from get_parcelle because it points to get_parcelle as a later step, but it does not explicitly contrast itself with sibling tools like find_parcelles_by_criteria or search_parcelles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes a clear use case: an agent with a postal address should call this tool to obtain cadastral parcels and the IDU. It also instructs the caller to provide the most complete address possible (numéro, rue, commune). It lacks explicit when-not-to-use or alternative routing, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_parcelles_by_criteriaRetrouver un bien à partir de ses caractéristiquesRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| commune | No | Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). | |
| date_dpe | No | Date unique du DPE au format ISO 'AAAA-MM' (ex: '2026-09') ou 'AAAA-MM-JJ' (ex: '2026-09-15'). Indice de similarité, pas un filtre exact ni une plage. Pour une période, utiliser search_dpe avec date_dpe_min et date_dpe_max. Omettre si inconnue. | |
| ges_kg_m2 | No | Émissions GES en kg CO2/m²/an | |
| type_bien | No | Type de bien : 'maison' ou 'appartement' | |
| classe_dpe | No | Classe énergie du DPE : une lettre de A à G | |
| classe_ges | No | Classe GES du DPE : une lettre de A à G | |
| code_postal | No | Code postal, ex: '49100' | |
| conso_dpe_kwh_m2 | No | Consommation énergie primaire en kWh/m²/an | |
| annee_construction | No | Année de construction, ex: 1975 | |
| surface_terrain_m2 | No | Surface du terrain en m² (maisons), ex: 600 | |
| surface_habitable_m2 | No | Surface habitable en m², ex: 85 |
find_placeLocaliser un lieu nomméARead-onlyIdempotentInspect
Géocode un lieu nommé (gare, mairie, hôpital, école, université, monument, station de tram…) avec l'index des points d'intérêt de l'IGN, et retourne plusieurs candidats avec leur catégorie, leur commune et leurs coordonnées. Passer ensuite lat et lng du bon candidat à search_dpe, search_ventes_dvf ou search_parcelles. Inclure la commune dans la requête et le nom officiel quand il est connu (ex: 'gare Angers Saint-Laud', 'centre hospitalier universitaire Angers'). Vérifier la catégorie et la commune : le premier candidat n'est pas toujours le bon (un quartier « Gare » n'est pas la gare). Pour une adresse, une rue ou une place, utiliser plutôt le paramètre address des outils de recherche.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Nombre de candidats (défaut 5, max 10) | |
| query | Yes | Nom du lieu et commune, ex: 'gare Angers Saint-Laud' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, idempotent, non-destructive), so the description is free to add operational context it does add: it returns multiple candidates with category/commune/coordinates, and warns that the first candidate is not always correct (a 'Gare' neighbourhood is not the station). It does not mention rate limits or result-ordering logic, but the verification warning is genuinely useful behavioral guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and the workflow, then moves to query guidance and the category/commune warning. Every sentence carries information, though the two examples and the verification caveat make it longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only geocoder with no output schema, the description supplies everything needed: what it returns (candidates with category, commune, coordinates), how to feed the result forward, and the ambiguity risk to watch for. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description goes further by prescribing query composition ('Inclure la commune dans la requête et le nom officiel') with concrete examples such as 'gare Angers Saint-Laud'. It adds meaning beyond the schema's short example, though it says nothing about the limit parameter's trade-off.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Géocode un lieu nommé') and enumerates the POI types it covers (gare, mairie, hôpital, école, monument, station de tram), backed by the IGN index. It explicitly contrasts itself with address/street/place lookups, which use the address parameter of the search tools, so an agent can separate it from siblings like find_parcelles_by_address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the downstream workflow ('Passer ensuite lat et lng du bon candidat à search_dpe, search_ventes_dvf ou search_parcelles') and names the exclusion condition: for an address, street or place, use the address parameter of the search tools instead. Both when-to-use and when-not-to-use are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geolocate_listingGéolocaliser une annonce immobilièreRead-onlyIdempotentInspect
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, prix affiché) puis identifie les parcelles cadastrales candidates en croisant avec la base des DPE. Service gratuit avec une limite GLOBALE de 50 analyses par heure, tous clients MCP confondus, sans limite individuelle — si la limite est atteinte (erreur 429), NE PAS réessayer immédiatement.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL complète de l'annonce immobilière |
get_commune_statsStatistiques immobilières d'une communeRead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| commune | No | Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). Ou son code postal. | |
| insee_id | No | Code INSEE de la commune (prioritaire si fourni) |
get_dpeDiagnostic de performance énergétique (DPE)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dpe_id | Yes | Numéro ADEME du DPE, ex: '2233E1234567X' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Les annotations couvrent déjà readOnlyHint et idempotentHint, et la description est cohérente. Elle ajoute une information comportementale clé : l'estimation de prix n'est retournée que 'quand elle est possible', ce qui gère l'attente de l'agent. Aucune contradiction avec les annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Une phrase unique, dense, sans informations superflues. L'action, l'entrée, la provenance et la sortie sont toutes présentes et bien ordonnées.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Pas de output schema, donc la description doit lister les champs retournés, ce qu'elle fait (classe, GES, surface, type, localisation, prix conditionnel). Elle ne détaille pas les types ou unités, mais pour un outil de résumé simple avec un seul paramètre, c'est suffisant. L'absence de gestion explicite d'erreur (numéro invalide) est mineure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Le schéma couvre 100% du paramètre (description et exemple). La description ajoute la longueur exacte (13 caractères) et la localisation du numéro sur les documents immobiliers, ce qui enrichit la sémantique au-delà du schéma.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Énonce un verbe spécifique ('Retourne'), un objet précis ('résumé d'un DPE') et le critère d'entrée (numéro ADEME), avec une liste détaillée des données retournées. La distinction avec le sibling 'search_dpe' est implicite via la mention 'à partir de son numéro', ce qui rend l'outil immédiatement identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
La description précise le contexte d'usage : nécessite un numéro ADEME de 13 caractères, trouvé sur les annonces et diagnostics. Elle n'explicite pas le cas où l'on n'a pas le numéro (préférer search_dpe), mais le contexte est suffisant pour décider que cet outil est à utiliser avec un identifiant déjà connu.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parcelleDétails d'une parcelle cadastraleARead-onlyIdempotentInspect
Retourne la fiche de base d'une parcelle cadastrale à partir de son IDU (14 caractères) : surface, adresse, commune. Tout le reste est à demander via 'include', uniquement pour les sections utiles à la question (chaque section allonge la réponse) : parcelles adjacentes (parcelles_adjacentes : celles qui la touchent, avec surface, bâti et nombre de DPE ; pour toute question de voisinage ou quand l'adresse ou un DPE pointe une petite parcelle sans bâti), bâtiments (batiments), transactions immobilières (dvf), diagnostics énergétiques (dpes), zonage d'urbanisme (urbanisme, la plus lente), données bâtiment BDNB (bdnb), piscines, copropriétés (rnc), propriétaires personnes morales (majic_pm), permis de construire (sitadel). La réponse donne toujours le nombre d'éléments de chaque section (donnees_disponibles), même non demandée : s'en servir pour décider quelles sections lire.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Sections à inclure, ex: ['dvf', 'dpes']. Aucune par défaut : sans include, seule la fiche de base de la parcelle est retournée. | |
| max_items | No | Nombre maximum d'éléments par section liste (défaut 30). Les sections tronquées sont signalées dans 'sections_tronquees'. | |
| parcelle_id | Yes | IDU de la parcelle, 14 caractères, ex: '33063000IK0001' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only, idempotent, non-destructive profile, and the description adds genuinely new behaviour: every response carries per-section element counts (donnees_disponibles) even when a section is not requested, truncation is flagged via sections_tronquees, and urbanisme is called out as the slowest section. No safety or auth caveats are given, but the annotations cover that ground.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and the IDU input before the include guidance, and every clause carries information. It is a single dense paragraph with a long parenthetical section list, which is slightly harder to scan than a bulleted structure would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing the base fiche contents and the always-present donnees_disponibles counts and sections_tronquees signal, so an agent can plan a two-step read (discover counts, then request sections). Input semantics, cost, and latency are all covered for this read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining the semantics of the include values (what parcelles_adjacentes returns, that urbanisme is the slowest) and the cost model of requesting sections. max_items is left to the schema, which already documents the default 30 and truncation flag.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retourne la fiche de base d'une parcelle cadastrale à partir de son IDU') and enumerates the returned fields (surface, adresse, commune), so an agent knows exactly what it produces. It never names the close sibling get_parcelle_context, so the boundary between the two is left for the agent to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance for the optional sections ('uniquement pour les sections utiles à la question', plus a concrete trigger for parcelles_adjacentes on neighbourhood questions or small unbuilt parcels) and warns that each section lengthens the response. It does not compare itself against alternatives such as find_parcelles_by_address or get_parcelle_context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parcelle_contextEnvironnement d'une parcelleARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fibre | No | Éligibilité fibre et opérateurs (ARCEP) | |
| sante | No | Médecins, pharmacies… proches | |
| ecoles | No | Écoles proches | |
| loyers | No | Loyers de référence en €/m² | |
| emprise | No | Emprise du bâti au sol | |
| risques | No | Risques Géorisques : inondation, argiles, radon, sismicité, pollution… | |
| terrain | No | Relief et altitude | |
| recharge | No | Bornes de recharge proches | |
| commerces | No | Commerces proches | |
| filiation | No | Historique des découpages cadastraux | |
| parcelle_id | Yes | IDU de la parcelle, 14 caractères, ex: '33063000IK0001' | |
| restrictions_eau | No | Arrêtés de restriction d'eau (sécheresse) en cours | |
| secteur_scolaire | No | Établissements du secteur scolaire |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, openWorld, and non-destructive behavior. The description adds valuable context beyond annotations: data comes from public sources and, critically, no environment data is returned unless at least one section is set to true. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the purpose front-loaded and the key usage warning immediately after. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter tool with 100% schema coverage and rich annotations, the description covers the core purpose, the input constraint, and the critical all-false behavior. It does not describe the output shape, but no output schema exists and the invocation path is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents all 13 parameters, so the baseline is 3. The description adds meaning beyond the schema by instructing the agent to set only useful sections to true and by clarifying the empty-result behavior when none are set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retourne'), the resource ('l'environnement d'une parcelle cadastrale'), and the required IDU format. It is specific enough to separate environment data from basic parcel lookup, though it does not explicitly name a sibling tool as the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit operational guidance for the boolean sections ('Passer à true uniquement les sections utiles') and warns that an all-false call returns nothing. However, it does not say when to prefer this tool over siblings such as get_parcelle or search_parcelles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_communesRechercher une communeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Nom de commune ou code postal, ex: 'Bordeaux' ou '33000' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to repeat safety. It adds value by disclosing that the cadastre URL is returned 'quand elle existe' (when it exists), a conditional behavior, and by stating the precedence ('use first'). This enriches the agent's understanding beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and input, and every phrase earns its place. It includes the return fields, the conditional URL, and the usage context with zero fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool with no output schema, the description covers the input method, the output fields, and the usage context. It does not mention potential multiple matches or error handling, but given the tool's simplicity and the annotations covering safety, it is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already describes the 'query' parameter with an example. The description reiterates 'par nom ou code postal' but does not add new syntax or format details beyond the schema. Per the rubric, baseline 3 is appropriate when the schema fully documents parameters and the description provides no extra semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Recherche'), the resource ('commune française'), and the input method ('par nom ou code postal'). It also lists the output (INSEE code, coordinates, cadastre URL) and explicitly differentiates it from siblings by noting that the INSEE code is required for get_commune_stats. This is a precise, non-tautological purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit guidance: 'À utiliser en premier quand on ne connaît que le nom d'une ville' (use first when only the name is known). It also implicitly advises that the returned INSEE code feeds into get_commune_stats, indicating a typical workflow. However, it does not explicitly mention when not to use it (e.g., if the INSEE code is already known), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dpeRechercher des DPE dans une zoneRead-onlyIdempotentInspect
Liste les diagnostics de performance énergétique (DPE ADEME) d'une zone : autour d'une adresse, d'une parcelle ou d'un point (rayon), dans toute une commune ou dans toute une intercommunalité. 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').
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude du centre (avec 'lng') | |
| lng | No | Longitude du centre (avec 'lat') | |
| limit | No | DPE par page (défaut 20, max 50) | |
| offset | No | Index de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante. | |
| address | No | Adresse postale au centre de la zone | |
| commune | No | Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). Couvre toute la commune (ignore 'rayon_m'). | |
| rayon_m | No | Rayon autour du centre en mètres (défaut 500, max 25000) | |
| classe_dpe | No | Classe énergie : une lettre de A à G | |
| classe_ges | No | Classe GES : une lettre de A à G | |
| parcelle_id | No | IDU d'une parcelle au centre de la zone | |
| date_dpe_max | No | Borne maximale inclusive du DPE : année '2026' (31 décembre), mois ISO '2026-09' (dernier jour du mois), ou jour ISO '2026-09-30'. Pour une plage, utiliser date_dpe_min et date_dpe_max séparément. Omettre pour ne pas fixer de maximum. | |
| date_dpe_min | No | Borne minimale inclusive du DPE : année '2026', mois ISO '2026-09' (premier jour du mois), ou jour ISO '2026-09-15'. Pour une plage, utiliser date_dpe_min et date_dpe_max séparément, pas une plage dans ce champ. Omettre pour ne pas fixer de minimum. | |
| type_batiment | No | 'immeuble' = DPE d'immeuble collectif entier | |
| surface_max_m2 | No | Surface habitable maximale en m², ex: 120 | |
| surface_min_m2 | No | Surface habitable minimale en m², ex: 60 | |
| intercommunalite | No | Nom ou SIREN d'une intercommunalité, ex: 'Grand Annecy', 'CA de La Rochelle', '241700434' : toutes ses communes membres, listées dans le résultat (ignore 'rayon_m'). | |
| annee_construction_max | No | Année de construction maximale, ex: 1990 | |
| annee_construction_min | No | Année de construction minimale, ex: 1950 |
search_parcellesRecherche cadastrale multicritèresRead-onlyIdempotentInspect
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), 'intercommunalite' (nom ou SIREN d'une communauté d'agglomération, de communes, urbaine ou d'une métropole), '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. Les filtres has_* acceptent true pour sélectionner une présence connue ; false est rejeté car la recherche par absence n’est pas prise en charge. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Nombre de parcelles détaillées retournées par page (défaut 20, max 50) | |
| siren | No | SIREN du propriétaire personne morale | |
| offset | No | Index de départ pour la pagination (défaut 0). Utiliser pagination.next_offset pour la page suivante. | |
| region | No | 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 | No | Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). | |
| date_dpe | No | Date d'établissement du DPE. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas fournir de tableau. Omettre si aucun filtre de date. | |
| viewport | No | Zone géographique explicite (alternative à commune). Hauteur ≤ 20 km pour un détail parcelle par parcelle | |
| classe_dpe | No | Classe énergie d'un logement. Clé exacte: classe_dpe; valeur: une lettre A-G. | |
| classe_ges | No | Classe GES. Clé exacte: classe_ges; valeur: une lettre A-G. | |
| date_vente | No | Date de vente DVF. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas fournir de tableau. Omettre si aucun filtre de date. | |
| departement | No | Code ou nom du département, ex: '49', 'Maine-et-Loire'. Peut aussi restreindre une commune ou un viewport. | |
| has_piscine | No | Uniquement les parcelles avec piscine | |
| prix_vente_eur | No | Prix de la dernière vente DVF en euros. Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| has_copropriete | No | true : parcelles avec une copropriété RNC connue. false non pris en charge ; omettre ne filtre pas ce critère. | |
| conso_dpe_kwh_m2 | No | Consommation énergie primaire en kWh/m²/an (alternative à classe_dpe). Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| intercommunalite | No | Nom ou SIREN d'une intercommunalité, ex: 'CA de La Rochelle', 'agglo de Niort', 'Bordeaux Métropole', '241700434'. Cherche dans toutes ses communes membres, listées dans le résultat avec leur nombre de parcelles. | |
| nombre_batiments | No | Nombre de bâtiments sur la parcelle. Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| annee_construction | No | Année de construction (BDNB). Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| has_permis_demolir | No | Uniquement les parcelles avec un permis de démolir (PD) | |
| surface_piscine_m2 | No | Surface de la piscine en m². Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| surface_batiment_m2 | No | Emprise au sol d'un bâtiment en m². Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| surface_parcelle_m2 | No | Une seule surface de parcelle en m² par appel. Nombre ou texte : 250 ou '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 | No | Surface habitable (DPE) en m². Nombre ou texte : 250 ou '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 | No | Uniquement les parcelles avec un permis de construire (PC), hors permis de démolir, d'aménager et déclarations préalables | |
| date_permis_construire | No | Date d'autorisation. Avec has_permis_construire ou has_permis_demolir, elle porte sur ce permis ; seule, sur toute autorisation d'urbanisme (permis de construire, de démolir, d'aménager, déclaration préalable). Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas fournir de tableau. Omettre si aucun filtre de date. | |
| has_proprietaire_personne_morale | No | Uniquement les parcelles détenues par une personne morale (société, collectivité…) |
search_permisRechercher des permis par destinationRead-onlyIdempotentInspect
Recherche les autorisations d'urbanisme Sitadel par commune, intercommunalité, département ou région, avec filtre de destination (hébergement hôtelier, habitation, bureaux, commerce…). Retourne une ligne par permis, ses parcelles, son adresse et ses surfaces par destination, triées par date d'autorisation décroissante. Pour les derniers permis, omettre la date si aucune période n'est demandée. Les surfaces de construction ou créées par changement de destination sont distinctes des surfaces supprimées ou démolies : un permis impliquant un hôtel ne crée pas nécessairement un nouvel hôtel. Les résultats sont limités aux autorisations liées aux parcelles cadastrales et ne garantissent pas une couverture exhaustive.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Nombre de permis par page, défaut 20, maximum 50. | |
| offset | No | Index de départ, reprendre pagination.next_offset. Au-delà de 5000, restreindre la période ou la zone. | |
| region | No | Code INSEE ou nom de la région, ex: Pays de la Loire. France métropolitaine hors Corse. | |
| commune | No | Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). | |
| departement | No | Code ou nom du département, ex: 44 ou Loire-Atlantique. Peut restreindre une commune ou une région. | |
| destination | No | Destination à rechercher à partir de ses surfaces déclarées. Pour des hôtels : hebergement_hotelier. Omettre pour toutes les destinations. | |
| intercommunalite | No | Nom ou SIREN de l'intercommunalité, alternative à commune. | |
| date_autorisation | No | Date d'autorisation, facultative. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas fournir de tableau. Omettre si aucun filtre de date. | |
| type_autorisation | No | PC (permis de construire, défaut), DP (déclaration préalable), PD (démolition) ou PA (aménagement). | |
| operation_destination | No | Avec destination : toutes (défaut) concerne cette destination ; creation construit ou convertit vers elle ; suppression démolit ou convertit vers un autre usage ; existant exige une surface avant travaux. Une surface inconnue ne vaut pas zéro. |
search_ventes_dvfVentes immobilières (DVF) dans une zoneRead-onlyIdempotentInspect
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), hors Alsace-Moselle (Bas-Rhin, Haut-Rhin, Moselle), absente du fichier DVF. Filtrer par 'type_bien' pour des prix au m² comparables.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude du centre (avec 'lng') | |
| lng | No | Longitude du centre (avec 'lat') | |
| tri | No | Tri des ventes (défaut : date décroissante ; distance pour les plus proches) | |
| limit | No | Ventes par page (défaut 20, max 50) | |
| offset | No | Index de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante. | |
| address | No | Adresse postale au centre de la zone | |
| commune | No | Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). Couvre toute la commune (ignore 'rayon_m'). | |
| rayon_m | No | Rayon autour du centre en mètres (défaut 500, max 25000) | |
| date_max | No | Borne maximale inclusive au format ISO 'AAAA-MM-JJ', ex: '2026-09-30'. Omettre pour ne pas fixer de maximum. | |
| date_min | No | Borne minimale inclusive au format ISO 'AAAA-MM-JJ', ex: '2026-09-15' (défaut 2021-01-01). Pour une plage, utiliser date_min et date_max séparément, pas une plage dans ce champ. | |
| type_bien | No | Type de bien vendu : 'maison', 'appartement' ou 'local' (local commercial, industriel ou assimilé) | |
| parcelle_id | No | IDU d'une parcelle au centre de la zone | |
| prix_max_eur | No | Prix de vente maximal en euros, ex: 400000 | |
| prix_min_eur | No | Prix de vente minimal en euros, ex: 150000 | |
| surface_max_m2 | No | Surface bâtie maximale en m², ex: 120 | |
| surface_min_m2 | No | Surface bâtie minimale en m², ex: 60 |
send_feedbackEnvoyer un retour à l'équipe ParcellaireIdempotentInspect
Transmet à l'équipe Parcellaire un retour sur le service, pour orienter ses évolutions : besoin non couvert, donnée manquante, bug, idée de fonctionnalité ou retour positif. N'appeler qu'avec l'accord explicite de l'utilisateur dans la conversation, jamais à son insu : quand il demande lui-même à envoyer un retour (origine 'utilisateur'), ou après lui avoir proposé de signaler une demande que les outils n'ont pas permis de satisfaire (donnée absente, filtre manquant, erreur répétée) et qu'il a accepté (origine 'assistant'). Lui dire ce qui sera envoyé, reformuler fidèlement, ne rien inventer, un seul envoi par besoin. Ne jamais inclure de données personnelles : ni nom, email, téléphone, adresse précise, numéro de parcelle ou de DPE, ni URL d'annonce ; décrire le besoin en termes généraux (commune ou département au plus). L'équipe ne répond pas par ce canal : pour une question ou une réponse personnelle, orienter vers https://parcellai.re/contact.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | 'fonctionnalite' (outil, filtre ou usage souhaité), 'donnees_manquantes' (donnée absente, incomplète ou trop ancienne), 'bug' (erreur ou résultat faux), 'positif' (ce qui a été utile), 'autre' | |
| outils | No | Noms des outils Parcellaire appelés pendant la conversation, dans l'ordre, ex: ['find_parcelles_by_address', 'search_ventes_dvf'] | |
| profil | No | Profil de l'utilisateur, seulement s'il ressort clairement de la conversation : 'acheteur', 'proprietaire' (ou vendeur), 'locataire', 'professionnel_immobilier' (agent, notaire, diagnostiqueur, promoteur, géomètre), 'investisseur', 'collectivite', 'developpeur', 'etude' (presse, recherche, analyse de marché). Omettre sinon. | |
| message | Yes | Le retour lui-même : ce qui manque, ce qui ne marche pas ou ce qui serait utile, avec le résultat attendu | |
| origine | Yes | 'utilisateur' si l'utilisateur a demandé lui-même à envoyer ce retour, 'assistant' si l'IA l'a proposé et que l'utilisateur a accepté | |
| cas_usage | Yes | Ce que l'utilisateur cherchait à accomplir, en termes généraux, ex: 'comparer le prix au m² d'une maison avec les ventes récentes du quartier avant une offre d'achat à Nantes' | |
| accord_utilisateur | Yes | true : l'utilisateur a accepté dans la conversation l'envoi de ce retour. Sans son accord, ne pas appeler l'outil. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- Changed
find_parcelles_by_criteria1 field changed- changed
Input schema / properties / commune / descriptionPrevious value: -"Nom de la commune, ex: 'Angers'"New value: +"Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département)."
- Changed
get_commune_stats1 field changed- changed
Input schema / properties / commune / descriptionPrevious value: -"Nom ou code postal de la commune, ex: 'Bordeaux'"New value: +"Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). Ou son code postal."
- Changed
search_dpe1 field changed- changed
Input schema / properties / commune / descriptionPrevious value: -"Nom de commune : toute la commune (ignore 'rayon_m')"New value: +"Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). Couvre toute la commune (ignore 'rayon_m')."
- Changed
search_parcelles4 fields changed- changed
Input schema / properties / commune / descriptionPrevious value: -"Nom de la commune où chercher, ex: 'Angers'"New value: +"Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département)." - changed
Input schema / properties / date_dpe / descriptionPrevious value: -"Date d'établissement du DPE. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date."New value: +"Date d'établissement du DPE. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas fournir de tableau. Omettre si aucun filtre de date." - changed
Input schema / properties / date_permis_construire / descriptionPrevious value: -"Date d'autorisation. Avec has_permis_construire ou has_permis_demolir, elle porte sur ce permis ; seule, sur toute autorisation d'urbanisme (permis de construire, de démolir, d'aménager, déclaration préalable). Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date."New value: +"Date d'autorisation. Avec has_permis_construire ou has_permis_demolir, elle porte sur ce permis ; seule, sur toute autorisation d'urbanisme (permis de construire, de démolir, d'aménager, déclaration préalable). Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas fournir de tableau. Omettre si aucun filtre de date." - changed
Input schema / properties / date_vente / descriptionPrevious value: -"Date de vente DVF. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date."New value: +"Date de vente DVF. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas fournir de tableau. Omettre si aucun filtre de date."
- Changed
search_permis2 fields changed- changed
Input schema / properties / commune / descriptionPrevious value: -"Nom de la commune, ex: Nantes. Fournir departement si le nom est ambigu."New value: +"Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département)." - changed
Input schema / properties / date_autorisation / descriptionPrevious value: -"Date d'autorisation, facultative. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date."New value: +"Date d'autorisation, facultative. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas fournir de tableau. Omettre si aucun filtre de date."
- Changed
search_ventes_dvf1 field changed- changed
Input schema / properties / commune / descriptionPrevious value: -"Nom de commune : toute la commune (ignore 'rayon_m')"New value: +"Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). Couvre toute la commune (ignore 'rayon_m')."
1 tool update
- Changed
search_parcelles1 field changed- changed
Input schema / properties / has_copropriete / descriptionPrevious value: -"Uniquement les parcelles en copropriété"New value: +"true : parcelles avec une copropriété RNC connue. false non pris en charge ; omettre ne filtre pas ce critère."
1 tool update
- Added
search_permis
1 tool update
- Changed
estimate_property_price1 field changed- changed
Input schema / properties / surface_m2 / descriptionPrevious value: -"Surface habitable en m², nombre, ex: 85"New value: +"Surface habitable en m² (annonce ou DPE du logement), ex: 85. Jamais l'emprise au sol d'un bâtiment."
1 tool update
- Changed
send_feedback3 fields changed- added
Input schema / properties / accord_utilisateurAdded value: +{ + "const": true, + "description": "true : l'utilisateur a accepté dans la conversation l'envoi de ce retour. Sans son accord, ne pas appeler l'outil.", + "type": "boolean" +} - changed
Input schema / properties / origine / descriptionPrevious value: -"'utilisateur' si l'utilisateur a demandé à envoyer ce retour, 'assistant' si l'IA le signale d'elle-même"New value: +"'utilisateur' si l'utilisateur a demandé lui-même à envoyer ce retour, 'assistant' si l'IA l'a proposé et que l'utilisateur a accepté" - changed
Input schema / requiredPrevious value: -[ - "type", - "origine", - "cas_usage", - "message" -]New value: +[ + "type", + "origine", + "accord_utilisateur", + "cas_usage", + "message" +]
1 tool update
- Added
send_feedback
4 tool updates
- Changed
find_parcelles_by_criteria1 field changed- changed
Input schema / properties / date_dpe / descriptionPrevious value: -"Date du DPE, 'AAAA-MM' ou 'AAAA-MM-JJ'"New value: +"Date unique du DPE au format ISO 'AAAA-MM' (ex: '2026-09') ou 'AAAA-MM-JJ' (ex: '2026-09-15'). Indice de similarité, pas un filtre exact ni une plage. Pour une période, utiliser search_dpe avec date_dpe_min et date_dpe_max. Omettre si inconnue."
- Changed
search_dpe2 fields changed- changed
Input schema / properties / date_dpe_max / descriptionPrevious value: -"Date maximale du DPE, 'AAAA-MM-JJ'"New value: +"Borne maximale inclusive du DPE : année '2026' (31 décembre), mois ISO '2026-09' (dernier jour du mois), ou jour ISO '2026-09-30'. Pour une plage, utiliser date_dpe_min et date_dpe_max séparément. Omettre pour ne pas fixer de maximum." - changed
Input schema / properties / date_dpe_min / descriptionPrevious value: -"Date minimale du DPE, 'AAAA-MM-JJ'"New value: +"Borne minimale inclusive du DPE : année '2026', mois ISO '2026-09' (premier jour du mois), ou jour ISO '2026-09-15'. Pour une plage, utiliser date_dpe_min et date_dpe_max séparément, pas une plage dans ce champ. Omettre pour ne pas fixer de minimum."
- Changed
search_parcelles3 fields changed- changed
Input schema / properties / date_dpe / descriptionPrevious value: -"Date d'établissement du DPE. Année (2021) ou texte : '2021', '2021-06', ou plage '2019-2024'"New value: +"Date d'établissement du DPE. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date." - changed
Input schema / properties / date_permis_construire / descriptionPrevious value: -"Date d'autorisation. Avec has_permis_construire ou has_permis_demolir, elle porte sur ce permis ; seule, sur toute autorisation d'urbanisme (permis de construire, de démolir, d'aménager, déclaration préalable). Année (2021) ou texte : '2021', '2021-06', ou plage '2019-2024'"New value: +"Date d'autorisation. Avec has_permis_construire ou has_permis_demolir, elle porte sur ce permis ; seule, sur toute autorisation d'urbanisme (permis de construire, de démolir, d'aménager, déclaration préalable). Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date." - changed
Input schema / properties / date_vente / descriptionPrevious value: -"Date de vente DVF. Année (2021) ou texte : '2021', '2021-06', ou plage '2019-2024'"New value: +"Date de vente DVF. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date."
- Changed
search_ventes_dvf2 fields changed- changed
Input schema / properties / date_max / descriptionPrevious value: -"Date maximale 'AAAA-MM-JJ'"New value: +"Borne maximale inclusive au format ISO 'AAAA-MM-JJ', ex: '2026-09-30'. Omettre pour ne pas fixer de maximum." - changed
Input schema / properties / date_min / descriptionPrevious value: -"Date minimale 'AAAA-MM-JJ' (défaut 2021-01-01)"New value: +"Borne minimale inclusive au format ISO 'AAAA-MM-JJ', ex: '2026-09-15' (défaut 2021-01-01). Pour une plage, utiliser date_min et date_max séparément, pas une plage dans ce champ."
2 tool updates
- Changed
search_dpe3 fields changed- added
Input schema / properties / intercommunaliteAdded value: +{ + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } + ], + "description": "Nom ou SIREN d'une intercommunalité, ex: 'Grand Annecy', 'CA de La Rochelle', '241700434' : toutes ses communes membres, listées dans le résultat (ignore 'rayon_m')." +} - changed
Input schema / properties / rayon_m / anyOfPrevious value: -[ - { - "anyOf": [ - { - "maximum": 2000, - "minimum": 50, - "type": "integer" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "maximum": 25000, + "minimum": 50, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / rayon_m / descriptionPrevious value: -"Rayon autour du centre en mètres (défaut 500, max 2000)"New value: +"Rayon autour du centre en mètres (défaut 500, max 25000)"
- Changed
search_ventes_dvf2 fields changed- changed
Input schema / properties / rayon_m / anyOfPrevious value: -[ - { - "anyOf": [ - { - "maximum": 2000, - "minimum": 50, - "type": "integer" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "maximum": 25000, + "minimum": 50, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / rayon_m / descriptionPrevious value: -"Rayon autour du centre en mètres (défaut 500, max 2000)"New value: +"Rayon autour du centre en mètres (défaut 500, max 25000)"
1 tool update
- Changed
search_parcelles3 fields changed- changed
Input schema / properties / date_permis_construire / descriptionPrevious value: -"Date du permis de construire. Année (2021) ou texte : '2021', '2021-06', ou plage '2019-2024'"New value: +"Date d'autorisation. Avec has_permis_construire ou has_permis_demolir, elle porte sur ce permis ; seule, sur toute autorisation d'urbanisme (permis de construire, de démolir, d'aménager, déclaration préalable). Année (2021) ou texte : '2021', '2021-06', ou plage '2019-2024'" - changed
Input schema / properties / has_permis_construire / descriptionPrevious value: -"Uniquement les parcelles avec permis de construire"New value: +"Uniquement les parcelles avec un permis de construire (PC), hors permis de démolir, d'aménager et déclarations préalables" - added
Input schema / properties / has_permis_demolirAdded value: +{ + "anyOf": [ + { + "anyOf": [ + { + "type": "boolean" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } + ], + "description": "Uniquement les parcelles avec un permis de démolir (PD)" +}
1 tool update
- Changed
search_parcelles1 field changed- added
Input schema / properties / intercommunaliteAdded value: +{ + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } + ], + "description": "Nom ou SIREN d'une intercommunalité, ex: 'CA de La Rochelle', 'agglo de Niort', 'Bordeaux Métropole', '241700434'. Cherche dans toutes ses communes membres, listées dans le résultat avec leur nombre de parcelles." +}
1 tool update
- Added
find_place
6 tool updates
- Changed
estimate_property_price3 fields changed- added
Input schema / properties / annee_construction / descriptionAdded value: +"Année de construction, ex: 1975 (affine l'estimation)" - changed
Input schema / properties / surface_m2 / descriptionPrevious value: -"Surface habitable en m²"New value: +"Surface habitable en m², nombre, ex: 85" - added
Input schema / properties / type_bien / descriptionAdded value: +"Type de bien : 'maison' ou 'appartement'"
- Changed
find_parcelles_by_criteria6 fields changed- added
Input schema / properties / annee_construction / descriptionAdded value: +"Année de construction, ex: 1975" - added
Input schema / properties / classe_dpe / descriptionAdded value: +"Classe énergie du DPE : une lettre de A à G" - added
Input schema / properties / classe_ges / descriptionAdded value: +"Classe GES du DPE : une lettre de A à G" - added
Input schema / properties / surface_habitable_m2 / descriptionAdded value: +"Surface habitable en m², ex: 85" - added
Input schema / properties / surface_terrain_m2 / descriptionAdded value: +"Surface du terrain en m² (maisons), ex: 600" - added
Input schema / properties / type_bien / descriptionAdded value: +"Type de bien : 'maison' ou 'appartement'"
- Changed
get_parcelle2 fields changed- changed
Input schema / properties / include / anyOfPrevious value: -[ - { - "anyOf": [ - { - "items": { - "enum": [ - "batiments", - "dvf", - "dpes", - "urbanisme", - "bdnb", - "piscines", - "rnc", - "majic_pm", - "sitadel" - ], - "type": "string" - }, - "type": "array" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "items": { + "enum": [ + "parcelles_adjacentes", + "batiments", + "dvf", + "dpes", + "urbanisme", + "bdnb", + "piscines", + "rnc", + "majic_pm", + "sitadel" + ], + "type": "string" + }, + "type": "array" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / include / descriptionPrevious value: -"Sections à inclure. Défaut: ['batiments', 'dvf', 'dpes']"New value: +"Sections à inclure, ex: ['dvf', 'dpes']. Aucune par défaut : sans include, seule la fiche de base de la parcelle est retournée."
- Changed
search_dpe7 fields changed- added
Input schema / properties / annee_construction_max / descriptionAdded value: +"Année de construction maximale, ex: 1990" - added
Input schema / properties / annee_construction_min / descriptionAdded value: +"Année de construction minimale, ex: 1950" - added
Input schema / properties / classe_dpe / descriptionAdded value: +"Classe énergie : une lettre de A à G" - added
Input schema / properties / classe_ges / descriptionAdded value: +"Classe GES : une lettre de A à G" - added
Input schema / properties / offset / descriptionAdded value: +"Index de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante." - added
Input schema / properties / surface_max_m2 / descriptionAdded value: +"Surface habitable maximale en m², ex: 120" - added
Input schema / properties / surface_min_m2 / descriptionAdded value: +"Surface habitable minimale en m², ex: 60"
- Changed
search_parcelles22 fields changed- changed
Input schema / properties / annee_construction / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / annee_construction / descriptionPrevious value: -"Année de construction (BDNB). Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"New value: +"Année de construction (BDNB). Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)" - changed
Input schema / properties / conso_dpe_kwh_m2 / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / conso_dpe_kwh_m2 / descriptionPrevious value: -"Consommation énergie primaire en kWh/m²/an (alternative à classe_dpe). Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"New value: +"Consommation énergie primaire en kWh/m²/an (alternative à classe_dpe). Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)" - changed
Input schema / properties / date_dpe / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / date_dpe / descriptionPrevious value: -"Date d'établissement du DPE. Format: '2021', '2021-06', ou plage '2019-2024'"New value: +"Date d'établissement du DPE. Année (2021) ou texte : '2021', '2021-06', ou plage '2019-2024'" - changed
Input schema / properties / date_permis_construire / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / date_permis_construire / descriptionPrevious value: -"Date du permis de construire. Format: '2021', '2021-06', ou plage '2019-2024'"New value: +"Date du permis de construire. Année (2021) ou texte : '2021', '2021-06', ou plage '2019-2024'" - changed
Input schema / properties / date_vente / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / date_vente / descriptionPrevious value: -"Date de vente DVF. Format: '2021', '2021-06', ou plage '2019-2024'"New value: +"Date de vente DVF. Année (2021) ou texte : '2021', '2021-06', ou plage '2019-2024'" - changed
Input schema / properties / nombre_batiments / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / nombre_batiments / descriptionPrevious value: -"Nombre de bâtiments sur la parcelle. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"New value: +"Nombre de bâtiments sur la parcelle. Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)" - changed
Input schema / properties / prix_vente_eur / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / prix_vente_eur / descriptionPrevious value: -"Prix de la dernière vente DVF en euros. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"New value: +"Prix de la dernière vente DVF en euros. Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)" - changed
Input schema / properties / surface_batiment_m2 / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / surface_batiment_m2 / descriptionPrevious value: -"Emprise au sol d'un bâtiment en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"New value: +"Emprise au sol d'un bâtiment en m². Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)" - changed
Input schema / properties / surface_habitable_m2 / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / surface_habitable_m2 / descriptionPrevious value: -"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'."New value: +"Surface habitable (DPE) en m². Nombre ou texte : 250 ou '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'." - changed
Input schema / properties / surface_parcelle_m2 / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / surface_parcelle_m2 / descriptionPrevious value: -"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."New value: +"Une seule surface de parcelle en m² par appel. Nombre ou texte : 250 ou '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." - changed
Input schema / properties / surface_piscine_m2 / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "string" - }, - { - "const": "", - "type": "string" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / surface_piscine_m2 / descriptionPrevious value: -"Surface de la piscine en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"New value: +"Surface de la piscine en m². Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"
- Changed
search_ventes_dvf6 fields changed- added
Input schema / properties / offset / descriptionAdded value: +"Index de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante." - added
Input schema / properties / prix_max_eur / descriptionAdded value: +"Prix de vente maximal en euros, ex: 400000" - added
Input schema / properties / prix_min_eur / descriptionAdded value: +"Prix de vente minimal en euros, ex: 150000" - added
Input schema / properties / surface_max_m2 / descriptionAdded value: +"Surface bâtie maximale en m², ex: 120" - added
Input schema / properties / surface_min_m2 / descriptionAdded value: +"Surface bâtie minimale en m², ex: 60" - added
Input schema / properties / type_bien / descriptionAdded value: +"Type de bien vendu : 'maison', 'appartement' ou 'local' (local commercial, industriel ou assimilé)"
1 tool update
- Changed
search_parcelles2 fields changed- changed
Input schema / properties / surface_habitable_m2 / descriptionPrevious value: -"Surface habitable (DPE) en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"New value: +"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'." - changed
Input schema / properties / surface_parcelle_m2 / descriptionPrevious value: -"Une seule surface de parcelle en m² par appel. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum). 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."New value: +"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."
12 tool updates
- Changed
estimate_property_price1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
find_parcelles_by_address1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
find_parcelles_by_criteria1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
geolocate_listing1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_commune_stats1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_dpe1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_parcelle1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_parcelle_context1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_communes1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_dpe1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_parcelles1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_ventes_dvf1 field changed- added
Input schema / additionalPropertiesAdded value: +false
1 tool update
- Changed
search_ventes_dvf1 field changed- changed
Input schema / properties / tri / descriptionPrevious value: -"Tri des ventes (défaut : distance autour d'un point, date pour une commune)"New value: +"Tri des ventes (défaut : date décroissante ; distance pour les plus proches)"
7 tool updates
- Changed
estimate_property_price19 fields changed- added
Input schema / properties / address / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / address / typeRemoved value: -"string" - added
Input schema / properties / annee_construction / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / annee_construction / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / annee_construction / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / annee_construction / typeRemoved value: -"integer" - added
Input schema / properties / classe_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_dpe / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_dpe / typeRemoved value: -"string" - added
Input schema / properties / code_insee / anyOfAdded value: +[ + { + "anyOf": [ + { + "maxLength": 5, + "minLength": 5, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / code_insee / maxLengthRemoved value: -5 - removed
Input schema / properties / code_insee / minLengthRemoved value: -5 - removed
Input schema / properties / code_insee / typeRemoved value: -"string" - added
Input schema / properties / lat / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lat / typeRemoved value: -"number" - added
Input schema / properties / lng / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lng / typeRemoved value: -"number" - added
Input schema / properties / terrain_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / terrain_m2 / typeRemoved value: -"number"
- Changed
find_parcelles_by_criteria34 fields changed- added
Input schema / properties / annee_construction / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / annee_construction / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / annee_construction / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / annee_construction / typeRemoved value: -"integer" - added
Input schema / properties / classe_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_dpe / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_dpe / typeRemoved value: -"string" - added
Input schema / properties / classe_ges / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_ges / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_ges / typeRemoved value: -"string" - added
Input schema / properties / code_postal / anyOfAdded value: +[ + { + "anyOf": [ + { + "maxLength": 5, + "minLength": 5, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / code_postal / maxLengthRemoved value: -5 - removed
Input schema / properties / code_postal / minLengthRemoved value: -5 - removed
Input schema / properties / code_postal / typeRemoved value: -"string" - added
Input schema / properties / commune / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / commune / typeRemoved value: -"string" - added
Input schema / properties / conso_dpe_kwh_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / conso_dpe_kwh_m2 / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / conso_dpe_kwh_m2 / typeRemoved value: -"number" - added
Input schema / properties / date_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$", + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_dpe / patternRemoved value: -"^\\d{4}-\\d{2}(-\\d{2})?$" - removed
Input schema / properties / date_dpe / typeRemoved value: -"string" - added
Input schema / properties / ges_kg_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / ges_kg_m2 / minimumRemoved value: -0 - removed
Input schema / properties / ges_kg_m2 / typeRemoved value: -"number" - added
Input schema / properties / surface_habitable_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_habitable_m2 / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / surface_habitable_m2 / typeRemoved value: -"number" - added
Input schema / properties / surface_terrain_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_terrain_m2 / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / surface_terrain_m2 / typeRemoved value: -"number" - added
Input schema / properties / type_bien / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "maison", + "appartement" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / type_bien / enumRemoved value: -[ - "maison", - "appartement" -] - removed
Input schema / properties / type_bien / typeRemoved value: -"string"
- Changed
get_commune_stats6 fields changed- added
Input schema / properties / commune / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / commune / typeRemoved value: -"string" - added
Input schema / properties / insee_id / anyOfAdded value: +[ + { + "anyOf": [ + { + "maxLength": 5, + "minLength": 5, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / insee_id / maxLengthRemoved value: -5 - removed
Input schema / properties / insee_id / minLengthRemoved value: -5 - removed
Input schema / properties / insee_id / typeRemoved value: -"string"
- Changed
get_parcelle7 fields changed- added
Input schema / properties / include / anyOfAdded value: +[ + { + "anyOf": [ + { + "items": { + "enum": [ + "batiments", + "dvf", + "dpes", + "urbanisme", + "bdnb", + "piscines", + "rnc", + "majic_pm", + "sitadel" + ], + "type": "string" + }, + "type": "array" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / include / itemsRemoved value: -{ - "enum": [ - "batiments", - "dvf", - "dpes", - "urbanisme", - "bdnb", - "piscines", - "rnc", - "majic_pm", - "sitadel" - ], - "type": "string" -} - removed
Input schema / properties / include / typeRemoved value: -"array" - added
Input schema / properties / max_items / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 200, + "minimum": 1, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / max_items / maximumRemoved value: -200 - removed
Input schema / properties / max_items / minimumRemoved value: -1 - removed
Input schema / properties / max_items / typeRemoved value: -"integer"
- Changed
search_dpe50 fields changed- added
Input schema / properties / address / anyOfAdded value: +[ + { + "anyOf": [ + { + "minLength": 3, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / address / minLengthRemoved value: -3 - removed
Input schema / properties / address / typeRemoved value: -"string" - added
Input schema / properties / annee_construction_max / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / annee_construction_max / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / annee_construction_max / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / annee_construction_max / typeRemoved value: -"integer" - added
Input schema / properties / annee_construction_min / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / annee_construction_min / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / annee_construction_min / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / annee_construction_min / typeRemoved value: -"integer" - added
Input schema / properties / classe_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_dpe / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_dpe / typeRemoved value: -"string" - added
Input schema / properties / classe_ges / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_ges / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_ges / typeRemoved value: -"string" - added
Input schema / properties / commune / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / commune / typeRemoved value: -"string" - added
Input schema / properties / date_dpe_max / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_dpe_max / typeRemoved value: -"string" - added
Input schema / properties / date_dpe_min / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_dpe_min / typeRemoved value: -"string" - added
Input schema / properties / lat / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lat / typeRemoved value: -"number" - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 50, + "minimum": 1, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / limit / maximumRemoved value: -50 - removed
Input schema / properties / limit / minimumRemoved value: -1 - removed
Input schema / properties / limit / typeRemoved value: -"integer" - added
Input schema / properties / lng / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lng / typeRemoved value: -"number" - added
Input schema / properties / offset / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 5000, + "minimum": 0, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / offset / maximumRemoved value: -5000 - removed
Input schema / properties / offset / minimumRemoved value: -0 - removed
Input schema / properties / offset / typeRemoved value: -"integer" - added
Input schema / properties / parcelle_id / anyOfAdded value: +[ + { + "anyOf": [ + { + "maxLength": 14, + "minLength": 14, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / parcelle_id / maxLengthRemoved value: -14 - removed
Input schema / properties / parcelle_id / minLengthRemoved value: -14 - removed
Input schema / properties / parcelle_id / typeRemoved value: -"string" - added
Input schema / properties / rayon_m / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 2000, + "minimum": 50, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / rayon_m / maximumRemoved value: -2000 - removed
Input schema / properties / rayon_m / minimumRemoved value: -50 - removed
Input schema / properties / rayon_m / typeRemoved value: -"integer" - added
Input schema / properties / surface_max_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_max_m2 / typeRemoved value: -"number" - added
Input schema / properties / surface_min_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_min_m2 / typeRemoved value: -"number" - added
Input schema / properties / type_batiment / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "maison", + "appartement", + "immeuble" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / type_batiment / enumRemoved value: -[ - "maison", - "appartement", - "immeuble" -] - removed
Input schema / properties / type_batiment / typeRemoved value: -"string"
- Changed
search_parcelles56 fields changed- added
Input schema / properties / annee_construction / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / annee_construction / typeRemoved value: -"string" - added
Input schema / properties / classe_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_dpe / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_dpe / typeRemoved value: -"string" - added
Input schema / properties / classe_ges / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_ges / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_ges / typeRemoved value: -"string" - added
Input schema / properties / commune / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / commune / typeRemoved value: -"string" - added
Input schema / properties / conso_dpe_kwh_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / conso_dpe_kwh_m2 / typeRemoved value: -"string" - added
Input schema / properties / date_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_dpe / typeRemoved value: -"string" - added
Input schema / properties / date_permis_construire / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_permis_construire / typeRemoved value: -"string" - added
Input schema / properties / date_vente / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_vente / typeRemoved value: -"string" - added
Input schema / properties / departement / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / departement / typeRemoved value: -"string" - added
Input schema / properties / has_copropriete / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "boolean" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / has_copropriete / typeRemoved value: -"boolean" - added
Input schema / properties / has_permis_construire / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "boolean" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / has_permis_construire / typeRemoved value: -"boolean" - added
Input schema / properties / has_piscine / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "boolean" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / has_piscine / typeRemoved value: -"boolean" - added
Input schema / properties / has_proprietaire_personne_morale / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "boolean" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / has_proprietaire_personne_morale / typeRemoved value: -"boolean" - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 50, + "minimum": 1, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / limit / maximumRemoved value: -50 - removed
Input schema / properties / limit / minimumRemoved value: -1 - removed
Input schema / properties / limit / typeRemoved value: -"integer" - added
Input schema / properties / nombre_batiments / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / nombre_batiments / typeRemoved value: -"string" - added
Input schema / properties / offset / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / offset / minimumRemoved value: -0 - removed
Input schema / properties / offset / typeRemoved value: -"integer" - added
Input schema / properties / prix_vente_eur / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / prix_vente_eur / typeRemoved value: -"string" - added
Input schema / properties / region / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / region / typeRemoved value: -"string" - added
Input schema / properties / siren / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / siren / typeRemoved value: -"string" - added
Input schema / properties / surface_batiment_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_batiment_m2 / typeRemoved value: -"string" - added
Input schema / properties / surface_habitable_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_habitable_m2 / typeRemoved value: -"string" - added
Input schema / properties / surface_parcelle_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_parcelle_m2 / typeRemoved value: -"string" - added
Input schema / properties / surface_piscine_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_piscine_m2 / typeRemoved value: -"string" - added
Input schema / properties / viewport / anyOfAdded value: +[ + { + "anyOf": [ + { + "properties": { + "ne_lat": { + "type": "number" + }, + "ne_lng": { + "type": "number" + }, + "sw_lat": { + "type": "number" + }, + "sw_lng": { + "type": "number" + } + }, + "required": [ + "sw_lat", + "sw_lng", + "ne_lat", + "ne_lng" + ], + "type": "object" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / viewport / propertiesRemoved value: -{ - "ne_lat": { - "type": "number" - }, - "ne_lng": { - "type": "number" - }, - "sw_lat": { - "type": "number" - }, - "sw_lng": { - "type": "number" - } -} - removed
Input schema / properties / viewport / requiredRemoved value: -[ - "sw_lat", - "sw_lng", - "ne_lat", - "ne_lng" -] - removed
Input schema / properties / viewport / typeRemoved value: -"object"
- Changed
search_ventes_dvf45 fields changed- added
Input schema / properties / address / anyOfAdded value: +[ + { + "anyOf": [ + { + "minLength": 3, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / address / minLengthRemoved value: -3 - removed
Input schema / properties / address / typeRemoved value: -"string" - added
Input schema / properties / commune / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / commune / typeRemoved value: -"string" - added
Input schema / properties / date_max / anyOfAdded value: +[ + { + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_max / patternRemoved value: -"^\\d{4}-\\d{2}-\\d{2}$" - removed
Input schema / properties / date_max / typeRemoved value: -"string" - added
Input schema / properties / date_min / anyOfAdded value: +[ + { + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_min / patternRemoved value: -"^\\d{4}-\\d{2}-\\d{2}$" - removed
Input schema / properties / date_min / typeRemoved value: -"string" - added
Input schema / properties / lat / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lat / typeRemoved value: -"number" - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 50, + "minimum": 1, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / limit / maximumRemoved value: -50 - removed
Input schema / properties / limit / minimumRemoved value: -1 - removed
Input schema / properties / limit / typeRemoved value: -"integer" - added
Input schema / properties / lng / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lng / typeRemoved value: -"number" - added
Input schema / properties / offset / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 5000, + "minimum": 0, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / offset / maximumRemoved value: -5000 - removed
Input schema / properties / offset / minimumRemoved value: -0 - removed
Input schema / properties / offset / typeRemoved value: -"integer" - added
Input schema / properties / parcelle_id / anyOfAdded value: +[ + { + "anyOf": [ + { + "maxLength": 14, + "minLength": 14, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / parcelle_id / maxLengthRemoved value: -14 - removed
Input schema / properties / parcelle_id / minLengthRemoved value: -14 - removed
Input schema / properties / parcelle_id / typeRemoved value: -"string" - added
Input schema / properties / prix_max_eur / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / prix_max_eur / typeRemoved value: -"number" - added
Input schema / properties / prix_min_eur / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / prix_min_eur / typeRemoved value: -"number" - added
Input schema / properties / rayon_m / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 2000, + "minimum": 50, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / rayon_m / maximumRemoved value: -2000 - removed
Input schema / properties / rayon_m / minimumRemoved value: -50 - removed
Input schema / properties / rayon_m / typeRemoved value: -"integer" - added
Input schema / properties / surface_max_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_max_m2 / typeRemoved value: -"number" - added
Input schema / properties / surface_min_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_min_m2 / typeRemoved value: -"number" - added
Input schema / properties / tri / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "date", + "distance" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / tri / enumRemoved value: -[ - "date", - "distance" -] - removed
Input schema / properties / tri / typeRemoved value: -"string" - added
Input schema / properties / type_bien / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "maison", + "appartement", + "local" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / type_bien / enumRemoved value: -[ - "maison", - "appartement", - "local" -] - removed
Input schema / properties / type_bien / typeRemoved value: -"string"
12 tool updates
- First observed
estimate_property_price - First observed
find_parcelles_by_address - First observed
find_parcelles_by_criteria - First observed
geolocate_listing - First observed
get_commune_stats - First observed
get_dpe - First observed
get_parcelle - First observed
get_parcelle_context - First observed
search_communes - First observed
search_dpe - First observed
search_parcelles - First observed
search_ventes_dvf
Related MCP Connectors
france-dvf — France's official property-transfer price records ('Demandes
French address intelligence: 18.6M sold prices, energy, risk, crime and schools — each sourced.
Données immobilières officielles françaises (DVF+, cadastre, DPE, risques, urbanisme) via MCP.
French property market data — 17M+ DVF sales, 22M+ DPE energy ratings, 20M+ building records.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAccess 17M+ geocoded French property transactions (DVF), 22M+ DPE energy ratings, and 20M+ building records via MCP or REST API. Search transactions, market stats, comparables, price trends, rental yield, flip detection, and more.MIT
- AlicenseNot gradedqualityDmaintenanceAnalyzes French real-estate market using open data sources like DVF transactions, DPE certificates, and risk data.MIT
- FlicenseNot gradedqualityDmaintenanceProvides French address data from DVF, Géorisques, and SSMSI sources, including property prices, risks, and crime statistics.-
- AlicenseAqualityBmaintenanceProvides French real estate intelligence from official open data, including notarial sales, transparent estimates, rents, property tax, energy diagnostics, risks, and commune profiles. It enables MCP clients to get auditable property reports and analysis from a simple address without an API key.12161,861 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.