Skip to main content
Glama

Parcellaire — cadastre, DVF & DPE

Rechercher des DPE dans une zone

search_dpe
Read-onlyIdempotent

Liste les diagnostics de performance énergétique (DPE ADEME) d'une zone : autour d'une adresse, d'une parcelle ou d'un point (rayon), dans toute une commune ou dans toute une intercommunalité. Filtres : type de bâtiment, classes énergie/GES, surface, année de construction, date du DPE. Avec 'address' (numéro + rue), retourne aussi les DPE rattachés exactement à cette adresse. Résultats triés du plus récent au plus ancien et paginés ('limit', 'offset').

Input Schema

NameRequiredDescriptionDefault
latNoLatitude du centre (avec 'lng')
lngNoLongitude du centre (avec 'lat')
limitNoDPE par page (défaut 10, max 50)
offsetNoIndex de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante.
addressNoAdresse postale au centre de la zone
communeNoNom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). Couvre toute la commune (ignore 'rayon_m').
rayon_mNoRayon autour du centre en mètres (défaut 500, max 25000)
classe_dpeNoClasse énergie : une lettre de A à G, ou une liste pour plusieurs classes en un seul appel, ex: ['F','G'] pour « F ou G »
classe_gesNoClasse GES : une lettre de A à G, ou une liste, ex: ['F','G']
parcelle_idNoIDU d'une parcelle au centre de la zone
date_dpe_maxNoBorne maximale inclusive du DPE : année '2026' (31 décembre), mois ISO '2026-09' (dernier jour du mois), ou jour ISO '2026-09-30'. Pour une plage, utiliser date_dpe_min et date_dpe_max séparément. Omettre pour ne pas fixer de maximum.
date_dpe_minNoBorne minimale inclusive du DPE : année '2026', mois ISO '2026-09' (premier jour du mois), ou jour ISO '2026-09-15'. Pour une plage, utiliser date_dpe_min et date_dpe_max séparément, pas une plage dans ce champ. Omettre pour ne pas fixer de minimum.
type_batimentNo'immeuble' = DPE d'immeuble collectif entier
surface_max_m2NoSurface habitable maximale en m², ex: 120
surface_min_m2NoSurface habitable minimale en m², ex: 60
intercommunaliteNoNom ou SIREN d'une intercommunalité, ex: 'Grand Annecy', 'CA de La Rochelle', '241700434' : toutes ses communes membres, listées dans le résultat (ignore 'rayon_m').
annee_construction_maxNoAnnée de construction maximale, ex: 1990
annee_construction_minNoAnnée de construction minimale, ex: 1950

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / classe_dpe / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "A",
      -          "B",
      -          "C",
      -          "D",
      -          "E",
      -          "F",
      -          "G"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "const": "",
      -        "type": "string"
      -      }
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "A",
      +              "B",
      +              "C",
      +              "D",
      +              "E",
      +              "F",
      +              "G"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "items": {
      +              "enum": [
      +                "A",
      +                "B",
      +                "C",
      +                "D",
      +                "E",
      +                "F",
      +                "G"
      +              ],
      +              "type": "string"
      +            },
      +            "maxItems": 7,
      +            "type": "array"
      +          }
      +        ]
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / classe_dpe / description
      Previous value: -"Classe énergie : une lettre de A à G"New value: +"Classe énergie : une lettre de A à G, ou une liste pour plusieurs classes en un seul appel, ex: ['F','G'] pour « F ou G »"
    • changedInput schema / properties / classe_ges / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "A",
      -          "B",
      -          "C",
      -          "D",
      -          "E",
      -          "F",
      -          "G"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "const": "",
      -        "type": "string"
      -      }
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "A",
      +              "B",
      +              "C",
      +              "D",
      +              "E",
      +              "F",
      +              "G"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "items": {
      +              "enum": [
      +                "A",
      +                "B",
      +                "C",
      +                "D",
      +                "E",
      +                "F",
      +                "G"
      +              ],
      +              "type": "string"
      +            },
      +            "maxItems": 7,
      +            "type": "array"
      +          }
      +        ]
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / classe_ges / description
      Previous value: -"Classe GES : une lettre de A à G"New value: +"Classe GES : une lettre de A à G, ou une liste, ex: ['F','G']"
    • changedInput schema / properties / limit / description
      Previous value: -"DPE par page (défaut 20, max 50)"New value: +"DPE par page (défaut 10, max 50)"
  2. Changed1 schema field changed
    • changedInput schema / properties / commune / description
      Previous value: -"Nom de commune : toute la commune (ignore 'rayon_m')"New value: +"Nom de la commune, ex: 'Angers'. Pour une commune homonyme, préciser son code entre parenthèses : 'Thénac (17444)' (code INSEE), 'Thénac (17460)' (code postal) ou 'Thénac (17)' (département). Couvre toute la commune (ignore 'rayon_m')."
  3. Changed2 schema fields changed
    • changedInput schema / properties / date_dpe_max / description
      Previous value: -"Date maximale du DPE, 'AAAA-MM-JJ'"New value: +"Borne maximale inclusive du DPE : année '2026' (31 décembre), mois ISO '2026-09' (dernier jour du mois), ou jour ISO '2026-09-30'. Pour une plage, utiliser date_dpe_min et date_dpe_max séparément. Omettre pour ne pas fixer de maximum."
    • changedInput schema / properties / date_dpe_min / description
      Previous value: -"Date minimale du DPE, 'AAAA-MM-JJ'"New value: +"Borne minimale inclusive du DPE : année '2026', mois ISO '2026-09' (premier jour du mois), ou jour ISO '2026-09-15'. Pour une plage, utiliser date_dpe_min et date_dpe_max séparément, pas une plage dans ce champ. Omettre pour ne pas fixer de minimum."
  4. Changed3 schema fields changed
    • addedInput schema / properties / intercommunalite
      Added value: +{
      +  "anyOf": [
      +    {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "const": "",
      +          "type": "string"
      +        }
      +      ]
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Nom ou SIREN d'une intercommunalité, ex: 'Grand Annecy', 'CA de La Rochelle', '241700434' : toutes ses communes membres, listées dans le résultat (ignore 'rayon_m')."
      +}
    • changedInput schema / properties / rayon_m / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "maximum": 2000,
      -        "minimum": 50,
      -        "type": "integer"
      -      },
      -      {
      -        "const": "",
      -        "type": "string"
      -      }
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "maximum": 25000,
      +        "minimum": 50,
      +        "type": "integer"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / rayon_m / description
      Previous value: -"Rayon autour du centre en mètres (défaut 500, max 2000)"New value: +"Rayon autour du centre en mètres (défaut 500, max 25000)"
  5. Changed7 schema fields changed
    • addedInput schema / properties / annee_construction_max / description
      Added value: +"Année de construction maximale, ex: 1990"
    • addedInput schema / properties / annee_construction_min / description
      Added value: +"Année de construction minimale, ex: 1950"
    • addedInput schema / properties / classe_dpe / description
      Added value: +"Classe énergie : une lettre de A à G"
    • addedInput schema / properties / classe_ges / description
      Added value: +"Classe GES : une lettre de A à G"
    • addedInput schema / properties / offset / description
      Added value: +"Index de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante."
    • addedInput schema / properties / surface_max_m2 / description
      Added value: +"Surface habitable maximale en m², ex: 120"
    • addedInput schema / properties / surface_min_m2 / description
      Added value: +"Surface habitable minimale en m², ex: 60"
  6. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  7. Changed50 schema fields changed
    • addedInput schema / properties / address / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "minLength": 3,
      +        "type": "string"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / address / minLength
      Removed value: -3
    • removedInput schema / properties / address / type
      Removed value: -"string"
    • addedInput schema / properties / annee_construction_max / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / annee_construction_max / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / annee_construction_max / minimum
      Removed value: --9007199254740991
    • removedInput schema / properties / annee_construction_max / type
      Removed value: -"integer"
    • addedInput schema / properties / annee_construction_min / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / annee_construction_min / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / annee_construction_min / minimum
      Removed value: --9007199254740991
    • removedInput schema / properties / annee_construction_min / type
      Removed value: -"integer"
    • addedInput schema / properties / classe_dpe / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          "A",
      +          "B",
      +          "C",
      +          "D",
      +          "E",
      +          "F",
      +          "G"
      +        ],
      +        "type": "string"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / classe_dpe / enum
      Removed value: -[
      -  "A",
      -  "B",
      -  "C",
      -  "D",
      -  "E",
      -  "F",
      -  "G"
      -]
    • removedInput schema / properties / classe_dpe / type
      Removed value: -"string"
    • addedInput schema / properties / classe_ges / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          "A",
      +          "B",
      +          "C",
      +          "D",
      +          "E",
      +          "F",
      +          "G"
      +        ],
      +        "type": "string"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / classe_ges / enum
      Removed value: -[
      -  "A",
      -  "B",
      -  "C",
      -  "D",
      -  "E",
      -  "F",
      -  "G"
      -]
    • removedInput schema / properties / classe_ges / type
      Removed value: -"string"
    • addedInput schema / properties / commune / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / commune / type
      Removed value: -"string"
    • addedInput schema / properties / date_dpe_max / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / date_dpe_max / type
      Removed value: -"string"
    • addedInput schema / properties / date_dpe_min / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / date_dpe_min / type
      Removed value: -"string"
    • addedInput schema / properties / lat / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / lat / type
      Removed value: -"number"
    • addedInput schema / properties / limit / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "maximum": 50,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / limit / maximum
      Removed value: -50
    • removedInput schema / properties / limit / minimum
      Removed value: -1
    • removedInput schema / properties / limit / type
      Removed value: -"integer"
    • addedInput schema / properties / lng / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / lng / type
      Removed value: -"number"
    • addedInput schema / properties / offset / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "maximum": 5000,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / offset / maximum
      Removed value: -5000
    • removedInput schema / properties / offset / minimum
      Removed value: -0
    • removedInput schema / properties / offset / type
      Removed value: -"integer"
    • addedInput schema / properties / parcelle_id / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "maxLength": 14,
      +        "minLength": 14,
      +        "type": "string"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / parcelle_id / maxLength
      Removed value: -14
    • removedInput schema / properties / parcelle_id / minLength
      Removed value: -14
    • removedInput schema / properties / parcelle_id / type
      Removed value: -"string"
    • addedInput schema / properties / rayon_m / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "maximum": 2000,
      +        "minimum": 50,
      +        "type": "integer"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / rayon_m / maximum
      Removed value: -2000
    • removedInput schema / properties / rayon_m / minimum
      Removed value: -50
    • removedInput schema / properties / rayon_m / type
      Removed value: -"integer"
    • addedInput schema / properties / surface_max_m2 / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / surface_max_m2 / type
      Removed value: -"number"
    • addedInput schema / properties / surface_min_m2 / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / surface_min_m2 / type
      Removed value: -"number"
    • addedInput schema / properties / type_batiment / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          "maison",
      +          "appartement",
      +          "immeuble"
      +        ],
      +        "type": "string"
      +      },
      +      {
      +        "const": "",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / type_batiment / enum
      Removed value: -[
      -  "maison",
      -  "appartement",
      -  "immeuble"
      -]
    • removedInput schema / properties / type_batiment / type
      Removed value: -"string"
  8. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds real behavioral facts beyond them: results are sorted most-recent-first, pagination is via limit/offset, and passing a street-level 'address' additionally surfaces DPEs attached exactly to that address. It still doesn't say what happens with no spatial input at all, given all 18 parameters are optional.

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

Conciseness4/5

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

Front-loads the operation and scope, then filters, then the address nuance, then sorting/pagination — a sensible order with no filler sentences. The filter list is slightly redundant against the 100%-covered schema but costs little.

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

Completeness3/5

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

Covers modes, filters, sorting and pagination, which is substantial for an 18-parameter tool with no output schema. However, with zero required parameters it never explains the behavior of a call that omits every spatial anchor (whole-dataset scan? error?), leaving a significant ambiguity for a complex search tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns extra credit by mapping parameter groups to the spatial modes and by documenting the non-obvious 'address' side effect (numéro + rue also returns exact-address DPEs), which the schema does not state. The filter enumeration (type de bâtiment, classes, surface, année, date) is largely a restatement of the schema.

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?

States a specific verb ('Liste') and resource (DPE ADEME) and immediately bounds the scope to 'une zone', enumerating the five spatial modes (adresse, parcelle, point/rayon, commune, intercommunalité). This clearly separates it from the single-record sibling get_dpe and from search_parcelles/search_ventes_dvf, which target different datasets.

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?

Explicitly tells the agent which spatial input selects which search mode, and notes that 'commune'/'intercommunalité' ignore 'rayon_m'. It does not state when to prefer a sibling instead (e.g. get_dpe for a known DPE, get_commune_stats for aggregates), so it stops short of full when-not guidance.

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