_ registry / mcp streamable-http · checked 1h ago

parcellaire

https://parcellai.re

Registry code: b941bafc59aee866

api record

Parcellaire (parcellai.re) expose les données publiques immobilières françaises : cadastre (parcelles), transactions DVF, diagnostics énergétiques DPE, permis de construire, copropriétés et estimation de prix.

Identifiants clés : une parcelle est identifiée par son IDU (14 caractères, ex "33063000IK0001") ; un DPE par son numéro ADEME (13 caractères) ; une commune par son code INSEE (5 caractères, différent du code postal).

endpoint
https://parcellai.re/api/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is parcellaire live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is parcellaire free to use?
Yes — the hub reached it with no key and no payment.
What tools does parcellaire have?
15 tools: search_parcelles, get_parcelle_context, search_communes, get_commune_stats, search_dpe, send_feedback, find_parcelles_by_address, find_parcelles_by_criteria, ….
Is parcellaire safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 99.6%· all time 99.6%

latency
144ms

last good check

priced tools
0

of 15 tools

_ answered our checks, 90 days 445 checks · signed record
  • degraded → live
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
_ what it is for
used for
  • estimate french property price
  • find cadastral parcel by address
  • search dvf property sales
  • get energy performance diagnostic
  • geolocate a property listing
takes → gives
text, web pages → data
tools
13 reads
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

inferred, not observed

Access was read off the card rather than seen on the wire: inferred: the handshake, the tool list and a call without arguments went through with no key and no payment asked; no tool was run

_ what it can do 15 tools
15 never probed 0 of 15 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • search_parcelles reads unknown 19h ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 50,
                  "minimum": 1
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Nombre de parcelles détaillées retournées par page (défaut 20, max 50)"
        },
        "siren": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "SIREN du propriétaire personne morale"
        },
        "offset": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": 0
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Index de départ pour la pagination (défaut 0). Utiliser pagination.next_offset pour la page suivante."
        },
        "region": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "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": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Nom de la commune où chercher, ex: 'Angers'"
        },
        "date_dpe": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Date d'établissement du DPE. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date."
        },
        "viewport": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "sw_lat",
                    "sw_lng",
                    "ne_lat",
                    "ne_lng"
                  ],
                  "properties": {
                    "ne_lat": {
                      "type": "number"
                    },
                    "ne_lng": {
                      "type": "number"
                    },
                    "sw_lat": {
                      "type": "number"
                    },
                    "sw_lng": {
                      "type": "number"
                    }
                  }
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Zone géographique explicite (alternative à commune). Hauteur ≤ 20 km pour un détail parcelle par parcelle"
        },
        "classe_dpe": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "A",
                    "B",
                    "C",
                    "D",
                    "E",
                    "F",
                    "G"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Classe énergie d'un logement. Clé exacte: classe_dpe; valeur: une lettre A-G."
        },
        "classe_ges": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "A",
                    "B",
                    "C",
                    "D",
                    "E",
                    "F",
                    "G"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Classe GES. Clé exacte: classe_ges; valeur: une lettre A-G."
        },
        "date_vente": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Date de vente DVF. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date."
        },
        "departement": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Code ou nom du département, ex: '49', 'Maine-et-Loire'. Peut aussi restreindre une commune ou un viewport."
        },
        "has_piscine": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Uniquement les parcelles avec piscine"
        },
        "prix_vente_eur": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Prix de la dernière vente DVF en euros. Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"
        },
        "has_copropriete": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "true : parcelles avec une copropriété RNC connue. false non pris en charge ; omettre ne filtre pas ce critère."
        },
        "conso_dpe_kwh_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Consommation énergie primaire en kWh/m²/an (alternative à classe_dpe). Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"
        },
        "intercommunalite": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Nom ou SIREN d'une intercommunalité, ex: 'CA de La Rochelle', 'agglo de Niort', 'Bordeaux Métropole', '241700434'. Cherche dans toutes ses communes membres, listées dans le résultat avec leur nombre de parcelles."
        },
        "nombre_batiments": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Nombre de bâtiments sur la parcelle. Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"
        },
        "annee_construction": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Année de construction (BDNB). Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"
        },
        "has_permis_demolir": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Uniquement les parcelles avec un permis de démolir (PD)"
        },
        "surface_piscine_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Surface de la piscine en m². Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"
        },
        "surface_batiment_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Emprise au sol d'un bâtiment en m². Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum)"
        },
        "surface_parcelle_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Une seule surface de parcelle en m² par appel. Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum). Un entier seul est quasi exact (tolérance d'arrondi) : pour une surface approximative (« environ 600 m² »), passer une plage, ex: '540-660'. Pour plusieurs surfaces exactes, effectuer un appel séparé par surface; ne jamais fournir de tableau ni de liste séparée par des virgules."
        },
        "surface_habitable_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Surface habitable (DPE) en m². Nombre ou texte : 250 ou '250' (exact), '100-500' (plage), '100-' (minimum), '-500' (maximum). Un entier seul est quasi exact : pour une surface approximative, passer une plage, ex: '135-145'."
        },
        "has_permis_construire": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Uniquement les parcelles avec un permis de construire (PC), hors permis de démolir, d'aménager et déclarations préalables"
        },
        "date_permis_construire": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Date d'autorisation. Avec has_permis_construire ou has_permis_demolir, elle porte sur ce permis ; seule, sur toute autorisation d'urbanisme (permis de construire, de démolir, d'aménager, déclaration préalable). Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date."
        },
        "has_proprietaire_personne_morale": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Uniquement les parcelles détenues par une personne morale (société, collectivité…)"
        }
      },
      "additionalProperties": false
    }
    arguments 620 lines
  • get_parcelle_context reads unknown 4h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "parcelle_id"
      ],
      "properties": {
        "fibre": {
          "type": "boolean",
          "description": "Éligibilité fibre et opérateurs (ARCEP)"
        },
        "sante": {
          "type": "boolean",
          "description": "Médecins, pharmacies… proches"
        },
        "ecoles": {
          "type": "boolean",
          "description": "Écoles proches"
        },
        "loyers": {
          "type": "boolean",
          "description": "Loyers de référence en €/m²"
        },
        "emprise": {
          "type": "boolean",
          "description": "Emprise du bâti au sol"
        },
        "risques": {
          "type": "boolean",
          "description": "Risques Géorisques : inondation, argiles, radon, sismicité, pollution…"
        },
        "terrain": {
          "type": "boolean",
          "description": "Relief et altitude"
        },
        "recharge": {
          "type": "boolean",
          "description": "Bornes de recharge proches"
        },
        "commerces": {
          "type": "boolean",
          "description": "Commerces proches"
        },
        "filiation": {
          "type": "boolean",
          "description": "Historique des découpages cadastraux"
        },
        "parcelle_id": {
          "type": "string",
          "maxLength": 14,
          "minLength": 14,
          "description": "IDU de la parcelle, 14 caractères, ex: '33063000IK0001'"
        },
        "restrictions_eau": {
          "type": "boolean",
          "description": "Arrêtés de restriction d'eau (sécheresse) en cours"
        },
        "secteur_scolaire": {
          "type": "boolean",
          "description": "Établissements du secteur scolaire"
        }
      },
      "additionalProperties": false
    }
    arguments 64 lines
  • search_communes reads unknown 1h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "query": {
          "type": "string",
          "minLength": 1,
          "description": "Nom de commune ou code postal, ex: 'Bordeaux' ou '33000'"
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • get_commune_stats reads unknown 15h ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "commune": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Nom ou code postal de la commune, ex: 'Bordeaux'"
        },
        "insee_id": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 5,
                  "minLength": 5
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Code INSEE de la commune (prioritaire si fourni)"
        }
      },
      "additionalProperties": false
    }
    arguments 47 lines
  • search_dpe reads unknown 15h ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "lat": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Latitude du centre (avec 'lng')"
        },
        "lng": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Longitude du centre (avec 'lat')"
        },
        "limit": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 50,
                  "minimum": 1
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "DPE par page (défaut 20, max 50)"
        },
        "offset": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 5000,
                  "minimum": 0
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Index de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante."
        },
        "address": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 3
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Adresse postale au centre de la zone"
        },
        "commune": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Nom de commune : toute la commune (ignore 'rayon_m')"
        },
        "rayon_m": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 25000,
                  "minimum": 50
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Rayon autour du centre en mètres (défaut 500, max 25000)"
        },
        "classe_dpe": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "A",
                    "B",
                    "C",
                    "D",
                    "E",
                    "F",
                    "G"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Classe énergie : une lettre de A à G"
        },
        "classe_ges": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "A",
                    "B",
                    "C",
                    "D",
                    "E",
                    "F",
                    "G"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Classe GES : une lettre de A à G"
        },
        "parcelle_id": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 14,
                  "minLength": 14
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "IDU d'une parcelle au centre de la zone"
        },
        "date_dpe_max": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "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."
        },
        "date_dpe_min": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "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."
        },
        "type_batiment": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "maison",
                    "appartement",
                    "immeuble"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "'immeuble' = DPE d'immeuble collectif entier"
        },
        "surface_max_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Surface habitable maximale en m², ex: 120"
        },
        "surface_min_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Surface habitable minimale en m², ex: 60"
        },
        "intercommunalite": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "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')."
        },
        "annee_construction_max": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Année de construction maximale, ex: 1990"
        },
        "annee_construction_min": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Année de construction minimale, ex: 1950"
        }
      },
      "additionalProperties": false
    }
    arguments 385 lines
  • send_feedback unknown never probed

    Transmet à l'équipe Parcellaire un retour sur le service, pour orienter ses évolutions : besoin non couvert, donnée manquante, bug, idée de fonctionnalité ou retour positif. N'appeler qu'avec l'accord explicite de l'utilisateur dans la conversation, jamais à son insu : quand il demande lui-même à envoyer un retour (origine 'utilisateur'), ou après lui avoir proposé de signaler une demande que les outils n'ont pas permis de satisfaire (donnée absente, filtre manquant, erreur répétée) et qu'il a accepté (origine 'assistant'). Lui dire ce qui sera envoyé, reformuler fidèlement, ne rien inventer, un seul envoi par besoin. Ne jamais inclure de données personnelles : ni nom, email, téléphone, adresse précise, numéro de parcelle ou de DPE, ni URL d'annonce ; décrire le besoin en termes généraux (commune ou département au plus). L'équipe ne répond pas par ce canal : pour une question ou une réponse personnelle, orienter vers https://parcellai.re/contact.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "type",
        "origine",
        "accord_utilisateur",
        "cas_usage",
        "message"
      ],
      "properties": {
        "type": {
          "enum": [
            "fonctionnalite",
            "donnees_manquantes",
            "bug",
            "positif",
            "autre"
          ],
          "type": "string",
          "description": "'fonctionnalite' (outil, filtre ou usage souhaité), 'donnees_manquantes' (donnée absente, incomplète ou trop ancienne), 'bug' (erreur ou résultat faux), 'positif' (ce qui a été utile), 'autre'"
        },
        "outils": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 60
                  },
                  "maxItems": 20
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Noms des outils Parcellaire appelés pendant la conversation, dans l'ordre, ex: ['find_parcelles_by_address', 'search_ventes_dvf']"
        },
        "profil": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "acheteur",
                    "proprietaire",
                    "locataire",
                    "professionnel_immobilier",
                    "investisseur",
                    "collectivite",
                    "developpeur",
                    "etude",
                    "inconnu"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Profil de l'utilisateur, seulement s'il ressort clairement de la conversation : 'acheteur', 'proprietaire' (ou vendeur), 'locataire', 'professionnel_immobilier' (agent, notaire, diagnostiqueur, promoteur, géomètre), 'investisseur', 'collectivite', 'developpeur', 'etude' (presse, recherche, analyse de marché). Omettre sinon."
        },
        "message": {
          "type": "string",
          "maxLength": 2000,
          "minLength": 10,
          "description": "Le retour lui-même : ce qui manque, ce qui ne marche pas ou ce qui serait utile, avec le résultat attendu"
        },
        "origine": {
          "enum": [
            "utilisateur",
            "assistant"
          ],
          "type": "string",
          "description": "'utilisateur' si l'utilisateur a demandé lui-même à envoyer ce retour, 'assistant' si l'IA l'a proposé et que l'utilisateur a accepté"
        },
        "cas_usage": {
          "type": "string",
          "maxLength": 300,
          "minLength": 10,
          "description": "Ce que l'utilisateur cherchait à accomplir, en termes généraux, ex: 'comparer le prix au m² d'une maison avec les ventes récentes du quartier avant une offre d'achat à Nantes'"
        },
        "accord_utilisateur": {
          "type": "boolean",
          "const": true,
          "description": "true : l'utilisateur a accepté dans la conversation l'envoi de ce retour. Sans son accord, ne pas appeler l'outil."
        }
      },
      "additionalProperties": false
    }
    arguments 104 lines
  • find_parcelles_by_address reads unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "address"
      ],
      "properties": {
        "address": {
          "type": "string",
          "minLength": 3,
          "description": "Adresse postale, ex: '10 quai des Chartrons, Bordeaux'"
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • find_parcelles_by_criteria reads unknown 19h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "commune": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Nom de la commune, ex: 'Angers'"
        },
        "date_dpe": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Date unique du DPE au format ISO 'AAAA-MM' (ex: '2026-09') ou 'AAAA-MM-JJ' (ex: '2026-09-15'). Indice de similarité, pas un filtre exact ni une plage. Pour une période, utiliser search_dpe avec date_dpe_min et date_dpe_max. Omettre si inconnue."
        },
        "ges_kg_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Émissions GES en kg CO2/m²/an"
        },
        "type_bien": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "maison",
                    "appartement"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Type de bien : 'maison' ou 'appartement'"
        },
        "classe_dpe": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "A",
                    "B",
                    "C",
                    "D",
                    "E",
                    "F",
                    "G"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Classe énergie du DPE : une lettre de A à G"
        },
        "classe_ges": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "A",
                    "B",
                    "C",
                    "D",
                    "E",
                    "F",
                    "G"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Classe GES du DPE : une lettre de A à G"
        },
        "code_postal": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 5,
                  "minLength": 5
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Code postal, ex: '49100'"
        },
        "conso_dpe_kwh_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number",
                  "exclusiveMinimum": 0
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Consommation énergie primaire en kWh/m²/an"
        },
        "annee_construction": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Année de construction, ex: 1975"
        },
        "surface_terrain_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number",
                  "exclusiveMinimum": 0
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Surface du terrain en m² (maisons), ex: 600"
        },
        "surface_habitable_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number",
                  "exclusiveMinimum": 0
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Surface habitable en m², ex: 85"
        }
      },
      "additionalProperties": false
    }
    arguments 247 lines
  • search_ventes_dvf reads unknown 19h ago

    Liste les ventes immobilières (DVF) d'une zone : autour d'une adresse, d'une parcelle ou d'un point (rayon), ou dans toute une commune — idéal pour trouver des biens comparables. Une ligne par vente : date, prix, type de bien, surface bâtie, pièces, terrain, parcelles, prix au m² (quand la vente porte sur un seul logement). Retourne aussi la médiane du prix au m² des ventes filtrées. Seules les ventes géolocalisées sont couvertes (depuis 2021), hors Alsace-Moselle (Bas-Rhin, Haut-Rhin, Moselle), absente du fichier DVF. Filtrer par 'type_bien' pour des prix au m² comparables.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "lat": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Latitude du centre (avec 'lng')"
        },
        "lng": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Longitude du centre (avec 'lat')"
        },
        "tri": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "date",
                    "distance"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Tri des ventes (défaut : date décroissante ; distance pour les plus proches)"
        },
        "limit": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 50,
                  "minimum": 1
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Ventes par page (défaut 20, max 50)"
        },
        "offset": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 5000,
                  "minimum": 0
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Index de départ pour la pagination (défaut 0, max 5000). Utiliser pagination.next_offset pour la page suivante."
        },
        "address": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 3
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Adresse postale au centre de la zone"
        },
        "commune": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Nom de commune : toute la commune (ignore 'rayon_m')"
        },
        "rayon_m": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 25000,
                  "minimum": 50
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Rayon autour du centre en mètres (défaut 500, max 25000)"
        },
        "date_max": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Borne maximale inclusive au format ISO 'AAAA-MM-JJ', ex: '2026-09-30'. Omettre pour ne pas fixer de maximum."
        },
        "date_min": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Borne minimale inclusive au format ISO 'AAAA-MM-JJ', ex: '2026-09-15' (défaut 2021-01-01). Pour une plage, utiliser date_min et date_max séparément, pas une plage dans ce champ."
        },
        "type_bien": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "maison",
                    "appartement",
                    "local"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Type de bien vendu : 'maison', 'appartement' ou 'local' (local commercial, industriel ou assimilé)"
        },
        "parcelle_id": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 14,
                  "minLength": 14
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "IDU d'une parcelle au centre de la zone"
        },
        "prix_max_eur": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Prix de vente maximal en euros, ex: 400000"
        },
        "prix_min_eur": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Prix de vente minimal en euros, ex: 150000"
        },
        "surface_max_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Surface bâtie maximale en m², ex: 120"
        },
        "surface_min_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Surface bâtie minimale en m², ex: 60"
        }
      },
      "additionalProperties": false
    }
    arguments 331 lines
  • estimate_property_price reads unknown 9h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "type_bien",
        "surface_m2"
      ],
      "properties": {
        "lat": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Latitude, si pas d'adresse"
        },
        "lng": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Longitude, si pas d'adresse"
        },
        "address": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Adresse du bien (option la plus simple)"
        },
        "type_bien": {
          "enum": [
            "maison",
            "appartement"
          ],
          "type": "string",
          "description": "Type de bien : 'maison' ou 'appartement'"
        },
        "classe_dpe": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "A",
                    "B",
                    "C",
                    "D",
                    "E",
                    "F",
                    "G"
                  ],
                  "type": "string"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Classe DPE si connue (affine l'estimation)"
        },
        "code_insee": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 5,
                  "minLength": 5
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Code INSEE de la commune, si pas d'adresse"
        },
        "surface_m2": {
          "type": "number",
          "description": "Surface habitable en m² (annonce ou DPE du logement), ex: 85. Jamais l'emprise au sol d'un bâtiment.",
          "exclusiveMinimum": 0
        },
        "terrain_m2": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Surface du terrain en m² (maisons)"
        },
        "annee_construction": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Année de construction, ex: 1975 (affine l'estimation)"
        }
      },
      "additionalProperties": false
    }
    arguments 170 lines
  • find_place reads unknown 9h ago

    Géocode un lieu nommé (gare, mairie, hôpital, école, université, monument, station de tram…) avec l'index des points d'intérêt de l'IGN, et retourne plusieurs candidats avec leur catégorie, leur commune et leurs coordonnées. Passer ensuite lat et lng du bon candidat à search_dpe, search_ventes_dvf ou search_parcelles. Inclure la commune dans la requête et le nom officiel quand il est connu (ex: 'gare Angers Saint-Laud', 'centre hospitalier universitaire Angers'). Vérifier la catégorie et la commune : le premier candidat n'est pas toujours le bon (un quartier « Gare » n'est pas la gare). Pour une adresse, une rue ou une place, utiliser plutôt le paramètre address des outils de recherche.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "limit": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 10,
                  "minimum": 1
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Nombre de candidats (défaut 5, max 10)"
        },
        "query": {
          "type": "string",
          "minLength": 3,
          "description": "Nom du lieu et commune, ex: 'gare Angers Saint-Laud'"
        }
      },
      "additionalProperties": false
    }
    arguments 36 lines
  • get_parcelle reads unknown 9h ago

    Retourne la fiche de base d'une parcelle cadastrale à partir de son IDU (14 caractères) : surface, adresse, commune. Tout le reste est à demander via 'include', uniquement pour les sections utiles à la question (chaque section allonge la réponse) : parcelles adjacentes (parcelles_adjacentes : celles qui la touchent, avec surface, bâti et nombre de DPE ; pour toute question de voisinage ou quand l'adresse ou un DPE pointe une petite parcelle sans bâti), bâtiments (batiments), transactions immobilières (dvf), diagnostics énergétiques (dpes), zonage d'urbanisme (urbanisme, la plus lente), données bâtiment BDNB (bdnb), piscines, copropriétés (rnc), propriétaires personnes morales (majic_pm), permis de construire (sitadel). La réponse donne toujours le nombre d'éléments de chaque section (donnees_disponibles), même non demandée : s'en servir pour décider quelles sections lire.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "parcelle_id"
      ],
      "properties": {
        "include": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "enum": [
                      "parcelles_adjacentes",
                      "batiments",
                      "dvf",
                      "dpes",
                      "urbanisme",
                      "bdnb",
                      "piscines",
                      "rnc",
                      "majic_pm",
                      "sitadel"
                    ],
                    "type": "string"
                  }
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Sections à inclure, ex: ['dvf', 'dpes']. Aucune par défaut : sans include, seule la fiche de base de la parcelle est retournée."
        },
        "max_items": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 200,
                  "minimum": 1
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Nombre maximum d'éléments par section liste (défaut 30). Les sections tronquées sont signalées dans 'sections_tronquees'."
        },
        "parcelle_id": {
          "type": "string",
          "maxLength": 14,
          "minLength": 14,
          "description": "IDU de la parcelle, 14 caractères, ex: '33063000IK0001'"
        }
      },
      "additionalProperties": false
    }
    arguments 71 lines
  • get_dpe reads unknown 4h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "dpe_id"
      ],
      "properties": {
        "dpe_id": {
          "type": "string",
          "minLength": 8,
          "description": "Numéro ADEME du DPE, ex: '2233E1234567X'"
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • search_permis unknown 15h ago

    Recherche les autorisations d'urbanisme Sitadel par commune, intercommunalité, département ou région, avec filtre de destination (hébergement hôtelier, habitation, bureaux, commerce…). Retourne une ligne par permis, ses parcelles, son adresse et ses surfaces par destination, triées par date d'autorisation décroissante. Pour les derniers permis, omettre la date si aucune période n'est demandée. Les surfaces de construction ou créées par changement de destination sont distinctes des surfaces supprimées ou démolies : un permis impliquant un hôtel ne crée pas nécessairement un nouvel hôtel. Les résultats sont limités aux autorisations liées aux parcelles cadastrales et ne garantissent pas une couverture exhaustive.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Nombre de permis par page, défaut 20, maximum 50."
        },
        "offset": {
          "type": "integer",
          "maximum": 5000,
          "minimum": 0,
          "description": "Index de départ, reprendre pagination.next_offset. Au-delà de 5000, restreindre la période ou la zone."
        },
        "region": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Code INSEE ou nom de la région, ex: Pays de la Loire. France métropolitaine hors Corse."
        },
        "commune": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Nom de la commune, ex: Nantes. Fournir departement si le nom est ambigu."
        },
        "departement": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Code ou nom du département, ex: 44 ou Loire-Atlantique. Peut restreindre une commune ou une région."
        },
        "destination": {
          "enum": [
            "hebergement_hotelier",
            "habitation",
            "bureaux",
            "commerce",
            "artisanat",
            "industrie",
            "agriculture",
            "entrepot",
            "service_public"
          ],
          "type": "string",
          "description": "Destination à rechercher à partir de ses surfaces déclarées. Pour des hôtels : hebergement_hotelier. Omettre pour toutes les destinations."
        },
        "intercommunalite": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Nom ou SIREN de l'intercommunalité, alternative à commune."
        },
        "date_autorisation": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Date d'autorisation, facultative. Année (2026 ou '2026'), mois ISO ('2026-09'), jour ISO ('2026-09-15'), ou plage inclusive séparée par un tiret : '2026-09-15-2026-09-30', '2026-09-2026-10', '2019-2024'. Borne ouverte : '2026-09-15-' (minimum), '-2026-09-30' (maximum). Une année ou un mois couvre toute cette année ou ce mois. Ne pas séparer les bornes ISO par '/' ni fournir un tableau. Omettre si aucun filtre de date."
        },
        "type_autorisation": {
          "enum": [
            "PC",
            "DP",
            "PD",
            "PA"
          ],
          "type": "string",
          "description": "PC (permis de construire, défaut), DP (déclaration préalable), PD (démolition) ou PA (aménagement)."
        },
        "operation_destination": {
          "enum": [
            "toutes",
            "creation",
            "suppression",
            "existant"
          ],
          "type": "string",
          "description": "Avec destination : toutes (défaut) concerne cette destination ; creation construit ou convertit vers elle ; suppression démolit ou convertit vers un autre usage ; existant exige une surface avant travaux. Une surface inconnue ne vaut pas zéro."
        }
      },
      "additionalProperties": false
    }
    arguments 124 lines
  • geolocate_listing reads unknown 4h ago

    Analyse l'URL d'une annonce immobilière française (SeLoger, PAP, Bien'ici, Le Figaro Immobilier…) : extrait les caractéristiques du bien (surface, DPE, commune, terrain, prix affiché) puis identifie les parcelles cadastrales candidates en croisant avec la base des DPE. Service gratuit avec une limite GLOBALE de 50 analyses par heure, tous clients MCP confondus, sans limite individuelle — si la limite est atteinte (erreur 429), NE PAS réessayer immédiatement.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "URL complète de l'annonce immobilière"
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id b941bafc59aee866.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/b941bafc59aee866/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/b941bafc59aee866/badge.svg)](https://brick.blue/agent/b941bafc59aee866?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.