Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Changed the definition of "zone_compare"
⟨673 unchanged words⟩ 000 km² par zone. Plan minimum : Growth, ou Pass Zones ; un appel compté quel que soit le ⟨61 unchanged words⟩
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Changed the definition of "zone_compare"
⟨572 unchanged words⟩ , un PLAFOND), comme sur `zone_stats` ; `fiabilite.procedures_sous_declarees` vrai : le département dominant d'une zone publie très peu de procédures au BODACC depuis 2022 (Bas-Rhin, codes dans `fiabilite.departements_sous_declares`) — les procédures y sont sous-comptées, `taux_defaillance`, `indice` et `evolution_defaillances_pct` ne sont pas servis : dire que les procédures collectives ne sont pas publiées de façon complète pour ce territoire, jamais un taux ; les arrêts d'activité se lisent. `exclusif` et `chevauchements` ne portent PAS d'établissements ni ⟨105 unchanged words⟩
Changed the definition of "zone_compare" and "zone_stats"
⟨31 unchanged words⟩ `logements`, `csp`, `potentiel_depense`, `immobilier`, `activites`, `defaillances`, `carreaux`, `source`, `attribution` — voir cet outil ⟨234 unchanged words⟩ (défaut) ou `department` — UN réglage pourDEUXTROIS blocs : l'`indice` de chaque poste CSPet, celui de chaque poste d'`activites` et celui de `defaillances` sont alors rapportés au département qui pèse le plus dans la zone (`csp.reference.code`, `activites.reference.code`, `defaillances.reference.code`, et leurs libellés respectifs `csp.reference.libelle` / `activites.reference.libelle` / `defaillances.reference.libelle`, `null` en référence France). `coefficient` (0 ⟨221 unchanged words⟩ , le sous-compte s'y annulant en grande partie. Chaque zone porte aussi `defaillances` (procédures collectives, un PLANCHER ; arrêts d'activité, un PLAFOND), comme sur `zone_stats` ;
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Certificate changed, valid to 2027-01-01
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Changed the definition of "zone_compare" and "zone_stats"
⟨304 unchanged words⟩ le plus dans la zone (`csp.reference.code`, `activites.reference.code`, et leurs libellés respectifs `csp.reference.libelle` / `activites.reference.libelle`, `null` en référence France). `coefficient` (0 exclu à 1) : ⟨115 unchanged words⟩ une donnée manquante ; `effectif` et `part` restentvalides.valides — ne jamais reconstituer l'indice à partir de leur rapport avec `reference_part` non plus. `reference_part` donne la part du même poste sur la référence : citer les deux parts côte à côte plutôt qu'un écart — un indice de 82 est un écart de 18 %, pas de 18 points. Le bloc `activites` est rendu pour chaque zone ⟨146 unchanged words⟩
Changed the definition of "zone_compare" and "zone_stats"
⟨400 unchanged words⟩ exploitable sur une zone dont `csp.fiabilite.indices_fiables` est faux. Comme sur `zone_stats`, un poste dont la part est inférieure à `csp.fiabilite.part_min` (0,5 %) rend `indice: null` — un refus de servir, pas une donnée manquante ; `effectif` et `part` restent valides. Le bloc `activites` est rendu pour chaque zone, ⟨146 unchanged words⟩
⟨408 unchanged words⟩ recopie le profil d'un ou deux IRIS). Un poste dont la part est inférieure à `csp.fiabilite.part_min` (0,5 %) n'a PAS d'indice : `indice` y vaut `null`, et ce n'est pas une donnée manquante — les CSP étant réparties de l'IRIS vers les carreaux, un poste rare porte une erreur relative trop grande pour être rapportée à une référence. Son `effectif` et sa `part` restent servis et se citent normalement ; ne jamais reconstituer l'indice à partir d'eux.
Changed the definition of "zone_compare" and "zone_stats"
⟨30 unchanged words⟩ `menages_profil`, `logements`, `csp`, `potentiel_depense`, `immobilier`, `activites`, `carreaux`, `source`, `attribution` — voir cet outil ⟨232 unchanged words⟩ `reference` : `france` (défaut) ou `department` — UN réglage pour DEUX blocs : l'`indice` de chaque poste CSPestet celui de chaque poste d'`activites` sont alorsrapportérapportés au département qui pèse le plus dans la zone (`csp.reference.code`, `activites.reference.code`). `coefficient` (0 exclu à 1) : ⟨83 unchanged words⟩ exploitable sur une zone dont `csp.fiabilite.indices_fiables` est faux. Le bloc `activites` est rendu pour chaque zone, identique à celui de `zone_stats` : c'est un PLANCHER d'établissements actifs et géolocalisés — ne jamais le présenter comme exhaustif, ni appeler ces établissements des concurrents ; d'une zone à l'autre, comparer les `indice` plutôt que les effectifs, le sous-compte s'y annulant en grande partie. `exclusif` et `chevauchements` ne portent PAS d'établissements : population, ménages et potentiel seulement.
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Changed the definition of "zone_compare" and "zone_stats"
⟨29 unchanged words⟩ `sexe`, `menages_profil`, `logements`, `csp`, `potentiel_depense`, `immobilier`, `carreaux`, `source`, `attribution` — voir cet outil ⟨409 unchanged words⟩ Recensement de la population ; IGN Contours IRIS ; DGFiP DVF pour les prix immobiliers ; OpenStreetMap ODbL dès qu'une zone est une isochrone).
⟨521 unchanged words⟩ théorique, pas une prévision de chiffre d'affaires. Depuis septembre 2026, le bloc `immobilier` donne les PRIX DE VENTE immobiliers de la zone (DVF, DGFiP) : trois séries `maisons`, `appartements` et `locaux_activite`, chacune avec `annees[]` (par année sur cinq ans : `ventes`, `prix_m2_median` en euros par m² de surface réelle bâtie, `reference_prix_m2_median` sur le département), `evolution_pct` (première → dernière année fiable, non annualisée) et `indice` (100 = le département de `reference`, nommé par `libelle`). Ce sont des prix de vente déclarés dans les actes, pas des loyers — ne jamais en déduire un loyer ; les locaux d'activité mêlent boutiques, entrepôts et bureaux, un ordre de grandeur. Sous 20 ventes dans l'année, le prix médian vaut `null` (`fiabilite.annees_fiables` liste les années retenues) ; `hors_couverture` vrai signale une zone hors du jeu DVF (Alsace-Moselle et Mayotte ; les DROM 971-974 sont couverts), pas une zone sans vente.
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Changed the definition of "zone_compare" and "zone_stats"
⟨24 unchanged words⟩ rend (`population`, `menages`, `niveau_de_vie_moyen`, `ages`, `sexe`, `menages_profil`, `logements`, `csp`, `potentiel_depense`, `carreaux`, `source` ⟨432 unchanged words⟩
⟨185 unchanged words⟩ du total de quelques unités. Depuis la plateforme 1.16, le bloc `sexe` donne `hommes` et `femmes` en `{effectif, part}` plus `population_recensement` — les parts sont rapportées à `population_recensement` (hommes + femmes, la population du recensement répartie sur la zone), pas à `population` : les deux diffèrent de quelques pour cent, c'est normal (ménages ordinaires 2021 contre population totale 2022). C'est une estimation : le sexe n'est diffusé qu'à l'IRIS et réparti sur les carreaux au prorata de leur population ; les limites sont celles de `csp.fiabilite`. Depuis la plateforme
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Changed the definition of "compute_route", "get_company_details", "search_company" and 3 more
⟨80 unchanged words⟩ et la réponse renvoie le `mode` utilisé :cite-le à côté de laune durée,unen'estduréeinterprétablesansqu'accompagnéesondu moden'estquipasl'ainterprétable.produite. ⚠️ Chaque mode a sa distance maximale : ⟨39 unchanged words⟩
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Changed the definition of "compute_route", "get_address_details", "get_company_details" and 8 more
ComputeItinéraireRouteroutier complet
{"additionalProperties":false,"properties":{"destination":{"description":"A ``RoutePoint`` is EITHER a free-text ``address`` ORPointad'arrivée``lat``/``lon``:couple\n(mutuallyadresseexclusive),libre
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
Added "zone_compare"; changed the definition of "compute_route", "route_matrix" and "zone_stats" (10 tools before, 11 now)
{"additionalProperties":false,"properties":{"destination":{"description":"A ``RoutePoint`` is EITHER a free-text ``address`` OR a ``lat``/``lon`` couple\n(mutually exclusive), mirroring trusty-service's ``RouteEndpointInput``.","properties":{"address":{"anyOf":[{" ⟨46 unchanged words⟩ "}],"default":null},"origin":{"description":"A ``RoutePoint`` is EITHER a free-text ``address`` OR a ``lat``/``lon`` couple\n(mutually exclusive), mirroring trusty-service's ``RouteEndpointInput``.","properties":{"address":{"anyOf":[{ ⟨45 unchanged words⟩
{"additionalProperties":false,"properties":{"destinations":{"items":{"description":"A ``RoutePoint`` is EITHER a free-text ``address`` OR a ``lat``/``lon`` couple\n(mutually exclusive), mirroring trusty-service's ``RouteEndpointInput``.","Changed the definition of "zone_stats"
⟨91 unchanged words⟩ denses), pas un défaut de la zone. Depuis la plateforme 1.11, la réponse porte aussi le PROFIL de la zone, en trois blocs de `{effectif, part}` : `ages` (onze tranches INSEE `0_3` … `80_plus` et `inconnu`, parts rapportées à `population`), `menages_profil` (personnes seules, 5 personnes et plus, propriétaires, monoparentaux, en collectif, en maison, parts rapportées à `menages`, plus `surface_moyenne_m2`) et `logements` (`total`, cinq périodes de construction et `sociaux`, parts rapportées à `logements.total`). Les parts sont en pourcentage au dixième, calculées avant arrondi ; les effectifs sont arrondis séparément, leur somme peut différer du total de quelques unités. Depuis la plateforme 1.12, le bloc `csp` donne les huit catégories socioprofessionnelles des 15 ans et plus (agriculteurs, artisans_commercants, cadres, professions_intermediaires, employes, ouvriers, retraites, autres_inactifs), chacune en `{effectif, part, indice}` : l'`indice` vaut 100 × part de la zone / part de la France (100 = la moyenne nationale, 150 = une fois et demie). C'est une estimation, pas une mesure : les CSP ne sont diffusées qu'à l'IRIS et sont réparties sur les carreaux au prorata de leur population — dire « estimé » en citant un indice, et ne citer aucun indice quand `csp.fiabilite.indices_fiables` est faux (moins de 1 000 personnes de 15 ans et plus : la zone recopie le profil d'un ou deux IRIS). Le bloc `potentiel_depense` donne les unités de consommation reconstituées, le revenu disponible estimé des habitants (`revenu_disponible_estime`, en euros par an) et `revenu_disponible_par_menage` — le chiffre à citer de préférence, en disant « estimation » (niveau de vie écrêté, revenus 2021, unités de consommation reconstituées). `potentiel_theorique` = revenu × coefficient n'est calculé que si un coefficient est passé, ce que cet outil ne permet pas encore : ne pas l'inventer, et ne jamais le présenter comme un chiffre d'affaires — c'est un potentiel théorique, pas une prévision de chiffre d'affaires.
Certificate recorded, valid to 2026-11-01
Authorization not required, issuer https://trustydata.scalekit.com/resources/res_128367956118733577
First tool surface recorded: 10 tools (server version 4.0.3)
Showing the latest 37 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨74 unchanged words⟩ indices de chaque zone — UN réglage pourDEUXTROIS blocs, `csp`, `activites` et`activites``defaillances` : `france` (défaut) ou `department`."}," ⟨321 unchanged words⟩
⟨1124 unchanged words⟩ section Activités, avec ses hypothèses et limites.La zone se décrit d'UNE seule façonDepuis:octobresoit2026,`minutes`le(1blocà`defaillances`30)rend,departrajetannée depuisle centre, avec `mode` `car`2017 (voiture, défaut`annees`),`walking` ou `cycling` ;etsoitpar`radius_km`activité (1 à 50) à vollesd'oiseau.mêmesAvec14`minutes`familles et`mode` `car`,sous-familles`traffic`quechoisit`activites`),lesdeuxconditionsséries :`free` (défaut,lescirculationPROCÉDURESlibre)COLLECTIVESoudu`peak`BODACC (heure de pointe`procedures.liquidation`,du`.redressement`,matin`.sauvegarde`,un`.autres`),jourcomptéesouvrésurverschaque08:30établissement—devitessesl'entreprisetypiquessituémodéliséesdansparlaclassezonede—voieuneetchaînedensité,enpasliquidationdecomptetraficunetempsfoisréel).par`peak`magasinest—,refuséetàlespiedarrêtsetd'activitéà(`arrets`vélo,:etfermeturespeutSIRENErépondresans«repriseindisponiblede»lasimêmelaactivitéplateformeànelal'amêmepasadresseencore(parouvert.unLeautrecentreétablissement,estquelSOITqu'enunesoitadresselelibreSIREN)(`address`,niunautrenométablissementdeducommunemêmesuffitSIREN), SOIT.un`defaillances`couple=`lat`+`lon`liquidationWGS84+—redressement,jamaisaulessensdeuxde;la`point_central.precision`BanqueditdecommentFranceil:auneétésauvegarderésolu.n'estPlafondPASdeunesurfacedéfaillance,:ne10jamais000l'additionner.km².LesUneprocédureszonesontsansunhabitantPLANCHER (mer,établissementsétranger)positionnésrendseulement),desleszérosar
⟨164 unchanged words⟩ :"Référentiel des indices — UN réglage pourDEUXTROIS blocs, `csp`, `activites` et`activites``defaillances` : `france` (défaut) ou `department` (département ⟨36 unchanged words⟩
⟨69 unchanged words⟩ }],"default":null,"description":"Référentielde l'indice d'affinitédesCSPindices de chaque zone — UN réglage pour DEUX blocs, `csp` et `activites` : `france` (défaut) ou `department`."}," ⟨321 unchanged words⟩
⟨659 unchanged words⟩ sont couverts), pas une zone sans vente. Depuis septembre 2026, le bloc `activites` compte les ÉTABLISSEMENTS de la zone par famille et sous-famille d'activité (boulangeries, tabac, comptabilité…), avec une densité pour 10 000 habitants et un indice contre la FRANCE par défaut — ou contre le département dominant de la zone si `reference` vaut `department`, `activites.reference` disant lequel des deux a servi. C'est un PLANCHER : seuls les établissements actifs et géolocalisés y figurent — `fiabilite.taux_localisation` dit quelle part cela représente. Ne jamais présenter ces comptes comme exhaustifs, ni les appeler des concurrents. `familles[]` porte les 14 familles, toutes, même à zéro ; chacune ses `sous_familles[]`, dont celles à zéro sont omises. Chaque poste donne `cle`, `libelle`, `etablissements`, `part` (de `total`), `densite` (pour 10 000 habitants), `reference_densite` et `indice` (100 = la référence, que `reference.libelle` nomme). L'indice est moins biaisé que l'effectif : calculé de la même façon des deux côtés, le sous-compte s'y annule en grande partie — préférer l'indice pour comparer, l'effectif pour dénombrer. `indice` vaut `null` sous `fiabilite.etablissements_min` (5) établissements dans le poste, sur une zone sans habitant, et quand la référence n'a rien à comparer — soit qu'elle n'ait aucun établissement dans ce poste (`reference_densite` à `0.0` sur une sous-famille, `null` sur une famille), soit qu'aucune population de référence ne soit connue (`reference_densite` à `null`). `densite` est servie dès que la zone a des habitants, et vaut `null` sur une zone qui n'en a aucun (mer, étranger) — ne jamais l'annoncer comme toujours présente ; `etablissements` et `part`, eux, le sont. `fiabilite.indices_fiables` est faux sous 1 000 habitants. Deux limites de la nomenclature NAF à répercuter telles quelles : le tabac est sous-compté (un bar-tabac est codé en débit de boissons et reste donc dans « Cafés, hôtels, restaurants »), et la sous-famille « Rééducation, appareillage et pédicures-podologues » réunit ces trois métiers sans permettre d'en isoler un seul. Le détail des codes NAF de chaque sous-famille est dans le guide « Zone de chalandise », section Activités, avec ses hypothèses et limites. La zone se décrit d'UNE seule façon : ⟨154 unchanged words⟩ chiffre cité (INSEE Filosofi, IGN Contours IRIS ; SIRENE (INSEE) pour les établissements du bloc `activites` ; DGFiP DVF pour les prix immobiliers ; ⟨9 unchanged words⟩
⟨161 unchanged words⟩ }],"default":null,"description":"Référentieldedesl'indiceindicesd'affinité—CSPUN réglage pour DEUX blocs, `csp` et `activites` : `france` (défaut) ou `department` (département ⟨36 unchanged words⟩
⟨94 unchanged words⟩ n'est pas une donnée inexistante : il peutêtre hors planrelever—d'unproposepalieralorssupérieurla—montéesondeabsenceplanneplutôtprouvequepasd'affirmerl'inexistencequede ladonnée n'existe pas.donnée. Les dirigeants sont des données personnelles issues du ⟨55 unchanged words⟩
⟨49 unchanged words⟩ meilleur établissement (le siège de préférence).Ne3disétablissementsdoncd'unpasmême«SIREN3neentreprisesfonttrouvéesdonc»paspour« 3établissements d'unentreprisesmêmetrouvéesSIREN.». Par défaut, un résultat par entreprise si ⟨12 unchanged words⟩ par `siren` ; force ce comportement avec `group_by_company`.Lis`classement_pertinence` se lit avant de présenter un « meilleur match » ⟨28 unchanged words⟩ — c'est la loi, pas une donnée manquante,:et rien necomplètes'yjamaiscomplète de mémoire. Une liste vide fait autorité : ⟨24 unchanged words⟩
Vérifie et normalise une adressepostalefrançaise contre le référentiel géographique officiel (BAN). Renvoie un verdict (match_exact ⟨75 unchanged words⟩
⟨343 unchanged words⟩ d'affaires ; sans coefficient il vaut `null`, une valeur qui nepass'inventel'inventer.pas. Le guide « Zone de chalandise » donne ⟨11 unchanged words⟩ La CSP est elle aussi une estimation :ne citeraucun indiced'unen'est exploitable sur une zone dont `csp.fiabilite.indices_fiables` est faux. Une zone inatteignable ⟨37 unchanged words⟩ ; dix isochrones prennent une à deux secondes.Reproduire`attribution`avecaccompagne tout chiffre cité (INSEE Filosofi et Recensement ⟨17 unchanged words⟩
⟨286 unchanged words⟩ les carreaux au prorata de leur population —direun«indiceestiméest»doncenuncitantordreundeindicegrandeur estimé, etneilcitern'y en a aucunindiced'exploitable quand `csp.fiabilite.indices_fiables` est faux (moins de 1 ⟨106 unchanged words⟩ 0,048) ; sinon il vaut `null`,ne pas l'inventer. Ne jamais le présenterunecommevaleurunquichiffrened'affairess'invente:pas.c'estC'est un potentiel théorique, pas une prévision de ⟨152 unchanged words⟩ un appel compté quelle que soit la portée.Reproduire`attribution`avecaccompagne tout chiffre cité (INSEE Filosofi, IGN Contours ⟨11 unchanged words⟩
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Itinéraire routier complet"}GetDétailAddressd'uneDetailsadresse
{"additionalProperties":false,"properties":{"address_id":{"description":"Identifiant d'adresse (champ `id`) renvoyé par verify_address ou search_address.","type":"string"}},"required":["address_id ⟨2 unchanged words⟩
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Détail d'une adresse"}GetFicheCompanyd'unDetailsétablissement ou d'une entreprise
{"additionalProperties":false,"properties":{"company_id":{"description":"SIRET (14 chiffres) de l'établissement, ou SIREN (9 chiffres) pour le siège de l'entreprise.","type":"string"}},"required":["company_id ⟨2 unchanged words⟩
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Fiche d'un établissement ou d'une entreprise"}RouteMatriceMatrixde temps et de distances
{"additionalProperties":false,"properties":{"destinations":{"description":"Points d'arrivée (1 à 25), même forme.","items":{"description":"A ``RoutePoint`` is EITHER ⟨37 unchanged words⟩ {"type":"null"}],"default":null,"description":"Latitude WGS84, avec `lon` (XOR address)."},"lon":{"anyOf":[{"maximum" ⟨5 unchanged words⟩ {"type":"null"}],"default":null,"description":"Longitude WGS84, avec `lat` (XOR address)."}},"type":"object"},"type": ⟨5 unchanged words⟩ {"type":"null"}],"default":null,"description":"Mode de déplacement : `car` (défaut), `walking` ou `cycling`."},"origins":{"description":"Points de départ (1 à 25), chacun une adresse libre OU un couple `lat`/`lon`.","items":{"description":"A ``RoutePoint`` is EITHER ⟨37 unchanged words⟩ {"type":"null"}],"default":null,"description":"Latitude WGS84, avec `lon` (XOR address)."},"lon":{"anyOf":[{"maximum" ⟨5 unchanged words⟩ {"type":"null"}],"default":null,"description":"Longitude WGS84, avec `lat` (XOR address)."}},"type":"object"},"type": ⟨6 unchanged words⟩
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Matrice de temps et de distances"}SearchRechercherAddressdes adresses
{"additionalProperties":false,"properties":{"details":{"default":true,"description":"Inclure les blocs détaillés (position GPS et Lambert 93, IRIS, grille statistique — selon le plan). Défaut vrai.","type":"boolean"},"limit":{"default":10,"description":"Nombre maximal de résultats (défaut 10).","type":"integer"},"query":{"description":"Début d'adresse ou adresse partielle à compléter (numéro, voie, commune…).","type":"string"}},"required":[" ⟨3 unchanged words⟩
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Rechercher des adresses"}SearchRechercherCompanydes entreprises et établissements
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Filtre sur la voie (recherche floue) ; exige `query`."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filtre sur la commune (recherche floue) ; exige `query`."},"group_by_company":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Vrai : un résultat par entreprise (son meilleur établissement, le siège de préférence) ; faux : un par établissement. Absent : défaut de l'API selon la recherche."},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Recherche par proximité (plan Growth) : latitude WGS84 du centre, avec `lon` et `radius_m`."},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Longitude WGS84 du centre de la recherche par proximité, avec `lat` et `radius_m`."},"naf_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filtre : code NAF/APE de l'activité, ex. `62.02A`."},"page":{"default":1,"description":"Numéro de page, à partir de 1.","type":"integer"},"per_page":{"default":10,"description":"Résultats par page (défaut 10, plafond 25).","type":"integer"},"postal_code":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Filtre : code postal exact."},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Nom, dénomination, sigle ou enseigne ; un SIREN (9 chiffres) ou un SIRET (14 chiffres) donne une correspondance exacte."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Rayon en mètres autour du centre (jusqu'à 50 km) ; plan Growth."},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Tous les établissements d'une unité légale (SIREN, 9 chiffres)."},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filtre : `active` (établissement en activité) ou `closed` (fermé)."}},"type":"object"}
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Rechercher des entreprises et établissements"}SearchRechercherLocalitydes communes
⟨10 unchanged words⟩ {"type":"null"}],"default":null,"description":"Filtre : codes de département (liste, ex. `62`, `2A`). À préférer au nom."},"department_name":{"anyOf":[{"items" ⟨4 unchanged words⟩ {"type":"null"}],"default":null,"description":"Filtre : noms de département (liste ; orthographe normalisée automatiquement)."},"details":{"default":true,"description":"Inclure les détails de chaque commune (codes, population, coordonnées). Défaut vrai.","type":"boolean"},"limit":{"default":20,"description":"Nombre maximal de résultats (défaut 20).","type":"integer"},"population_max":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Filtre : population maximale (habitants)."},"population_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filtre : population minimale (habitants)."},"postal_code":{"anyOf":[{"items" ⟨4 unchanged words⟩ {"type":"null"}],"default":null,"description":"Filtre : codes postaux (liste)."},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Nom de commune, code postal ou code INSEE, complet ou partiel. Optionnel si un filtre est donné."},"region_code":{"anyOf":[{"items" ⟨4 unchanged words⟩ {"type":"null"}],"default":null,"description":"Filtre : codes de région (liste)."},"region_name":{"anyOf":[{"items" ⟨4 unchanged words⟩ {"type":"null"}],"default":null,"description":"Filtre : noms de région (liste)."}},"type":"object"}
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Rechercher des communes"}SearchAdressesNearbyà proximité d'un point
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Centre par adresse libre (un nom de commune suffit). Exclusif de `lat`/`lon`."},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Latitude WGS84 du centre, avec `lon` et sans `address`."},"limit":{"default":10,"description":"Nombre de résultats par page (défaut 10, plafond 50).","type":"integer"},"lon":{"anyOf" ⟨2 unchanged words⟩ {"type":"null"}],"default":null,"description":"Longitude WGS84 du centre, avec `lat` et sans `address`."},"offset":{"default":0,"description":"Décalage de pagination : reprendre à `pagination.next_offset` de la réponse précédente.","type":"integer"},"radius_m":{"description":"Rayon de recherche en mètres autour du centre.","type":"integer"}},"required":[" ⟨3 unchanged words⟩
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Adresses à proximité d'un point"}VerifyVérifierAddresset normaliser une adresse
{"additionalProperties":false,"properties":{"address":{"description":"Adresse postale française en texte libre, telle que saisie (fautes, abréviations et accents manquants tolérés).","type":"string"},"details":{"default":true,"description":"Inclure les blocs détaillés (position GPS et Lambert 93, IRIS, grille statistique — selon le plan). Défaut vrai.","type":"boolean"},"max_results":{"default":5,"description":"Nombre maximal de candidats renvoyés (défaut 5).","type":"integer"}},"required":[ ⟨3 unchanged words⟩
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Vérifier et normaliser une adresse"}ZoneComparerComparedes zones de chalandise
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Part du revenu disponible que le secteur capte (0 exclu à 1), appliquée à toutes les zones, exclusifs et paires ; requis par les critères de potentiel."},"rank_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Critère du classement : `population` (défaut), `exclusive_population`, `theoretical_potential` ou `exclusive_potential` — ces deux derniers exigent `coefficient`."},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Référentiel de l'indice d'affinité CSP de chaque zone : `france` (défaut) ou `department`."},"zones":{"description":"De 2 à 10 zones, chacune avec les arguments de zone_stats (centre + `minutes` ou `radius_km`) et un `id` optionnel.","items":{"description":"Une zone de `zone_compare` ⟨164 unchanged words⟩ {"type":"null"}],"default":null,"description":"Latitude WGS84 du centre, avec `lon` et sans `address`."},"lon":{"anyOf":[{"maximum" ⟨5 unchanged words⟩ {"type":"null"}],"default":null,"description":"Longitude WGS84 du centre, avec `lat` et sans `address`."},"minutes":{"anyOf":[{"type" ⟨90 unchanged words⟩
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Comparer des zones de chalandise"}ZoneStatistiquesStatsd'une zone de chalandise
⟨7 unchanged words⟩ {"type":"null"}],"default":null,"description":"Centre par adresse libre — un nom de commune suffit. Exclusif de `lat`/`lon`."},"coefficient":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Part du revenu disponible que le secteur capte (0 exclu à 1) ; déclenche `potentiel_theorique`."},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Latitude WGS84 du centre, avec `lon` et sans `address`."},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Longitude WGS84 du centre, avec `lat` et sans `address`."},"minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Portée isochrone : minutes de trajet depuis le centre (1 à 30). Exclusif de `radius_km`."},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Mode de déplacement de l'isochrone : `car` (défaut), `walking` ou `cycling` — avec `minutes` seulement."},"radius_km":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Portée rayon à vol d'oiseau, en km (1 à 50). Exclusif de `minutes`."},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Référentiel de l'indice d'affinité CSP : `france` (défaut) ou `department` (département dominant de la zone)."},"traffic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Conditions de circulation de l'isochrone : `free` (défaut) ou `peak` (heure de pointe modélisée) — avec `minutes` et `mode: car` seulement."}},"type":"object"}
before
—after
{"additionalProperties":true,"type":"object"}before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Statistiques d'une zone de chalandise"}⟨239 unchanged words⟩ nationale, 150 = une fois et demie).— ou du département qui pèse le plus dans la zone si `reference` vaut `department` (défaut `france`), son code étant rendu dans `csp.reference.code`. C'est une estimation, pas une mesure : les ⟨95 unchanged words⟩ unités de consommation reconstituées). `potentiel_theorique` = revenu disponible estimé ×coefficient`coefficient` n'est calculé que siun coefficient`coefficient` est passé,ce(0 exclu à 1 : la part du revenu disponible quecetleoutilsecteurnecaptepermet—pasleencoreguide:«neZonepasdel'inventerchalandise » donne des repères par fonction de consommation,etrestauration ≈ 0,048) ; sinon il vaut `null`, ne pas l'inventer. Ne jamais le présenter comme un chiffre d'affaires—: c'est un potentiel théorique, pas une prévision ⟨182 unchanged words⟩
⟨8 unchanged words⟩ ":"null"}],"default":null},"coefficient":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null},"lat":{"anyOf":[{"type":"number ⟨28 unchanged words⟩ radius_km":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"default ⟨11 unchanged words⟩
Zone Compare — Compare de 2 à 10 zones de chalandise en un seul appel et mesure leur cannibalisation. Pour chaque zone, rend exactement ce que `zone_stats` rend (`population`, `menages`, `niveau_de_vie_moyen`, `ages`, `menages_profil`, `logements`, `csp`, `potentiel_depense`, `carreaux`, `source`, `attribution` — voir cet outil pour le sens de chaque bloc), plus `id` et `exclusif` : la population, les ménages et le potentiel que la zone est SEULE à couvrir, calculés comme « la zone moins l'union de toutes les autres » — jamais « total moins les paires », qui à trois zones et plus retrancherait deux fois un …