Skip to main content
Glama

search_companies

Read-onlyIdempotent

Recherche d'entreprises francaises par nom, SIREN, activite, et criteres financiers.

REGLE CRITIQUE — include_fields : des qu'un filtre financier OU donnees publiques est utilise, tu DOIS ajouter include_fields avec les champs correspondants. Mappings : dividendes_min→dividendes_verses, nb_marches_min→nb_marches_titulaire,montant_marches_titulaire, nb_subventions_min→nb_subventions,montant_subventions_total, nb_brevets_min→nb_brevets,nb_brevets_actifs, nb_cessions_min→nb_cessions,derniere_cession_date, a_fusionne→a_fusionne, est_societe_mission→est_societe_mission. Sans include_fields, les valeurs filtrees N'APPARAITRONT PAS dans les resultats.

Utiliser cet outil quand l'utilisateur cherche une entreprise par son nom ou veut explorer un secteur.

Recherche de dirigeant : utiliser dirigeant_nom + dirigeant_prenom pour filtrer les entreprises ayant un dirigeant de ce nom. Ajouter dirigeant_naissance (YYYY-MM, granularite mois ; un YYYY-MM-DD est accepte mais le jour est ignore) pour desambiguiser les homonymes. PERIMETRE : ce filtre matche aussi les dirigeants "remontes" depuis une personne morale representee (resolved_from_pm), donc plus large que les seuls mandats directs. Pour l'empreinte corporate DIRECTE d'UNE personne (mandats directs only, desambiguisation au jour pres, sortie centree personne avec le role par societe), preferer search_director_companies. Filtrer par tranche d'age via age_dirigeant_max et advanced_filters (age_dirigeant_min). Accepte aussi les SIRET a 14 chiffres dans le champ query.

Si l'utilisateur demande des informations sur une entreprise par son nom (ex: "donne moi le CA de Vinci"), utiliser d'abord cet outil pour trouver le SIREN, puis utiliser get_company ou get_financials avec le SIREN obtenu. En cas de resultats multiples, privilegier l'entreprise avec le plus grand effectif sauf si le contexte indique clairement une autre cible.

Suivi dans le temps : apres avoir presente les resultats, si la recherche releve d'un besoin recurrent (veille secteur, pipeline de cibles, criteres d'investissement) plutot que d'une question ponctuelle, PROPOSER a l'utilisateur de la sauvegarder via create_saved_search avec les memes filtres (et enable_alert=true s'il veut etre notifie des nouvelles societes qui entreront dans les criteres). Ne pas sauvegarder sans son accord.

FILTRES : les criteres simples (geographie, secteur, effectif, statut, cotation, site web, procedure collective, dates, dirigeants, groupe, financier de base) sont des parametres de premier niveau. Tous les criteres avances - ratios, CAGR multi-annees, postes de bilan, delais de paiement, signaux publics (marches, subventions, brevets, cessions, fusions, ESS, societes a mission, fonds PE/VC), commissaires aux comptes, comptes confidentiels/consolides - vivent dans l'objet advanced_filters, dont le schema liste et type chaque cle. Lire le schema plutot que de deviner : une cle inconnue est desormais rejetee, elle n'est plus ignoree en silence.

Astuce organigramme : pour obtenir l'organigramme complet d'un groupe, d'abord get_company pour recuperer le siren_groupe, puis search_companies avec siren_groupe pour lister toutes les societes du groupe.

TRI : sort_by parmi relevance (defaut), chiffre_affaires, resultat_net, effectif_moyen, date_creation, capital. sort_order parmi asc, desc (defaut desc). Exemples : "les 10 plus gros CA" → sort_by=chiffre_affaires, "top 10 par capital social" → sort_by=capital, "les plus anciennes" → sort_by=date_creation sort_order=asc.

Fonctionnalites NON disponibles actuellement : filtrage par profil LinkedIn des dirigeants. Si l'utilisateur demande ce filtre, indiquer poliment qu'il sera disponible prochainement.

Par defaut retourne 20 resultats (max 20 free / 100 pro par page). La pagination est reservee au plan Pro.

La reponse inclut un champ "_user_plan" ("free" ou "pro") indiquant le plan de l'utilisateur. Adapter le discours en consequence :

  • Si _user_plan="pro" : ne JAMAIS mentionner de limitations de plan. include_fields limite a 10 champs par recherche.

  • Si _user_plan="free" : include_fields est limite a 3 champs maximum par recherche. Tous les champs sont accessibles, mais limites en nombre. Choisir les 3 plus pertinents pour la question. Si des champs sont ignores, ils apparaitront dans include_fields_skipped.

Retourne : siren, denomination, code_ape, code_ape_lib, ville, departement, region, effectif, statut, date_creation, forme_juridique, est_filiale, groupe_parent + les champs demandes via include_fields. Si besoin d'historique multi-annees, enchainer avec get_financials.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoNombre de resultats par page (defaut 20, max selon plan)
queryYesNom, SIREN, mot-cle activite, ou "*" pour rechercher uniquement par filtres
villeNoNom de ville. Plusieurs villes separees par virgule. Ex: "Paris,Lyon,Bordeaux"
ca_minNoCA minimum en euros. Ex: 5000000 pour 5M
cursorNoCurseur de pagination retourne dans next_cursor de la reponse precedente. Ne pas fournir pour la premiere page.
radiusNoRayon de recherche en km (1-200) autour de latitude/longitude. Les trois vont ensemble : un triplet incomplet est refuse.
regionNoRegion. Ex: "Ile-de-France", "Bretagne", "Auvergne-Rhone-Alpes"
statutNoFiltre par statut au registre. DISSOLVED = dissoute ou radiee ; une societe en procedure collective reste ACTIVE jusqu'a sa radiation. Le statut ne se deduit PAS de date_radiation, absente sur environ 9,9M des 12,4M societes dissoutes.
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
sort_byNoTri des resultats. Par defaut "relevance". Ex: "chiffre_affaires" pour trier par CA.
code_nafNoCode NAF/APE. Exemples courants : - SaaS/Logiciel : 5829C, 6201Z, 6202A - Conseil IT : 6202A, 6209Z - Conseil management : 7022Z - Fintech : 6419Z, 6499Z - Biotech/Pharma : 2120Z, 7211Z - E-commerce : 4791A, 4791B - BTP : 4120A, 4120B - Restauration : 5610A, 5610C Plusieurs codes separes par virgule.
is_coteeNotrue pour les societes cotees en bourse uniquement, false pour les exclure
latitudeNoLatitude du centre pour une recherche par rayon (WGS84). A fournir avec longitude ET radius.
longitudeNoLongitude du centre pour une recherche par rayon (WGS84). A fournir avec latitude ET radius.
sort_orderNoOrdre de tri. Par defaut "desc". Ex: "asc" pour les plus petits CA en premier.
cagr_ca_minNoCroissance CA min sur 1 an en % (ex: 20 pour +20%)
code_postalNoCode postal du siege. Ex: "75001", "69001". Plusieurs separes par virgule.
departementNoCode departement. Ex: "75", "33", "69"
est_filialeNotrue = filiales uniquement, false = entreprises independantes uniquement
has_websiteNotrue pour ne retourner que les entreprises ayant un site web
effectif_minNoEffectif minimum (nombre de salaries)
filter_anneeNoAnnee de l'exercice financier. Filtre les entreprises dont le dernier bilan publie correspond a cette annee. Ex: 2024 pour ne voir que les bilans 2024. Combiner avec ca_min pour "societes ayant fait 5M de CA en 2024".
siren_groupeNoSIREN de la tete de groupe. Retourne toutes les societes du meme groupe. Ex: "352383715" pour lister toutes les filiales de LVMH.
dirigeant_nomNoNom de famille du dirigeant (recherche exacte). Ex: "GUILLEMOT". Combine avec dirigeant_prenom et dirigeant_naissance pour desambiguiser les homonymes.
groupe_parentNoNom du groupe parent (recherche textuelle). Ex: "LVMH", "Bouygues"
plan_en_coursNoSocietes executant un plan (redressement, sauvegarde ou cession). Distinct de procedure_collective : sous plan, la periode d'observation est terminee.
include_fieldsNoREQUIS des qu'un filtre financier est utilise. Champs financiers a inclure dans chaque resultat (CSV). Mapping filtre→champ : dividendes_min→dividendes_verses, tresorerie_min→tresorerie, dettes_financieres_min→dettes_financieres, dettes_fournisseurs_min→dettes_fournisseurs, ebitda_min→ebitda, marge_nette_min→marge_nette, marge_ebitda_min→marge_ebitda. Autres champs include_fields : ca, marge_brute, valeur_ajoutee, resultat_exploitation, resultat_net, total_actif, capitaux_propres, dette_nette, bfr, ratio_endettement, capacite_autofinancement, delai_paiement_clients_jours, delai_paiement_fournisseurs_jours, effectif_moyen, croissance_ca, croissance_ca_2ans, croissance_ca_3ans, croissance_ca_5ans, croissance_ebitda, croissance_ebitda_2ans, croissance_ebitda_3ans, croissance_ebitda_5ans, croissance_rn, croissance_rn_2ans, croissance_rn_3ans, croissance_rn_5ans, annee_financiere. Champs groupe (donnees publiques, disponibles sur tous les plans) : est_filiale, est_tete_de_groupe, groupe_parent, siren_groupe, nb_filiales_directes, societe_mere_etrangere. Champs cessions BODACC (donnees publiques) : nb_cessions, derniere_cession_date. Champs signaux BODACC (donnees publiques) : a_fusionne, nb_modifications_capital, nb_transferts_siege, nb_changements_denomination. Champs marches publics (donnees publiques DECP) : nb_marches_titulaire, montant_marches_titulaire. Champs subventions (donnees publiques) : nb_subventions, montant_subventions_total. Champs brevets (donnees publiques INPI) : nb_brevets, nb_brevets_actifs. Champs salons (donnees publiques) : nb_participations_salons. Champs ESS/Mission (donnees publiques) : est_societe_mission, est_ess. Champs participation de fonds (PE/VC) : a_fonds, nom_fonds, siren_fonds, type_fonds, annee_entree_fonds, nb_fonds_actuels. Champs LEI & provenance (cotees) : a_lei, lei, source_esef, source_gleif. Champs compteurs structuraux : nb_dirigeants, nb_etablissements, nb_representants_actifs, nb_fonds_actuels, nb_instruments_financiers. Champs evenements BODACC additionnels : nb_evt_modif_admin. Champs fraicheur evenementielle : derniere_evt_date, dernier_depot_date, dernier_marche_date. Mapping filtre avance→include_fields : capitaux_propres_min→capitaux_propres, total_actif_min→total_actif, dette_nette_min→dette_nette, bfr_min→bfr, resultat_exploitation_min→resultat_exploitation, ratio_endettement_min→ratio_endettement, nb_cessions_min→nb_cessions, nb_marches_min→nb_marches_titulaire, nb_brevets_min→nb_brevets. Sur le plan gratuit : seuls ca, resultat_net, effectif_moyen, croissance_ca, annee_financiere + les champs groupe + les champs BODACC/marches/subventions/brevets/salons/ESS sont disponibles. Verifier _user_plan dans la reponse pour connaitre le plan. Ex: filtre dividendes_min → include_fields="dividendes_verses"
tresorerie_minNoTresorerie minimum en euros
advanced_filtersNo
dirigeant_prenomNoPrenom du dirigeant. A utiliser avec dirigeant_nom. Ex: "Yves"
resultat_net_minNoResultat net minimum en euros
age_dirigeant_maxNoAge maximum des dirigeants (annees). Ex: 50 pour moins de 50 ans. Filtre si au moins un dirigeant correspond.
appartient_groupeNotrue = uniquement les societes appartenant a un groupe : filiales declarees OU soupcon de groupe fort (groupe_pont probable). Complement exact de independant_strict (ne pas envoyer les deux en meme temps).
date_creation_minNoDate de creation minimum (ISO). Ex: "2021-01-01" pour les entreprises creees apres 2021
groupe_pont_sirenNoSIREN de la tete de groupe INFEREE (soupcon de groupe via dirigeant-pont). Retourne toutes les societes rattachees au meme groupe soupconne (non declare). A distinguer de siren_groupe (lien capitalistique declare).
est_tete_de_groupeNotrue = uniquement les tetes de groupe
independant_strictNotrue = uniquement les societes reellement independantes : exclut les filiales declarees ET les societes avec un soupcon de groupe fort (groupe_pont probable). Les soupcons plus faibles (possible/soupcon) ne sont pas exclus.
dirigeant_naissanceNoNaissance du dirigeant pour desambiguiser les homonymes, granularite mois : format YYYY-MM. Ex: "1975-03" (un YYYY-MM-DD est accepte mais le jour est ignore). Pour une desambiguisation au jour pres, utiliser search_director_companies.
procedure_collectiveNoProcedure collective EN COURS (etat courant, pas l'historique). Valeurs: "liquidation", "redressement", "sauvegarde", "conciliation", "autre", "plan_redressement", "plan_sauvegarde", "plan_cession". Plusieurs separes par virgule. Une procedure cloturee ne matche pas : les societes dont la liquidation est close en sont exclues.
societe_mere_etrangereNotrue = filiales de groupes etrangers uniquement

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYes
_user_planNo
paginationNo
upgrade_hintNo
_quota_remaining_monthNo
_quota_remaining_todayNo
include_fields_skippedNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds substantial non-obvious runtime behavior: include_fields is mandatory for filtered values to appear, pagination is Pro-only, _user_plan drives plan-specific limits, and unknown advanced_filters keys are rejected rather than ignored. These are exactly the behavioral details an agent needs beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but the tool is complex with 40 parameters and multiple plan-dependent behaviors. It is well structured: the critical include_fields rule is front-loaded, and subsequent sections cover usage, filtering, sorting, unsupported features, pagination, and return fields. Some redundancy exists with the schema's own field descriptions, but the organization makes the information navigable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool this complex, the description is remarkably complete: it covers core search usage, advanced_filters, the include_fields dependency, plan-specific limits, sorting options, pagination, return fields, follow-up workflows, and known unsupported features. The presence of an output schema reduces the burden for return-value details, but the description still lists the default returned fields. Nothing essential to selecting or invoking this tool correctly appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 98%, so the baseline is high. The description adds critical cross-parameter semantics not obvious from individual schemas, especially the include_fields mappings (dividendes_min→dividendes_verses, nb_marches_min→nb_marches_titulaire, etc.) and the rule that financial/advanced filters require include_fields. It also clarifies that SIRETs are accepted in the query field and that advanced_filters keys must be read from the schema. This meaningfully supplements the schema without replacing it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a precise statement: 'Recherche d'entreprises francaises par nom, SIREN, activite, et criteres financiers.' This names the verb, resource, and key search dimensions, distinguishing it clearly from a pure director lookup. It also explicitly routes director-focused queries away from this tool to search_director_companies, further clarifying its scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: use this tool when a user looks up a company by name or explores a sector. It also gives a concrete workflow ('trouver le SIREN, puis utiliser get_company ou get_financials'), names the alternative for direct director searches, and advises proposing create_saved_search for recurring needs. This is strong, actionable routing that leaves little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.3/5.0
Disambiguation4/5

Most tools have clearly distinct resource+action purposes, and the descriptions explicitly contrast near-neighbor tools like search_companies vs resolve_companies and get_events vs search_events. The only real risk is the trio of director-oriented tools, especially search_director_companies vs search_companies with dirigeant filters, which requires careful reading to avoid misselection.

Naming Consistency5/5

All 18 tools follow a consistent snake_case verb_noun pattern: search_, get_, list_, create_, watch_, unwatch_, mark_, resolve_. Singular names are used for single-entity actions and plural for list/search operations, making the pattern predictable. There is no camelCase, vague verb, or style mixing.

Tool Count4/5

18 tools is slightly above the ideal 10-15 range, but the count is justified by the broad domain covering search, company intelligence, watchlists, and news. Each tool appears to earn its place, and there are no obvious stubs or redundant duplicates. It feels a bit heavy but not bloated.

Completeness3/5

The company intelligence surface is very complete: search, deep company data, financials, directors, group graphs, events, and credit risk are all covered. Watchlists also have full add/remove/list coverage, but saved searches have a notable lifecycle gap—create and list exist, yet there is no update, delete, or alert-toggle for existing saved searches, creating a management dead end.

Resources