Skip to main content
Glama
160,644 tools. Last updated 2026-05-29 21:12

"namespace:com.ski-france" matching MCP tools:

  • 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' 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, kinés seuls, podologues seuls), passer par `specialite_codes` plutôt que `type_ps_codes` qui ratisse plus large. Liste exhaustive des codes spécialité disponibles via le tool `lister_nomenclature(referentiel:'ameli_specialites')`. Multi-sites : par défaut un PS exerçant sur N adresses apparaît N fois — utiliser `dedupe_by_ps=true` pour regrouper par praticien et lister les sites en sous-objet. Distance retournée en km vol d'oiseau (haversine PostGIS) — pour distance routière, croiser avec un service externe (OSRM, ORS). Chaque PS géolocalisé porte `geo_precision` ∈ {`"adresse"`, `"centroide_commune"`} : `"adresse"` = coords BAN précises, `distance_km` exacte, classement individuel fiable ; `"centroide_commune"` = ~3 km, `distance_km` IDENTIQUE pour tous les PS d'une même commune (non discriminante intra-commune — filtre de zone uniquement, pas de classement/choix d'un PS individuel). **Param `precise_only`** (défaut false) : à true, exclut les PS au centroïde commune et ne renvoie que les ~77 % géocodés à l'adresse BAN (`distance_km` exacte) — recommandé pour les rayons courts (<3 km) et le classement intra-commune. PÉRIMÈTRE : libéraux conventionnés UNIQUEMENT. HORS PÉRIMÈTRE : médecins exclusivement hospitaliers/salariés, biologistes médicaux salariés en LBM, anatomopathologistes hospitaliers, médecins du travail, médecine légale. Pour effectifs tous statuts, voir Annuaire Santé ANS (RPPS, esante.gouv.fr) — non couvert par ce serveur. Source : Annuaire santé Ameli (Assurance Maladie), MAJ hebdomadaire. Réutilisation soumise à l'art. L.1461-2 CSP — citer la source et la date de sync.
    Connector
  • 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` si commune hors couverture IRIS (DOM non ingéré) — pour le détail au quartier ou un bassin par rayon, utiliser `profil_iris`). Remplace 7-10 appels MCP individuels par 1 seul. Ne renvoie AUCUNE interprétation métier (pas de qualification automatique 'désert médical') — le caller LLM applique sa grille. V0.19.0 : accepte `nom_commune` (string) comme alternative à `code_insee`. `departement` (V0.19) = hint resolver UNIQUEMENT (panorama ne calcule pas par dept ; un `departement` seul lève une erreur explicite). **Granularité mixte** : les densités professionnels et la population sont calculées au niveau **commune** ; le décompte FINESS est agrégé au niveau **département** dérivé du code INSEE (limitation V0.9 — pas de RPC count_finess_by_commune encore). Le champ `niveauEtablissements` du résultat indique `"departement"` (succès), `"indisponible"` (dept indérivable, ex code DOM tronqué) — utiliser cette information pour ne pas confondre ratios commune et dept. Paris/Marseille/Lyon NON supporté : le panorama par commune dépend de la densité par commune, indisponible pour ces villes (INSEE n'expose la population qu'à la commune entière, les praticiens RPPS aux arrondissements). Un code PLM (commune-mère 75056 ou arrondissement) lève une RangeError. Pour ces villes, interroger les tools individuels au niveau `code_dept` (75/69/13). Alias acceptés : `codeInsee`/`insee`/`code` → `code_insee`. Sources : RPPS / Annuaire Santé ANS (mensuel), FINESS DREES (bimensuel), INSEE Melodi (PMUN 2023).
    Connector
  • 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, hôpitaux). Volume ~3K en France. Filtres : - `specialite_codes` : array Annexe A (ex: ['01'] médecine générale, ['53'] dentaire). Match any-of — retourne les CDS qui exercent AU MOINS UNE des spécialités demandées. - `accepte_carte_vitale` : true / false / omis. Quasi-totalité accepte CV en pratique → filtre surtout utile en `false` pour audits. - `type_etab_codes` : ['124'] CDS standard, ['125'] CDS dentaire (deprecated CNAM, en voie d'extinction). Coords = centroïde commune (~3 km moyenne) — pour précision adresse, pivoter via `etab_finess` retourné avec `etablissement_by_finess`. PAS d'horaires/tarifs/secteur 1/2 (retirés du nouvel annuaire CNAM post-2025). Alias acceptés : `radius`/`radius_meters` → `radius_km`, `latitude`/`longitude` → `lat`/`lon`.
    Connector
  • Aggregate public procurement tenders (calls for tender / appels d'offres) from multiple government sources simultaneously: TED Europa v3 (27 EU countries, keyless API), BOAMP France (opendatasoft, keyless), UK Contracts Finder (OCDS standard, keyless), SAM.gov United States (requires SAM_GOV_API_KEY env var), and bund.de Germany (HTML scraping, partial). Returns structured tender records with buyer authority, EU CPV sector code, estimated contract value converted to EUR via live FX rates, submission deadlines, and direct notice URLs. Use when: a B2G agent needs to find government contract opportunities matching keywords across multiple jurisdictions; building a pipeline of public tenders for bid/no-bid qualification; monitoring a domain by CPV code; market sizing public sector spend. Key inputs: query (keywords), countries (ISO-2 array), cpv_codes (EU standard codes, e.g. 72000000=IT services, 45000000=construction, 79000000=business services), min_value_eur (filter), published_after (ISO date, defaults to 30 days ago). SLA: <=25s p95 (all sources fetched in parallel, 8s budget per source). Optional env var SAM_GOV_API_KEY enables US federal tenders (free key at api.sam.gov). Quality score: 25 pts if TED EU retrieved, 15 pts per other source retrieved (max 60), 10 pts if >= 10 tenders returned, 5 pts if aggregates computed. Status: failed < 30 / partial 30-59 / final >= 60.
    Connector
  • 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 INSEE (timeline périodes administratives par SIRET candidat). Remplace 3 appels MCP individuels (`verifier_site_actif` + `rpps_dans_etablissement` + `historique_etablissement`) par 1 seul. Utile pour : prospection (qualifier un site avant outreach), audit territorial (cross-check rapide d'un FINESS suspect), enrichissement CRM en batch. **Format de retour** : objet `LookupResult`. Quand `found: true`, payload avec 4 sections (finess, statut_site, professionnels, historique). La section `historique` peut être `available: false` quand le FINESS existe mais qu'aucun SIRET candidat n'a été identifié (RPPS vide + DINUM 0 match) — dans ce cas le `message` reprend celui de `historique_etablissement`. Quand `num_finess` est absent de FINESS DREES, retourne `{found: false, lookupStatus: 'not_found', message}`. Coût : 3 sous-appels parallèles. Cache PostgreSQL absorbe la duplication FINESS-RPC ; le pivot RPPS→DINUM est exécuté en double (verifier + historique partagent la cascade), surcoût p95 ≤ 600 ms — acceptable pour un agrégateur. Pour les besoins ciblés (juste le verdict, juste l'historique), préférer les tools individuels. Payload lourd (~7K tokens) : passer `historique_detail: false` pour un retour allégé (résumé au lieu des timelines SIRENE complètes) en usage batch. Alias acceptés : `numFiness`/`finess`/`id` → `num_finess`.
    Connector
  • 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: 'not_found', message}` quand le numéro FINESS pointe vers une structure non-CDS (hôpital, EHPAD, labo) ou un CDS très récent (CNAM latence ~1 sem). Source : Annuaire santé Ameli, Assurance Maladie (sync hebdomadaire CNAM, mention obligatoire L.1461-2 CSP). Pour les structures non-CDS, utiliser `etablissement_by_finess`. Alias acceptés : `numFiness`/`finess`/`etab_finess` → `num_finess`.
    Connector

Matching MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    France Data MCP lets AI agents query, cross-reference and automatically enrich multiple French public registries through a unified MCP interface. France Data MCP provides a French territorial intelligence layer designed for multi-source reasoning and agentic orchestration.
    Last updated
    34
    110
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Search comparable property sales across 16 global markets with 43M+ government-sourced transactions. Tools: search comps by location, get area statistics and trends, list available markets. Covers UK, France, Singapore, NYC, Chicago, Dubai, and 10 more cities.
    Last updated
    3
    3
    MIT

Matching MCP Connectors

  • Read-only ski accommodation search for prices, availability and destination details.

  • French territorial intelligence MCP: cross-reference health, business & geo public registries.

  • É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 appels MCP individuels par 1. Renvoie des RÉSUMÉS (count / top-N / moyenne), JAMAIS de listes brutes. AUCUNE interprétation métier (pas de 'désert médical' ni de verdict GO/NO-GO) — le caller LLM applique sa grille. DÉGRADATION (lis `couverture` — 1 drapeau par section) : `"ok"` | `"partiel:<raison>"` | `"indisponible:<raison>"`. Si une source est down, SA section est flaggée et le RESTE est renvoyé — comble alors le trou via l'outil unitaire correspondant (etablissements_finess_in_radius, professionnels_rpps_in_radius, densite_sante, centres_sante_in_radius…). Échec d'ANCRAGE (géocodage KO / adresse douteuse / code INSEE indérivable) = rejet total (RangeError). Pièges internalisés : Paris/Lyon/Marseille basculés sur le département (`meta.plm_mode=true`) ; `prescripteurs` expose `precis_count` (PS géolocalisés à l'adresse, pas au centroïde commune) ; `cds` sans distance individuelle (centroïde commune). WORKFLOW : appelle CET outil pour DÉMARRER une étude, puis creuse les sections `partiel`/`indisponible` via les unitaires, puis `enrichir_concurrents` sur le top 3 de `concurrents.top`. Sources : IGN (géocodage), FINESS DREES, RPPS/ANS, Ameli/CNAM, INSEE/FILOSOFI, SIRENE/DINUM.
    Connector
  • 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é sur `concurrents.top[0..2].finess` renvoyés par panorama_implantation_complet. Sources : FINESS/ANS, RPPS/ANS, SIRENE/DINUM.
    Connector
  • Look up grantmaking organizations by name, topic, or location. This tool searches 174K+ grantmaking organizations from IRS data using organization names plus grant-purpose/topic signals. Use it when you know the funder's name, want aligned funders for a cause area, or want to browse by location/size/NTEE code. Multi-word searches are ranked by relevance; simple browse/name fallback results are ordered by total assets. IMPORTANT: Use search_open_grants when the user needs active grant programs or RFPs. search_funders is for finding aligned grantmakers, including ones that may fund by relationship, LOI, or annual cycle rather than a live call. Args: query: Search term for a funder name or cause-area phrase. Example: "Ford Foundation", "global health", "community foundation" Topic searches work best with 2+ words. state: Two-letter US state code to filter by funder HQ location. Example: "CA", "NY", "TX" city: City name to filter by (case-insensitive). Example: "San Francisco", "New York" ntee_code: NTEE classification code to filter by. Example: "A20" (Arts Organizations), "B" (Education), "E" (Health) min_assets: Minimum total assets filter in dollars. Example: 10000000 (foundations with $10M+ assets) max_assets: Maximum total assets filter in dollars. Example: 100000000 (foundations with up to $100M assets) has_er_grants: Filter to foundations that make expenditure responsibility grants (grants to non-501(c)(3) entities like PBCs, for-profits, and foreign orgs). Set to True to find only ER-active funders. funder_type: Optional canonical funder_type to include. Examples: "community_foundation", "family_foundation", "corporate_foundation", "private_operating", "operating_nonprofit", "independent_foundation". Use this to narrow to a specific kind of grantmaker. exclude_funder_types: Optional list of canonical funder_type codes to exclude from results. Useful for hiding operating nonprofits that surface with large "annual_grants" but are not actually grantmakers — e.g., exclude_funder_types=["operating_nonprofit"] hides PATH and similar operating organizations. grantee_country_codes: Optional list of FIPS 10-4 country codes (e.g., "UK" for United Kingdom, "IN" for India, "KE" for Kenya, "SF" for South Africa) to restrict to funders whose grantees are located in those countries. Use this when the user is asking for funders that move money into a specific non-US geography. Country here is the grantee's HQ country, derived from foundation_grants. When set, the search is forced through the hybrid path; the ILIKE-only name-match path cannot filter by country. Distinct from `state`, which filters by the funder's own US HQ. country: Optional HQ country name (or list of names) to restrict to funders headquartered in those countries (e.g., "Germany", ["United States", "Canada"]). Distinct from `grantee_country_codes` (where the funder's grants land) and from `state` (US state of HQ). Use when the user asks for funders based in a specific country — e.g. "European-headquartered foundations" → country=["Germany","Spain","United Kingdom", "Switzerland","Netherlands","France"]. US foundations are included only when "United States" (or "USA") is in the list, or when the param is omitted. limit: Maximum number of results to return. Default: 20, Maximum: 50 Returns: Dictionary containing: - results: List of matching foundations with ein, name, city, state, total_assets, annual_grants, website_url, has_er_grants, has_pris, funder_type (when populated), topic_match_count (when query takes the hybrid topic-search path — see below) - total_returned: Number of results returned - query_params: The search parameters used - note: Helpful context about the results topic_match_count is the number of distinct grant-purpose strings under this funder that matched the FTS query. It surfaces only on topical searches (multi-word queries that route to the hybrid path) and only for 990-filer rows; ILIKE-only and non-990 rows omit the field. Rule of thumb: - topic_match_count == 1 → single tangential grant, often noise (e.g. a credit-union foundation surfacing for "telemedicine" because of one passing-mention grant) - topic_match_count >= 3 → substantive topical coverage Examples: search_funders(query="community foundation", state="CA") search_funders(query="global health", min_assets=100000000) search_funders(ntee_code="E", min_assets=50000000) search_funders(state="NY", city="New York", limit=10) search_funders(has_er_grants=True, state="CA") search_funders(funder_type="community_foundation", state="CA") search_funders(query="PATH", exclude_funder_types=["operating_nonprofit"]) search_funders(query="global health", grantee_country_codes=["IN"]) search_funders(query="climate resilience", grantee_country_codes=["KE", "SF"]) search_funders(query="youth education", country="Germany") search_funders(country=["Germany","Spain","Netherlands"])
    Connector
  • 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' pour le même FINESS). Équivalent côté centre de santé de `compare_raison_sociale_finess_vs_rpps`. **Statut** (présent uniquement sur `found: true`) : - `match` : adresses strictement égales après normalisation - `match_after_abbreviation_normalization` : égales après expansion des abréviations de voie FR (R/RUE, BD/BOULEVARD, AV/AVENUE…) — MÊME adresse, simple abréviation DREES vs CNAM, PAS un déménagement - `divergent_after_normalization` : adresses réellement différentes (déménagement non synchronisé entre sources) - `finess_absent` : le CDS existe côté CNAM mais le num_finess est absent de FINESS DREES (latence sync bimensuelle) Format : objet `LookupResult` discriminé par `found`. Si le num_finess n'est PAS un centre de santé CNAM, le tool retourne `{found: false, lookupStatus: 'not_found', message}` (utiliser `etablissement_by_finess` pour un établissement non-CDS).
    Connector
  • 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. `mode: "ilot"`, `revenu_median` = médiane réelle de l'îlot. - AVEC `rayon_km` → AGRÉGAT du BASSIN = îlots dont le CENTROÏDE est dans le disque (chaque îlot compté 1 fois). `mode: "bassin"`, `population_bassin`, `nb_iris_agreges`, et `revenu_median_pondere` = PROXY (moyenne pondérée population des médianes des îlots couverts — PAS une vraie médiane de bassin) + `couverture` {`revenu_pct_population`, `iris_revenu_manquants`} car FILOSOFI ne couvre que les communes ≥5000 hab. Les parts `age` (part_65_plus/75_plus) et `csp` (cadres, prof_interm, employés, ouvriers, agriculteurs, artisans_comm, retraités, autres) sont des ratios sur comptes bruts (Σ/Σ). Pour une simple population de commune/dept, utiliser `population`. `not_found` motivé si code absent ou point hors métropole / en mer.
    Connector
  • 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`, …) - `found: false` → `{ found: false, key, lookupStatus: 'not_found', message }`. Cas typiques : clé `INSEE_SIRENE_API_KEY` non configurée côté serveur (message explicite), SIRET inexistant SIRENE, diffusion partielle INSEE. ⚠️ Différence avec `entreprise_by_siren` : ce tool renvoie UN établissement précis (un site), alors que `entreprise_by_siren` renvoie l'unité légale + sa liste d'établissements. Pour détecter un SIRET fermé encore listé actif côté FINESS, lire `actif: false` + `dateFermeture`. **Pas de coords** : l'endpoint INSEE `/siret/<siret>` ne renvoie pas les coordonnées GPS. Pour géolocaliser, croiser avec `geocode_adresse` côté caller ou utiliser `entreprises_in_radius`. Rate limit INSEE : 30 req/min (retry-after géré côté serveur).
    Connector
  • 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 (quartier) pour les villes ; en zone peu dense la commune = 1 IRIS (`type_iris` Z, code `COM+0000`). Pour le profil démographique détaillé d'un îlot ou d'un bassin (âge, CSP, familles, revenu), utiliser `profil_iris`. - Commune (5 car., ex `75056` Paris, `13055` Marseille, `2A004` Ajaccio) : PMUN/PCAP/PTOT. Source INSEE Melodi (DS_POPULATIONS_REFERENCE). PMUN = base légale DREES. Commune fusionnée → `found: false` + orientation `autocomplete_commune`. INSEE n'expose PAS les arrondissements PLM (75101-75120, 13201-13216, 69381-69389) → passer la commune-mère ou le département. - Département (2-3 car., ex `75`, `59`, `2A`, `971`) : Mayotte (`976`) ABSENTE de Melodi → `lookupNotFound`. Alias acceptés : `code_insee`/`codeInsee`/`insee`, `code_dept`/`dept`/`departement`/`code_departement`, `code_iris`/`iris` → `code`.
    Connector
  • Resolve legal information about a company from its national corporate registry. Returns a normalised, sourced company profile: legal status, registration number, directors, shareholders, recent filings, registered address, share capital, and a quality score (0–100). Coverage: France (INPI, keyless — full SIREN/SIRET with directors), 3M+ entities worldwide via GLEIF LEI (keyless, large companies), UK (Companies House, optional key), Netherlands (KvK, optional key), and OpenCorporates (token required since 2026). Sources are tried in cascade; quality_score increases with each source that succeeds. When to use: due-diligence, KYC screening, supplier verification, M&A research, or any workflow needing verified company identity and legal status. Optional env vars: COMPANIES_HOUSE_API_KEY (UK), KVK_API_KEY (NL), OPENCORPORATES_API_TOKEN (OpenCorporates token).
    Connector
  • 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 conventionnés Assurance Maladie / CNAM) : libellé natif, `type_ps_code` de rattachement, count, `libelle_clarifie` (désambigüise les libellés partagés, ex "Médecin généraliste" = 01/22/23 ; "Psychiatre" = 33/75), `is_libelle_partage`. Pour filtrer `professionnels_in_radius` / `professionnels_par_specialite_dept` (param `specialite_code(s)`). - `ameli_types_ps` — codes `type_ps` Ameli : `libelle_source`, `libelle_clarifie` (résout l'ambiguïté du code "2" fourre-tout), count, et `specialites_presentes` (spécialités regroupées). Payload léger via `include_specialites: false` (→ `nb_specialites`). - `rpps_savoir_faire` — spécialités médicales `savoir_faire_code` RPPS / Annuaire Santé ANS (ex 'SM04' Cardiologie). Pour filtrer `densite_sante` (cible professionnels) / `professionnels_rpps_*`. Filtre par `profession_code` (défaut '10' Médecin ; string vide ou 'null' = tous savoir_faire). Paginé : `limit` (défaut 50), réponse expose `total` et `truncated`. PÉRIMÈTRE : libéraux conventionnés UNIQUEMENT. HORS PÉRIMÈTRE : médecins exclusivement hospitaliers/salariés, biologistes médicaux salariés en LBM, anatomopathologistes hospitaliers, médecins du travail, médecine légale. Pour effectifs tous statuts, voir Annuaire Santé ANS (RPPS, esante.gouv.fr) — non couvert par ce serveur. Source : Annuaire santé Ameli (Assurance Maladie), MAJ hebdomadaire. Réutilisation soumise à l'art. L.1461-2 CSP — citer la source et la date de sync.
    Connector
  • 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. `truncated: true` = d'autres résultats existent (restreindre, ne pas parcourir). 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). Catégorie par défaut : Civil (C, ~97 % — libéraux, salariés privés, hospitaliers contractuels). Opt-in : `include_agents_publics: true` ajoute Agents publics (M, ~0,3 % — PH titulaires, ARS, CNAM, Éducation nationale, PMI, militaires SSA) ; `include_etudiants: true` ajoute Étudiants (E, ~2,5 % — internes, externes, élèves IDE/SF). Réf : https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/. Source : Annuaire Santé, Agence du Numérique en Santé (ANS) — Licence Ouverte v2.0
    Connector
  • 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 : `profession_code` (60 infirmier, 21 pharmacien, 50 sage-femme…), `savoir_faire_code` (ex 'SM04' Cardiologie — 'SM02' = Anesthésie-réanimation ; voir `lister_nomenclature` referentiel rpps_savoir_faire), `mode_exercice_codes` (['L'] = libéraux seuls). **cible='etablissements'** (FINESS) — `famille` OBLIGATOIRE : labo, pharmacie, ehpad, mco, ssr, psychiatrie, dialyse, imagerie, had, msp_cpts, handicap_enfants, handicap_adultes, addictologie, pmi, prevention_sante, etc. Sans famille le ratio mélangerait labos/hôpitaux/EHPAD → non-sens. **Sémantique conditionnelle de `code_dept`** : seul = scope de calcul (dept entier) ; combiné avec `nom_commune` = hint de résolution UNIQUEMENT (filtre les homonymes), le calcul reste sur la commune résolue. Paris/Marseille/Lyon : densité par `code_insee` INDISPONIBLE (RPPS/FINESS rattachés aux arrondissements, INSEE n'expose la population qu'à la commune entière) → RangeError ; utiliser `code_dept` (75, 13, 69). `compare_national: true` ajoute la densité France entière (DOM inclus) + écart en % (positif = sur-doté, négatif = sous-doté). Alias : `dept`/`departement` → `code_dept`, `codeInsee`/`insee` → `code_insee`. Ne renvoie AUCUNE interprétation métier (pas de seuil "désert médical" auto). Catégorie par défaut : Civil (C, ~97 % — libéraux, salariés privés, hospitaliers contractuels). Opt-in : `include_agents_publics: true` ajoute Agents publics (M, ~0,3 % — PH titulaires, ARS, CNAM, Éducation nationale, PMI, militaires SSA) ; `include_etudiants: true` ajoute Étudiants (E, ~2,5 % — internes, externes, élèves IDE/SF). Réf : https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/. ATTENTION nomenclatures : les codes ANS (`profession_code`, `savoir_faire_code`) sont une nomenclature DISTINCTE des codes Ameli (`specialite_code`, `type_ps_code`) — un même nombre désigne des choses différentes (ex: '10' = Médecin côté ANS, Neurochirurgien côté Ameli). Ne JAMAIS passer un code Ameli à un paramètre ANS : le filtre renverrait vide sans erreur. Découvrir les codes ANS via `lister_nomenclature(referentiel:'rpps_savoir_faire')`. Source : Annuaire Santé, Agence du Numérique en Santé (ANS) — Licence Ouverte v2.0
    Connector
  • Compare multiple LLM responses to the same prompt and detect inconsistencies using Jaccard word-overlap similarity and fact drift (number comparison). Fast, deterministic, no API key needed. Limitations: relies on surface-level word matching — "Paris is the capital of France" vs "Paris is the French capital" may score low despite semantic equivalence. For true semantic consistency, use run_semantic_tests with embedding mode. Essential for determinism testing.
    Connector
  • 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 }`. Le référentiel DREES a 1-2 mois de retard sur le terrain : pour des structures émergentes (CPTS récentes, MSP en agrément), cross-check ARS / Service Public. Source : FINESS / DREES. Note : champ `email` toujours `null` (non exposé par FINESS public). Note : `raison_sociale` provient du dump DREES qui abrège les libellés longs (~38 car. max, ex 'CERBALLIANCE HA' pour 'CERBALLIANCE HAZEBROUCK'). Pour le nom légal complet, cross-check via SIREN/SIRET (entreprise_by_siren / etablissement_by_siret).
    Connector
  • Get current Tour de France race phase. Returns one of: 'pre' (before the first stage, with nextStage + daysUntil), 'live' (a stage is currently running, with currentStage + elapsedPct), 'rest-day' (rest day between stages, with restDay + nextStage), 'between-stages' (off-day between consecutive stages, with lastStage + nextStage), 'finished' (race over, with finalStage).
    Connector