Skip to main content
Glama

Parcellaire — cadastre, DVF & DPE

Recherche cadastrale multicritères

search_parcelles
Read-onlyIdempotent

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

Input Schema

TableJSON 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 où chercher, ex: 'Angers'
date_dpeNoDate d'établissement du DPE. Format: '2021', '2021-06', ou plage '2019-2024'
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. Format: '2021', '2021-06', ou plage '2019-2024'
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. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
has_coproprieteNoUniquement les parcelles en copropriété
conso_dpe_kwh_m2NoConsommation énergie primaire en kWh/m²/an (alternative à classe_dpe). Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
nombre_batimentsNoNombre de bâtiments sur la parcelle. Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
annee_constructionNoAnnée de construction (BDNB). Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
surface_piscine_m2NoSurface de la piscine en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
surface_batiment_m2NoEmprise au sol d'un bâtiment en m². Format: '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)
surface_parcelle_m2NoUne 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_m2NoSurface 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_construireNoUniquement les parcelles avec permis de construire
date_permis_construireNoDate du permis de construire. Format: '2021', '2021-06', ou plage '2019-2024'
has_proprietaire_personne_moraleNoUniquement les parcelles détenues par une personne morale (société, collectivité…)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema 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."
  2. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  3. Changed56 schema 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"
  4. First observed

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/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 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.

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

Purpose5/5

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.

Usage Guidelines4/5

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources