Skip to main content
Glama

Parcellaire — cadastre, DVF & DPE

Server Details

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

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 14 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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 tools
estimate_property_priceEstimer le prix d'un bien immobilier
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude, si pas d'adresse
lngNoLongitude, si pas d'adresse
addressNoAdresse du bien (option la plus simple)
type_bienYesType de bien : 'maison' ou 'appartement'
classe_dpeNoClasse DPE si connue (affine l'estimation)
code_inseeNoCode INSEE de la commune, si pas d'adresse
surface_m2YesSurface habitable en m² (annonce ou DPE du logement), ex: 85. Jamais l'emprise au sol d'un bâtiment.
terrain_m2NoSurface du terrain en m² (maisons)
annee_constructionNoAnnée de construction, ex: 1975 (affine l'estimation)
find_parcelles_by_addressTrouver les parcelles d'une adresseA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesAdresse postale, ex: '10 quai des Chartrons, Bordeaux'

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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éristiques
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
communeNoNom 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_dpeNoDate 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_m2NoÉmissions GES en kg CO2/m²/an
type_bienNoType de bien : 'maison' ou 'appartement'
classe_dpeNoClasse énergie du DPE : une lettre de A à G
classe_gesNoClasse GES du DPE : une lettre de A à G
code_postalNoCode postal, ex: '49100'
conso_dpe_kwh_m2NoConsommation énergie primaire en kWh/m²/an
annee_constructionNoAnnée de construction, ex: 1975
surface_terrain_m2NoSurface du terrain en m² (maisons), ex: 600
surface_habitable_m2NoSurface habitable en m², ex: 85
find_placeLocaliser un lieu nomméA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNombre de candidats (défaut 5, max 10)
queryYesNom du lieu et commune, ex: 'gare Angers Saint-Laud'

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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ère
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL complète de l'annonce immobilière
get_commune_statsStatistiques immobilières d'une commune
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
communeNoNom 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_idNoCode INSEE de la commune (prioritaire si fourni)
get_dpeDiagnostic de performance énergétique (DPE)A
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpe_idYesNuméro ADEME du DPE, ex: '2233E1234567X'

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 cadastraleA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoSections à inclure, ex: ['dvf', 'dpes']. Aucune par défaut : sans include, seule la fiche de base de la parcelle est retournée.
max_itemsNoNombre maximum d'éléments par section liste (défaut 30). Les sections tronquées sont signalées dans 'sections_tronquees'.
parcelle_idYesIDU de la parcelle, 14 caractères, ex: '33063000IK0001'

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 parcelleA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fibreNoÉligibilité fibre et opérateurs (ARCEP)
santeNoMédecins, pharmacies… proches
ecolesNoÉcoles proches
loyersNoLoyers de référence en €/m²
empriseNoEmprise du bâti au sol
risquesNoRisques Géorisques : inondation, argiles, radon, sismicité, pollution…
terrainNoRelief et altitude
rechargeNoBornes de recharge proches
commercesNoCommerces proches
filiationNoHistorique des découpages cadastraux
parcelle_idYesIDU de la parcelle, 14 caractères, ex: '33063000IK0001'
restrictions_eauNoArrêtés de restriction d'eau (sécheresse) en cours
secteur_scolaireNoÉtablissements du secteur scolaire

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 communeA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNom de commune ou code postal, ex: 'Bordeaux' ou '33000'

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 zone
Read-onlyIdempotent
Inspect

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').

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude du centre (avec 'lng')
lngNoLongitude du centre (avec 'lat')
limitNoDPE par page (défaut 20, max 50)
offsetNoIndex de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante.
addressNoAdresse postale au centre de la zone
communeNoNom 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_mNoRayon autour du centre en mètres (défaut 500, max 25000)
classe_dpeNoClasse énergie : une lettre de A à G
classe_gesNoClasse GES : une lettre de A à G
parcelle_idNoIDU d'une parcelle au centre de la zone
date_dpe_maxNoBorne 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_minNoBorne 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_batimentNo'immeuble' = DPE d'immeuble collectif entier
surface_max_m2NoSurface habitable maximale en m², ex: 120
surface_min_m2NoSurface habitable minimale en m², ex: 60
intercommunaliteNoNom 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_maxNoAnnée de construction maximale, ex: 1990
annee_construction_minNoAnnée de construction minimale, ex: 1950
search_parcellesRecherche cadastrale multicritères
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNombre de parcelles détaillées retournées par page (défaut 20, max 50)
sirenNoSIREN du propriétaire personne morale
offsetNoIndex de départ pour la pagination (défaut 0). Utiliser pagination.next_offset pour la page suivante.
regionNoNom 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).
communeNoNom 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_dpeNoDate 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.
viewportNoZone géographique explicite (alternative à commune). Hauteur ≤ 20 km pour un détail parcelle par parcelle
classe_dpeNoClasse énergie d'un logement. Clé exacte: classe_dpe; valeur: une lettre A-G.
classe_gesNoClasse GES. Clé exacte: classe_ges; valeur: une lettre A-G.
date_venteNoDate 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.
departementNoCode ou nom du département, ex: '49', 'Maine-et-Loire'. Peut aussi restreindre une commune ou un viewport.
has_piscineNoUniquement les parcelles avec piscine
prix_vente_eurNoPrix de la dernière vente DVF en euros. Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
has_coproprieteNotrue : parcelles avec une copropriété RNC connue. false non pris en charge ; omettre ne filtre pas ce critère.
conso_dpe_kwh_m2NoConsommation énergie primaire en kWh/m²/an (alternative à classe_dpe). Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
intercommunaliteNoNom 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_batimentsNoNombre de bâtiments sur la parcelle. Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
annee_constructionNoAnnée de construction (BDNB). Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
has_permis_demolirNoUniquement les parcelles avec un permis de démolir (PD)
surface_piscine_m2NoSurface de la piscine en m². Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
surface_batiment_m2NoEmprise au sol d'un bâtiment en m². Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
surface_parcelle_m2NoUne 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_m2NoSurface 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_construireNoUniquement les parcelles avec un permis de construire (PC), hors permis de démolir, d'aménager et déclarations préalables
date_permis_construireNoDate 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_moraleNoUniquement les parcelles détenues par une personne morale (société, collectivité…)
search_permisRechercher des permis par destination
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNombre de permis par page, défaut 20, maximum 50.
offsetNoIndex de départ, reprendre pagination.next_offset. Au-delà de 5000, restreindre la période ou la zone.
regionNoCode INSEE ou nom de la région, ex: Pays de la Loire. France métropolitaine hors Corse.
communeNoNom 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).
departementNoCode ou nom du département, ex: 44 ou Loire-Atlantique. Peut restreindre une commune ou une région.
destinationNoDestination à rechercher à partir de ses surfaces déclarées. Pour des hôtels : hebergement_hotelier. Omettre pour toutes les destinations.
intercommunaliteNoNom ou SIREN de l'intercommunalité, alternative à commune.
date_autorisationNoDate 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_autorisationNoPC (permis de construire, défaut), DP (déclaration préalable), PD (démolition) ou PA (aménagement).
operation_destinationNoAvec 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 zone
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude du centre (avec 'lng')
lngNoLongitude du centre (avec 'lat')
triNoTri des ventes (défaut : date décroissante ; distance pour les plus proches)
limitNoVentes par page (défaut 20, max 50)
offsetNoIndex de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante.
addressNoAdresse postale au centre de la zone
communeNoNom 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_mNoRayon autour du centre en mètres (défaut 500, max 25000)
date_maxNoBorne maximale inclusive au format ISO 'AAAA-MM-JJ', ex: '2026-09-30'. Omettre pour ne pas fixer de maximum.
date_minNoBorne 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_bienNoType de bien vendu : 'maison', 'appartement' ou 'local' (local commercial, industriel ou assimilé)
parcelle_idNoIDU d'une parcelle au centre de la zone
prix_max_eurNoPrix de vente maximal en euros, ex: 400000
prix_min_eurNoPrix de vente minimal en euros, ex: 150000
surface_max_m2NoSurface bâtie maximale en m², ex: 120
surface_min_m2NoSurface bâtie minimale en m², ex: 60
send_feedbackEnvoyer un retour à l'équipe Parcellaire
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes'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'
outilsNoNoms des outils Parcellaire appelés pendant la conversation, dans l'ordre, ex: ['find_parcelles_by_address', 'search_ventes_dvf']
profilNoProfil 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.
messageYesLe retour lui-même : ce qui manque, ce qui ne marche pas ou ce qui serait utile, avec le résultat attendu
origineYes'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_usageYesCe 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_utilisateurYestrue : 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.

  1. 6 tool updates
    • Changedfind_parcelles_by_criteria1 field changed
      • changedInput schema / properties / commune / description
        Previous 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)."
    • Changedget_commune_stats1 field changed
      • changedInput schema / properties / commune / description
        Previous 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."
    • Changedsearch_dpe1 field changed
      • changedInput schema / properties / commune / description
        Previous 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')."
    • Changedsearch_parcelles4 fields changed
      • changedInput schema / properties / commune / description
        Previous 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)."
      • changedInput schema / properties / date_dpe / description
        Previous 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."
      • changedInput schema / properties / date_permis_construire / description
        Previous 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."
      • changedInput schema / properties / date_vente / description
        Previous 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."
    • Changedsearch_permis2 fields changed
      • changedInput schema / properties / commune / description
        Previous 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)."
      • changedInput schema / properties / date_autorisation / description
        Previous 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."
    • Changedsearch_ventes_dvf1 field changed
      • changedInput schema / properties / commune / description
        Previous 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')."
  2. 1 tool update
    • Changedsearch_parcelles1 field changed
      • changedInput schema / properties / has_copropriete / description
        Previous 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."
  3. 1 tool update
    • Addedsearch_permis
  4. 1 tool update
    • Changedestimate_property_price1 field changed
      • changedInput schema / properties / surface_m2 / description
        Previous 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."
  5. 1 tool update
    • Changedsend_feedback3 fields changed
      • addedInput schema / properties / accord_utilisateur
        Added 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"
        +}
      • changedInput schema / properties / origine / description
        Previous 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é"
      • changedInput schema / required
        Previous value: -[
        -  "type",
        -  "origine",
        -  "cas_usage",
        -  "message"
        -]New value: +[
        +  "type",
        +  "origine",
        +  "accord_utilisateur",
        +  "cas_usage",
        +  "message"
        +]
  6. 1 tool update
    • Addedsend_feedback
  7. 4 tool updates
    • Changedfind_parcelles_by_criteria1 field changed
      • changedInput schema / properties / date_dpe / description
        Previous 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."
    • Changedsearch_dpe2 fields changed
      • changedInput schema / properties / date_dpe_max / description
        Previous 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."
      • changedInput schema / properties / date_dpe_min / description
        Previous 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."
    • Changedsearch_parcelles3 fields changed
      • changedInput schema / properties / date_dpe / description
        Previous 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."
      • changedInput schema / properties / date_permis_construire / description
        Previous 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."
      • changedInput schema / properties / date_vente / description
        Previous 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."
    • Changedsearch_ventes_dvf2 fields changed
      • changedInput schema / properties / date_max / description
        Previous 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."
      • changedInput schema / properties / date_min / description
        Previous 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."
  8. 2 tool updates
    • Changedsearch_dpe3 fields changed
      • addedInput schema / properties / intercommunalite
        Added 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')."
        +}
      • changedInput schema / properties / rayon_m / anyOf
        Previous 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"
        +  }
        +]
      • changedInput schema / properties / rayon_m / description
        Previous 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)"
    • Changedsearch_ventes_dvf2 fields changed
      • changedInput schema / properties / rayon_m / anyOf
        Previous 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"
        +  }
        +]
      • changedInput schema / properties / rayon_m / description
        Previous 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)"
  9. 1 tool update
    • Changedsearch_parcelles3 fields changed
      • changedInput schema / properties / date_permis_construire / description
        Previous 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'"
      • changedInput schema / properties / has_permis_construire / description
        Previous 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"
      • addedInput schema / properties / has_permis_demolir
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "const": "",
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Uniquement les parcelles avec un permis de démolir (PD)"
        +}
  10. 1 tool update
    • Changedsearch_parcelles1 field changed
      • addedInput schema / properties / intercommunalite
        Added 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."
        +}
  11. 1 tool update
    • Addedfind_place
  12. 6 tool updates
    • Changedestimate_property_price3 fields changed
      • addedInput schema / properties / annee_construction / description
        Added value: +"Année de construction, ex: 1975 (affine l'estimation)"
      • changedInput schema / properties / surface_m2 / description
        Previous value: -"Surface habitable en m²"New value: +"Surface habitable en m², nombre, ex: 85"
      • addedInput schema / properties / type_bien / description
        Added value: +"Type de bien : 'maison' ou 'appartement'"
    • Changedfind_parcelles_by_criteria6 fields changed
      • addedInput schema / properties / annee_construction / description
        Added value: +"Année de construction, ex: 1975"
      • addedInput schema / properties / classe_dpe / description
        Added value: +"Classe énergie du DPE : une lettre de A à G"
      • addedInput schema / properties / classe_ges / description
        Added value: +"Classe GES du DPE : une lettre de A à G"
      • addedInput schema / properties / surface_habitable_m2 / description
        Added value: +"Surface habitable en m², ex: 85"
      • addedInput schema / properties / surface_terrain_m2 / description
        Added value: +"Surface du terrain en m² (maisons), ex: 600"
      • addedInput schema / properties / type_bien / description
        Added value: +"Type de bien : 'maison' ou 'appartement'"
    • Changedget_parcelle2 fields changed
      • changedInput schema / properties / include / anyOf
        Previous 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"
        +  }
        +]
      • changedInput schema / properties / include / description
        Previous 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."
    • Changedsearch_dpe7 fields changed
      • addedInput schema / properties / annee_construction_max / description
        Added value: +"Année de construction maximale, ex: 1990"
      • addedInput schema / properties / annee_construction_min / description
        Added value: +"Année de construction minimale, ex: 1950"
      • addedInput schema / properties / classe_dpe / description
        Added value: +"Classe énergie : une lettre de A à G"
      • addedInput schema / properties / classe_ges / description
        Added value: +"Classe GES : une lettre de A à G"
      • addedInput schema / properties / offset / description
        Added value: +"Index de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante."
      • addedInput schema / properties / surface_max_m2 / description
        Added value: +"Surface habitable maximale en m², ex: 120"
      • addedInput schema / properties / surface_min_m2 / description
        Added value: +"Surface habitable minimale en m², ex: 60"
    • Changedsearch_parcelles22 fields changed
      • changedInput schema / properties / annee_construction / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / annee_construction / description
        Previous 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)"
      • changedInput schema / properties / conso_dpe_kwh_m2 / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / conso_dpe_kwh_m2 / description
        Previous 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)"
      • changedInput schema / properties / date_dpe / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / date_dpe / description
        Previous 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'"
      • changedInput schema / properties / date_permis_construire / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / date_permis_construire / description
        Previous 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'"
      • changedInput schema / properties / date_vente / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / date_vente / description
        Previous 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'"
      • changedInput schema / properties / nombre_batiments / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / nombre_batiments / description
        Previous 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)"
      • changedInput schema / properties / prix_vente_eur / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / prix_vente_eur / description
        Previous 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)"
      • changedInput schema / properties / surface_batiment_m2 / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / surface_batiment_m2 / description
        Previous 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)"
      • changedInput schema / properties / surface_habitable_m2 / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / surface_habitable_m2 / description
        Previous 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'."
      • changedInput schema / properties / surface_parcelle_m2 / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / surface_parcelle_m2 / description
        Previous 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."
      • changedInput schema / properties / surface_piscine_m2 / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "const": "",
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "number"
        +          }
        +        ]
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / surface_piscine_m2 / description
        Previous 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)"
    • Changedsearch_ventes_dvf6 fields changed
      • addedInput schema / properties / offset / description
        Added value: +"Index de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante."
      • addedInput schema / properties / prix_max_eur / description
        Added value: +"Prix de vente maximal en euros, ex: 400000"
      • addedInput schema / properties / prix_min_eur / description
        Added value: +"Prix de vente minimal en euros, ex: 150000"
      • addedInput schema / properties / surface_max_m2 / description
        Added value: +"Surface bâtie maximale en m², ex: 120"
      • addedInput schema / properties / surface_min_m2 / description
        Added value: +"Surface bâtie minimale en m², ex: 60"
      • addedInput schema / properties / type_bien / description
        Added value: +"Type de bien vendu : 'maison', 'appartement' ou 'local' (local commercial, industriel ou assimilé)"
  13. 1 tool update
    • Changedsearch_parcelles2 fields changed
      • changedInput schema / properties / surface_habitable_m2 / description
        Previous 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'."
      • changedInput schema / properties / surface_parcelle_m2 / description
        Previous 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."
  14. 12 tool updates
    • Changedestimate_property_price1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfind_parcelles_by_address1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfind_parcelles_by_criteria1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgeolocate_listing1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_commune_stats1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_dpe1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_parcelle1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_parcelle_context1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_communes1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_dpe1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_parcelles1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_ventes_dvf1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  15. 1 tool update
    • Changedsearch_ventes_dvf1 field changed
      • changedInput schema / properties / tri / description
        Previous 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)"
  16. 7 tool updates
    • Changedestimate_property_price19 fields changed
      • addedInput schema / properties / address / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / address / type
        Removed value: -"string"
      • addedInput schema / properties / annee_construction / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / annee_construction / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / annee_construction / minimum
        Removed value: --9007199254740991
      • removedInput schema / properties / annee_construction / type
        Removed value: -"integer"
      • addedInput schema / properties / classe_dpe / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "A",
        +          "B",
        +          "C",
        +          "D",
        +          "E",
        +          "F",
        +          "G"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / classe_dpe / enum
        Removed value: -[
        -  "A",
        -  "B",
        -  "C",
        -  "D",
        -  "E",
        -  "F",
        -  "G"
        -]
      • removedInput schema / properties / classe_dpe / type
        Removed value: -"string"
      • addedInput schema / properties / code_insee / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maxLength": 5,
        +        "minLength": 5,
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / code_insee / maxLength
        Removed value: -5
      • removedInput schema / properties / code_insee / minLength
        Removed value: -5
      • removedInput schema / properties / code_insee / type
        Removed value: -"string"
      • addedInput schema / properties / lat / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / lat / type
        Removed value: -"number"
      • addedInput schema / properties / lng / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / lng / type
        Removed value: -"number"
      • addedInput schema / properties / terrain_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / terrain_m2 / type
        Removed value: -"number"
    • Changedfind_parcelles_by_criteria34 fields changed
      • addedInput schema / properties / annee_construction / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / annee_construction / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / annee_construction / minimum
        Removed value: --9007199254740991
      • removedInput schema / properties / annee_construction / type
        Removed value: -"integer"
      • addedInput schema / properties / classe_dpe / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "A",
        +          "B",
        +          "C",
        +          "D",
        +          "E",
        +          "F",
        +          "G"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / classe_dpe / enum
        Removed value: -[
        -  "A",
        -  "B",
        -  "C",
        -  "D",
        -  "E",
        -  "F",
        -  "G"
        -]
      • removedInput schema / properties / classe_dpe / type
        Removed value: -"string"
      • addedInput schema / properties / classe_ges / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "A",
        +          "B",
        +          "C",
        +          "D",
        +          "E",
        +          "F",
        +          "G"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / classe_ges / enum
        Removed value: -[
        -  "A",
        -  "B",
        -  "C",
        -  "D",
        -  "E",
        -  "F",
        -  "G"
        -]
      • removedInput schema / properties / classe_ges / type
        Removed value: -"string"
      • addedInput schema / properties / code_postal / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maxLength": 5,
        +        "minLength": 5,
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / code_postal / maxLength
        Removed value: -5
      • removedInput schema / properties / code_postal / minLength
        Removed value: -5
      • removedInput schema / properties / code_postal / type
        Removed value: -"string"
      • addedInput schema / properties / commune / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / commune / type
        Removed value: -"string"
      • addedInput schema / properties / conso_dpe_kwh_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / conso_dpe_kwh_m2 / exclusiveMinimum
        Removed value: -0
      • removedInput schema / properties / conso_dpe_kwh_m2 / type
        Removed value: -"number"
      • addedInput schema / properties / date_dpe / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$",
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / date_dpe / pattern
        Removed value: -"^\\d{4}-\\d{2}(-\\d{2})?$"
      • removedInput schema / properties / date_dpe / type
        Removed value: -"string"
      • addedInput schema / properties / ges_kg_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / ges_kg_m2 / minimum
        Removed value: -0
      • removedInput schema / properties / ges_kg_m2 / type
        Removed value: -"number"
      • addedInput schema / properties / surface_habitable_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / surface_habitable_m2 / exclusiveMinimum
        Removed value: -0
      • removedInput schema / properties / surface_habitable_m2 / type
        Removed value: -"number"
      • addedInput schema / properties / surface_terrain_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / surface_terrain_m2 / exclusiveMinimum
        Removed value: -0
      • removedInput schema / properties / surface_terrain_m2 / type
        Removed value: -"number"
      • addedInput schema / properties / type_bien / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "maison",
        +          "appartement"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / type_bien / enum
        Removed value: -[
        -  "maison",
        -  "appartement"
        -]
      • removedInput schema / properties / type_bien / type
        Removed value: -"string"
    • Changedget_commune_stats6 fields changed
      • addedInput schema / properties / commune / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / commune / type
        Removed value: -"string"
      • addedInput schema / properties / insee_id / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maxLength": 5,
        +        "minLength": 5,
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / insee_id / maxLength
        Removed value: -5
      • removedInput schema / properties / insee_id / minLength
        Removed value: -5
      • removedInput schema / properties / insee_id / type
        Removed value: -"string"
    • Changedget_parcelle7 fields changed
      • addedInput schema / properties / include / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "items": {
        +          "enum": [
        +            "batiments",
        +            "dvf",
        +            "dpes",
        +            "urbanisme",
        +            "bdnb",
        +            "piscines",
        +            "rnc",
        +            "majic_pm",
        +            "sitadel"
        +          ],
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / include / items
        Removed value: -{
        -  "enum": [
        -    "batiments",
        -    "dvf",
        -    "dpes",
        -    "urbanisme",
        -    "bdnb",
        -    "piscines",
        -    "rnc",
        -    "majic_pm",
        -    "sitadel"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / include / type
        Removed value: -"array"
      • addedInput schema / properties / max_items / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 200,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / max_items / maximum
        Removed value: -200
      • removedInput schema / properties / max_items / minimum
        Removed value: -1
      • removedInput schema / properties / max_items / type
        Removed value: -"integer"
    • Changedsearch_dpe50 fields changed
      • addedInput schema / properties / address / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "minLength": 3,
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / address / minLength
        Removed value: -3
      • removedInput schema / properties / address / type
        Removed value: -"string"
      • addedInput schema / properties / annee_construction_max / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / annee_construction_max / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / annee_construction_max / minimum
        Removed value: --9007199254740991
      • removedInput schema / properties / annee_construction_max / type
        Removed value: -"integer"
      • addedInput schema / properties / annee_construction_min / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / annee_construction_min / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / annee_construction_min / minimum
        Removed value: --9007199254740991
      • removedInput schema / properties / annee_construction_min / type
        Removed value: -"integer"
      • addedInput schema / properties / classe_dpe / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "A",
        +          "B",
        +          "C",
        +          "D",
        +          "E",
        +          "F",
        +          "G"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / classe_dpe / enum
        Removed value: -[
        -  "A",
        -  "B",
        -  "C",
        -  "D",
        -  "E",
        -  "F",
        -  "G"
        -]
      • removedInput schema / properties / classe_dpe / type
        Removed value: -"string"
      • addedInput schema / properties / classe_ges / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "A",
        +          "B",
        +          "C",
        +          "D",
        +          "E",
        +          "F",
        +          "G"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / classe_ges / enum
        Removed value: -[
        -  "A",
        -  "B",
        -  "C",
        -  "D",
        -  "E",
        -  "F",
        -  "G"
        -]
      • removedInput schema / properties / classe_ges / type
        Removed value: -"string"
      • addedInput schema / properties / commune / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / commune / type
        Removed value: -"string"
      • addedInput schema / properties / date_dpe_max / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / date_dpe_max / type
        Removed value: -"string"
      • addedInput schema / properties / date_dpe_min / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / date_dpe_min / type
        Removed value: -"string"
      • addedInput schema / properties / lat / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / lat / type
        Removed value: -"number"
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / limit / maximum
        Removed value: -50
      • removedInput schema / properties / limit / minimum
        Removed value: -1
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
      • addedInput schema / properties / lng / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / lng / type
        Removed value: -"number"
      • addedInput schema / properties / offset / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 5000,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / offset / maximum
        Removed value: -5000
      • removedInput schema / properties / offset / minimum
        Removed value: -0
      • removedInput schema / properties / offset / type
        Removed value: -"integer"
      • addedInput schema / properties / parcelle_id / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maxLength": 14,
        +        "minLength": 14,
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / parcelle_id / maxLength
        Removed value: -14
      • removedInput schema / properties / parcelle_id / minLength
        Removed value: -14
      • removedInput schema / properties / parcelle_id / type
        Removed value: -"string"
      • addedInput schema / properties / rayon_m / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 2000,
        +        "minimum": 50,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / rayon_m / maximum
        Removed value: -2000
      • removedInput schema / properties / rayon_m / minimum
        Removed value: -50
      • removedInput schema / properties / rayon_m / type
        Removed value: -"integer"
      • addedInput schema / properties / surface_max_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / surface_max_m2 / type
        Removed value: -"number"
      • addedInput schema / properties / surface_min_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / surface_min_m2 / type
        Removed value: -"number"
      • addedInput schema / properties / type_batiment / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "maison",
        +          "appartement",
        +          "immeuble"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / type_batiment / enum
        Removed value: -[
        -  "maison",
        -  "appartement",
        -  "immeuble"
        -]
      • removedInput schema / properties / type_batiment / type
        Removed value: -"string"
    • Changedsearch_parcelles56 fields changed
      • addedInput schema / properties / annee_construction / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / annee_construction / type
        Removed value: -"string"
      • addedInput schema / properties / classe_dpe / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "A",
        +          "B",
        +          "C",
        +          "D",
        +          "E",
        +          "F",
        +          "G"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / classe_dpe / enum
        Removed value: -[
        -  "A",
        -  "B",
        -  "C",
        -  "D",
        -  "E",
        -  "F",
        -  "G"
        -]
      • removedInput schema / properties / classe_dpe / type
        Removed value: -"string"
      • addedInput schema / properties / classe_ges / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "A",
        +          "B",
        +          "C",
        +          "D",
        +          "E",
        +          "F",
        +          "G"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / classe_ges / enum
        Removed value: -[
        -  "A",
        -  "B",
        -  "C",
        -  "D",
        -  "E",
        -  "F",
        -  "G"
        -]
      • removedInput schema / properties / classe_ges / type
        Removed value: -"string"
      • addedInput schema / properties / commune / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / commune / type
        Removed value: -"string"
      • addedInput schema / properties / conso_dpe_kwh_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / conso_dpe_kwh_m2 / type
        Removed value: -"string"
      • addedInput schema / properties / date_dpe / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / date_dpe / type
        Removed value: -"string"
      • addedInput schema / properties / date_permis_construire / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / date_permis_construire / type
        Removed value: -"string"
      • addedInput schema / properties / date_vente / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / date_vente / type
        Removed value: -"string"
      • addedInput schema / properties / departement / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / departement / type
        Removed value: -"string"
      • addedInput schema / properties / has_copropriete / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / has_copropriete / type
        Removed value: -"boolean"
      • addedInput schema / properties / has_permis_construire / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / has_permis_construire / type
        Removed value: -"boolean"
      • addedInput schema / properties / has_piscine / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / has_piscine / type
        Removed value: -"boolean"
      • addedInput schema / properties / has_proprietaire_personne_morale / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / has_proprietaire_personne_morale / type
        Removed value: -"boolean"
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / limit / maximum
        Removed value: -50
      • removedInput schema / properties / limit / minimum
        Removed value: -1
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
      • addedInput schema / properties / nombre_batiments / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / nombre_batiments / type
        Removed value: -"string"
      • addedInput schema / properties / offset / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 9007199254740991,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / offset / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / offset / minimum
        Removed value: -0
      • removedInput schema / properties / offset / type
        Removed value: -"integer"
      • addedInput schema / properties / prix_vente_eur / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / prix_vente_eur / type
        Removed value: -"string"
      • addedInput schema / properties / region / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / region / type
        Removed value: -"string"
      • addedInput schema / properties / siren / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / siren / type
        Removed value: -"string"
      • addedInput schema / properties / surface_batiment_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / surface_batiment_m2 / type
        Removed value: -"string"
      • addedInput schema / properties / surface_habitable_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / surface_habitable_m2 / type
        Removed value: -"string"
      • addedInput schema / properties / surface_parcelle_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / surface_parcelle_m2 / type
        Removed value: -"string"
      • addedInput schema / properties / surface_piscine_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / surface_piscine_m2 / type
        Removed value: -"string"
      • addedInput schema / properties / viewport / anyOf
        Added 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"
        +  }
        +]
      • removedInput schema / properties / viewport / properties
        Removed value: -{
        -  "ne_lat": {
        -    "type": "number"
        -  },
        -  "ne_lng": {
        -    "type": "number"
        -  },
        -  "sw_lat": {
        -    "type": "number"
        -  },
        -  "sw_lng": {
        -    "type": "number"
        -  }
        -}
      • removedInput schema / properties / viewport / required
        Removed value: -[
        -  "sw_lat",
        -  "sw_lng",
        -  "ne_lat",
        -  "ne_lng"
        -]
      • removedInput schema / properties / viewport / type
        Removed value: -"object"
    • Changedsearch_ventes_dvf45 fields changed
      • addedInput schema / properties / address / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "minLength": 3,
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / address / minLength
        Removed value: -3
      • removedInput schema / properties / address / type
        Removed value: -"string"
      • addedInput schema / properties / commune / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / commune / type
        Removed value: -"string"
      • addedInput schema / properties / date_max / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / date_max / pattern
        Removed value: -"^\\d{4}-\\d{2}-\\d{2}$"
      • removedInput schema / properties / date_max / type
        Removed value: -"string"
      • addedInput schema / properties / date_min / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / date_min / pattern
        Removed value: -"^\\d{4}-\\d{2}-\\d{2}$"
      • removedInput schema / properties / date_min / type
        Removed value: -"string"
      • addedInput schema / properties / lat / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / lat / type
        Removed value: -"number"
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / limit / maximum
        Removed value: -50
      • removedInput schema / properties / limit / minimum
        Removed value: -1
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
      • addedInput schema / properties / lng / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / lng / type
        Removed value: -"number"
      • addedInput schema / properties / offset / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 5000,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / offset / maximum
        Removed value: -5000
      • removedInput schema / properties / offset / minimum
        Removed value: -0
      • removedInput schema / properties / offset / type
        Removed value: -"integer"
      • addedInput schema / properties / parcelle_id / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maxLength": 14,
        +        "minLength": 14,
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / parcelle_id / maxLength
        Removed value: -14
      • removedInput schema / properties / parcelle_id / minLength
        Removed value: -14
      • removedInput schema / properties / parcelle_id / type
        Removed value: -"string"
      • addedInput schema / properties / prix_max_eur / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / prix_max_eur / type
        Removed value: -"number"
      • addedInput schema / properties / prix_min_eur / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / prix_min_eur / type
        Removed value: -"number"
      • addedInput schema / properties / rayon_m / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "maximum": 2000,
        +        "minimum": 50,
        +        "type": "integer"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / rayon_m / maximum
        Removed value: -2000
      • removedInput schema / properties / rayon_m / minimum
        Removed value: -50
      • removedInput schema / properties / rayon_m / type
        Removed value: -"integer"
      • addedInput schema / properties / surface_max_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / surface_max_m2 / type
        Removed value: -"number"
      • addedInput schema / properties / surface_min_m2 / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / surface_min_m2 / type
        Removed value: -"number"
      • addedInput schema / properties / tri / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "date",
        +          "distance"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / tri / enum
        Removed value: -[
        -  "date",
        -  "distance"
        -]
      • removedInput schema / properties / tri / type
        Removed value: -"string"
      • addedInput schema / properties / type_bien / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "maison",
        +          "appartement",
        +          "local"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "const": "",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / type_bien / enum
        Removed value: -[
        -  "maison",
        -  "appartement",
        -  "local"
        -]
      • removedInput schema / properties / type_bien / type
        Removed value: -"string"
  17. 12 tool updates
    • First observedestimate_property_price
    • First observedfind_parcelles_by_address
    • First observedfind_parcelles_by_criteria
    • First observedgeolocate_listing
    • First observedget_commune_stats
    • First observedget_dpe
    • First observedget_parcelle
    • First observedget_parcelle_context
    • First observedsearch_communes
    • First observedsearch_dpe
    • First observedsearch_parcelles
    • First observedsearch_ventes_dvf

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Access 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
  • A
    license
    A
    quality
    B
    maintenance
    Provides 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.
    12
    16
    1,861 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources