Hosted MCP server · #105 most used on Smithery
france-data
cturkieh/france-data
France Data MCP permet aux agents IA d’interroger, croiser et enrichir automatiquement plusieurs référentiels publics français via une interface MCP unifiée. France Data MCP fournit une couche d’intelligence territoriale française conçue pour le reasoning multi-sources et l’orchestration agentique. Le serveur combine données territoriales, géocodage, santé publique, référentiels administratifs et enrichissement multi-sources afin de permettre des workflows complexes de raisonnement géospatial et territorial. Contrairement à de simples wrappers API, les tools sont conçus pour être chaînables par les agents IA afin de résoudre automatiquement des questions métier complexes. Exemples de workflows agentiques : → « Cette pharmacie est-elle réellement encore active ? » Détection des SIRET fermés invisibles côté DREES via cross-source FINESS ↔ RPPS ↔ SIRENE → « Où installer un spécialiste à Metz ? » Croisement densité médicale Ameli + RPPS + cartographie FINESS → « Quels sont les concurrents M&A potentiels d’un groupe pharmacie ? » Historique SIRENE + matching adresse + détection de rebrandings non propagés → « Cartographier l’offre de soins d’un canton » Combinaison FINESS + RPPS + entreprises + coverage ratio géospatial Sources intégrées : FINESS DREES RPPS / Annuaire Santé ANS Annuaire Santé Ameli INSEE SIRENE IGN Géoplateforme geo.api.gouv.fr (DINUM) Capabilities : • orchestration multi-référentiels • géocodage et enrichissement territorial • reasoning multi-étapes pour agents IA • workflows géospatiaux chaînables • cross-reference intelligence entre référentiels publics • compatibilité MCP HTTP + wrappers npm/stdIO • observabilité Sentry
- Uses
- 5.3k
- Tools
- 37
- Runs
- Hosted
- Listed
- 6mo ago
Get started
Add it to your agent
npx -y @smithery/cli@latest install cturkieh/france-data --client claudeSwap --client claude for cursor, vscode, windsurf or another client. The CLI asks for any required settings.
claude mcp add --transport http france-data https://server.smithery.ai/cturkieh/france-data/mcpA hosted server: nothing to install. Run /mcp in Claude Code to sign in if it asks.
[mcp_servers.france-data]
url = "https://server.smithery.ai/cturkieh/france-data/mcp"Add to ~/.codex/config.toml.
{
"mcpServers": {
"france-data": {
"url": "https://server.smithery.ai/cturkieh/france-data/mcp"
}
}
}Add to ~/.cursor/mcp.json.
{
"servers": {
"france-data": {
"type": "http",
"url": "https://server.smithery.ai/cturkieh/france-data/mcp"
}
}
}Add to .vscode/mcp.json.
gemini mcp add --transport http france-data https://server.smithery.ai/cturkieh/france-data/mcpSaved to .gemini/settings.json.
What it can do
37 tools
autocomplete_commune5 paramsRecherche de communes françaises par nom, code postal ou code INSEE. Idéal pour autocomplétion. Source : geo.api.gouv.fr (DINUM/Etalab). …
Recherche de communes françaises par nom, code postal ou code INSEE. Idéal pour autocomplétion. Source : geo.api.gouv.fr (DINUM/Etalab). Un (au moins) parmi `nom`, `codePostal`, `code` est requis. Alias acceptés : `q`/`query`/`search` → `nom`, `codepostal`/`postal_code` → `codePostal`, `code_insee`/`insee` → `code`.
| Parameter | Type | Description |
|---|---|---|
nom | string | Recherche par nom (autocomplétion). Ex: "Villeneuve d'Ascq", "Lyon". |
code | string | Code INSEE exact (5 caractères). Ex: "59009". |
limit | number | Nombre max de résultats (1-30, défaut 10). |
codePostal | string | Code postal exact (5 chiffres). Ex: "59650". |
boostPopulation | boolean | Trier par population décroissante. Recommandé pour les noms ambigus (ex: 'Charleville'). |
get_commune_by_code1 paramRécupère une commune par son code INSEE. Retourne un objet `LookupResult` discriminé par `found`. `found: true` → champs commune à plat (…
Récupère une commune par son code INSEE. Retourne un objet `LookupResult` discriminé par `found`. `found: true` → champs commune à plat (nom, codesPostaux, centre…). `found: false` → `{ found: false, key, lookupStatus: 'not_found', message }` orientant vers `autocomplete_commune` pour disambiguer. Alias acceptés : `code_insee`/`codeInsee`/`insee` → `code`.
| Parameter | Type | Description |
|---|---|---|
code | string | Code INSEE 5 caractères. Ex: "75056" Paris, "59009" Villeneuve-d'Ascq, "2A004" Ajaccio. |
geocode_adresse3 paramsGéocode une adresse française en coordonnées GPS. Source : IGN Géoplateforme (data.geopf.fr). Précision au numéro de rue. Le champ `score…
Géocode une adresse française en coordonnées GPS. Source : IGN Géoplateforme (data.geopf.fr). Précision au numéro de rue. Le champ `score` (0-1) qualifie la fiabilité du match : >= 0.8 fiable, < 0.5 = match douteux (souvent un fallback rue/commune sans rapport avec l'adresse demandée). Le champ booléen `confidence_low` vaut `true` dans ce cas : ne PAS utiliser `point` pour une décision quand `confidence_low: true`. Le champ `type` indique aussi la granularité (housenumber > street > locality > m
| Parameter | Type | Description |
|---|---|---|
adresse | string | Adresse complète à géocoder. |
codePostal | string | Optionnel — limiter le résultat à un code postal pour désambiguïser. |
codeCommune | string | Optionnel — limiter au code INSEE de commune. |
reverse_geocode2 paramsGéocodage inverse : à partir de coordonnées GPS, retrouve l'adresse la plus proche. Source : IGN Géoplateforme. Couverture France métropo…
Géocodage inverse : à partir de coordonnées GPS, retrouve l'adresse la plus proche. Source : IGN Géoplateforme. Couverture France métropolitaine + DOM uniquement : des coordonnées hors zone (ex. New York) ou en pleine mer renvoient `null` (pas une erreur — c'est l'absence de résultat, pas une panne).
| Parameter | Type | Description |
|---|---|---|
lat | number | Latitude (WGS84). |
lon | number | Longitude (WGS84). |
population1 paramPopulation d'une COMMUNE (code INSEE 5 car.), d'un DÉPARTEMENT (2-3 car.) OU d'un IRIS infracommunal (9 car.) — granularité auto-détectée…
Population d'une COMMUNE (code INSEE 5 car.), d'un DÉPARTEMENT (2-3 car.) OU d'un IRIS infracommunal (9 car.) — granularité auto-détectée par la longueur du `code`. Retourne un `LookupResult` discriminé par `found`. - IRIS (9 car., ex `751103701` = commune `75110` + IRIS `3701`) : population totale du quartier au Recensement 2022 (champ `population`, comptes bruts), + `libelle`, `code_commune`, `type_iris` (H/A/D/Z). Source : INSEE RP 2022 (table ingérée, géo 01/01/2024). Maille la plus fine (qu
| Parameter | Type | Description |
|---|---|---|
code | string | Code INSEE — 5 caractères = commune (ex "75056"), 2-3 caractères = département (ex "75", "971", "2A"). Granularité auto-détectée par la longueur. |
profil_iris4 paramsProfil démographique au grain QUARTIER (IRIS) — la « demande » d'un territoire (âge, CSP, familles, revenu), à croiser avec l'offre de so…
Profil démographique au grain QUARTIER (IRIS) — la « demande » d'un territoire (âge, CSP, familles, revenu), à croiser avec l'offre de soins pour l'aide à l'implantation. Source : INSEE RP 2022 + FILOSOFI 2021 (tables ingérées, géo 01/01/2024). Retourne un `LookupResult` discriminé par `found`. Entrée : EXACTEMENT un de `point` (`lat`+`lon`) OU `code_iris` (9 car.). `rayon_km` optionnel (0 < r ≤ 10) → DEUX modes : - SANS `rayon_km` → profil de l'ÎLOT seul (~2000 hab) sous le point / du code. `mo
| Parameter | Type | Description |
|---|---|---|
lat | number | Latitude du point (mode point). |
lon | number | Longitude du point (mode point). |
rayon_km | number | Rayon du bassin en km (0 < r ≤ 10). Absent = profil de l'îlot seul. |
code_iris | string | Code IRIS 9 caractères (ex `751103701`) — alternatif au point. |
entreprises_in_radius10 paramsRecherche d'entreprises françaises avec filtres NAF, code postal, département ou rayon géographique. Couvre tous secteurs (santé via NAF …
Recherche d'entreprises françaises avec filtres NAF, code postal, département ou rayon géographique. Couvre tous secteurs (santé via NAF 8690B, 4773Z, 8710A, 8621Z, etc.). Source : DINUM Recherche Entreprises (SIRENE + RNE). Renvoie CA, dirigeants, tranches d'effectif et dates de création. Deux modes EXCLUSIFs (endpoints DINUM distincts) : (1) proximité — `lat`+`lon`+`radiusKm` (optionnellement + `naf`), résolu nativement via `/near_point` ; (2) administratif — `q` (texte libre) et/ou `naf` + `c
| Parameter | Type | Description |
|---|---|---|
q | string | Recherche textuelle libre (raison sociale, dirigeant…). |
lat | number | Latitude du centre du cercle de recherche. |
lon | number | Longitude du centre du cercle de recherche. |
naf | string | Code NAF principal (ex: '8690B' = labos, '4773Z' = pharmacies, '8710A' = EHPAD, '8621Z' = MG). |
page | number | Page (1-indexed). |
perPage | number | Résultats par page (1-25, défaut 10). |
radiusKm | number | Rayon en km (1-50). |
codePostal | string | Filtre alternatif : code postal exact. |
departement | string | Filtre alternatif : code département. |
includeDirigeants | boolean | Inclure la liste des dirigeants RNE dans chaque entreprise (défaut true). `false` strip `dirigeants: []` côté handler — utile en énumération volume où les dirigeants ne sont pas exploités (économie de |
entreprise_by_siren1 paramRécupère le détail d'une entreprise française par son SIREN (9 chiffres) : raison sociale, NAF, finances historiques, dirigeants, établis…
Récupère le détail d'une entreprise française par son SIREN (9 chiffres) : raison sociale, NAF, finances historiques, dirigeants, établissements. Source : DINUM Recherche Entreprises. **Format de retour** : objet `LookupResult` discriminé par `found`. - `found: true` → l'entreprise est retournée à plat (champs `siren`, `nomComplet`, `etablissements`, `enrichmentStatus`, …) - `found: false` → `{ found: false, key, lookupStatus: 'not_found' | 'ambiguous', message }`. `not_found` : SIREN non indexé
| Parameter | Type | Description |
|---|---|---|
siren | string | SIREN exact, 9 chiffres. |
data_freshnessRetourne la fraîcheur des dumps de données ingérés côté serveur : FINESS / ANS (flux quotidien, ingéré le 1er et le 15 du mois), Annuaire…
Retourne la fraîcheur des dumps de données ingérés côté serveur : FINESS / ANS (flux quotidien, ingéré le 1er et le 15 du mois), Annuaire Santé Ameli (hebdomadaire), RPPS / Annuaire Santé ANS (mensuel), Centres de Santé CNAM (hebdomadaire), IRIS INSEE (annuel), permis de construire Sit@del / SDES (mensuel, cron le 10). Pour chaque source : `last_data_change_at` + `data_age_days` (dernier run ayant RÉELLEMENT changé la donnée servie, et son âge en jours — C'EST LE CHAMP À LIRE), `last_success_at`
compare_raison_sociale_finess_vs_rpps1 paramCompare la raison sociale FINESS DREES vs RPPS / Annuaire Santé ANS pour un même num_finess. Primitive brute SANS interprétation métier —…
Compare la raison sociale FINESS DREES vs RPPS / Annuaire Santé ANS pour un même num_finess. Primitive brute SANS interprétation métier — retourne juste les deux libellés + un statut de comparaison. Le caller décide quoi faire de la divergence. Utilité : RPPS reflète souvent plus rapidement les rebrandings post-M&A que FINESS DREES (ex: un site racheté reste 'DIAGNOVIE' chez DREES alors qu'il est déjà 'BIOGROUP NORD' chez l'ANS). Ce tool expose la divergence factuelle ; il NE DIT PAS qui a rache
| Parameter | Type | Description |
|---|---|---|
num_finess | string | Numéro FINESS exact (9 chiffres). |
compare_adresse_cnam_vs_finess1 paramCompare l'adresse d'un centre de santé côté CNAM (Annuaire santé Ameli) vs FINESS DREES pour un même num_finess. Primitive brute SANS int…
Compare l'adresse d'un centre de santé côté CNAM (Annuaire santé Ameli) vs FINESS DREES pour un même num_finess. Primitive brute SANS interprétation métier — retourne les deux adresses, un `score_dice` (0..1, informatif ; `null` si non comparable car `finess_absent`) et un `statut`. Le caller décide quoi faire de la divergence. Utilité : signaler un déménagement propagé par une source mais pas (encore) par l'autre (ex: CNAM '5 RUE DE L'ARQUEBUSE AUTUN' vs FINESS '15 BD BERNARD GIBERSTEIN AUTUN'
| Parameter | Type | Description |
|---|---|---|
num_finess | string | Numéro FINESS exact (9 chiffres). |
historique_etablissement1 paramReconstitue la timeline complète d'un établissement de santé (ouvertures, fermetures, changements de NAF/enseigne) en croisant FINESS DRE…
Reconstitue la timeline complète d'un établissement de santé (ouvertures, fermetures, changements de NAF/enseigne) en croisant FINESS DREES ↔ resolver SIRET (RPPS + DINUM) ↔ SIRENE INSEE V3.11. Lit les `periodesEtablissement` complètes pour chaque SIRET candidat. **V0.7.0** : SIRET candidats élargis via le resolver — inclut désormais les SIRET fermés du SIREN parent qui matchent l'adresse FINESS (invisibles côté RPPS seul). Permet de tracer la fermeture exacte d'un site même quand FINESS le list
| Parameter | Type | Description |
|---|---|---|
num_finess | string | Numéro FINESS exact (9 chiffres). |
reconcilier_finess_sirene1 paramCroise FINESS DREES ↔ SIRENE INSEE V3.11 et calcule un score de cohérence (Sørensen-Dice sur bigrammes) pour chaque SIRET candidat. Utile…
Croise FINESS DREES ↔ SIRENE INSEE V3.11 et calcule un score de cohérence (Sørensen-Dice sur bigrammes) pour chaque SIRET candidat. Utile pour confirmer/infirmer un appariement num_finess ↔ SIRET avant prospection ou cross-check qualité. Logique : 1. Récupère FINESS (raison sociale + adresse libellée) 2. Récupère SIRET candidats via la table RPPS 3. Pour chaque SIRET, lookup SIRENE puis calcule 3 sous-scores : - `nom` : Dice sur raison sociale (FINESS vs SIRENE.uniteLegale) - `adresse` : Dice su
| Parameter | Type | Description |
|---|---|---|
num_finess | string | Numéro FINESS exact (9 chiffres). |
verifier_site_actif1 paramVérifie si un établissement de santé FINESS est encore en activité en croisant FINESS DREES ↔ RPPS (pivot SIRET) ↔ DINUM (liste complète …
Vérifie si un établissement de santé FINESS est encore en activité en croisant FINESS DREES ↔ RPPS (pivot SIRET) ↔ DINUM (liste complète des SIRET du SIREN, incluant les fermés). Détecte les SIRET fermés encore listés actifs côté FINESS (DREES a 1-2 mois de retard). **V0.16 — fix succession M&A** : quand un site a changé d'exploitant (rachat), l'ancien SIRET fermé et le repreneur actif coexistent à la même adresse. Le resolver privilégie désormais le SIRET ACTIF co-localisé avec le FINESS (dista
| Parameter | Type | Description |
|---|---|---|
num_finess | string | Numéro FINESS exact (9 chiffres). |
etablissement_by_siret1 paramRécupère le détail d'un établissement par son SIRET (14 chiffres) via l'API SIRENE INSEE V3.11 : raison sociale de l'unité légale, enseig…
Récupère le détail d'un établissement par son SIRET (14 chiffres) via l'API SIRENE INSEE V3.11 : raison sociale de l'unité légale, enseigne commerciale, NAF de l'établissement, dates de création/fermeture, statut administratif actif/fermé, adresse complète, tranche d'effectif. Source : SIRENE INSEE V3.11 (api.insee.fr). **Format de retour** : objet `LookupResult` discriminé par `found`. - `found: true` → établissement à plat (`siret`, `siren`, `actif`, `dateFermeture`, `enseigne`, `adresse`, …)
| Parameter | Type | Description |
|---|---|---|
siret | string | SIRET exact, 14 chiffres. |
etablissements_finess_in_radius6 paramsRecherche d'établissements de santé FINESS dans un rayon géographique (PostGIS ST_DWithin). Filtrable par familles. 24 valeurs disponible…
Recherche d'établissements de santé FINESS dans un rayon géographique (PostGIS ST_DWithin). Filtrable par familles. 24 valeurs disponibles : mco, ssr, sld, had, psychiatrie, dialyse, ambulatoire, labo, imagerie, pharmacie, msp_cpts, ehpad, residence_autonomie, senior_accompagnement, ssiad, aide_domicile, handicap_enfants, handicap_adultes, addictologie, enfance_protection, pmi, hebergement_social, prevention_sante, groupement. Source : FINESS / ANS (flux quotidien, ingéré le 1ᵉʳ et le 15 ; établ
| Parameter | Type | Description |
|---|---|---|
lat | number | Latitude du centre (WGS84). |
lon | number | Longitude du centre (WGS84). |
limit | number | Nombre max de résultats (1-500, défaut 100). |
familles | array | Familles FINESS à inclure (24 valeurs disponibles, voir enum). Si omis, toutes catégories. |
radius_km | number | Rayon en km (0.1-50, défaut 5). |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
etablissements_finess_by_categorie6 paramsListe des établissements FINESS par famille, avec filtre département ou commune optionnel. Pas de rayon — pour énumération exhaustive d'u…
Liste des établissements FINESS par famille, avec filtre département ou commune optionnel. Pas de rayon — pour énumération exhaustive d'une zone administrative. 24 familles disponibles : mco, ssr, sld, had, psychiatrie, dialyse, ambulatoire, labo, imagerie, pharmacie, msp_cpts, ehpad, residence_autonomie, senior_accompagnement, ssiad, aide_domicile, handicap_enfants, handicap_adultes, addictologie, enfance_protection, pmi, hebergement_social, prevention_sante, groupement. V0.19.0 : accepte `nom_
| Parameter | Type | Description |
|---|---|---|
limit | number | Nombre max de résultats (1-500, défaut 100). |
categorie | string | Famille FINESS recherchée (24 valeurs disponibles, voir enum). |
code_insee | string | Code INSEE de commune (5 caractères). Optionnel. XOR strict avec `departement` et `nom_commune`. |
departement | string | Code département INSEE (ex: '75', '2A', '2B', '971'). Métropole 2 caractères (Corse '2A'/'2B', pas '20'), DOM/TOM 3 caractères. Optionnel. Combinable avec `nom_commune` comme hint resolver (filtre les |
nom_commune | string | Nom officiel de commune (alternative à `code_insee`, V0.19). Ex: "Lille", "Saint-Étienne". Le serveur résout en interne via geo.api.gouv.fr. Si ambigu (ex "Saint-Martin" → 5 villes), retourne une erre |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
etablissement_by_finess2 paramsRécupère le détail complet d'un établissement de santé par son numéro FINESS (9 chiffres) : raison sociale, catégorie + famille, adresse …
Récupère le détail complet d'un établissement de santé par son numéro FINESS (9 chiffres) : raison sociale, catégorie + famille, adresse complète (voie + CP + ville + code INSEE + département), coordonnées GPS, téléphone. Retourne un objet `LookupResult` discriminé par `found`. `found: true` → champs FINESS à plat. `found: false` → `{ found: false, key, lookupStatus: 'not_found', message }` (numéro inexistant, établissement fermé, ou trop récent pour le flux). Source : FINESS / ANS (flux quotidi
| Parameter | Type | Description |
|---|---|---|
num_finess | string | Numéro FINESS exact (9 chiffres). |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
etablissement_finess_by_nom6 paramsCherche un établissement de santé par son NOM (« Institut Gustave Roussy », « Hôpital Foch », « Clinique Pasteur ») et rend ses fiches FI…
Cherche un établissement de santé par son NOM (« Institut Gustave Roussy », « Hôpital Foch », « Clinique Pasteur ») et rend ses fiches FINESS avec coordonnées exactes. À APPELER AVANT tout géocodage dès que le lieu cité est un hôpital, une clinique, un centre, un institut, un EHPAD… : l'annuaire d'adresses (BAN / `geocode_adresse`) ne connaît que des rues et renverrait une « rue Gustave » n'importe où en France. Passer le nom PROPRE de l'établissement (le sigle « IGR » n'est pas dans FINESS) et,
| Parameter | Type | Description |
|---|---|---|
nom | string | Nom de l'établissement tel qu'on le dit (3 caractères min). Accents, casse et ponctuation indifférents. Sans le nom de la commune (le mettre dans `nom_commune`). |
limit | number | Candidats bruts lus avant seuil et tri (1-200, défaut 50). Monter si le nom est très partagé (« Saint Antoine » : 42 fiches). |
code_insee | string | Code INSEE de la commune (5 caractères). Paris/Lyon/Marseille : 75056 / 69123 / 13055 acceptés (ville entière) comme un arrondissement. XOR avec `nom_commune` et `departement`. |
departement | string | Code département (ex : '94', '2A', '971'). Seul = filtre département ; avec `nom_commune` = hint de désambiguïsation. |
nom_commune | string | Nom officiel de la commune où se trouve l'établissement (résolu via geo.api.gouv.fr). Ex : "Villejuif", "Paris". Combinable avec `departement` comme hint de désambiguïsation. XOR avec `code_insee`. |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
centres_sante_in_radius8 paramsRecherche des Centres de Santé (CDS) dans un rayon géographique (PostGIS ST_DWithin). Source : Annuaire santé Ameli, Assurance Maladie (m…
Recherche des Centres de Santé (CDS) dans un rayon géographique (PostGIS ST_DWithin). Source : Annuaire santé Ameli, Assurance Maladie (mention obligatoire L.1461-2 CSP — sync hebdomadaire CNAM). Différenciateur métier vs `etablissements_finess_in_radius` filtré famille=124 : expose **carte_vitale**, **APCV**, **spécialités exercées sur place** (Annexe A nomenclature CNAM, ~70 codes). CDS = structures de soins ambulatoires non lucratives encadrées L.6323-1 CSP (associations, mutuelles, communes,
| Parameter | Type | Description |
|---|---|---|
lat | number | Latitude du centre (WGS84). Ex: 48.872 (Paris). |
lon | number | Longitude du centre (WGS84). Ex: 2.317 (Paris). |
limit | number | Nombre max de résultats (1-500, défaut 100). |
radius_km | number | Rayon en km (0.1-50, défaut 5). |
type_etab_codes | array | Codes type établissement Annexe B : ['124'] CDS standard (défaut implicite), ['125'] CDS dentaire deprecated. Vide = tous types. |
specialite_codes | array | Codes spécialité CNAM Annexe A (ex: ['01'] médecine générale, ['53'] chirurgien-dentiste). Match any-of. Vide = pas de filtre spécialité. |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
accepte_carte_vitale | boolean | Filtre par acceptation carte Vitale. true = uniquement CDS qui acceptent CV, false = uniquement ceux qui ne l'acceptent pas. Omis = pas de filtre. |
centres_sante_by_finess2 paramsRécupère le détail d'un Centre de Santé (CDS) par son numéro FINESS. Différenciateur métier vs `etablissement_by_finess` : expose **carte…
Récupère le détail d'un Centre de Santé (CDS) par son numéro FINESS. Différenciateur métier vs `etablissement_by_finess` : expose **carte_vitale**, **APCV**, et **spécialités exercées sur place** (Annexe A CNAM). Retourne un `LookupResult` discriminé par `found`. `found: true` → payload CDS complet (raison sociale, accepte_carte_vitale/apcv, specialites.codes/libelles alignés, type_etab 124/125, adresse, coords centroïde commune, telephone). `found: false` → `{found: false, key, lookupStatus: 'n
| Parameter | Type | Description |
|---|---|---|
num_finess | string | Numéro FINESS exact 9 chiffres. Ex: '750000123'. |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
professionnels_in_radius9 paramsRecherche de professionnels de santé libéraux conventionnés dans un rayon géographique. Précision géo HYBRIDE depuis le géocodage BAN (Ch…
Recherche de professionnels de santé libéraux conventionnés dans un rayon géographique. Précision géo HYBRIDE depuis le géocodage BAN (Chantier C) : ~77 % des PS sont géolocalisés à l'adresse précise (rue/bâtiment, `distance_km` exacte au m près), ~23 % restent au centroïde commune (~3 km, repli pour adresses non géocodables — DROM, Monaco, CEDEX, lieux-dits). Lire `geo_precision` PAR résultat — ne pas présumer une précision uniforme. Codes type_ps Ameli présents en base (3) : '1' médecins, '2'
| Parameter | Type | Description |
|---|---|---|
lat | number | Latitude du centre (WGS84). |
lon | number | Longitude du centre (WGS84). |
limit | number | Nombre max de résultats (1-500, défaut 100). Appliqué AVANT déduplication. |
radius_km | number | Rayon en km (0.1-50, défaut 5). |
dedupe_by_ps | boolean | Regrouper les entrées par praticien (nom + prénom + code spécialité) et lister chaque adresse d'exercice dans `sites[]`. Défaut false (comportement V0.4 historique : un PS multi-sites = N entrées). |
precise_only | boolean | Si true, exclut les PS au centroïde commune et ne renvoie que ceux géocodés à l'adresse BAN, à `distance_km` exacte (cf. description du tool pour la sémantique complète). Défaut false. |
type_ps_codes | array | Liste de codes type PS Ameli (3 valeurs présentes en base : '1' médecins, '2' auxiliaires médicaux fourre-tout — IDE/kinés/sages-femmes/podologues/orthophonistes/orthoptistes/IPA, '5' chirurgiens-dent |
specialite_codes | array | Liste de codes spécialité Ameli (ex: ['01'] MG, ['03'] cardio). Si omis, toutes spécialités. |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
professionnels_par_specialite_dept7 paramsListe des professionnels de santé libéraux conventionnés d'un département, avec filtres optionnels par spécialité ou type de PS. Pour énu…
Liste des professionnels de santé libéraux conventionnés d'un département, avec filtres optionnels par spécialité ou type de PS. Pour énumération administrative — pas de rayon. Codes type_ps Ameli présents en base (3) : '1' médecins, '2' auxiliaires médicaux (fourre-tout : IDE, kinés, sages-femmes, podologues, orthophonistes, orthoptistes, IPA), '5' chirurgiens-dentistes. Pour cibler une profession précise (ex: IDE seuls), passer par `specialite_code` plutôt que `type_ps_code` qui ratisse plus l
| Parameter | Type | Description |
|---|---|---|
limit | number | Nombre max de résultats (1-500, défaut 100). Appliqué AVANT déduplication. |
offset | number | Décalage de pagination (≥ 0, défaut 0). Combiner avec `limit` pour énumérer un département à fort effectif. Re-paginer tant que `truncated=true`. |
departement | string | Code département INSEE : 2 caractères métropole/Corse ('01'-'95', '2A'/'2B'), 3 caractères DOM ('971'-'978'). |
dedupe_by_ps | boolean | Regrouper les entrées par praticien (nom + prénom + code spécialité) et lister chaque adresse d'exercice dans `sites[]`. Défaut false. |
type_ps_code | string | Code type PS Ameli ('1' médecins, '2' auxiliaires médicaux, '5' chirurgiens-dentistes). Optionnel — préférer `specialite_code` pour un ciblage précis. Liste complète via `lister_nomenclature(referenti |
specialite_code | string | Code spécialité Ameli (ex: '01' MG, '24' IDE, '26' kiné, '03' cardio). Optionnel. Liste complète via `lister_nomenclature(referentiel:'ameli_specialites')`. |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
lister_nomenclature5 paramsDécouverte des nomenclatures de codes du serveur (tool unique paramétré par `referentiel`) — à appeler avant de filtrer un autre tool plu…
Découverte des nomenclatures de codes du serveur (tool unique paramétré par `referentiel`) — à appeler avant de filtrer un autre tool plutôt que deviner les codes. ⚠️ Les 3 nomenclatures sont DISTINCTES : un même nombre y désigne des choses différentes (ex '10' = Médecin côté ANS, Neurochirurgien côté Ameli). Ne JAMAIS passer un code d'un référentiel à un paramètre d'un autre — le filtre renverrait vide sans erreur. `referentiel` : - `ameli_specialites` — codes `specialite_code` Ameli (libéraux
| Parameter | Type | Description |
|---|---|---|
limit | number | Nombre max de résultats (défaut 50, max 1000). Triés par fréquence décroissante. La réponse expose `total` (effectif réel) et `truncated` — re-appeler avec un `limit` supérieur pour la liste complète. |
referentiel | string | Nomenclature à lister. `ameli_specialites` / `ameli_types_ps` = Ameli (libéraux conventionnés) ; `rpps_savoir_faire` = spécialités médicales ANS/RPPS (nomenclature DISTINCTE). |
profession_code | string | Référentiel `rpps_savoir_faire` UNIQUEMENT : code profession ANS (TRE_R94). Défaut '10' (Médecin). String vide ou 'null' = tous savoir_faire, toutes professions. |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
include_specialites | boolean | Référentiel `ameli_types_ps` UNIQUEMENT : inclure le sous-tableau `specialites_presentes` détaillé (défaut true). `false` → remplacé par `nb_specialites` (compteur), ~6K tokens économisés. |
professionnels_rpps_in_radius10 paramsTrouve les PS dans un rayon via RPPS (Annuaire Santé ANS — **tous statuts** : libéraux + salariés + mixtes + remplaçants ; vs `profession…
Trouve les PS dans un rayon via RPPS (Annuaire Santé ANS — **tous statuts** : libéraux + salariés + mixtes + remplaçants ; vs `professionnels_in_radius` Ameli = libéraux conventionnés seuls). **Param critique `precise_only`** — Défaut `false` (mode hybride). À `true` : ne renvoie que les PS géolocalisés précisément (`distance_km` exacte au m près) — recommandé pour rayons courts (<3 km), classement intra-commune, "PS à <500 m d'une adresse". Chaque résultat porte `geo_precision` ∈ : - `"adresse"
| Parameter | Type | Description |
|---|---|---|
limit | number | Nombre max de résultats retournés (défaut serveur 100). |
center | object | Centre du cercle de recherche (coordonnées WGS84). |
radius_km | number | Rayon en km (0.1-50). |
precise_only | boolean | Si true, exclut les PS au centroïde commune et ne renvoie que ceux à `distance_km` exacte (cf. description du tool pour la sémantique complète et le seuil d'usage recommandé). Défaut false. |
profession_codes | array | Codes profession ANS (ex: ['10'] Médecin, ['60'] Infirmier). Si omis, toutes professions. |
include_etudiants | boolean | |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
savoir_faire_codes | array | Codes savoir-faire ANS (spécialités fines DES/DESC). Si omis, tous savoir-faire. |
mode_exercice_codes | array | Codes mode d'exercice ANS (libéral / salarié / mixte). Si omis, tous modes. |
include_agents_publics | boolean |
professionnels_rpps_par_dept9 paramsListe tous les PS d'un département via RPPS (libéraux + salariés). Pour les libéraux conventionnés uniquement, préférer `professionnels_p…
Liste tous les PS d'un département via RPPS (libéraux + salariés). Pour les libéraux conventionnés uniquement, préférer `professionnels_par_specialite_dept` (Ameli). Re-paginer via `offset` tant que `truncated=true`. Chaque résultat géolocalisé porte `geo_precision` ∈ {`"adresse"`, `"etablissement_finess"`, `"centroide_commune"`} — lire ce champ pour évaluer la fiabilité des `coords` (précise BAN/FINESS au m près vs centroïde commune ~3 km, non discriminant intra-commune). Filtres optionnels : `
| Parameter | Type | Description |
|---|---|---|
limit | number | Nombre max de résultats par page (défaut serveur 100). |
offset | number | Offset pour pagination (défaut 0). Re-paginer tant que `truncated=true`. |
departement | string | Code département INSEE (ex: '75', '2A', '2B', '971'). Métropole 2 caractères (Corse '2A'/'2B', pas '20'), DOM/TOM 3 caractères. |
profession_code | string | Code profession ANS (ex: '10' Médecin, '60' Infirmier). Optionnel. |
include_etudiants | boolean | |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
savoir_faire_code | string | Code savoir-faire ANS (spécialité fine DES/DESC). Optionnel. |
mode_exercice_code | string | Code mode d'exercice ANS (libéral / salarié / mixte). Optionnel. |
include_agents_publics | boolean |
rpps_dans_etablissement5 paramsListe les PS rattachés à un établissement FINESS (`num_finess` 9 chiffres). Pivot RPPS↔FINESS — répond à "qui travaille dans ce labo / hô…
Liste les PS rattachés à un établissement FINESS (`num_finess` 9 chiffres). Pivot RPPS↔FINESS — répond à "qui travaille dans ce labo / hôpital / clinique ?". Le `mode_exercice` distingue les libéraux exerçant sur place (vacations) des salariés. Couverture : RPPS expose ce lien quand le PS l'a déclaré ; salariés CH/CHU/cliniques bien couverts. Sortie compacte : `coords` et `distance_km` sont `null` (le tool est par établissement, pas spatial — pour la géoloc, pivoter via `etablissement_by_finess`
| Parameter | Type | Description |
|---|---|---|
limit | number | |
num_finess | string | |
include_etudiants | boolean | |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
include_agents_publics | boolean |
densite_sante11 paramsDensité de santé pour 100 000 habitants — `cible: professionnels` (RPPS) OU `cible: etablissements` (FINESS). Niveau **département** (`co…
Densité de santé pour 100 000 habitants — `cible: professionnels` (RPPS) OU `cible: etablissements` (FINESS). Niveau **département** (`code_dept`) OU **commune** (`code_insee` / `nom_commune`). Exactement un scope des trois requis. Croise le count (RPPS ou FINESS) et INSEE Melodi (population municipale PMUN, recensement 2023). **cible='professionnels'** (RPPS) — méthodo DREES par défaut : médecins (`profession_code='10'`) en activité régulière (mode_exercice L, S, M), hors étudiants. Filtres : `
| Parameter | Type | Description |
|---|---|---|
cible | string | `professionnels` = densité de PS (RPPS, filtres profession_code/savoir_faire_code/mode_exercice_codes) ; `etablissements` = densité d'établissements (FINESS, `famille` obligatoire). |
famille | string | cible='etablissements' UNIQUEMENT (obligatoire) : famille FINESS à compter (labo, pharmacie, ehpad, mco, ssr, psychiatrie, dialyse, imagerie, had, msp_cpts, handicap_enfants, handicap_adultes, addicto |
code_dept | string | Code INSEE du département 2-3 caractères. Ex: "75" Paris, "59" Nord, "2A" Corse-du-Sud, "971" Guadeloupe. Sémantique conditionnelle : seul = scope dept entier ; combiné avec `nom_commune` = hint resol |
code_insee | string | Code INSEE de la commune 5 caractères. Ex: "59009" Villeneuve-d'Ascq, "33063" Bordeaux, "2A004" Ajaccio. Paris/Lyon/Marseille NON supporté au niveau commune (densité indisponible — voir description) : |
nom_commune | string | Nom officiel de commune (alternative à `code_insee`). Ex: "Lille", "Villeneuve-d'Ascq". Le serveur résout en interne via geo.api.gouv.fr. Combinable avec `code_dept` comme hint de désambiguïsation pou |
profession_code | string | cible='professionnels' UNIQUEMENT : code profession ANS (TRE_R94). Default '10' (Médecin). Ex : '60' Infirmier, '21' Pharmacien, '50' Sage-femme, '40' Chirurgien-dentiste, '70' Masseur-kinésithérapeut |
compare_national | boolean | Ajoute le calcul France entière + écart relatif en % (recommandé pour qualifier 'sous-doté'/'sur-doté'). |
include_etudiants | boolean | |
savoir_faire_code | string | cible='professionnels' UNIQUEMENT : code spécialité (savoir_faire). Pertinent surtout pour profession_code=10 (médecin). Ex : 'SM04' Cardiologie, 'SM15' Dermatologie et vénéréologie, 'SM02' Anesthésie |
mode_exercice_codes | array | cible='professionnels' UNIQUEMENT : codes mode_exercice ANS à inclure. Default ['L','S','M'] (libéral + salarié + mixte = activité régulière DREES). Passer ['L'] pour libéraux seuls. Codes mode_exerci |
include_agents_publics | boolean |
panorama_sante_territoire4 paramsPanorama santé d'une commune française en 1 appel (V0.9). Agrège en parallèle : population (INSEE Melodi), densités médecins + infirmiers…
Panorama santé d'une commune française en 1 appel (V0.9). Agrège en parallèle : population (INSEE Melodi), densités médecins + infirmiers + pharmaciens avec comparaison nationale (méthodo DREES), nombre d'établissements FINESS par famille (default ["labo","pharmacie","ehpad","mco","msp_cpts"]), et un bloc DEMANDE (V0.22.0 — profil démographique de la commune agrégé depuis ses IRIS : âge, CSP, familles, revenu pondéré, à CROISER avec l'OFFRE ci-dessus pour l'aide à l'implantation ; `demande: null
| Parameter | Type | Description |
|---|---|---|
code_insee | string | Code INSEE de la commune 5 caractères. Ex: "59009" Villeneuve-d'Ascq, "33063" Bordeaux, "2A004" Ajaccio. Paris/Lyon/Marseille NON supporté (voir description). XOR avec `nom_commune`. |
departement | string | Code département INSEE (V0.19, hint resolver UNIQUEMENT). À utiliser EN COMBINAISON avec `nom_commune` pour désambiguer les homonymes. Seul, lève une erreur (panorama = calcul commune uniquement, util |
nom_commune | string | Nom officiel de commune (alternative à `code_insee`, V0.19). Ex: "Lille", "Saint-Étienne". Combinable avec `departement` comme hint de désambiguïsation pour homonymes (ex "Saint-Martin" + dept "65"). |
finess_familles | array | Familles FINESS à inclure dans le décompte établissements. Default ["labo","pharmacie","ehpad","mco","msp_cpts"]. Passer [] pour omettre le décompte FINESS (renvoie uniquement population + densités PS |
inspect_site3 paramsVue 360 d'un établissement de santé en 1 appel (V0.10). Pendant naturel de `panorama_sante_territoire` côté **site** : agrège en parallèl…
Vue 360 d'un établissement de santé en 1 appel (V0.10). Pendant naturel de `panorama_sante_territoire` côté **site** : agrège en parallèle (a) identification FINESS DREES (raison sociale, adresse, téléphone), (b) statut administratif SIRENE via le resolver SIRET (verdicts site + groupe, best_match, SIREN explorés, dinum_errors, explication LLM-friendly), (c) professionnels rattachés via num_finess (sample borné + flag `truncated` si le site a plus de PS — PAS un count total), (d) historique INSE
| Parameter | Type | Description |
|---|---|---|
num_finess | string | Numéro FINESS exact 9 chiffres. Ex: '590048997'. |
rpps_limit | integer | Nombre max de PS dans `professionnels.sample`. `professionnels.count` = taille du sample (≤ cette borne), pas le total du site ; `truncated: true` signale qu'il y a davantage de PS. Borné [1, 50]. Déf |
historique_detail | boolean | Inclure les timelines SIRENE détaillées dans `historique.siret_timelines` (défaut true). `false` = payload allégé (~7K tokens en moins) : `historique` ne porte qu'un `resume` (counts) + un pointeur ve |
rpps_search_by_name7 paramsTrouve un PS par identité (matching trigram tolérant aux accents/typos). Usage : "Dr Martin à Paris" → `nom: "Martin", departement: "75"`…
Trouve un PS par identité (matching trigram tolérant aux accents/typos). Usage : "Dr Martin à Paris" → `nom: "Martin", departement: "75"`. Nom obligatoire ; `prenom` et `departement` affinent. Tri par `match_score` ∈ [0..1] décroissant (score trigram pg_trgm). Un score <0.5 = homonymie partielle à confirmer côté caller. Sans `departement`, des homonymes exacts ("Pierre Martin") ont TOUS le même score ~1.0 et ne sont pas départagés — toujours filtrer par dept ou prénom sur un nom commun. `truncat
| Parameter | Type | Description |
|---|---|---|
nom | string | Nom de famille (non vide). |
limit | number | Nombre max de résultats (1-500, défaut 100). |
prenom | string | Prénom du PS. |
departement | string | Code département INSEE (ex: '75', '2A', '2B', '971'). Métropole 2 caractères (Corse '2A'/'2B', pas '20'), DOM/COM 3 caractères. |
include_etudiants | boolean | |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
include_agents_publics | boolean |
professionnel_by_rpps2 paramsRécupère la fiche complète d'un PS par identifiant national (`rpps_id` / IDNPS, 11 ou 12 chiffres — IDs émis depuis 2020 ont un préfixe `…
Récupère la fiche complète d'un PS par identifiant national (`rpps_id` / IDNPS, 11 ou 12 chiffres — IDs émis depuis 2020 ont un préfixe `"81"` = 12 chars ; anciens IDs = 11 chars). Renvoie N entrées quand le PS exerce sur plusieurs sites (1 par site, chacun avec sa propre `geo_precision` — un même PS peut donc cumuler un site précis FINESS et un site au centroïde commune). Chaque résultat géolocalisé porte `geo_precision` ∈ {`"adresse"`, `"etablissement_finess"`, `"centroide_commune"`} — lire ce
| Parameter | Type | Description |
|---|---|---|
rpps_id | string | |
include_freshness | boolean | Si true, ajoute un champ `data_freshness` au payload (dans `query_metadata` si présent, sinon à la racine) listant, par source (FINESS, Ameli, RPPS, CDS, IRIS), la dernière ingestion réussie (`last_su |
finess_sirene_coverage_in_radius6 paramsCompare la couverture du référentiel FINESS DREES (sites physiques agréés LBM/pharmacie/etc.) au référentiel SIRENE DINUM (SIRET physique…
Compare la couverture du référentiel FINESS DREES (sites physiques agréés LBM/pharmacie/etc.) au référentiel SIRENE DINUM (SIRET physiques actifs au NAF cible) dans un rayon géographique. Métrique : ratio sites FINESS / SIRET SIRENE. Utile pour détecter une sur-déclaration FINESS (sites encore listés mais SIRET fermés) ou une sous-déclaration DREES (sites SIRENE non agréés FINESS). Inclut une méthodologie explicite + caveats. V0.13.2 : si `familles` n'est pas passé, le scope FINESS est auto-déri
| Parameter | Type | Description |
|---|---|---|
lat | number | Latitude WGS84 du centre de la zone. |
lon | number | Longitude WGS84 du centre de la zone. |
naf | string | Code NAF SIRENE à comparer (ex: '8690B' labos d'analyses médicales, '4773Z' pharmacies, '8621Z' médecine générale). |
familles | array | Familles FINESS à inclure côté DREES. V0.13.2 : si omis, auto-dérivé du NAF cible via la table naf-finess-mapping (ex: naf=8690B → familles=[labo] ; naf=8610Z → multi-familles hospitalières). Passer e |
radius_km | number | Rayon de la zone en km (0.1-50, défaut 5). |
max_unites_legales | number | Nombre maximum d'unités légales DINUM à déplier (1-25, défaut 10). Au-delà : truncated_unites_legales=true. |
panorama_implantation_complet4 paramsÉtude d'implantation labo en 1 appel (V0.23). Géocode l'adresse cible puis agrège EN PARALLÈLE 7 sections : `territoire` (densités PS com…
Étude d'implantation labo en 1 appel (V0.23). Géocode l'adresse cible puis agrège EN PARALLÈLE 7 sections : `territoire` (densités PS commune vs national + établissements), `demande` (profil démographique du BASSIN — rayon — via profil_iris : âge, CSP, revenu pondéré), `concurrents` (labos FINESS), `pourvoyeurs` (MCO/EHPAD/SSR/dialyse — drivers écosystémiques), `prescripteurs` (médecins RPPS + IDEL Ameli), `cds` (centres de santé), `referentiels` (qualité couverture FINESS↔SIRENE). Remplace ~15
| Parameter | Type | Description |
|---|---|---|
point | object | Coordonnées { lat, lon } si déjà connues (skip géocodage). Fournir `code_insee` avec. |
adresse | string | Adresse cible, géocodée en interne via IGN. Ex: "12 rue Nationale, Lille". XOR avec `point`. |
rayon_km | number | Rayon du bassin de l'étude (km). Défaut 5. |
code_insee | string | Code INSEE commune (avec `point`, quand le géocodage est déjà fait). |
enrichir_concurrents2 paramsEnquête approfondie sur le top concurrents (V0.23). Pour chaque FINESS : statut actif + taille d'équipe + historique récent (inspect_site…
Enquête approfondie sur le top concurrents (V0.23). Pour chaque FINESS : statut actif + taille d'équipe + historique récent (inspect_site), signal M&A — rebranding en cours — (compare raison sociale FINESS vs RPPS), groupe parent (entreprise_by_siren : Biogroup/Cerballiance/… + `est_grand_groupe`). Cap dur `max=3` (inspect_site ~7 K tokens/appel — JAMAIS 10+). Drapeau `couverture` PAR concurrent (`"ok"` | `"partiel:<raison>"`) : un concurrent qui échoue n'annule pas les autres. Typiquement appel
| Parameter | Type | Description |
|---|---|---|
max | number | Cap dur du nombre de concurrents enquêtés. Défaut 3. |
finess | array | Numéros FINESS à enquêter (typiquement le top 3 concurrents par distance). |
dynamique_immobiliere3 paramsDynamique immobilière et potentiel de croissance d'une zone (point + rayon). Combine 3 sources officielles : permis de construire (Sit@de…
Dynamique immobilière et potentiel de croissance d'une zone (point + rayon). Combine 3 sources officielles : permis de construire (Sit@del/SDES, maille COMMUNE — logements autorisés/commencés récents → habitants attendus), zones AU du PLU (Géoportail de l'Urbanisme/IGN — futurs quartiers réservés, géolocalisés), ventes de terrains à bâtir (DGFiP DVF, géolocalisées). Sortie en 2 registres : 'note' = VOLUME (logements autorisés/commencés, nombre et immédiateté des zones AU) destiné au scoring de p
| Parameter | Type | Description |
|---|---|---|
lat | number | Latitude du centre (WGS84). |
lon | number | Longitude du centre (WGS84). |
rayon_km | number | Rayon en km (0.1-10, défaut 3). |
cout_foncier3 paramsCoût du foncier d'une zone (point + rayon) : prix médian au m² RÉSIDENTIEL bâti — maisons + appartements UNIQUEMENT, PAS les locaux comme…
Coût du foncier d'une zone (point + rayon) : prix médian au m² RÉSIDENTIEL bâti — maisons + appartements UNIQUEMENT, PAS les locaux commerciaux/professionnels (+ quartiles p25/p75), volume de ventes, période couverte. Source DGFiP DVF (ventes réelles géolocalisées). Pour un local pro (labo, cabinet), ce prix résidentiel est un PROXY indicatif, pas le prix d'un local commercial. INFORMATION pour le business case d'implantation — NE PAS intégrer à une note d'attractivité : le coût d'installation e
| Parameter | Type | Description |
|---|---|---|
lat | number | Latitude du centre (WGS84). |
lon | number | Longitude du centre (WGS84). |
rayon_km | number | Rayon en km (0.1-10, défaut 3). |