Parcellaire — cadastre, DVF & DPE
Server Details
French real estate data: cadastre, DVF sales, DPE energy ratings, price estimates, parcel context
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 12 tools
Most tools have clearly distinct purposes, and descriptions clarify complementary workflows. The main overlap is between find_parcelles_by_criteria and geolocate_listing, which are described as equivalent except for URL input and quota, creating potential misselection. Other pairs like search_dpe/get_dpe and search_ventes_dvf/estimate_property_price are clearly differentiated.
All tool names follow a verb-first snake_case pattern with verbs like estimate, find, geolocate, get, and search. Minor inconsistency exists between find_parcelles_by_* and search_* for locating parcelles, and geolocate_listing does not follow the get_/search_ convention, but the overall naming is predictable and readable.
12 tools is well-scoped for a data-rich domain covering cadastre, DVF, DPE, commune statistics, and property price estimation. Each tool serves a distinct data access or discovery function, and the count comfortably fits within the ideal 3-15 range.
The server covers the full discovery workflow: search communes, find parcelles by address or criteria, retrieve parcelle details and context, search and retrieve DPEs, search DVF transactions, and estimate prices. Minor gaps exist, such as no dedicated tool for a single DVF transaction's full details (though search_ventes_dvf returns complete rows), but the core domain is well covered.
Available Tools
12 toolsestimate_property_priceEstimer le prix d'un bien immobilierARead-onlyIdempotentInspect
Estime le prix de vente d'une maison ou d'un appartement en France à partir des transactions DVF récentes et d'un modèle statistique national. Localisation par 'address' OU par 'lat' + 'lng' + 'code_insee'. Retourne un prix total, une fourchette, un prix au m² et des facteurs explicatifs.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude, si pas d'adresse | |
| lng | No | Longitude, si pas d'adresse | |
| address | No | Adresse du bien (option la plus simple) | |
| type_bien | Yes | ||
| classe_dpe | No | Classe DPE si connue (affine l'estimation) | |
| code_insee | No | Code INSEE de la commune, si pas d'adresse | |
| surface_m2 | Yes | Surface habitable en m² | |
| terrain_m2 | No | Surface du terrain en m² (maisons) | |
| annee_construction | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive behavior, so the description does not need to restate that. It adds meaningful behavioral detail beyond annotations: the estimate is based on recent DVF transactions and a national statistical model, returns a price range, and includes explanatory factors. This helps the agent understand the nature and limitations of the result without claiming precision.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences that front-load the purpose, then present the two localization alternatives, then enumerate the return contents. Every clause adds information; there is no tautology or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully enumerates the returned items: total price, range, price per m², and explanatory factors. It also explains the data source and the main input alternatives. It does not discuss what happens if both address and lat/lng are supplied, but given the schema and annotations, the description is sufficient for correct invocation in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 78%, so most parameters are already documented in the schema. The description adds critical non-schema semantics by encoding the exclusive localization modes: address OR lat + lng + code_insee. This constraint is not expressed in the JSON Schema and is essential for making a valid call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Estime') and a precisely defined resource: the sale price of a house or apartment in France. It names the data sources (recent DVF transactions, national statistical model) and distinguishes itself from siblings like search_ventes_dvf by estimating rather than returning raw transaction data. The stated outputs (total price, range, price per m², explanatory factors) make the tool's role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use it to get a property price estimate rather than transaction listings. It also spells out the two accepted localization modes (address or lat + lng + code_insee). It does not explicitly name sibling alternatives or exclusion conditions, but the contrast with the sibling set is clear enough for an agent to select this tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_parcelles_by_addressTrouver les parcelles d'une adresseARead-onlyIdempotentInspect
Géocode une adresse postale française (Base Adresse Nationale) puis retourne la ou les parcelles cadastrales correspondantes avec leur IDU. L'IDU permet ensuite d'appeler get_parcelle. Donner l'adresse la plus complète possible (numéro, rue, commune).
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Adresse postale, ex: '10 quai des Chartrons, Bordeaux' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate readOnly, idempotent, and non-destructive behavior. The description adds the geocoding source (Base Adresse Nationale), the return of one or more parcels with IDU, and the follow-up call to get_parcelle, which is useful behavioral context beyond the annotations. It does not say how ambiguity or no-match geocoding is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences carry the entire message: purpose, output and downstream use, and input guidance. There is no filler and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with rich annotations, the description covers the input format, expected output (parcels with IDU), and the next tool in the chain. It omits explicit failure or empty-result behavior, but that is a minor gap for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single 'address' parameter with an example, so the baseline is 3. The description adds value by recommending the most complete address format (numéro, rue, commune), which improves geocoding precision.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific action and resource: geocode a French postal address with the Base Adresse Nationale and return the corresponding cadastral parcels with their IDU. It is clear and distinct from get_parcelle because it points to get_parcelle as a later step, but it does not explicitly contrast itself with sibling tools like find_parcelles_by_criteria or search_parcelles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes a clear use case: an agent with a postal address should call this tool to obtain cadastral parcels and the IDU. It also instructs the caller to provide the most complete address possible (numéro, rue, commune). It lacks explicit when-not-to-use or alternative routing, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_parcelles_by_criteriaRetrouver un bien à partir de ses caractéristiquesARead-onlyIdempotentInspect
Identifie les parcelles candidates d'un bien immobilier à partir de ses caractéristiques (celles d'une annonce : commune, surface, classe et consommation DPE, GES, date du DPE, année de construction, terrain), en croisant avec la base des DPE et des ventes DVF. Équivalent sans URL ni quota de geolocate_listing. Plus il y a de critères DPE (consommation en kWh/m²/an, émissions GES, date), plus le résultat est précis. Retourne jusqu'à 10 candidates triées par score.
| Name | Required | Description | Default |
|---|---|---|---|
| commune | No | Nom de la commune, ex: 'Angers' | |
| date_dpe | No | Date du DPE, 'AAAA-MM' ou 'AAAA-MM-JJ' | |
| ges_kg_m2 | No | Émissions GES en kg CO2/m²/an | |
| type_bien | No | ||
| classe_dpe | No | ||
| classe_ges | No | ||
| code_postal | No | Code postal, ex: '49100' | |
| conso_dpe_kwh_m2 | No | Consommation énergie primaire en kWh/m²/an | |
| annee_construction | No | ||
| surface_terrain_m2 | No | ||
| surface_habitable_m2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the agent knows it's safe. The description adds value by disclosing the return cap ('jusqu'à 10 candidates triées par score') and the precision scaling with DPE criteria. This goes beyond what annotations alone provide, covering key behavioral aspects like output limit and result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each adding value: the main purpose, the equivalence to geolocate_listing, and the precision/return behavior. It is front-loaded with the core action. While compact, it is slightly dense but does not waste words. The structured flow makes it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 optional parameters and no output schema, the description gives essential context: returns up to 10 candidates sorted by score. It also hints at the source data (DPE/DVF). However, it does not describe the structure of each candidate parcel (e.g., identifiers, fields), nor error conditions. Given the complexity, this is a notable gap; an agent might not know what to do with the 'candidates' output without further detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (45%), so the description must compensate. It lists categories of criteria (commune, surface, classe et consommation DPE, GES, date, année de construction, terrain) but does not map them to exact parameter names or formats. It does mention that more DPE criteria (consumption, GES, date) improve precision, giving some semantic context. However, it leaves many parameters (e.g., type_bien, classe_ges, anne_construction) unexplained, so the compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Identifie' and the resource 'parcelles candidates d'un bien immobilier'. It explains the input is property characteristics from an ad, and it cross-references DPE and DVF data. It differentiates from siblings like geolocate_listing by noting it's equivalent without URL or quota, and implies a distinction from address-based search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: when you have property characteristics (commune, surface, DPE, etc.) and want to find candidate parcels. It explicitly notes it's an alternative to geolocate_listing without URL/quota. However, it does not contrast with find_parcelles_by_address or search_parcelles, so the when-not-to-use guidance is incomplete. Still, the intended scenario is clear.
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èreARead-onlyIdempotentInspect
Analyse l'URL d'une annonce immobilière française (SeLoger, PAP, Bien'ici, Le Figaro Immobilier…) : extrait les caractéristiques du bien (surface, DPE, commune, terrain) puis identifie les parcelles cadastrales candidates en croisant avec la base des DPE. Service gratuit avec une limite GLOBALE de 10 analyses par heure tous utilisateurs MCP confondus — si la limite est atteinte (erreur 429), NE PAS réessayer immédiatement.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL complète de l'annonce immobilière |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the tool as read-only and idempotent, and the description adds valuable behavioral context beyond that: the global rate limit of 10 analyses per hour, the specific 429 error, and explicit guidance not to retry immediately. This is exactly the kind of operational disclosure that helps an agent avoid failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence establishes the action and expected output, and the second delivers essential rate-limit and retry guidance. Every clause earns its place, with no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the full workflow and the nature of the result (extracted characteristics and candidate cadastral parcels), which is adequate given that no output schema exists. It could be more precise about the exact return structure, but the rate-limit warning and supported portal context make it sufficiently complete for a single-parameter, read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single required 'url' parameter with 100% coverage. The description adds extra meaning by enumerating accepted sources (SeLoger, PAP, Bien'ici, Le Figaro Immobilier) and implying that the URL must be complete, which goes beyond the schema's terse 'URL complète de l'annonce immobilière'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: it analyzes a French real-estate listing URL, extracts property characteristics, and identifies candidate cadastral parcels by cross-referencing the DPE database. This clearly distinguishes it from sibling tools that work from an address or criteria, since it is URL-driven and includes a multi-step pipeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is clear: this tool should be used when the agent has a full URL from a recognized French listing portal. It does not explicitly name alternative sibling tools or state when not to use them, but the URL-based input and listed portals make the intended context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commune_statsStatistiques immobilières d'une communeARead-onlyIdempotentInspect
Retourne les statistiques d'une commune française : parcelles et bâtiments, prix au m² et volumes de transactions DVF par année, répartition des classes DPE, taux de propriétaires, logements vacants, etc. Identifier la commune par 'insee_id' (fiable) ou par 'commune' (nom ou code postal).
| Name | Required | Description | Default |
|---|---|---|---|
| commune | No | Nom ou code postal de la commune, ex: 'Bordeaux' | |
| insee_id | No | Code INSEE de la commune (prioritaire si fourni) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds the behavioral nuance that insee_id is 'fiable' (reliable) and that commune can be name or postal code, which is useful context. It does not disclose any rate limits, error conditions, or output format, but given the annotations, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core purpose is front-loaded, and the identification instructions are compact. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description lists a wide range of returned statistics, which gives the agent a good idea of what to expect. Parameters are clearly explained. It does not mention edge cases like ambiguous commune names or empty results, but for a stats endpoint this is likely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description restates the parameter usage but adds a small value hint ('fiable' for insee_id) beyond the schema's 'prioritaire si fourni'. This is a minor addition, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retourne') and resource ('statistiques d'une commune française'), listing concrete data types (parcelles, bâtiments, prix au m², volumes DVF, DPE, etc.). This clearly distinguishes it from sibling tools that handle individual properties, DPE queries, or searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this is for commune-level aggregate statistics and explains how to identify the commune (by insee_id or name/postal code). However, it does not explicitly mention when not to use it or name alternative tools for specific sub-queries, so guidance is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dpeDiagnostic de performance énergétique (DPE)ARead-onlyIdempotentInspect
Retourne le résumé d'un DPE à partir de son numéro ADEME (13 caractères, présent sur les annonces immobilières et les diagnostics) : classe énergie, GES, surface, type de bien, localisation, ainsi qu'une estimation de prix du bien quand elle est possible.
| Name | Required | Description | Default |
|---|---|---|---|
| dpe_id | Yes | Numéro ADEME du DPE, ex: '2233E1234567X' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Les annotations couvrent déjà readOnlyHint et idempotentHint, et la description est cohérente. Elle ajoute une information comportementale clé : l'estimation de prix n'est retournée que 'quand elle est possible', ce qui gère l'attente de l'agent. Aucune contradiction avec les annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Une phrase unique, dense, sans informations superflues. L'action, l'entrée, la provenance et la sortie sont toutes présentes et bien ordonnées.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Pas de output schema, donc la description doit lister les champs retournés, ce qu'elle fait (classe, GES, surface, type, localisation, prix conditionnel). Elle ne détaille pas les types ou unités, mais pour un outil de résumé simple avec un seul paramètre, c'est suffisant. L'absence de gestion explicite d'erreur (numéro invalide) est mineure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Le schéma couvre 100% du paramètre (description et exemple). La description ajoute la longueur exacte (13 caractères) et la localisation du numéro sur les documents immobiliers, ce qui enrichit la sémantique au-delà du schéma.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Énonce un verbe spécifique ('Retourne'), un objet précis ('résumé d'un DPE') et le critère d'entrée (numéro ADEME), avec une liste détaillée des données retournées. La distinction avec le sibling 'search_dpe' est implicite via la mention 'à partir de son numéro', ce qui rend l'outil immédiatement identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
La description précise le contexte d'usage : nécessite un numéro ADEME de 13 caractères, trouvé sur les annonces et diagnostics. Elle n'explicite pas le cas où l'on n'a pas le numéro (préférer search_dpe), mais le contexte est suffisant pour décider que cet outil est à utiliser avec un identifiant déjà connu.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parcelleDétails d'une parcelle cadastraleARead-onlyIdempotentInspect
Retourne les informations d'une parcelle cadastrale à partir de son IDU (14 caractères) : surface, adresse, parcelles adjacentes (qui la touchent, avec surface, bâti et nombre de DPE), et selon 'include' les bâtiments, transactions immobilières (dvf), diagnostics énergétiques (dpes), zonage d'urbanisme (urbanisme), données bâtiment BDNB (bdnb), piscines, copropriétés (rnc), propriétaires personnes morales (majic_pm), permis de construire (sitadel).
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Sections à inclure. Défaut: ['batiments', 'dvf', 'dpes'] | |
| max_items | No | Nombre maximum d'éléments par section liste (défaut 30). Les sections tronquées sont signalées dans 'sections_tronquees'. | |
| parcelle_id | Yes | IDU de la parcelle, 14 caractères, ex: '33063000IK0001' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it enumerates the returned sections (surface, address, adjacent parcels with details) and explains that the 'include' parameter controls which optional datasets are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action and then compactly lists the include options. The list is partly redundant with the schema enum, but it serves as a useful quick summary; splitting it into shorter sentences would improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup tool with three parameters and no output schema, the description is sufficiently complete: it specifies the required IDU, the optional include sections, and the main output categories. It does not describe output formatting, but the schema covers parameters and annotations cover side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds context for parcelle_id and lists the include options, but it adds no additional meaning for max_items beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retourne') and resource ('une parcelle cadastrale') and identifies the exact lookup key (IDU). This makes the tool's scope clear and distinguishes it from sibling search tools like search_parcelles or find_parcelles_by_address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving a single parcel's details when the IDU is already known, but it does not explicitly state when to prefer it over alternatives such as search_parcelles or get_parcelle_context. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parcelle_contextEnvironnement d'une parcelleARead-onlyIdempotentInspect
Retourne l'environnement d'une parcelle cadastrale (IDU 14 caractères) à partir de sources publiques (Géorisques, ARCEP, ministère de l'Éducation, observatoires des loyers…). Passer à true uniquement les sections utiles à la question, ex: { risques: true, fibre: true }. Sans aucune section à true, aucune donnée d'environnement n'est retournée.
| Name | Required | Description | Default |
|---|---|---|---|
| fibre | No | Éligibilité fibre et opérateurs (ARCEP) | |
| sante | No | Médecins, pharmacies… proches | |
| ecoles | No | Écoles proches | |
| loyers | No | Loyers de référence en €/m² | |
| emprise | No | Emprise du bâti au sol | |
| risques | No | Risques Géorisques : inondation, argiles, radon, sismicité, pollution… | |
| terrain | No | Relief et altitude | |
| recharge | No | Bornes de recharge proches | |
| commerces | No | Commerces proches | |
| filiation | No | Historique des découpages cadastraux | |
| parcelle_id | Yes | IDU de la parcelle, 14 caractères, ex: '33063000IK0001' | |
| restrictions_eau | No | Arrêtés de restriction d'eau (sécheresse) en cours | |
| secteur_scolaire | No | Établissements du secteur scolaire |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, openWorld, and non-destructive behavior. The description adds valuable context beyond annotations: data comes from public sources and, critically, no environment data is returned unless at least one section is set to true. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the purpose front-loaded and the key usage warning immediately after. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter tool with 100% schema coverage and rich annotations, the description covers the core purpose, the input constraint, and the critical all-false behavior. It does not describe the output shape, but no output schema exists and the invocation path is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents all 13 parameters, so the baseline is 3. The description adds meaning beyond the schema by instructing the agent to set only useful sections to true and by clarifying the empty-result behavior when none are set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retourne'), the resource ('l'environnement d'une parcelle cadastrale'), and the required IDU format. It is specific enough to separate environment data from basic parcel lookup, though it does not explicitly name a sibling tool as the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit operational guidance for the boolean sections ('Passer à true uniquement les sections utiles') and warns that an all-false call returns nothing. However, it does not say when to prefer this tool over siblings such as get_parcelle or search_parcelles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_communesRechercher une communeARead-onlyIdempotentInspect
Recherche une commune française par nom ou code postal. Retourne le code INSEE (nécessaire pour get_commune_stats), les coordonnées et l'URL de la page cadastre quand elle existe. À utiliser en premier quand on ne connaît que le nom d'une ville.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Nom de commune ou code postal, ex: 'Bordeaux' ou '33000' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to repeat safety. It adds value by disclosing that the cadastre URL is returned 'quand elle existe' (when it exists), a conditional behavior, and by stating the precedence ('use first'). This enriches the agent's understanding beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and input, and every phrase earns its place. It includes the return fields, the conditional URL, and the usage context with zero fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool with no output schema, the description covers the input method, the output fields, and the usage context. It does not mention potential multiple matches or error handling, but given the tool's simplicity and the annotations covering safety, it is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already describes the 'query' parameter with an example. The description reiterates 'par nom ou code postal' but does not add new syntax or format details beyond the schema. Per the rubric, baseline 3 is appropriate when the schema fully documents parameters and the description provides no extra semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Recherche'), the resource ('commune française'), and the input method ('par nom ou code postal'). It also lists the output (INSEE code, coordinates, cadastre URL) and explicitly differentiates it from siblings by noting that the INSEE code is required for get_commune_stats. This is a precise, non-tautological purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit guidance: 'À utiliser en premier quand on ne connaît que le nom d'une ville' (use first when only the name is known). It also implicitly advises that the returned INSEE code feeds into get_commune_stats, indicating a typical workflow. However, it does not explicitly mention when not to use it (e.g., if the INSEE code is already known), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dpeRechercher des DPE dans une zoneARead-onlyIdempotentInspect
Liste les diagnostics de performance énergétique (DPE ADEME) d'une zone : autour d'une adresse, d'une parcelle ou d'un point (rayon), ou dans toute une commune. Filtres : type de bâtiment, classes énergie/GES, surface, année de construction, date du DPE. Avec 'address' (numéro + rue), retourne aussi les DPE rattachés exactement à cette adresse. Résultats triés du plus récent au plus ancien et paginés ('limit', 'offset').
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude du centre (avec 'lng') | |
| lng | No | Longitude du centre (avec 'lat') | |
| limit | No | DPE par page (défaut 20, max 50) | |
| offset | No | ||
| address | No | Adresse postale au centre de la zone | |
| commune | No | Nom de commune : toute la commune (ignore 'rayon_m') | |
| rayon_m | No | Rayon autour du centre en mètres (défaut 500, max 2000) | |
| classe_dpe | No | ||
| classe_ges | No | ||
| parcelle_id | No | IDU d'une parcelle au centre de la zone | |
| date_dpe_max | No | Date maximale du DPE, 'AAAA-MM-JJ' | |
| date_dpe_min | No | Date minimale du DPE, 'AAAA-MM-JJ' | |
| type_batiment | No | 'immeuble' = DPE d'immeuble collectif entier | |
| surface_max_m2 | No | ||
| surface_min_m2 | No | ||
| annee_construction_max | No | ||
| annee_construction_min | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds useful behavioral context: results are sorted newest to oldest, paginated with limit/offset, and the 'address' mode returns exact matches. It doesn't mention rate limits or response format, but the annotations cover the main safety aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it states the core function, lists filters, highlights special behavior for 'address', and mentions sorting and pagination. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with 17 parameters and no output schema, the description covers the main usage modes, filters, sorting, and pagination. It doesn't explain the response structure (since no output schema exists), but the description is sufficient for an agent to invoke the tool correctly. Minor gaps: no mention of how to combine parameters or what happens with conflicting modes (e.g., address vs commune).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 59%, so the description partially compensates. It explains the meaning of key parameters (address, commune, rayon_m, type_batiment, date_dpe_min/max) and adds context like 'immeuble' meaning whole building DPE. However, some parameters like surface_min_m2, surface_max_m2, annee_construction_min/max, offset, classe_dpe, classe_ges lack description-level detail, though their names are fairly self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: listing DPE diagnostics in a zone, with specific search modes (address, parcel, point with radius, commune) and filters. It distinguishes itself from sibling tools like get_dpe (which likely retrieves a single DPE) by emphasizing the zone-based search and listing behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the different search modes (address, parcel, point, commune) and notes that 'commune' ignores 'rayon_m', and that 'address' returns exact matches. However, it doesn't explicitly state when to prefer this over siblings like search_parcelles or get_dpe, nor does it mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_parcellesRecherche cadastrale multicritèresARead-onlyIdempotentInspect
Recherche des parcelles cadastrales dans une zone avec les filtres de la carte parcellai.re/carte : surfaces, DPE, ventes DVF, année de construction, piscines, permis de construire, copropriétés, propriétaires personnes morales… Définir la zone par 'commune' (nom), 'departement' (code ou nom), 'region' (code ou nom) OU par 'viewport'. Région + SIREN est supporté sans commune. Omettre les filtres non demandés ; une valeur vide ou null signifie aucun filtre. Retourne le nombre total de parcelles, une PAGE de résultats détaillés et un lien vers la carte interactive. Résultats paginés : 'nb_parcelles' est le total, mais seules 'limit' parcelles (défaut 20, max 50) sont détaillées à partir de 'offset'. Vérifier 'pagination.has_more' et relancer avec 'offset' = 'pagination.next_offset' pour les pages suivantes. Si la zone est trop large, retourne une répartition agrégée par commune.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Nombre de parcelles détaillées retournées par page (défaut 20, max 50) | |
| siren | No | SIREN du propriétaire personne morale | |
| offset | No | Index de départ pour la pagination (défaut 0). Utiliser pagination.next_offset pour la page suivante. | |
| region | No | Nom ou code INSEE de la région, ex: 'Bretagne', 'Île-de-France', '52'. Recherche dans tous ses départements couverts (France métropolitaine hors Corse). | |
| commune | No | Nom de la commune où chercher, ex: 'Angers' | |
| date_dpe | No | Date d'établissement du DPE. Format: '2021', '2021-06', ou plage '2019-2024' | |
| viewport | No | Zone géographique explicite (alternative à commune). Hauteur ≤ 20 km pour un détail parcelle par parcelle | |
| classe_dpe | No | Classe énergie d'un logement. Clé exacte: classe_dpe; valeur: une lettre A-G. | |
| classe_ges | No | Classe GES. Clé exacte: classe_ges; valeur: une lettre A-G. | |
| date_vente | No | Date de vente DVF. Format: '2021', '2021-06', ou plage '2019-2024' | |
| departement | No | Code ou nom du département, ex: '49', 'Maine-et-Loire'. Peut aussi restreindre une commune ou un viewport. | |
| has_piscine | No | Uniquement les parcelles avec piscine | |
| prix_vente_eur | No | Prix de la dernière vente DVF en euros. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| has_copropriete | No | Uniquement les parcelles en copropriété | |
| conso_dpe_kwh_m2 | No | Consommation énergie primaire en kWh/m²/an (alternative à classe_dpe). Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| nombre_batiments | No | Nombre de bâtiments sur la parcelle. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| annee_construction | No | Année de construction (BDNB). Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| surface_piscine_m2 | No | Surface de la piscine en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| surface_batiment_m2 | No | Emprise au sol d'un bâtiment en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum) | |
| surface_parcelle_m2 | No | Une seule surface de parcelle en m² par appel. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum). Un entier seul est quasi exact (tolérance d'arrondi) : pour une surface approximative (« environ 600 m² »), passer une plage, ex: '540-660'. Pour plusieurs surfaces exactes, effectuer un appel séparé par surface; ne jamais fournir de tableau ni de liste séparée par des virgules. | |
| surface_habitable_m2 | No | Surface habitable (DPE) en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum). Un entier seul est quasi exact : pour une surface approximative, passer une plage, ex: '135-145'. | |
| has_permis_construire | No | Uniquement les parcelles avec permis de construire | |
| date_permis_construire | No | Date du permis de construire. Format: '2021', '2021-06', ou plage '2019-2024' | |
| has_proprietaire_personne_morale | No | Uniquement les parcelles détenues par une personne morale (société, collectivité…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and the description is consistent with a pure read operation — no contradiction. The description adds genuinely useful behavioral context beyond annotations: pagination mechanics (nb_parcelles is total, only 'limit' rows detailed), the zone-too-large aggregation fallback by commune, and the viewport height constraint (≤20 km for parcel-level detail).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured paragraph, front-loaded with purpose, then zone selection, filter semantics, return value, pagination, and edge case. It is moderately long but every clause earns its place given the 24-parameter complexity and the absence of an output schema. Slightly dense but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by specifying return values (total count, a page of detailed results, interactive map link) and documenting the critical pagination fields (limit, offset, pagination.has_more, pagination.next_offset). It also handles the over-large-zone edge case. For a 24-parameter read tool with no output schema, this is fairly complete, though it could name the result record fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself is exceptionally rich (exact/range/min/max formats, quasi-exact integer rounding guidance, no-array warnings for surface_parcelle_m2). The description adds the zone-selection logic and the global filter semantics (empty/null = no filter), but per-parameter meaning is already fully carried by the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource ('Recherche des parcelles cadastrales dans une zone') and enumerates the filter dimensions (surfaces, DPE, ventes DVF, année de construction, piscines, permis de construire, copropriétés, propriétaires personnes morales). This clearly differentiates it from siblings like search_dpe (DPE data), search_ventes_dvf (sales), and find_parcelles_by_address (address lookup) — this one is the multi-criteria spatial search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage context: how to define the zone (commune/departement/region OR viewport), the Region+SIREN special case, the 'omit unused filters; empty/null = no filter' semantic, and a step-by-step pagination workflow (check pagination.has_more, relaunch with next_offset). It does not explicitly route the agent to alternatives among the many sibling search tools, but given the 24-parameter complexity the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ventes_dvfVentes immobilières (DVF) dans une zoneARead-onlyIdempotentInspect
Liste les ventes immobilières (DVF) d'une zone : autour d'une adresse, d'une parcelle ou d'un point (rayon), ou dans toute une commune — idéal pour trouver des biens comparables. Une ligne par vente : date, prix, type de bien, surface bâtie, pièces, terrain, parcelles, prix au m² (quand la vente porte sur un seul logement). Retourne aussi la médiane du prix au m² des ventes filtrées. Seules les ventes géolocalisées sont couvertes (depuis 2021). Filtrer par 'type_bien' pour des prix au m² comparables.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude du centre (avec 'lng') | |
| lng | No | Longitude du centre (avec 'lat') | |
| tri | No | Tri des ventes (défaut : date décroissante ; distance pour les plus proches) | |
| limit | No | Ventes par page (défaut 20, max 50) | |
| offset | No | ||
| address | No | Adresse postale au centre de la zone | |
| commune | No | Nom de commune : toute la commune (ignore 'rayon_m') | |
| rayon_m | No | Rayon autour du centre en mètres (défaut 500, max 2000) | |
| date_max | No | Date maximale 'AAAA-MM-JJ' | |
| date_min | No | Date minimale 'AAAA-MM-JJ' (défaut 2021-01-01) | |
| type_bien | No | ||
| parcelle_id | No | IDU d'une parcelle au centre de la zone | |
| prix_max_eur | No | ||
| prix_min_eur | No | ||
| surface_max_m2 | No | ||
| surface_min_m2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds substantial behavioral detail: one row per sale with listed fields, the conditional price-per-m² field when the sale involves a single dwelling, a median price-per-m² summary, and the coverage limitation since 2021. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient: five sentences, each adding meaningful information—scope, output shape, summary metric, coverage limitation, and a filtering tip. The main action and use case are front-loaded, with no filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with no output schema, the description covers the core answer: row-level fields, median metric, geographic modes, time coverage, and filter guidance. It does not mention pagination or limit/offset behavior, and it omits some filter semantics, but those are partially present in the schema and the description carries most of the decision-relevant context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 63%, so the schema already documents a majority of parameters. The description adds practical framing for the main selectors (address, parcelle, rayon, commune) and a useful note about type_bien, but it does not clarify the price, surface, date, or pagination parameters beyond what the schema provides. Helpful but not a full compensation for the remaining undocumented fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Liste les ventes immobilières (DVF) d'une zone', and immediately enumerates the geographic modes (address, parcelle, point/rayon, whole commune). This clearly distinguishes it from sibling tools like search_dpe, search_parcelles, or estimate_property_price.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the intended use case, 'idéal pour trouver des biens comparables', and gives a concrete selection tip: filter by type_bien for comparable price per m². It also states an important exclusion—only geolocalized sales since 2021. It does not explicitly name sibling alternatives, but the guidance is sufficient for an agent to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
search_parcelles2 fields changed- changed
Input schema / properties / surface_habitable_m2 / descriptionPrevious value: -"Surface habitable (DPE) en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"New value: +"Surface habitable (DPE) en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum). Un entier seul est quasi exact : pour une surface approximative, passer une plage, ex: '135-145'." - changed
Input schema / properties / surface_parcelle_m2 / descriptionPrevious value: -"Une seule surface de parcelle en m² par appel. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum). Pour plusieurs surfaces exactes, effectuer un appel séparé par surface; ne jamais fournir de tableau ni de liste séparée par des virgules."New value: +"Une seule surface de parcelle en m² par appel. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum). Un entier seul est quasi exact (tolérance d'arrondi) : pour une surface approximative (« environ 600 m² »), passer une plage, ex: '540-660'. Pour plusieurs surfaces exactes, effectuer un appel séparé par surface; ne jamais fournir de tableau ni de liste séparée par des virgules."
12 tool updates
- Changed
estimate_property_price1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
find_parcelles_by_address1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
find_parcelles_by_criteria1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
geolocate_listing1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_commune_stats1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_dpe1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_parcelle1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_parcelle_context1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_communes1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_dpe1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_parcelles1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_ventes_dvf1 field changed- added
Input schema / additionalPropertiesAdded value: +false
1 tool update
- Changed
search_ventes_dvf1 field changed- changed
Input schema / properties / tri / descriptionPrevious value: -"Tri des ventes (défaut : distance autour d'un point, date pour une commune)"New value: +"Tri des ventes (défaut : date décroissante ; distance pour les plus proches)"
7 tool updates
- Changed
estimate_property_price19 fields changed- added
Input schema / properties / address / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / address / typeRemoved value: -"string" - added
Input schema / properties / annee_construction / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / annee_construction / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / annee_construction / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / annee_construction / typeRemoved value: -"integer" - added
Input schema / properties / classe_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_dpe / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_dpe / typeRemoved value: -"string" - added
Input schema / properties / code_insee / anyOfAdded value: +[ + { + "anyOf": [ + { + "maxLength": 5, + "minLength": 5, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / code_insee / maxLengthRemoved value: -5 - removed
Input schema / properties / code_insee / minLengthRemoved value: -5 - removed
Input schema / properties / code_insee / typeRemoved value: -"string" - added
Input schema / properties / lat / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lat / typeRemoved value: -"number" - added
Input schema / properties / lng / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lng / typeRemoved value: -"number" - added
Input schema / properties / terrain_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / terrain_m2 / typeRemoved value: -"number"
- Changed
find_parcelles_by_criteria34 fields changed- added
Input schema / properties / annee_construction / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / annee_construction / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / annee_construction / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / annee_construction / typeRemoved value: -"integer" - added
Input schema / properties / classe_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_dpe / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_dpe / typeRemoved value: -"string" - added
Input schema / properties / classe_ges / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_ges / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_ges / typeRemoved value: -"string" - added
Input schema / properties / code_postal / anyOfAdded value: +[ + { + "anyOf": [ + { + "maxLength": 5, + "minLength": 5, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / code_postal / maxLengthRemoved value: -5 - removed
Input schema / properties / code_postal / minLengthRemoved value: -5 - removed
Input schema / properties / code_postal / typeRemoved value: -"string" - added
Input schema / properties / commune / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / commune / typeRemoved value: -"string" - added
Input schema / properties / conso_dpe_kwh_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / conso_dpe_kwh_m2 / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / conso_dpe_kwh_m2 / typeRemoved value: -"number" - added
Input schema / properties / date_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$", + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_dpe / patternRemoved value: -"^\\d{4}-\\d{2}(-\\d{2})?$" - removed
Input schema / properties / date_dpe / typeRemoved value: -"string" - added
Input schema / properties / ges_kg_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / ges_kg_m2 / minimumRemoved value: -0 - removed
Input schema / properties / ges_kg_m2 / typeRemoved value: -"number" - added
Input schema / properties / surface_habitable_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_habitable_m2 / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / surface_habitable_m2 / typeRemoved value: -"number" - added
Input schema / properties / surface_terrain_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_terrain_m2 / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / surface_terrain_m2 / typeRemoved value: -"number" - added
Input schema / properties / type_bien / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "maison", + "appartement" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / type_bien / enumRemoved value: -[ - "maison", - "appartement" -] - removed
Input schema / properties / type_bien / typeRemoved value: -"string"
- Changed
get_commune_stats6 fields changed- added
Input schema / properties / commune / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / commune / typeRemoved value: -"string" - added
Input schema / properties / insee_id / anyOfAdded value: +[ + { + "anyOf": [ + { + "maxLength": 5, + "minLength": 5, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / insee_id / maxLengthRemoved value: -5 - removed
Input schema / properties / insee_id / minLengthRemoved value: -5 - removed
Input schema / properties / insee_id / typeRemoved value: -"string"
- Changed
get_parcelle7 fields changed- added
Input schema / properties / include / anyOfAdded value: +[ + { + "anyOf": [ + { + "items": { + "enum": [ + "batiments", + "dvf", + "dpes", + "urbanisme", + "bdnb", + "piscines", + "rnc", + "majic_pm", + "sitadel" + ], + "type": "string" + }, + "type": "array" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / include / itemsRemoved value: -{ - "enum": [ - "batiments", - "dvf", - "dpes", - "urbanisme", - "bdnb", - "piscines", - "rnc", - "majic_pm", - "sitadel" - ], - "type": "string" -} - removed
Input schema / properties / include / typeRemoved value: -"array" - added
Input schema / properties / max_items / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 200, + "minimum": 1, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / max_items / maximumRemoved value: -200 - removed
Input schema / properties / max_items / minimumRemoved value: -1 - removed
Input schema / properties / max_items / typeRemoved value: -"integer"
- Changed
search_dpe50 fields changed- added
Input schema / properties / address / anyOfAdded value: +[ + { + "anyOf": [ + { + "minLength": 3, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / address / minLengthRemoved value: -3 - removed
Input schema / properties / address / typeRemoved value: -"string" - added
Input schema / properties / annee_construction_max / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / annee_construction_max / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / annee_construction_max / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / annee_construction_max / typeRemoved value: -"integer" - added
Input schema / properties / annee_construction_min / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / annee_construction_min / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / annee_construction_min / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / annee_construction_min / typeRemoved value: -"integer" - added
Input schema / properties / classe_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_dpe / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_dpe / typeRemoved value: -"string" - added
Input schema / properties / classe_ges / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_ges / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_ges / typeRemoved value: -"string" - added
Input schema / properties / commune / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / commune / typeRemoved value: -"string" - added
Input schema / properties / date_dpe_max / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_dpe_max / typeRemoved value: -"string" - added
Input schema / properties / date_dpe_min / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_dpe_min / typeRemoved value: -"string" - added
Input schema / properties / lat / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lat / typeRemoved value: -"number" - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 50, + "minimum": 1, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / limit / maximumRemoved value: -50 - removed
Input schema / properties / limit / minimumRemoved value: -1 - removed
Input schema / properties / limit / typeRemoved value: -"integer" - added
Input schema / properties / lng / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lng / typeRemoved value: -"number" - added
Input schema / properties / offset / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 5000, + "minimum": 0, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / offset / maximumRemoved value: -5000 - removed
Input schema / properties / offset / minimumRemoved value: -0 - removed
Input schema / properties / offset / typeRemoved value: -"integer" - added
Input schema / properties / parcelle_id / anyOfAdded value: +[ + { + "anyOf": [ + { + "maxLength": 14, + "minLength": 14, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / parcelle_id / maxLengthRemoved value: -14 - removed
Input schema / properties / parcelle_id / minLengthRemoved value: -14 - removed
Input schema / properties / parcelle_id / typeRemoved value: -"string" - added
Input schema / properties / rayon_m / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 2000, + "minimum": 50, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / rayon_m / maximumRemoved value: -2000 - removed
Input schema / properties / rayon_m / minimumRemoved value: -50 - removed
Input schema / properties / rayon_m / typeRemoved value: -"integer" - added
Input schema / properties / surface_max_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_max_m2 / typeRemoved value: -"number" - added
Input schema / properties / surface_min_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_min_m2 / typeRemoved value: -"number" - added
Input schema / properties / type_batiment / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "maison", + "appartement", + "immeuble" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / type_batiment / enumRemoved value: -[ - "maison", - "appartement", - "immeuble" -] - removed
Input schema / properties / type_batiment / typeRemoved value: -"string"
- Changed
search_parcelles56 fields changed- added
Input schema / properties / annee_construction / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / annee_construction / typeRemoved value: -"string" - added
Input schema / properties / classe_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_dpe / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_dpe / typeRemoved value: -"string" - added
Input schema / properties / classe_ges / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / classe_ges / enumRemoved value: -[ - "A", - "B", - "C", - "D", - "E", - "F", - "G" -] - removed
Input schema / properties / classe_ges / typeRemoved value: -"string" - added
Input schema / properties / commune / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / commune / typeRemoved value: -"string" - added
Input schema / properties / conso_dpe_kwh_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / conso_dpe_kwh_m2 / typeRemoved value: -"string" - added
Input schema / properties / date_dpe / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_dpe / typeRemoved value: -"string" - added
Input schema / properties / date_permis_construire / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_permis_construire / typeRemoved value: -"string" - added
Input schema / properties / date_vente / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_vente / typeRemoved value: -"string" - added
Input schema / properties / departement / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / departement / typeRemoved value: -"string" - added
Input schema / properties / has_copropriete / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "boolean" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / has_copropriete / typeRemoved value: -"boolean" - added
Input schema / properties / has_permis_construire / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "boolean" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / has_permis_construire / typeRemoved value: -"boolean" - added
Input schema / properties / has_piscine / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "boolean" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / has_piscine / typeRemoved value: -"boolean" - added
Input schema / properties / has_proprietaire_personne_morale / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "boolean" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / has_proprietaire_personne_morale / typeRemoved value: -"boolean" - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 50, + "minimum": 1, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / limit / maximumRemoved value: -50 - removed
Input schema / properties / limit / minimumRemoved value: -1 - removed
Input schema / properties / limit / typeRemoved value: -"integer" - added
Input schema / properties / nombre_batiments / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / nombre_batiments / typeRemoved value: -"string" - added
Input schema / properties / offset / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / offset / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / offset / minimumRemoved value: -0 - removed
Input schema / properties / offset / typeRemoved value: -"integer" - added
Input schema / properties / prix_vente_eur / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / prix_vente_eur / typeRemoved value: -"string" - added
Input schema / properties / region / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / region / typeRemoved value: -"string" - added
Input schema / properties / siren / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / siren / typeRemoved value: -"string" - added
Input schema / properties / surface_batiment_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_batiment_m2 / typeRemoved value: -"string" - added
Input schema / properties / surface_habitable_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_habitable_m2 / typeRemoved value: -"string" - added
Input schema / properties / surface_parcelle_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_parcelle_m2 / typeRemoved value: -"string" - added
Input schema / properties / surface_piscine_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_piscine_m2 / typeRemoved value: -"string" - added
Input schema / properties / viewport / anyOfAdded value: +[ + { + "anyOf": [ + { + "properties": { + "ne_lat": { + "type": "number" + }, + "ne_lng": { + "type": "number" + }, + "sw_lat": { + "type": "number" + }, + "sw_lng": { + "type": "number" + } + }, + "required": [ + "sw_lat", + "sw_lng", + "ne_lat", + "ne_lng" + ], + "type": "object" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / viewport / propertiesRemoved value: -{ - "ne_lat": { - "type": "number" - }, - "ne_lng": { - "type": "number" - }, - "sw_lat": { - "type": "number" - }, - "sw_lng": { - "type": "number" - } -} - removed
Input schema / properties / viewport / requiredRemoved value: -[ - "sw_lat", - "sw_lng", - "ne_lat", - "ne_lng" -] - removed
Input schema / properties / viewport / typeRemoved value: -"object"
- Changed
search_ventes_dvf45 fields changed- added
Input schema / properties / address / anyOfAdded value: +[ + { + "anyOf": [ + { + "minLength": 3, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / address / minLengthRemoved value: -3 - removed
Input schema / properties / address / typeRemoved value: -"string" - added
Input schema / properties / commune / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / commune / typeRemoved value: -"string" - added
Input schema / properties / date_max / anyOfAdded value: +[ + { + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_max / patternRemoved value: -"^\\d{4}-\\d{2}-\\d{2}$" - removed
Input schema / properties / date_max / typeRemoved value: -"string" - added
Input schema / properties / date_min / anyOfAdded value: +[ + { + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / date_min / patternRemoved value: -"^\\d{4}-\\d{2}-\\d{2}$" - removed
Input schema / properties / date_min / typeRemoved value: -"string" - added
Input schema / properties / lat / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lat / typeRemoved value: -"number" - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 50, + "minimum": 1, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / limit / maximumRemoved value: -50 - removed
Input schema / properties / limit / minimumRemoved value: -1 - removed
Input schema / properties / limit / typeRemoved value: -"integer" - added
Input schema / properties / lng / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / lng / typeRemoved value: -"number" - added
Input schema / properties / offset / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 5000, + "minimum": 0, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / offset / maximumRemoved value: -5000 - removed
Input schema / properties / offset / minimumRemoved value: -0 - removed
Input schema / properties / offset / typeRemoved value: -"integer" - added
Input schema / properties / parcelle_id / anyOfAdded value: +[ + { + "anyOf": [ + { + "maxLength": 14, + "minLength": 14, + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / parcelle_id / maxLengthRemoved value: -14 - removed
Input schema / properties / parcelle_id / minLengthRemoved value: -14 - removed
Input schema / properties / parcelle_id / typeRemoved value: -"string" - added
Input schema / properties / prix_max_eur / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / prix_max_eur / typeRemoved value: -"number" - added
Input schema / properties / prix_min_eur / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / prix_min_eur / typeRemoved value: -"number" - added
Input schema / properties / rayon_m / anyOfAdded value: +[ + { + "anyOf": [ + { + "maximum": 2000, + "minimum": 50, + "type": "integer" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / rayon_m / maximumRemoved value: -2000 - removed
Input schema / properties / rayon_m / minimumRemoved value: -50 - removed
Input schema / properties / rayon_m / typeRemoved value: -"integer" - added
Input schema / properties / surface_max_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_max_m2 / typeRemoved value: -"number" - added
Input schema / properties / surface_min_m2 / anyOfAdded value: +[ + { + "anyOf": [ + { + "type": "number" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / surface_min_m2 / typeRemoved value: -"number" - added
Input schema / properties / tri / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "date", + "distance" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / tri / enumRemoved value: -[ - "date", - "distance" -] - removed
Input schema / properties / tri / typeRemoved value: -"string" - added
Input schema / properties / type_bien / anyOfAdded value: +[ + { + "anyOf": [ + { + "enum": [ + "maison", + "appartement", + "local" + ], + "type": "string" + }, + { + "const": "", + "type": "string" + } + ] + }, + { + "type": "null" + } +] - removed
Input schema / properties / type_bien / enumRemoved value: -[ - "maison", - "appartement", - "local" -] - removed
Input schema / properties / type_bien / typeRemoved value: -"string"
12 tool updates
- First observed
estimate_property_price - First observed
find_parcelles_by_address - First observed
find_parcelles_by_criteria - First observed
geolocate_listing - First observed
get_commune_stats - First observed
get_dpe - First observed
get_parcelle - First observed
get_parcelle_context - First observed
search_communes - First observed
search_dpe - First observed
search_parcelles - First observed
search_ventes_dvf
Related MCP Connectors
French address intelligence: 18.6M sold prices, energy, risk, crime and schools — each sourced.
Données immobilières officielles françaises (DVF+, cadastre, DPE, risques, urbanisme) via MCP.
French property market data — 17M+ DVF sales, 22M+ DPE energy ratings, 20M+ building records.
Données immobilières DVF France : transactions, comparables GPS et statistiques de marché.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAccess 17M+ geocoded French property transactions (DVF), 22M+ DPE energy ratings, and 20M+ building records via MCP or REST API. Search transactions, market stats, comparables, price trends, rental yield, flip detection, and more.MIT
- AlicenseNot gradedqualityDmaintenanceAnalyzes French real-estate market using open data sources like DVF transactions, DPE certificates, and risk data.MIT
- FlicenseNot gradedqualityDmaintenanceProvides French address data from DVF, Géorisques, and SSMSI sources, including property prices, risks, and crime statistics.-
- AlicenseAqualityBmaintenanceProvides French real estate intelligence from official open data, including notarial sales, transparent estimates, rents, property tax, energy diagnostics, risks, and commune profiles. It enables MCP clients to get auditable property reports and analysis from a simple address without an API key.1655 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.