Skip to main content
Glama

Infoparcelle - cadastre, DVF, DPE, PLU

infoparcelle_parcelles_search_advanced

Read-onlyIdempotent

🎯 Recherche AVANCÉE de parcelles cadastrales avec SCORING intelligent et filtres configurables.

Recherche sophistiquée combinant critères stricts (obligatoires) et indicatifs (préférences) avec scoring pour classer par pertinence. SEUL outil de recherche de parcelles disponible.

Deux modes de filtrage:

  1. Mode STRICT (sans indicatif ou indicatif:false): Filtre exact, seules les parcelles correspondant EXACTEMENT sont retournées. Ex: {code_postal: {value: "75008"}}

  2. Mode INDICATIF (indicatif:true): Scoring/pertinence, TOUTES les parcelles sont retournées et classées par score 0-100. Ex: {dpe_energie: {value: "C", indicatif: true}}

⚠️ IMPORTANT - Filtre géographique OBLIGATOIRE: Au moins UN filtre géographique en mode STRICT est REQUIS (sans indicatif: true):

  • code_departement: Code département (2-3 caractères). Ex: "75", "69", "2A"

  • code_municipalite: Code INSEE commune (5 caractères). Ex: "75056" (Paris), "69123" (Lyon)

  • code_postal: Code postal (5 chiffres). Ex: "75008", "69001"

  • code_iris: Code IRIS quartier. Ex: "751080804"

  • lat + lon: Coordonnées GPS (doivent être fournis ensemble). Ex: {lat: {value: 48.8566}, lon: {value: 2.3522}}

📊 Structure de la requête JSON:

{
  "filtres": {
    // Filtres géographiques (REQUIS - au moins 1 en mode strict)
    "code_municipalite": { "value": "75056,75008" },  // Strict (pas d'indicatif)

    // Filtres avec scoring (mode indicatif)
    "annee_construction": { "min": 1990, "max": 2020, "indicatif": true },
    "surface_habitable": { "min": 50, "max": 150, "indicatif": true },
    "dpe_energie": { "value": "C", "indicatif": true },
    "piscine": { "value": true, "indicatif": true },

    // Filtres stricts (mode exact)
    "altitude": { "max": 500, "indicatif": false },
    "batiment_leger": { "value": "0", "indicatif": false }
  },
  "pagination": {
    "limite": 20,
    "curseur": ""
  },
  "options": {
    "format": "json",  // ou "geojson"
    "geometrie": "centre",  // ou "contour", "bbox"
    "champs": ["cadastre_id", "superficie", "score_pertinence"],
    "champ_tri": "score_pertinence",  // Trier par pertinence!
    "ordre_tri": "desc"  // Meilleurs scores d'abord
  }
}

📋 CATALOGUE COMPLET DES FILTRES (80+ filtres avec documentation détaillée):

1️⃣ FILTRES GÉOGRAPHIQUES (au moins 1 REQUIS, mode strict uniquement - pas d'indicatif):

  • lat (number): Latitude GPS entre -90 et 90. Ex: 48.8566 (Paris). DOIT être accompagné de lon

  • lon (number): Longitude GPS entre -180 et 180. Ex: 2.3522 (Paris). DOIT être accompagné de lat

  • code_departement (string): Code département 2-3 caractères. Ex: "75" (Paris), "69" (Rhône), "2A" (Corse-du-Sud)

  • code_municipalite (string): Code INSEE commune 5 caractères. Ex: "75056" (Paris), "69123" (Lyon). Accepte plusieurs valeurs séparées par virgules

  • code_postal (string): Code postal 5 chiffres. Ex: "75008", "69001". Accepte plusieurs valeurs séparées par virgules

  • code_iris (string): Code IRIS (zone infracommunale/quartier). Ex: "751080804". Accepte plusieurs valeurs séparées par virgules

  • code_section (string): Code section cadastrale 1-3 caractères. Ex: "AB", "BO". Accepte plusieurs valeurs séparées par virgules

2️⃣ FILTRES CADASTRAUX (superficie, terrain):

  • parcelle_multiple (SimpleMultiple): Mode multi-parcelle. Valeurs: "CONTIGUES" (parcelles adjacentes), "MEME_PROPRIETAIRE" (même propriétaire). Accepte {value: "CONTIGUES,MEME_PROPRIETAIRE", indicatif: true/false}

  • superficie (Range): Surface totale de la parcelle en m². Ex: {min: 500, max: 2000, indicatif: true}. Valeurs typiques: 50-10000 m²

  • jardin (Range): Surface du jardin/espace vert en m². Ex: {min: 100, max: 500, indicatif: false}

  • emprise_sol (Range): Surface bâtie (emprise au sol) en m². Ex: {min: 50, max: 200, indicatif: true}

  • altitude (Range): Altitude du terrain en mètres. Ex: {min: 0, max: 500, indicatif: true}. Utile pour zones montagneuses

  • arpente (Boolean): Parcelle mesurée par géomètre-expert. Ex: {value: true, indicatif: false}. true = parcelle arpentée (fiable), false = cadastre estimé

3️⃣ FILTRES BÂTIMENTS (construction, caractéristiques):

  • bati_type (SimpleMultiple): Type de bâtiment. Codes: 0-17. Valeurs texte: "LEGER" (garage, hangar), "DUR" (maison, immeuble), "INDUSTRIEL", "COMMERCIAL", "RELIGIEUX". Ex: {value: "DUR", indicatif: false}

  • annee_construction (Range): Année de construction du bâtiment. Ex: {min: 1990, max: 2020, indicatif: true}. Valeurs: 1800-2024

  • surface_habitable (Range): Surface habitable en m² (SHAB). Ex: {min: 50, max: 150, indicatif: true}. Différent de superficie totale

  • hauteur (Range): Hauteur du bâtiment en mètres. Ex: {min: 3, max: 15, indicatif: false}. Utile pour immeubles

  • etages (SimpleMultiple): Nombre d'étages. Valeurs: "0", "1", "2", "3", "4+". Ex: {value: "2,3", indicatif: true}

  • isole (Boolean): Bâtiment isolé (non mitoyen). Ex: {value: true, indicatif: true}. true = maison individuelle isolée

  • mitoyen (SimpleMultiple): Nombre de murs mitoyens. Valeurs: "0" (isolé), "1", "2", "3+". Ex: {value: "1,2", indicatif: false}

  • batiment_dur (SimpleMultiple): Nombre de bâtiments en dur. Valeurs: "0", "1", "2", "3", "4+". Ex: {value: "1", indicatif: false}

  • batiment_leger (SimpleMultiple): Nombre de bâtiments légers (garage, hangar). Valeurs: "0", "1", "2", "3", "4+". Ex: {value: "0", indicatif: true}

  • piscine (Boolean): Présence d'une piscine. Ex: {value: true, indicatif: true}

  • piscine_surface (Range): Surface de la piscine en m². Ex: {min: 20, max: 50, indicatif: false}

  • forme_piscine (SimpleMultiple): Forme de la piscine. Codes: 0-4. Valeurs: "Rectangle", "L", "Ronde", "Autres". Ex: {value: "Rectangle", indicatif: true}

4️⃣ FILTRES DPE (Diagnostic de Performance Énergétique):

  • dpe_energie (SimpleMultiple): Classe énergétique DPE. Valeurs: "A" (excellent, <50 kWh/m²/an), "B" (bon, 51-90), "C" (moyen, 91-150), "D" (passable, 151-230), "E" (médiocre, 231-330), "F" (mauvais, 331-450), "G" (très mauvais, >450). Ex: {value: "A,B,C", indicatif: true}

  • dpe_ges (SimpleMultiple): Classe GES (émissions CO2). Valeurs: "A" à "G". Ex: {value: "A,B", indicatif: true}

  • dpe_date_reception (Range): Date de réception du DPE. Format timestamp/date. Ex: {min: 1609459200, max: 1672531199, indicatif: false}

  • dpe_date_etablissement (Range): Date d'établissement du DPE. Ex: {min: 1609459200, indicatif: true}

  • dpe_date_visite_diagnostiqueur (Range): Date de visite du diagnostiqueur

  • elec_tertiaire (Range): Consommation électrique tertiaire en kWh/m²/an

  • elec_residentielle (Range): Consommation électrique résidentielle en kWh/m²/an

  • gaz_tertiaire (Range): Consommation gaz tertiaire en kWh/m²/an

  • gaz_residentielle (Range): Consommation gaz résidentielle en kWh/m²/an

5️⃣ FILTRES DVF (Demandes de Valeurs Foncières - Transactions immobilières):

  • dvf_existe (SimpleStrict): Présence d'une transaction DVF. Ex: {value: true} (obligatoire strict, pas d'indicatif)

  • dvf_prix (Range): Prix de la transaction en euros. Ex: {min: 200000, max: 500000, indicatif: true}

  • dvf_date (Range): Date de la transaction. Format timestamp. Ex: {min: 1609459200, max: 1672531199, indicatif: false}

  • dvf_code_type_bien (SimpleMultiple): Code du type de bien. Codes: 14-2319. Valeurs courantes: "MAISON" (code 14), "APPARTEMENT" (code 15), "LOCAL_INDUSTRIEL_COMMERCIAL", "DEPENDANCE". Ex: {value: "14,15", indicatif: true}

6️⃣ FILTRES ESTIMATION (prix estimés):

  • estimation (Range): Prix de vente estimé en euros. Ex: {min: 300000, max: 800000, indicatif: true}. Calculé par algorithme

  • estimation_ppm (Range): Prix au m² estimé en €/m². Ex: {min: 3000, max: 8000, indicatif: true}

7️⃣ FILTRES PERMIS DE CONSTRUIRE (autorisations d'urbanisme):

  • permis_type (SimpleMultiple): Type d'autorisation. Codes: 0-6. Valeurs: "PC" (Permis de Construire), "DP" (Déclaration Préalable), "PA" (Permis d'Aménager), "PD" (Permis de Démolir). Ex: {value: "PC,DP", indicatif: false}

  • permis_etat (SimpleMultiple): État du permis. Codes: 0-6. Valeurs: "Autorisé", "Commencé", "Terminé", "Annulé". Ex: {value: "Autorisé,Commencé", indicatif: true}

  • permis_nature (SimpleMultiple): Nature des travaux. Codes: 0-7. Ex: {value: "0,1", indicatif: false}

  • permis_cat_dem (SimpleMultiple): Catégorie de démolition. Codes: 10-90. Ex: {value: "10,20", indicatif: true}

8️⃣ FILTRES ZONES PLU ET RISQUES (urbanisme et environnement):

  • plu_zone (SimpleMultiple): Zone du Plan Local d'Urbanisme. Valeurs: "U" (Urbain constructible), "AU" (À Urbaniser), "AUc" (constructible immédiatement), "AUs" (à ouvrir), "A" (Agricole protégé), "Ah" (habitat en zone agricole), "N" (Naturel protégé), "Nd" (zone naturelle dangereuse), "Nh" (habitat en zone naturelle). Ex: {value: "U,AU", indicatif: false}

  • plu_zone_type (SimpleMultiple): Type de zone PLU détaillé. Ex: "UBa", "UAa", "2AU". Ex: {value: "UBa", indicatif: true}

  • risque_argile (SimpleMultiple): Niveau de risque argile (retrait-gonflement). Codes: 1-3. Valeurs: "1" (Faible), "2" (Moyen), "3" (Fort). Ex: {value: "1,2", indicatif: true}

  • risque_radon (SimpleMultiple): Niveau de risque radon. Codes: 1-3. Valeurs: "1" (Faible), "2" (Moyen), "3" (Fort). Ex: {value: "1", indicatif: false}

9️⃣ FILTRES FONCIERS (propriété et opportunités):

  • construction (Boolean): Présence de construction sur la parcelle. Ex: {value: false, indicatif: false} pour terrain nu

  • copropriete (SimpleMultiple): Présence en copropriété. Valeurs: codes copropriété. Ex: {value: "XXX", indicatif: true}

  • personne_morale (SimpleMultiple): SIREN de personne morale propriétaire (9 chiffres). Ex: {value: "123456789", indicatif: false}

  • personne_morale_presente (Boolean): Présence d'une personne morale comme propriétaire. Ex: {value: true, indicatif: true}

  • opportunite (Boolean): Parcelle identifiée comme opportunité d'investissement. Ex: {value: true, indicatif: true}

  • opportunite_date (Range): Date d'identification de l'opportunité. Ex: {min: 1609459200, indicatif: false}

  • opportunite_type (SimpleMultiple): Type d'opportunité. Valeurs: "dpe" (mauvais DPE à rénover), "terrain" (terrain constructible). Ex: {value: "terrain", indicatif: true}

  • numero_rue (SimpleMultiple): Numéro dans la rue. Ex: {value: "1,2,3", indicatif: false}

Exemple complet:

{"filtres": {"code_postal": {"value": "75008"}, "dpe_energie": {"value": "A,B,C", "indicatif": true}, "surface_habitable": {"min": 80, "indicatif": true}}, "options": {"champs": ["cadastre_id", "superficie", "score_pertinence", "municipalite"], "champ_tri": "score_pertinence", "ordre_tri": "desc"}}

⚠️ STRUCTURE DES DONNÉES RETOURNÉES:

Chaque parcelle dans les résultats contient les 9 champs suivants :

  1. cadastre_id (string): Identifiant cadastral unique. Ex: "75108000BO0025"

  2. superficie (number): Surface en m². Ex: 523.45

  3. perimetre (number): Périmètre en mètres. Ex: 102.34

  4. arpente (boolean): Parcelle mesurée par géomètre

  5. section (object): Section cadastrale avec code et nom

  6. municipalite (object): Commune avec:

    • code (string): Code INSEE. Ex: "75108"

    • nom (string): "Paris 8e Arrondissement"

    • codes_postaux (array): ["75008"]

  7. centre (object): Coordonnées GPS (Point GeoJSON)

    • type: "Point"

    • coordinates: [longitude, latitude]

  8. contour (object): Limites de la parcelle (Polygon GeoJSON) - Si geometrie='contour'

  9. bbox (array): Boîte englobante [minX, minY, maxX, maxY] - Si geometrie='bbox'

🎯 score_pertinence (number 0-100): Présent UNIQUEMENT si filtre indicatif utilisé. 90-100=parfait, 70-89=très bon, 50-69=moyen, 30-49=faible, 0-29=très faible. TOUJOURS demander ce champ et trier par score_pertinence DESC. Score >70 = bonne correspondance.

Pagination: Cursor-based (X-Pagination-Next-Cursor), max 50/page.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "infoparcelle_parcelles_search_advanced"
  }
}

Input Schema

NameRequiredDescriptionDefault
filtresNoFiltres de recherche configurables en mode strict ou indicatif
optionsNo
paginationNo

Output Schema

NameRequiredDescriptionDefault
donneesYes
paginationNoPagination a curseur.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this is a safe, idempotent read, so the bar is lowered, yet the description still adds real behavior: the hard prerequisite of a strict geographic filter, score_pertinence only appearing when an indicative filter is used, and cursor pagination capped at 50 per page via X-Pagination-Next-Cursor. It stops short of stating auth requirements, rate limits, or what an empty/oversized result set looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, modes, and the mandatory-filter warning are front-loaded, which is good, but the body is bloated: emoji headers, repeated examples, and a full nine-field return-value catalogue that duplicates the existing output schema. Much of the filter catalogue is justified by the thin schema, but the redundancy and decoration cost readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a highly complex tool with nested, free-form filter objects, the description supplies mode semantics, required geographic scoping, filter catalogues, sorting/scoring guidance, and pagination. An output schema exists, so the redundant field list is surplus rather than a gap; nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% and 'filtres' is additionalProperties=true, so the schema carries almost no semantics — the description fully compensates by documenting the {value|min/max, indicatif} envelope, per-filter value domains and codes, examples, and multi-value comma syntax across 60+ filter keys. This is exactly the case where a description must do the schema's work.

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 opening line names a specific verb and resource ('Recherche AVANCÉE de parcelles cadastrales') and immediately distinguishes itself by mode (strict vs. indicative scoring) and by asserting it is 'SEUL outil de recherche de parcelles disponible'. An agent can tell, without opening the schema, that this is the general parcel search rather than the get/preview or domain-specific searches in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives unusually concrete when-to-use rules: strict mode returns exact matches only, indicative mode scores all parcels 0-100, and at least one strict geographic filter (dept/municipality/postal/IRIS/lat+lon) is mandatory. The one gap is that it never routes the agent to sibling tools like infoparcelle_dvf_search or infoparcelle_dpe_search when only a single domain is needed.

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