Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.insourcia/insourcia

REMOTE · MCP.INSOURCIA.IO · SCANNED SEP 21

Search French companies: financials, directors, ownership, M&A and insolvency events.

Available components

−1 this week 84 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security78
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
  • HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
  • HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
  • DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
  • The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
Schema Quality & AI Usability74
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 11651 tokens (~613/item across 19 items; 19 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
  • Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage93
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 74% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 19 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the io.insourcia/insourcia MCP server?

io.insourcia/insourcia is a hosted endpoint at https://mcp.insourcia.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.insourcia.io

# add to Claude Code
claude mcp add --transport http io-insourcia-insourcia 'https://mcp.insourcia.io/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "io-insourcia-insourcia": {
      "url": "https://mcp.insourcia.io/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "io-insourcia-insourcia": {
      "type": "http",
      "url": "https://mcp.insourcia.io/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.io-insourcia-insourcia]
url = "https://mcp.insourcia.io/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-insourcia-insourcia": {
      "type": "remote",
      "url": "https://mcp.insourcia.io/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add io-insourcia-insourcia --url 'https://mcp.insourcia.io/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  io-insourcia-insourcia:
    url: "https://mcp.insourcia.io/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "io-insourcia-insourcia": {
      "Transport": "http",
      "Url": "https://mcp.insourcia.io/mcp"
    }
  }
}
# add to Vellum
assistant mcp add io-insourcia-insourcia -t streamable-http -u 'https://mcp.insourcia.io/mcp'
// mcp.json
{
  "mcpServers": {
    "io-insourcia-insourcia": {
      "type": "http",
      "url": "https://mcp.insourcia.io/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 21 Sept 26 +1
    • Tool “get_events” rewrote its description, which is the text the model reads security
  • 20 Sept 26 0
    • Tool “search_directors” rewrote its description, which is the text the model reads security
    • New tool “reveal_director_email” functional
    • “resolve_companies” added an optional parameter “shared_domain” cosmetic
  • 19 Sept 26 0
    • Tool “get_company” rewrote its description, which is the text the model reads security
    • Tool “get_company_graph” rewrote its description, which is the text the model reads security
    • Tool “get_events” rewrote its description, which is the text the model reads security
    • Tool “get_financials” rewrote its description, which is the text the model reads security
    • Tool “resolve_companies” rewrote its description, which is the text the model reads security
    • Tool “search_companies” rewrote its description, which is the text the model reads security
    • Tool “search_events” rewrote its description, which is the text the model reads security
    • Tool coverage: 99% → 73% functional
    • Schema quality: 816 → 615 functional
    • “search_events” added an optional parameter “ville” cosmetic
    • “create_saved_search” reworded the description of “age_dirigeant_max” cosmetic
    • “create_saved_search” reworded the description of “age_dirigeant_min” cosmetic
    • “create_saved_search” reworded the description of “appartient_groupe” cosmetic
    • “create_saved_search” reworded the description of “ca_max” cosmetic
    • “create_saved_search” reworded the description of “ca_min” cosmetic
    • “create_saved_search” reworded the description of “cagr_ca_max” cosmetic
    • “create_saved_search” reworded the description of “cagr_ca_min” cosmetic
    • “create_saved_search” reworded the description of “code_naf” cosmetic
    • “create_saved_search” reworded the description of “code_postal” cosmetic
    • “create_saved_search” reworded the description of “credit_grade” cosmetic
    • “create_saved_search” reworded the description of “credit_scored” cosmetic
    • “create_saved_search” reworded the description of “date_creation_max” cosmetic
    • “create_saved_search” reworded the description of “date_creation_min” cosmetic
    • “create_saved_search” reworded the description of “departement” cosmetic
    • “create_saved_search” reworded the description of “dirigeant_naissance” cosmetic
    • “create_saved_search” reworded the description of “dirigeant_nom” cosmetic
    • “create_saved_search” reworded the description of “dirigeant_prenom” cosmetic
    • “create_saved_search” reworded the description of “effectif_max” cosmetic
    • “create_saved_search” reworded the description of “effectif_min” cosmetic
    • “create_saved_search” reworded the description of “est_filiale” cosmetic
    • “create_saved_search” reworded the description of “est_tete_de_groupe” cosmetic
    • “create_saved_search” reworded the description of “filter_annee” cosmetic
    • “create_saved_search” reworded the description of “groupe_parent” cosmetic
    • “create_saved_search” reworded the description of “groupe_pont_siren” cosmetic
    • “create_saved_search” reworded the description of “has_website” cosmetic
    • “create_saved_search” reworded the description of “independant_strict” cosmetic
    • “create_saved_search” reworded the description of “is_cotee” cosmetic
    • “create_saved_search” reworded the description of “latitude” cosmetic
    • “create_saved_search” reworded the description of “longitude” cosmetic
    • “create_saved_search” reworded the description of “plan_en_cours” cosmetic
    • “create_saved_search” reworded the description of “procedure_collective” cosmetic
    • “create_saved_search” reworded the description of “radius” cosmetic
    • “create_saved_search” reworded the description of “region” cosmetic
    • “create_saved_search” reworded the description of “resultat_net_max” cosmetic
    • “create_saved_search” reworded the description of “resultat_net_min” cosmetic
    • “create_saved_search” reworded the description of “siren_groupe” cosmetic
    • “create_saved_search” reworded the description of “societe_mere_etrangere” cosmetic
    • “create_saved_search” reworded the description of “statut” cosmetic
    • “create_saved_search” reworded the description of “tresorerie_max” cosmetic
    • “create_saved_search” reworded the description of “tresorerie_min” cosmetic
    • “create_saved_search” reworded the description of “ville” cosmetic
    • “search_companies” reworded the description of “include_fields” cosmetic
  • 18 Sept 26 +1
    • Tool “resolve_companies” rewrote its description, which is the text the model reads security
  • 17 Sept 26 −4
    • HTTPS: pass → unverified security
    • Tool “get_directors” rewrote its description, which is the text the model reads security
    • Tool “search_directors” rewrote its description, which is the text the model reads security
  • 16 Sept 26 0
    • Tool “get_news” rewrote its description, which is the text the model reads security
  • 15 Sept 26 +1
    • A breaking change shipped without a version bump: still 1.0.0 security
    • Tool “get_companies” was removed security
    • Tool “get_company_graphs” was removed security
    • Tool “get_credit_risks” was removed security
    • Tool “get_directors_batch” was removed security
    • Tool “get_events_batch” was removed security
    • Tool “get_financials_batch” was removed security
    • Tool “get_company” rewrote its description, which is the text the model reads security
    • Tool “get_company_graph” rewrote its description, which is the text the model reads security
    • Tool “get_credit_risk” rewrote its description, which is the text the model reads security
    • Tool “get_directors” rewrote its description, which is the text the model reads security
    • Tool “get_events” rewrote its description, which is the text the model reads security
    • Tool “get_financials” rewrote its description, which is the text the model reads security
    • Schema quality: 637 → 805 functional
    • “get_company” added an optional parameter “sirens” cosmetic
    • “get_company_graph” added an optional parameter “sirens” cosmetic
    • “get_credit_risk” added an optional parameter “sirens” cosmetic
    • “get_directors” added an optional parameter “sirens” cosmetic
    • “get_events” added an optional parameter “sirens” cosmetic
    • “get_financials” added an optional parameter “sirens” cosmetic
    • “get_company_graph” reworded the description of “depth” cosmetic
    • “get_directors” reworded the description of “limit” cosmetic
    • “get_directors” reworded the description of “offset” cosmetic
    • “get_events” reworded the description of “limit” cosmetic
    • “get_events” reworded the description of “offset” cosmetic
    • “get_company” made “siren” optional cosmetic
    • “get_company_graph” made “siren” optional cosmetic
    • “get_credit_risk” made “siren” optional cosmetic
    • “get_directors” made “siren” optional cosmetic
    • “get_events” made “siren” optional cosmetic
    • “get_financials” made “siren” optional cosmetic
  • 14 Sept 26 0
    • Tool “get_company” rewrote its description, which is the text the model reads security
    • Tool “get_events” rewrote its description, which is the text the model reads security
    • Tool “get_financials” rewrote its description, which is the text the model reads security
    • Tool “resolve_companies” rewrote its description, which is the text the model reads security
    • Tool “search_companies” rewrote its description, which is the text the model reads security
    • Schema quality: 718 → 637 functional
    • New tool “get_credit_risks” functional
    • New tool “get_companies” functional
    • New tool “get_company_graphs” functional
    • New tool “get_directors_batch” functional
    • New tool “get_events_batch” functional
    • New tool “get_financials_batch” functional
    • “get_company” reworded the description of “include_fields” cosmetic
    • “search_companies” reworded the description of “include_fields” cosmetic
    • “search_companies” reworded the description of “limit” cosmetic
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Probed https://mcp.insourcia.io/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=insourcia.io CN=YE2,O=Let's Encrypt,C=US 16 Sept 2026 15 Dec 2026 ECDSA 256 ECDSA-SHA384 5345eb9b0b99dcebb5d15d4337c3823320c
SANs: *.insourcia.io, insourcia.io
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.insourcia.io. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
insourcia.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://mcp.insourcia.io/.well-known/oauth-protected-resource"

Bearer resource_metadata="https://mcp.insourcia.io/.well-known/oauth-protected-resource"

Protected resource metadata

Document https://mcp.insourcia.io/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://mcp.insourcia.io/mcp
Authorisation server https://mcp.insourcia.io

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.insourcia.io/mcp Verified 200
http (plaintext) http://mcp.insourcia.io/mcp Inconclusive 405
MCP tools · 19 exposed · ~11,651 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
create_saved_search ~784

Creation d'une recherche sauvegardee pour l'utilisateur, visible dans l'app Insourcia (page /news - Veille). Utiliser cet outil quand l'utilisateur veut SAUVEGARDER une recherche pour la suivre dans le temps (veille marche, suivi d'un secteur, pipeline de cibles) - pas pour une recherche ponctuelle (utiliser search_companies). Fonctionnement : - Les filtres acceptes sont les MEMES que search_companies (query texte libre + filtres geographie/secteur/financier/dirigeants/groupe + advanced_filters JSON). Au moins un critere est requis. - Idempotent : si une recherche sauvegardee ACTIVE du meme nom existe deja pour l'utilisateur, elle est renvoyee telle quelle (already_exists=true), sans doublon et sans modifier son alerte. - enable_alert=true active une alerte quotidienne : l'utilisateur est notifie (page /news + email) quand de NOUVELLES societes entrent dans les criteres de la recherche. A la creation, une notification initiale recapitule les societes entrees dans les 90 derniers jours ; ensuite seules les entrees futures declenchent. Reponse : { id, name, url (page /news), result_count (nombre de societes matchant actuellement, null si indisponible), filters (filtres normalises stockes, absent sur le hit idempotent), already_exists, alert_enabled }.

NameTypeReqDescription
advanced_filters
age_dirigeant_maxnumber
age_dirigeant_minnumber
appartient_groupeboolean
ca_maxnumber
ca_minnumber
cagr_ca_maxnumber
cagr_ca_minnumber
code_nafstring
code_postalstring
credit_gradearray
credit_scoredboolean
date_creation_maxstring
date_creation_minstring
departementstring
dirigeant_naissancestring
dirigeant_nomstring
dirigeant_prenomstring
effectif_maxnumber
effectif_minnumber
enable_alertbooleantrue pour etre notifie quotidiennement des nouvelles societes qui matchent la recherche. Defaut: false.
est_filialeboolean
est_tete_de_groupeboolean
filter_anneenumber
groupe_parentstring
groupe_pont_sirenstring
has_websiteboolean
independant_strictboolean
is_coteeboolean
latitudenumber
longitudenumber
namestringyesNom de la recherche sauvegardee, court et parlant. Ex: "SaaS Bretagne CA > 5M". 1-255 caracteres.
plan_en_coursboolean
procedure_collectivestring
querystringNom, SIREN, mot-cle activite, ou "*" pour rechercher uniquement par filtres
radiusinteger
regionstring
resultat_net_maxnumber
resultat_net_minnumber
siren_groupestring
societe_mere_etrangereboolean
statutstring
tresorerie_maxnumber
tresorerie_minnumber
villestring
NameTypeReqDescription
alert_enabledbooleanyes
already_existsbooleanyes
filtersobject
idstringyes
namestringyes
result_countyes
urlstringyes

No examples provided.

get_company ~651

Fiche complete d'une entreprise francaise identifiee par son SIREN. Pour plusieurs entreprises, le parametre sirens sert jusqu'a 10 fiches en une requete, au lieu d'un appel par societe. COUT : 1 appel de quota par societe, en lot comme a l'unite. Pour comparer beaucoup de societes, search_companies rend les memes champs en include_fields (dont description_activite et site_internet), 20 societes par appel. Contenu : 1. Identite - forme juridique, dates de creation et d'immatriculation, date_cloture_exercice, capital, siege complet, activite (NAF, objet_social, description), effectif, LEI si present ; successeur si radiee. 2. Financier - date_cloture et type_bilan (K consolide, C social, S simplifie : un CA K n'est pas comparable a un CA C), CA, croissance, resultat net, marges, EBITDA, dette nette, effectif moyen. 3. Contact - site web, telephone, email et LinkedIn (pro). 4. Gouvernance - dirigeants principaux. 5. Groupe - est_filiale, parents direct et ultime, societe_mere, tete de groupe (siren_groupe, a passer a search_companies pour lister le groupe), nb filiales. Absent = independante. 6. IFRS - agregats consolides des cotees. 7. Signaux - cotation, procedures collectives, fusions, modifications de capital, transferts de siege, changements de denomination, ESS, societe a mission, dernier depot, radiation. 8. Score credit - grade AAA a D, probabilites de defaut 3/6/12 mois, facteurs ; detail dans get_credit_risk. Null si non scoree. 9. Cessions - historique (date, type, cedant, cessionnaire, prix). 10. Donnees publiques - marches publics, subventions, brevets, salons. 11. Fonds PE/VC - nom_fonds, siren_fonds (chainable vers get_company), annee d'entree. Pour approfondir : get_financials (historique), get_directors (mandats), get_events (annonces BODACC), get_company_graph (structure). watch_company met la societe sous surveillance.

NameTypeReqDescription
include_fieldsarrayChamps root/financiers supplementaires a injecter dans la fiche (parite avec search_companies). Exemple : ['nb_dirigeants','source_esef','dernier_depot_date']. Limite par le plan (3 sur free, 10 sur…
sirenstringSIREN a 9 chiffres
sirensarrayPlusieurs SIREN en un appel, 10 au maximum, au lieu de repeter l'appel societe par societe. Exclusif avec siren. Le cout de quota est identique (1 par societe), ce qui change est le nombre de requete…

Structured output declared, but exposes no named fields.

No examples provided.

get_company_graph ~662

Cartographie des entites autour d'UNE entreprise (par SIREN) : graphe oriente construit sur les mandats RCS/RNE et les liens de groupe. Pour la structure d'un groupe : holdings, filiales, societes soeurs, dirigeants communs. Complementaire de get_directors (mandats d'une societe) et de search_director_companies (empreinte d'une personne). Reponse : nodes[] (entreprises "co:<siren>", personnes "pp:<nom>|<prenom>|<AAAA-MM>", parents etrangers "co:ext:<slug>") et edges[] orientees : - mandat_pm : societe dirigeante -> societe dirigee - filiale : mere -> filiale (associe unique RNE) - parent_ultime : parent ultime (GLEIF) -> societe - mandat_pp : personne -> societe dirigee A savoir : - Pas de pourcentage de detention. Les commissaires aux comptes sont exclus. - depth=1 : liens directs. depth=2 (defaut) : expansion depuis les parents et societes dirigeantes, jamais depuis les filiales. - Les dirigeants de la racine tirent leurs autres societes (holdings personnelles, SCI, structures soeurs). expand_persons=false donne un graphe purement capitalistique. Un mandataire professionnel (plus de 50 mandats, ou cabinet comptable) n'est pas etendu : voir meta.truncated.hub_directors. - Plafonds par noeud et max_nodes : meta.truncated signale un graphe partiel. Filtres : include_personnes, include_sci, include_ceased, expand_persons. La racine n'est jamais filtree. Pour plusieurs entreprises, le parametre sirens sert 3 graphes en une requete (2 en depth=2), a depth=1 par defaut : une traversee coute 3 a 5 secondes et ne se parallelise pas.

NameTypeReqDescription
depthintegerProfondeur du graphe (1 = liens directs, 2 = defaut pour une societe seule, 1 = defaut avec sirens)
expand_personsbooleanfalse = ne pas etendre le graphe via les autres societes des dirigeants de la racine (defaut: true)
include_ceasedbooleanfalse = exclure les societes cessees
include_personnesbooleanInclure les dirigeants personnes physiques. Defaut: true
include_scibooleanfalse = exclure les SCI (categorie juridique 65xx)
max_nodesintegerNombre max de noeuds (defaut 100)
sirenstringSIREN a 9 chiffres de la societe racine
sirensarrayPlusieurs SIREN en un appel, 3 au maximum, au lieu de repeter l'appel societe par societe. Exclusif avec siren. Le cout de quota est identique (1 par societe), ce qui change est le nombre de requetes…

Structured output declared, but exposes no named fields.

No examples provided.

get_credit_risk ~251

Score de risque credit d'UNE entreprise francaise (par SIREN). Retourne le grade de risque (AAA -> D), la probabilite de defaut a 3/6/12 mois (taux du grade, master-scale) et les 5 facteurs principaux (aggravants / attenuants). Disponible sur tous les plans. Reponses possibles : - entreprise scoree : { scorable:true, risk:{ grade, grade_default_rate, factors, as_of, model } } - entreprise non scoree (pas de comptes recents) : { scorable:false, risk:null } - SIREN inconnu : erreur 404. Use case : risque fournisseur, due diligence. Pour scorer un portefeuille, le parametre sirens rend jusqu'a 10 scores en une requete.

NameTypeReqDescription
sirenstringSIREN a 9 chiffres
sirensarrayPlusieurs SIREN en un appel, 10 au maximum, au lieu de repeter l'appel societe par societe. Exclusif avec siren. Le cout de quota est identique (1 par societe), ce qui change est le nombre de requete…

Structured output declared, but exposes no named fields.

No examples provided.

get_directors ~508

Detail des dirigeants d'une entreprise avec structure hierarchique. Retourne les dirigeants classes par importance (decisionnaires en premier). Deux types d'entrees : - **PP** (personne physique) : nom, prenom, role, annee de naissance, date_debut_mandat, date_fin_mandat, linkedin_url - **PM** (personne morale) : denomination, SIREN, role, date_debut_mandat, date_fin_mandat, avec un tableau representants[] listant les personnes physiques qui la representent (nom, prenom, role dans la PM, dates de mandat) Inclut les commissaires aux comptes (role="CAC") avec leur date de debut/fin de mandat. Utile pour identifier le mandataire actif vs sortant. linkedin_url est le profil LinkedIn de la personne physique, present uniquement quand un profil a ete apparie avec certitude (nom + prenom + date de naissance). La clef est absente quand aucun profil n'est confirme : c'est le cas courant, pas une anomalie. Reserve au plan pro. Par defaut, seuls les mandataires actifs sont retournes. Utiliser include_inactive=true pour inclure l'historique. Pour plusieurs entreprises, le parametre sirens sert jusqu'a 10 societes en une requete. Le lot rend les 20 premiers mandataires de CHAQUE societe et signale celles qu'il a tronquees : limit et offset n'ont pas de sens sur dix societes a la fois, et l'appel unitaire reste la pour derouler l'historique complet d'une seule.

NameTypeReqDescription
include_inactivebooleanInclure les mandataires inactifs (historique). Defaut: false
limitnumberNombre de resultats (defaut 20, max 100). Sans effet avec sirens : le lot sert 20 lignes par societe.
offsetnumberPagination (defaut 0). Sans effet avec sirens, qui ne pagine pas.
sirenstringSIREN a 9 chiffres
sirensarrayPlusieurs SIREN en un appel, 10 au maximum, au lieu de repeter l'appel societe par societe. Exclusif avec siren. Le cout de quota est identique (1 par societe), ce qui change est le nombre de requete…

Structured output declared, but exposes no named fields.

No examples provided.

get_events ~416

Timeline unifiee des evenements d'UNE entreprise (par SIREN). Flux chronologique decroissant qui reunit : - une ligne par annonce BODACC de modification (forme juridique, dirigeants, siege, activite, capital, denomination, dissolution), avec libelle, sous_type et source_url vers l'avis officiel ; - une ligne par depot des comptes (un par exercice) et par immatriculation ; - les cessions (y compris cote cedant d'une vente) et les procedures collectives ; - la radiation, l'augmentation de capital, la creation ; - une ligne par annee de marches publics, les subventions ; - sur 12 mois, les mouvements de dirigeants et changements de groupe ou de note credit (types dirigeant_*, changement_*). Pour plusieurs entreprises, le parametre sirens sert jusqu'a 10 timelines en une requete, 20 evenements par societe et sans pagination. Pour de la prospection cross-SIREN sans liste de depart, utiliser search_events. COUT : 1 appel de quota par societe.

NameTypeReqDescription
date_maxstringDate max (YYYY-MM-DD)
date_minstringDate min (YYYY-MM-DD)
limitnumberNombre d'evenements (defaut 50, max 200). Sans effet avec sirens : le lot sert 20 evenements par societe.
offsetnumberPagination (defaut 0). Sans effet avec sirens, qui ne pagine pas.
sirenstringSIREN a 9 chiffres
sirensarrayPlusieurs SIREN en un appel, 10 au maximum, au lieu de repeter l'appel societe par societe. Exclusif avec siren. Le cout de quota est identique (1 par societe), ce qui change est le nombre de requete…
typestringFiltrer par type(s) d'evenement (CSV)

Structured output declared, but exposes no named fields.

No examples provided.

get_financials ~668

Historique financier detaille d'une entreprise sur plusieurs exercices. COUT : 1 appel de quota par societe, reponse de ~10 a 45 Kio selon detail et years. Pour le seul dernier exercice (ca, ebitda, resultat_exploitation, resultat_net, effectif_moyen), search_companies le rend en include_fields, 20 societes par appel. Pour plusieurs entreprises, le parametre sirens sert jusqu'a 10 historiques en une requete (3 en detail=full). Le lot part en compact sauf demande explicite, y compris sur Pro, et ne pagine pas. Niveau de detail : - compact (defaut sur free, ~40 champs par exercice) : compte de resultat complet, bilan abrege PCG, ratios (tresorerie, dette nette, BFR, marges, endettement, CAF, delais de paiement), dividendes, effectif moyen. - full (defaut sur Pro, ~140 champs) : tous les postes. Refuse sur free (403). - fields : ajoute quelques champs a compact sans gonfler la reponse, ex fields=["roe","bfr_jours_ca","autonomie_financiere"]. Plus de 130 disponibles : ratios, postes detailles, immobilisations brutes, reserves, croissances (cagr_ebitda_3ans...). type_bilan : K consolide, C social, S simplifie. Quand la fenetre melange plusieurs types, un seul est garde et type_bilan_mixte l'indique ; type_bilan force un type. Les cotees ont en plus un bloc ifrs. Rendu : _layout decrit par section l'ordre PCG des lignes, leur libelle (line.label), leur indentation (level) et leur nature (kind) ; exercices[annee][line.key] porte la valeur, null = poste absent. not_applicable_pcg signale un bilan de banque ou d'assurance. Montants en euros.

NameTypeReqDescription
detailstringcompact (~40 champs, defaut sur plan free) ou full (~140 champs, audit exhaustif, defaut sur plan pro). Sans valeur, le serveur applique le defaut du plan de l'utilisateur.
fieldsarrayChamps financiers supplementaires a injecter dans chaque exercice. Exemple : ['roe','bfr_jours_ca','autonomie_financiere']. Limite par le plan (3 sur free, illimite sur Pro).
sirenstringSIREN a 9 chiffres
sirensarrayPlusieurs SIREN en un appel, 10 au maximum, au lieu de repeter l'appel societe par societe. Exclusif avec siren. Le cout de quota est identique (1 par societe), ce qui change est le nombre de requete…
type_bilanstringK (consolide), C (complet/social), S (simplifie). Sans filtre : meilleure priorite (K > C > S)
yearsnumberNombre d'exercices (defaut 3, max 10)

Structured output declared, but exposes no named fields.

No examples provided.

get_news ~614

Veille quotidienne de l'utilisateur : le fil d'actualite de ses societes surveillees, tel qu'il apparait sur la page /news de l'app Insourcia. Utiliser cet outil pour repondre a "quoi de neuf sur ma veille ?", "qu'est-ce qui a bouge sur mes societes ?", "resume-moi ma veille de la semaine", ou avant de rediger un point hebdomadaire. Contenu : les alertes reellement delivrees (email/push) ET l'activite des societes des listes de veille (changements de dirigeants, annonces BODACC : procedures collectives, cessions, radiations...), fusionnees et dedupliquees, les plus recentes d'abord. Couvre toutes les listes de l'utilisateur, tous espaces confondus (source.espace indique lequel). Chaque ligne est HYBRIDE : "label" donne la phrase francaise prete a lire (identique a l'app) et "type"/"before"/"after"/"siren"/"date" donnent les champs structures pour filtrer ou raisonner. "date" est le jour de DETECTION (axe de fraicheur) ; "effective_date", quand present, est la date d'effet juridique. unread_only=true ne renvoie que ce que l'utilisateur n'a pas encore lu. "read_key" identifie chaque ligne : la passer a mark_news_read pour la marquer lue. truncated=true signale plus de signaux que la limite demandee ; since_days et event_types permettent de resserrer (pas de pagination sur ce fil). Si counts_are_partial=true, "total" et "unread_count" sont des PLANCHERS et non des totaux : le fil est compose sur une fenetre bornee (les 100 dernieres notifications et les 100 derniers evenements), et cette fenetre etait pleine. hidden_by_plan, quand present, compte les signaux non retournes parce que le plan actuel ne donne acces qu'aux 10 signaux les plus recents, exactement comme la page /news. Un fil ainsi tronque n'est pas complet, et hidden_by_plan dit de combien. Reponse : { news: [...], total, unread_count, last_seen_at, since_days, truncated, url (page /news) }. news vide = aucun signal sur la periode, ce n'est pas une erreur.

NameTypeReqDescription
event_typesarrayFiltre sur les types d'evenements bruts. Ex: ["dirigeant_changed", "procedure_collective", "cession", "radiation"].
limitintegerNombre max de signaux retournes (defaut 50, max 100)
since_daysintegerProfondeur d'historique en jours (defaut 90, max 365)
unread_onlybooleantrue = uniquement les signaux non lus par l'utilisateur. Defaut : false.
NameTypeReqDescription
counts_are_partialboolean
hidden_by_plannumber
last_seen_atyes
newsarrayyes
since_daysnumberyes
totalnumberyes
truncatedbooleanyes
unread_countnumberyes
urlstringyes

No examples provided.

list_saved_searches ~195

Liste des recherches sauvegardees de l'utilisateur (page /news - Veille de l'app Insourcia). Utiliser cet outil : - AVANT create_saved_search, pour verifier qu'une veille equivalente n'existe pas deja et eviter les doublons de nom. - Pour repondre a "quelles veilles ai-je ?" / "quelles sont mes recherches sauvegardees ?". Reponse : { saved_searches: [{ id, name, filters (filtres normalises stockes), result_count (nombre de societes matchant, null si indisponible), alert_enabled (alerte quotidienne nouvelles societes active ou non), url (page /news), created_at }], total }. Les recherches sont triees de la plus recente a la plus ancienne. Liste vide = aucune veille configuree.

NameTypeReqDescription
limitintegerNombre max de recherches retournees (defaut 100)
NameTypeReqDescription
saved_searchesarrayyes
totalnumberyes

No examples provided.

list_watched_companies ~268

Liste des societes surveillees par l'utilisateur dans ses listes de veille (page /lists de l'app Insourcia). Utiliser cet outil : - AVANT watch_company, pour verifier si une societe est deja surveillee et connaitre les listes existantes (leur nom exact). - Pour repondre a "quelles societes je surveille ?" / "qu'y a-t-il dans ma liste X ?". list_name (optionnel) restreint a une liste precise (nom exact). Sans list_name, toutes les listes de l'utilisateur sont retournees. Un list_name qui ne matche aucune liste renvoie companies: [] et total: 0 (ce n'est pas une erreur : simplement aucune societe surveillee sous ce nom). Reponse : { companies: [{ siren, company_name, naf_code, region, list_id, list_name, added_at }] (aplaties toutes listes confondues, plus recentes d'abord), lists: [{ id, name, company_count, alert_enabled }], total, url (page /lists) }.

NameTypeReqDescription
list_namestringNom exact de la liste a consulter. Ex: "Surveillance", "Cibles M&A". Omis = toutes les listes.
NameTypeReqDescription
companiesarrayyes
listsarrayyes
totalnumberyes
urlstringyes

No examples provided.

mark_news_read ~270

Marque comme lus des signaux precis de la veille de l'utilisateur (page /news de l'app Insourcia). Utiliser cet outil quand l'utilisateur indique avoir traite des signaux ("ok j'ai vu", "marque-les comme lus"). Fonctionnement : - Prend les "read_key" renvoyees par get_news, telles quelles ; leur format varie selon le type de signal et n'est pas reconstructible. - Idempotent : une cle deja lue est ignoree (comptee dans already_read), sans erreur ni doublon. - Marquage cible uniquement : il n'existe volontairement pas de "tout marquer lu" via l'API, pour ne pas effacer par erreur la file de tri de l'utilisateur. - N'efface rien : la ligne reste visible dans l'app, elle passe simplement de "nouveau" a "lu". - Ne modifie pas la date de derniere visite de l'utilisateur sur /news. Reponse : { marked_read, already_read, unread_remaining, url (page /news) }.

NameTypeReqDescription
read_keysarrayyesCles "read_key" recopiees telles quelles depuis la reponse de get_news (leur format varie selon le type de signal). Max 500 par appel.
NameTypeReqDescription
already_readnumberyes
marked_readnumberyes
unread_remainingnumberyes
urlstringyes

No examples provided.

resolve_companies ~408

Rapprochement EN LOT de fiches mal identifiees (CRM, tableur, export CSV) vers leur SIREN. A utiliser pour une LISTE de societes a identifier ("retrouve les SIREN de ces 200 clients"). Pour UNE societe cherchee par son nom, search_companies, qui rend des resultats classes ; celui-ci rend une decision, et refuse de trancher quand il n'est pas sur. Chaque fiche revient avec un status : - resolved : SIREN certain. - review : plusieurs candidats plausibles ou nom trop generique ; les candidats sont retournes et le choix revient a l'utilisateur. - no_match : aucune correspondance. reason explique un review : ambiguous_candidates, weak_name_overlap, shared_domain (site partage par un reseau ; domain_company_count dit combien de societes, fournir un nom ou un code postal), missing_name, invalid_domain, domain_no_match, lookup_failed (panne a rejouer, PAS une absence de correspondance). Conseils : domain (domaine ou URL) resout seul quand il designe une seule societe. Le code postal double quasiment le taux de rapprochement. Un mot en trop dans le nom ("Carrefour Massy") nuit plus qu'un nom tronque. Un siren, siret ou numero de TVA francais est resolu sans recherche. COUT : 1 appel de quota par fiche soumise, quelle que soit sa forme. Retourne results[] (ordre d'entree, avec l'id fourni) et summary{total, resolved, review, no_match}.

NameTypeReqDescription
recordsarrayyesFiches a rapprocher, 200 maximum par appel
shared_domainstringDomaine porte par plusieurs societes : review (defaut) rend les candidats ; head rapproche vers la maison mere (groupe dominant, sinon plus gros CA), method=domain_head, confiance basse. Reserver aux…
NameTypeReqDescription
_credits_remainingnumber
_quota_remaining_monthnumber
_quota_remaining_todaynumber
_user_planstring
resultsarrayyes
summaryobjectyes

No examples provided.

reveal_director_email ~465

Revele l'email PROFESSIONNEL d'un dirigeant identifie (apres get_directors). Offres payantes uniquement (erreur plan_required sinon). COUT : 1 credit du quota mensuel par email trouve. Rien n'est debite si aucun email n'est trouve, ni si le meme email a deja ete revele par ce compte dans les 3 mois. quota_remaining est rendu a chaque reponse. OUTIL UNITAIRE : pas de variante par lot. Boucler sur une liste epuise le quota et declenche une limite horaire. LIRE deliverability_proven : true = adresse verifiee, utilisable ; false = domaine catch-all, existence de la boite non prouvee. email=null avec reason=not_found ou rejected_by_verification : aucun quota consomme, inutile de reessayer. DEUX VITESSES : avec un profil LinkedIn connu (rare), reponse en 10 a 15 s. Sans, la recherche par nom prend ~90 s : l'outil rend status="pending" et un retrieval_token ; RAPPELER l'outil avec ce SEUL parametre apres retry_after_seconds, tant que la reponse est pending. Jeton a usage unique, valable 15 min. Un appel pending ne consomme rien. Ni telephone ni email personnel. RESPONSABILITE : contact professionnel lie a la fonction. L'appelant devient responsable de traitement des reception : base legale, information de la personne au premier contact (mention fournie dans _notice), respect de toute opposition. Reconstituer un fichier est interdit et plafonne.

NameTypeReqDescription
first_namestringPrenom du dirigeant
last_namestringNom de famille tel que RENVOYE PAR get_directors (champ nom), pas le nom d'usage : un nom different fait repayer un contact deja enrichi.
retrieval_tokenstringJeton rendu par un appel precedent qui a repondu status=pending. Le fournir SEUL, sans siren ni nom, pour recuperer le resultat.
sirenstringSIREN a 9 chiffres de l'entreprise du dirigeant. Requis SAUF si retrieval_token est fourni.
NameTypeReqDescription
credits_usednumberyes
deliverability_provenboolean
email
quota_remaining
reasonstring
retrieval_tokenstring
retry_after_secondsnumber
sourcestring
statusstring
verification_statusstring

No examples provided.

search_companies ~3,012

Recherche d'entreprises francaises par nom, SIREN/SIRET, activite ou criteres (geographie, secteur, effectif, financier, dirigeants, groupe). Pour une societe citee par son nom : trouver le SIREN ici, puis get_company ou get_financials. Effectif et statut departagent les homonymes. - Le siren est dans chaque resultat : ne pas les repasser par resolve_companies (fiches sans identifiant). - Valeurs : un chiffre (ca, ebitda, resultat_net, effectif_moyen, signaux publics...) n'est retourne que s'il figure dans include_fields, meme quand il sert de filtre. 3 champs par recherche (free), 10 (pro). Un nom inconnu est liste dans include_fields_unknown : le corriger plutot que d'appeler get_company ligne par ligne. get_financials sert l'historique multi-annees. - Filtres simples au premier niveau, les deux bornes cote a cote (effectif_min et effectif_max ; idem ca, resultat_net, tresorerie, cagr_ca, date_creation, age_dirigeant). Criteres avances (ratios, CAGR, bilan, delais, signaux publics, fonds, CAC, comptes) dans advanced_filters ; une cle inconnue est rejetee (400). - Groupe : siren_groupe (valeur donnee par get_company) liste toutes les societes du groupe. - Dirigeant : dirigeant_nom + dirigeant_prenom (+ dirigeant_naissance). Inclut les dirigeants remontes via une personne morale ; mandats directs d'une personne : search_director_companies. - Tri : sort_by (relevance, chiffre_affaires, resultat_net, effectif_moyen, date_creation, capital) et sort_order. - Cessions : include_fields=nb_cessions,derniere_cession_date signale les societes a lire dans get_events. 20 resultats par defaut, max 20 (free) ou 100 (pro) ; pagination par cursor sur Pro. COUT : 1 appel de quota par tranche de 20 lignes servies ; la reponse donne _user_plan et le quota restant. Pour suivre la recherche dans le temps : create_saved_search. Retourne l'identite de base de chaque societe (siren, denomination, NAF, localisation, effectif, statut) + include_fields.

NameTypeReqDescription
advanced_filters
age_dirigeant_maxnumberAge maximum des dirigeants (annees). Ex: 50 pour moins de 50 ans. Filtre si au moins un dirigeant correspond.
age_dirigeant_minnumberAge minimum des dirigeants (annees). Ex: 60 pour 60 ans et plus. Filtre si au moins un dirigeant correspond.
appartient_groupebooleantrue = 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 t…
ca_maxnumberCA maximum en euros. Ex: 50000000 pour 50M
ca_minnumberCA minimum en euros. Ex: 5000000 pour 5M
cagr_ca_maxnumberCroissance CA max sur 1 an en % (ex: 50 pour +50%)
cagr_ca_minnumberCroissance CA min sur 1 an en % (ex: 20 pour +20%)
code_nafstringCode 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…
code_postalstringCode postal du siege. Ex: "75001", "69001". Plusieurs separes par virgule.
credit_gradearrayGrades de risque credit a garder (OR). Ex: ["CCC","D"] pour les societes a risque eleve, ["AAA","AA"] pour les plus solides. ~900k societes scorees (celles avec un bilan recent) ; les non scorees son…
credit_scoredbooleantrue pour ne garder que les societes qui ont un score credit, false pour les exclure
cursorstringCurseur de pagination retourne dans next_cursor de la reponse precedente. Ne pas fournir pour la premiere page.
date_creation_maxstringDate de creation maximum (ISO). Ex: "2021-12-31" pour les entreprises creees avant 2022
date_creation_minstringDate de creation minimum (ISO). Ex: "2021-01-01" pour les entreprises creees apres 2021
departementstringCode departement. Ex: "75", "33", "69"
dirigeant_naissancestringNaissance 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,…
dirigeant_nomstringNom de famille du dirigeant (recherche exacte). Ex: "GUILLEMOT". Combine avec dirigeant_prenom et dirigeant_naissance pour desambiguiser les homonymes.
dirigeant_prenomstringPrenom du dirigeant. A utiliser avec dirigeant_nom. Ex: "Yves"
effectif_maxnumberEffectif maximum (nombre de salaries)
effectif_minnumberEffectif minimum (nombre de salaries)
est_filialebooleantrue = filiales uniquement, false = entreprises independantes uniquement
est_tete_de_groupebooleantrue = uniquement les tetes de groupe
filter_anneenumberAnnee 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…
groupe_parentstringNom du groupe parent (recherche textuelle). Ex: "LVMH", "Bouygues"
groupe_pont_sirenstringSIREN 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 capitalis…
has_websitebooleantrue pour ne retourner que les entreprises ayant un site web
include_fieldsstringChamps a ajouter a chaque resultat (CSV). Une valeur filtree n'apparait que si son champ est demande. Montants et ratios : le champ porte le nom du filtre sans _min/_max (ebitda_min -> ebitda, capita…
independant_strictbooleantrue = 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/soup…
is_coteebooleantrue pour les societes cotees en bourse uniquement, false pour les exclure
latitudenumberLatitude du centre pour une recherche par rayon (WGS84). A fournir avec longitude ET radius.
limitnumberNombre de resultats par page (defaut 20 ; max 20 sur free, 100 sur pro). Facture 1 appel de quota par tranche de 20 lignes : limit=100 coute 5 appels.
longitudenumberLongitude du centre pour une recherche par rayon (WGS84). A fournir avec latitude ET radius.
plan_en_coursbooleanSocietes executant un plan (redressement, sauvegarde ou cession). Distinct de procedure_collective : sous plan, la periode d'observation est terminee.
procedure_collectivestringProcedure collective EN COURS (etat courant, pas l'historique). Valeurs: "liquidation", "redressement", "sauvegarde", "conciliation", "autre", "accord_homologue", "plan_redressement", "plan_sauvegard…
querystringyesNom, SIREN, mot-cle activite, ou "*" pour rechercher uniquement par filtres. Operateurs acceptes : "expression exacte", OR en majuscules (ou |) entre deux termes, -terme pour exclure, parentheses pou…
radiusintegerRayon de recherche en km (1-200) autour de latitude/longitude. Les trois vont ensemble : un triplet incomplet est refuse.
regionstringRegion. Ex: "Ile-de-France", "Bretagne", "Auvergne-Rhone-Alpes"
resultat_net_maxnumberResultat net maximum en euros
resultat_net_minnumberResultat net minimum en euros
siren_groupestringSIREN de la tete de groupe. Retourne toutes les societes du meme groupe. Ex: "352383715" pour lister toutes les filiales de LVMH.
societe_mere_etrangerebooleantrue = filiales de groupes etrangers uniquement
sort_bystringTri des resultats. Par defaut "relevance". Ex: "chiffre_affaires" pour trier par CA.
sort_orderstringOrdre de tri. Par defaut "desc". Ex: "asc" pour les plus petits CA en premier.
statutstringFiltre 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 enviro…
tresorerie_maxnumberTresorerie maximum en euros
tresorerie_minnumberTresorerie minimum en euros
villestringNom de ville. Plusieurs villes separees par virgule. Ex: "Paris,Lyon,Bordeaux"
NameTypeReqDescription
_credits_remainingnumber
_quota_remaining_monthnumber
_quota_remaining_todaynumber
_user_planstring
dataarrayyes
include_fields_hintstring
include_fields_skippedarray
include_fields_unknownarray
paginationobject
upgrade_hintstring

No examples provided.

search_director_companies ~461

Cartographie de l'empreinte corporate d'UNE personne physique : toutes les entreprises ou elle detient un mandat direct, identifiee de facon non ambigue par nom + prenom + date de naissance exacte. C'est le pivot "personne -> entreprises", complement de search_directors (trouver la personne) et get_directors (dirigeants d'une entreprise). Cas d'usage M&A : tracer le perimetre de societes d'un fondateur/dirigeant (holdings, SCI, filiales) sans confondre les homonymes. Parametres TOUS REQUIS : nom, prenom, date_naissance (format YYYY-MM-DD). La date de naissance est obligatoire : c'est elle qui distingue la bonne personne de ses homonymes. L'obtenir au prealable via search_directors ou get_directors (champ date_naissance). Reponse : dirigeant { nom, prenom, date_naissance, annee_naissance } + data[] = entreprises { siren, denomination, role, ville, departement, code_ape, forme_juridique, est_tete_de_groupe } + pagination { total, returned, limit }. Resultat vide = aucun mandat direct trouve pour cette identite exacte (verifier la date_naissance). Note : ne couvre que les mandats DIRECTS de la personne physique (exclut les dirigeants remontes depuis une PM representee, resolved_from_pm). C'est la difference de perimetre avec search_companies(dirigeant_nom/prenom/naissance), qui filtre plus large (inclut ces remontees, granularite mois) et retourne des entreprises, pas une empreinte centree personne. Pour la structure de detention capitalistique d'une entreprise, voir les champs groupe de get_company.

NameTypeReqDescription
date_naissancestringyesDate de naissance au format YYYY-MM-DD (requis, desambiguise les homonymes).
limitnumberNombre d'entreprises a retourner (defaut 50, max 200).
nomstringyesNom de famille du dirigeant (requis).
prenomstringyesPrenom du dirigeant (requis).
NameTypeReqDescription
_user_planstring
dataarray
dirigeantobject
messagestring
paginationobject

No examples provided.

search_directors ~535

Recherche de personnes (dirigeants) a travers toutes les entreprises francaises, par nom de famille. A la difference de search_companies (qui retourne des ENTREPRISES et accepte dirigeant_nom/dirigeant_prenom comme filtres), search_directors retourne directement des PERSONNES avec leur entreprise de rattachement. Cas d'usage : "toutes les entreprises ou siege un dirigeant nomme DUPONT", cartographie d'un reseau de mandats. Parametres : nom (REQUIS, nom de famille), prenom (optionnel, desambiguise), role (optionnel, ex "President", "Gerant", "Administrateur"). Par defaut seuls les mandats actifs ; include_inactive=true pour inclure les anciens mandats. Reponse : data[] = personnes { nom, prenom, civilite, role, role_description, date_naissance, annee_naissance, lieu_naissance, type_personne, linkedin_url, entreprise { siren, denomination, ville, departement, code_ape } }. linkedin_url n'est present que si un profil a ete apparie avec certitude (plan pro) ; son absence est le cas courant, pas une anomalie. pagination { total (nb entreprises matchees), limit, returned }. Homonymes : un meme nom+prenom recouvre souvent plusieurs personnes distinctes. date_naissance est le champ qui les distingue : deux dates differentes = deux personnes ; date absente = identite non confirmee ; meme date = meme personne. La date est diffusee au MOIS (jour normalise a 01), conformement au regime de diffusion du registre : deux personnes nees le meme mois restent indistinguables. Pour lister TOUTES les entreprises d'une personne donnee une fois sa date de naissance connue, enchainer avec search_director_companies (nom + prenom + date_naissance). Pour la fiche complete d'un dirigeant d'une entreprise donnee, utiliser get_directors avec le SIREN.

NameTypeReqDescription
include_inactivebooleanInclure les mandats inactifs (defaut: false).
limitnumberNombre d'entreprises a scanner (defaut 20, max 50).
nomstringyesNom de famille du dirigeant recherche (requis).
prenomstringPrenom (optionnel) pour desambiguiser les homonymes.
rolestringRole/qualite (optionnel), ex: 'President', 'Gerant', 'Administrateur'.
NameTypeReqDescription
_credits_remainingnumber
_quota_remaining_monthnumber
_quota_remaining_todaynumber
_user_planstring
dataarray
paginationobject

No examples provided.

search_events ~771

Recherche unifiee d'evenements d'entreprise (cross-SIREN), basee sur notre index ES. Renvoie des EVENEMENTS individuels (pas des entreprises) : { date, type, siren, denomination, data }. Couvre 8 types : cession (cessions de fonds), procedure (procedures collectives), depot_comptes, augmentation_capital, marche_public, subvention, radiation, creation. Couvre les evenements BODACC (cessions, procedures collectives, radiations, creations) ainsi que les depots de comptes, augmentations de capital, marches publics et subventions derives des scalaires silver. REGLE : preciser au moins un filtre region / departement / ville / code_naf, OU un filtre d'evenement (date_min, date_max, cedant_siren, cessionnaire_siren, prix_min/max, tribunal, procedure_type) — sinon 400. IMPORTANT : passer UN SEUL type quand la question porte sur un type precis. Les filtres de cadrage (existence de l'evenement, fenetre de dates) ne sont pousses dans la requete que dans ce cas ; avec plusieurs types ils s'excluraient mutuellement, et la recherche se rabat sur un tri general dont on ne lit que les premieres pages — une question pointue y parait vide. Cas d'usage : - "Cessions de fonds > 1M en Ile-de-France depuis 2024" → type="cession", region="Ile-de-France", date_min="2024-01-01", prix_min=1000000 - "Procedures collectives a Lyon" → type="procedure", ville="Lyon" - "Liquidations prononcees a Marseille en juillet 2026" → type="procedure", procedure_type="liquidation", ville="Marseille", date_min="2026-07-01", date_max="2026-07-31" - "Marches publics recents dans le BTP" → type="marche_public", code_naf="4120A"

NameTypeReqDescription
cedant_sirenstringSIREN du cedant (filtre cession)
cessionnaire_sirenstringSIREN du cessionnaire (filtre cession)
code_nafstringCode NAF/APE (CSV possible)
cursorstringCurseur de pagination (plan Pro uniquement)
date_maxstringDate max (YYYY-MM-DD)
date_minstringDate min (YYYY-MM-DD)
departementstringCode departement. Ex: "75", "69"
limitnumberNombre d'evenements (defaut 50, max 200)
prix_maxnumberPrix de vente max en euros (filtre cession)
prix_minnumberPrix de vente min en euros (filtre cession)
procedure_typestringType(s) de procedure (CSV) : liquidation, redressement, sauvegarde, conciliation
regionstringRegion. Ex: "Ile-de-France", "Bretagne"
tribunalstringTribunal (filtre procedure, recherche partielle)
typestringTypes d'evenements (CSV) : cession, procedure, depot_comptes, augmentation_capital, marche_public, subvention, radiation, creation. Defaut : tous.
villestringVille du siege (CSV possible). Ex: "Marseille". Le bon filtre pour un ressort de tribunal : plus etroit que departement.
NameTypeReqDescription
dataarrayyes
paginationobjectyes

No examples provided.

unwatch_company ~362

Retrait d'une societe de la surveillance : l'enleve d'une liste de veille de l'utilisateur (page /lists de l'app Insourcia). Inverse de watch_company. Utiliser cet outil quand l'utilisateur veut ARRETER de suivre une societe ("je ne suis plus interesse par X", "enleve X de ma veille", "nettoie ma liste"). Fonctionnement : - Sans list_name, la societe est retiree de TOUTES les listes de l'utilisateur - c'est le sens naturel de "arrete de surveiller X". Avec list_name, seule cette liste est nettoyee. - Idempotent : si la societe n'est dans aucune liste (ou si la liste nommee n'existe pas), l'appel renvoie removed=false sans erreur. - La liste elle-meme n'est jamais supprimee, meme si elle devient vide. Une alerte active sur la liste reste active pour les autres societes. - Le retrait fonctionne meme pour une societe absente de l'index (radiee, disparue) : ce qui a pu etre ajoute peut toujours etre enleve. list_watched_companies donne le nom exact des listes et les societes qu'elles contiennent. Reponse : { siren, company_name (null si non renseignee), removed, removed_from: [{ list_id, list_name }], url (page /lists) }.

NameTypeReqDescription
list_namestringNom exact de la liste a nettoyer. Ex: "Surveillance", "Cibles M&A". Omis = retrait de toutes les listes de l'utilisateur.
sirenstringyesSIREN a 9 chiffres de la societe a retirer de la veille
NameTypeReqDescription
company_nameyes
removedbooleanyes
removed_fromarrayyes
sirenstringyes
urlstringyes

No examples provided.

watch_company ~350

Mise sous surveillance d'une societe : l'ajoute a une liste de veille de l'utilisateur, visible dans l'app Insourcia (page /lists). Utiliser cet outil quand l'utilisateur veut SUIVRE une societe dans le temps (cible d'acquisition, concurrent, client, fournisseur a risque) - pas pour une simple consultation (utiliser get_company). Fonctionnement : - list_name designe la liste cible ; la liste "Surveillance" est utilisee par defaut et creee automatiquement si besoin (idem pour toute liste nommee qui n'existe pas encore). - Idempotent : si la societe est deja dans la liste, l'appel renvoie already_watched=true sans creer de doublon. - enable_alert=true active une alerte quotidienne sur la liste : l'utilisateur est notifie des evenements FUTURS touchant les societes de la liste (annonces BODACC : procedures collectives, cessions... et changements de dirigeants). Pas de replay de l'historique. Reponse : { siren, company_name (null si non renseignee), list_id, list_name, url (page /lists), already_watched, alert_enabled }.

NameTypeReqDescription
enable_alertbooleantrue pour etre notifie des evenements futurs (BODACC, dirigeants...) sur les societes de la liste. Defaut: false.
list_namestringNom de la liste cible (1-100 caracteres). Defaut: "Surveillance". La liste est creee automatiquement si elle n'existe pas.
sirenstringyesSIREN a 9 chiffres de la societe a surveiller
NameTypeReqDescription
alert_enabledbooleanyes
already_watchedbooleanyes
company_nameyes
list_idstringyes
list_namestringyes
sirenstringyes
urlstringyes

No examples provided.

Common questions

What is the io.insourcia/insourcia MCP server?

io.insourcia/insourcia is an MCP server listed in the public MCP registry as io.insourcia/insourcia. Search French companies: financials, directors, ownership, M&A and insolvency events. This page covers its hosted endpoint (https://mcp.insourcia.io/mcp).

Is the io.insourcia/insourcia MCP server safe to use?

io.insourcia/insourcia scores 84 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.insourcia/insourcia MCP server expose?

io.insourcia/insourcia exposes 19 tools: search_companies, resolve_companies, get_company, get_financials, reveal_director_email, and 14 more. Their descriptions and schemas cost roughly 11,651 tokens of context every time the server is loaded.

Does the io.insourcia/insourcia MCP server require authentication?

Yes. io.insourcia/insourcia asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the io.insourcia/insourcia MCP server still maintained?

io.insourcia/insourcia is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.