Basile
French B2B database for companies and contacts, built from official registers (INSEE, Infogreffe, BODACC) plus public web sources.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only
What it can do
- Basile Count: Renvoie le NOMBRE TOTAL de résultats pour des filtres. GRATUIT : aucun crédit débité, et le total est EXACT (non plafonné). À appeler TOUJOURS en premier — les outils de recherche/export
- Basile Search People: Cherche des PERSONNES/contacts (dirigeants légaux + profils LinkedIn) dans Basile. Renvoie { total, leads[], pagination.nextToken }. Utilise nextToken pour paginer. limit défaut
- Basile Search Companies: Cherche des ENTREPRISES (registre légal + LinkedIn + Google My Business) dans Basile. Renvoie { total, establishmentsTotal, leads[], pagination.nextToken }. limit défaut 25, m
What data it sees
Do you need an account
No: the server works without sign-in
French B2B database for companies and contacts, built from official registers (INSEE, Infogreffe, BODACC) plus public web sources.
Use it from Claude or any MCP client to:
- count matching companies or people (free)
- search and filter French companies and contacts
- fetch a company or person by ID
- suggest activity / NAF codes
- export a small CSV from the conversation
Auth: OAuth with a Basile account. An API-access plan is required. The MCP is billed like the REST API (count is free; returned records consume credits).
Docs: https://docs.basile.cc
Product: https://www.basile.cc
MCP endpoint: https://mcp.basile.cc/mcp
France only. Not a global lead database.
Server tool list (7)
Raw names from tools/list. Only developers need these.
| basile_count | Renvoie le NOMBRE TOTAL de résultats pour des filtres. GRATUIT : aucun crédit débité, et le total est EXACT (non plafonné). À appeler TOUJOURS en premier — les outils de recherche/export, eux, coûtent 1 crédit par fiche. Companies : renvoie aussi `establishmentsTotal` = nb de POINTS DE VENTE (fiches Google) derrière les sociétés dédupliquées (ex. 420 sociétés mais 800 points de vente). FORME DES FILTRES : - Filtre texte = {"include":[...], "exclude":[...]} — include = OR, exclude = NOT. - Plusieurs filtres différents = ET entre eux. - People : filtres numériques = range objet {">=":n,"<=":n} (ops >, >=, <, <=). - Companies : filtres numériques = champs simples `_min` / `_max` (ex. capital_min, headcount_max). |
| basile_search_people | Cherche des PERSONNES/contacts (dirigeants légaux + profils LinkedIn) dans Basile. Renvoie { total, leads[], pagination.nextToken }. Utilise nextToken pour paginer. limit défaut 25, max 1000. La page > 1 nécessite un abonnement actif (402 sinon). ⚠️ COÛT : 1 crédit par fiche renvoyée (donc limit=25 → 25 crédits), à chaque appel, sans déduplication d'un appel à l'autre. Compte d'abord avec basile_count (gratuit), et ne demande que le nombre de fiches réellement utile. Le `total` renvoyé ici est plafonné à 100 000 : pour un volume exact, utiliser basile_count. FORME DES FILTRES : - Filtre texte = {"include":[...], "exclude":[...]} — include = OR, exclude = NOT. - Plusieurs filtres différents = ET entre eux. - People : filtres numériques = range objet {">=":n,"<=":n} (ops >, >=, <, <=). - Companies : filtres numériques = champs simples `_min` / `_max` (ex. capital_min, headcount_max). FILTRES PEOPLE (POST /people/find) : Communs (2 sources Legal + LKI) : activity (secteur/métier de l'entreprise de la personne — IDs concept via basile_activity_suggest, ou préfixes naf:/lki:/gmb:), result_full_name, result_last_name, result_first_name, result_role (intitulé de poste, TEXTE → mettre toutes les variantes ; ex. CEO+PDG+Directeur Général…), result_city, region (RÉGION française canonique, ex "Île-de-France" — couvre Legal+LKI), result_country, result_country_code (ex. "FR"), employer. Legal-only (activer = exclut LinkedIn) : mandate_role (gerant|president|dg|dgd|administrateur|commissaire_comptes|associe|directeur_non_dg|autre), result_used_first_name, result_postal_code, siren, legal_name, nationality, nationality_code, result_is_legal_entity (bool), result_is_current (bool, mandat actuel), result_age (range), result_total_companies_count (range). LinkedIn-only (activer = exclut Legal) : current_seniority (C-Level|Director|VP|Head|Manager|Senior|Partner|Owner|Founder|Entry|Training|Unpaid), current_job_functions, skills, languages, education, past_title, past_employer, tenure_bucket, past_tenure_bucket, current_tenure_years (range, ancienneté au poste ACTUEL en années — plus fin que tenure_bucket), connection_count (range), linkedin_url (retrouver un profil par son URL/handle LinkedIn — à coupler avec source:"LKI"). Taille de l'employeur (MULTI-SOURCE, n'exclut aucune source) : company_headcount (range) — effectif de la société ACTUELLE du contact, croisant l'effectif exact du registre légal et la bande de taille déclarée sur LinkedIn. C'est LE filtre pour « dirigeants de PME de 50 à 200 personnes » ; ne pas le confondre avec un filtre sur les entreprises. Les fiches sans effectif connu sont exclues (~21 % sur un échantillon FR). Pilotage source : source ("Legal"|"LKI"), with_legal_data (bool), with_linkedin_profile (bool), hide_legal_entities (bool, RECOMMANDÉ par défaut pour ne lister que de vraies personnes). CONSEILS : secteur → activity direct, taille d'entreprise → company_headcount direct. NE JAMAIS enchaîner une recherche entreprises puis une recherche personnes pour filtrer par secteur ou par taille : ces deux filtres font le travail en UNE requête. Le workflow entreprises→personnes est un fallback, réservé au cas où l'on part d'entreprises nommées ou de fiches Google. France → result_country_code:{include:["FR"]}. Dirigeants actifs → result_is_current:true. NB : le total people = somme LKI+Legal (peut sur-compter une personne présente dans les 2 sources) → meta.totalBySource + totalEstimated l'indiquent ; compter avant d'extraire. |
| basile_search_companies | Cherche des ENTREPRISES (registre légal + LinkedIn + Google My Business) dans Basile. Renvoie { total, establishmentsTotal, leads[], pagination.nextToken }. limit défaut 25, max 1000. `total` = sociétés (dédupliquées par domaine) ; `establishmentsTotal` = POINTS DE VENTE (fiches Google). Pour exporter les points de vente : basile_export avec mode:"locations". ⚠️ COÛT : 1 crédit par fiche renvoyée (limit=25 → 25 crédits), à chaque appel. Compte d'abord avec basile_count (gratuit et exact) ; le `total` renvoyé ici est plafonné à 100 000. FORME DES FILTRES : - Filtre texte = {"include":[...], "exclude":[...]} — include = OR, exclude = NOT. - Plusieurs filtres différents = ET entre eux. - People : filtres numériques = range objet {">=":n,"<=":n} (ops >, >=, <, <=). - Companies : filtres numériques = champs simples `_min` / `_max` (ex. capital_min, headcount_max). FILTRES COMPANIES (POST /companies/find) : Généraux (3 sources Legal+LKI+GMB) : name (contains), activity (métier unifié — le plus puissant ; IDs via basile_activity_suggest), with_email (bool, uniquement les entreprises dont le domaine a au moins un email crawlé). Legal-only : naf_code (préfixe ".x" possible, ex "41.x"), headquarters_naf_code, headquarters_department_code (ex "75","13"), headquarters_postal_code, legal_form (accepte code court SARL/SAS/SASU/EURL/SA/SCI…, code INSEE 5710, OU libellé complet), legal_category (code INSEE), siren, capital_min/capital_max, publishable (bool), creation_date_min/creation_date_max (année ex "2015"), created_since_months (nombre — entreprises créées dans les N derniers mois, ex 3 ; plus précis que creation_date pour « créées récemment »). Région : utiliser region (NOM canonique, ex "Île-de-France") ou headquarters_department_code (ex "75"). ⚠️ headquarters_region_code (code INSEE) est IGNORÉ (no-op, pas de résolveur) — ne pas l'utiliser. Legal+LKI (exclut GMB) : headquarters_city, headquarters_country_code (ex "FR"), headcount_min/headcount_max (effectif). LinkedIn-only : domain (contains), tech_stack (techno du site, ex "Shopify"/"WordPress"). ⚠️ followers : pas de données → ne pas utiliser. ⚠️ industry_main / company_type = LinkedIn, lacunaires/peu fiables → pour un secteur préférer activity ou naf_code. GMB-only : rating_min/rating_max (0-5), reviews_min/reviews_max, is_opening (bool, ouvert dimanche). Spécial : company_ceased (bool) — METTRE false par défaut (entreprises actives uniquement). Pilotage source : source ("Legal"|"LKI"|"GMB"), with_legal_data (bool), with_linkedin_page (bool). CONSEILS : métier → activity (IDs via basile_activity_suggest) sinon naf_code. France → headquarters_country_code:{include:["FR"]} ou headquarters_department_code. |
| basile_activity_suggest | Autocomplete d'ACTIVITÉ/MÉTIER → renvoie des IDs de concept unifiés (NAF + catégories Google + industries LinkedIn). À utiliser pour remplir le filtre `activity` (people ET companies). Ex. q="restaurant", q="plomberie". |
| basile_suggest | Autocomplete pour trouver les valeurs valides avant de filtrer. Champs people : people_cities, people_companies (employeurs), people_roles, people_skills, people_languages, people_education, people_names, people_nationalities, people_seniorities, people_tenure_buckets, people_age_bounds, people_mandate_count_bounds. Champs companies : company_name, company_city, company_legal_form, company_siren. (Pour l'activité/métier, utilise plutôt basile_activity_suggest.) |
| basile_get_entity | Récupère la fiche d'une personne ou entreprise par son _id (issu d'un search). full=true → toutes les colonnes enrichies (même schéma que l'export CSV). ⚠️ COÛT : 1 crédit par appel, y compris si la fiche a déjà été payée dans un search précédent (il n'y a pas de registre « déjà payé »). Ne pas boucler dessus sur une liste de résultats : pour plusieurs fiches, basile_export coûte pareil et renvoie tout d'un coup. |
| basile_export | Exporte un CSV COMPLET (~70-79 colonnes) pour des filtres OU une liste d'ids. CONSOMME le quota d'export du plan. Companies : `mode` = "companies" (1 ligne / entreprise, défaut) OU "locations" (1 ligne par POINT DE VENTE / établissement Google — à utiliser quand establishmentsTotal > total). ⚠️ Compte d'abord (basile_count). Le CSV est renvoyé INLINE : limité à 500 lignes (un chat ne peut pas avaler un gros CSV). Au-delà → affine/segmente, ou lance l'export depuis l'app web (fichier téléchargeable). maxRows = plafond/export du plan ; capped = il reste des résultats au-delà. |