Insourcia

French company intelligence on private French companies: search by name or SIREN/SIRET, financials, directors and beneficial owners, ownership graphs, M&A and…

От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноТолько чтение

Что умеет

  • Search Companies: Recherche d'entreprises francaises par nom, SIREN, activite, et criteres financiers. include_fields : les valeurs d'un filtre financier ou donnees publiques n'apparaissent dans les r
  • Resolve Companies: Rapprochement EN LOT de fiches mal identifiees vers leur SIREN - la forme qu'un CRM, un tableur ou un export CSV contient. Utiliser cet outil quand l'utilisateur arrive avec une LIS
  • Get Company: Fiche complete d'une entreprise francaise identifiee par son SIREN. Pour plusieurs entreprises, le parametre sirens sert jusqu'a 10 fiches en une seule requete, au lieu d'un appel par soc

Какие данные видит

Нужен ли аккаунт

Не нужен: сервер работает без входа

French company intelligence on private French companies: search by name or SIREN/SIRET, financials, directors and beneficial owners, ownership graphs, M&A and insolvency events, plus watchlists and saved searches. Requires a free Insourcia account.

Список инструментов сервера (18)

Технические названия из tools/list. Нужны только разработчикам.

search_companiesRecherche d'entreprises francaises par nom, SIREN, activite, et criteres financiers. include_fields : les valeurs d'un filtre financier ou donnees publiques n'apparaissent dans les resultats que si include_fields contient le champ correspondant. 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 ne sont pas retournees. 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. Les resultats sont classes par pertinence ; effectif et statut aident a departager des homonymes. Une recherche peut etre enregistree avec les memes filtres via create_saved_search (suivi dans le temps, alerte optionnelle sur les nouvelles societes entrant dans les criteres). 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. Les DEUX bornes d'un de ces criteres s'ecrivent au premier niveau, cote a cote : effectif_min avec effectif_max, et de meme pour ca, resultat_net, tresorerie, cagr_ca, date_creation, age_dirigeant. Ces sept bornes restent aussi acceptees dans advanced_filters, qui l'emporte si elles arrivent aux deux endroits. 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. Une cle inconnue dans advanced_filters est rejetee (400), pas ignoree. Organigramme d'un groupe : le filtre siren_groupe (valeur fournie par get_company) liste 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. Non disponible : le filtrage par profil LinkedIn des dirigeants. Par defaut retourne 20 resultats (max 20 free / 100 pro par page). La pagination est reservee au plan Pro. COUT EN APPELS : une page est facturee 1 appel de quota par tranche de 20 lignes servies. limit=20 coute 1 appel, limit=100 en coute 5. Demander 100 lignes ne consomme donc pas plus qu'enchainer cinq pages de 20, mais ne consomme pas moins non plus : l'interet est d'eviter le plafond par minute, pas d'economiser du quota. La reponse inclut "_user_plan" ("free" ou "pro"). include_fields est limite a 3 champs par recherche sur free et 10 sur pro ; les champs au-dela de la limite sont ignores et listes dans include_fields_skipped. Un nom de champ inconnu n'est pas une erreur : il est ignore et liste dans include_fields_unknown - lire ce champ et corriger le nom, plutot que de retomber sur un get_company par ligne. COUT ET CONTENU (le compte a un quota d'appels borne, et la reponse dit ou il en est) : - "_quota_remaining_today" et "_quota_remaining_month" donnent le nombre d'appels encore disponibles sur le compte. - Une recherche renvoie jusqu'a 20 societes par appel de quota. Une fiche get_company coute 1 appel par societe. - Le siren de chaque societe est deja dans le resultat : resolve_companies sert a rapprocher des fiches sans identifiant (nom, adresse), pas des resultats de recherche. - ca, ebitda, resultat_exploitation, resultat_net, effectif_moyen et annee_financiere du dernier exercice sont disponibles ici en include_fields ; get_financials sert l'historique multi-annees et les postes detailles. - nb_cessions et derniere_cession_date (include_fields) indiquent si une societe a des evenements de cession a lire dans get_events. 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.
resolve_companiesRapprochement EN LOT de fiches mal identifiees vers leur SIREN - la forme qu'un CRM, un tableur ou un export CSV contient. Utiliser cet outil quand l'utilisateur arrive avec une LISTE de societes a identifier ("voici 200 clients, retrouve leurs SIREN", "rapproche ce fichier", "nettoie ma base"). Pour UNE societe cherchee par son nom, utiliser search_companies : il rend des resultats classes, celui-ci rend une decision. Difference de nature avec search_companies : cet outil REFUSE de trancher quand il n'est pas sur, et le dit. Il ne rend jamais un "meilleur resultat" par defaut. Chaque fiche revient avec un status : - resolved : SIREN certain, exploitable directement. - review : plusieurs candidats plausibles OU nom trop generique ; les candidats sont retournes et le choix revient a l'utilisateur. - no_match : aucune correspondance. Le champ reason explique un review : ambiguous_candidates (deux societes equivalentes, il faut departager), weak_name_overlap (le nom ne recouvre pas assez le candidat), missing_name, lookup_failed (panne technique, a rejouer - ce n'est PAS une absence de correspondance). Le code postal double quasiment le taux de rapprochement automatique. Un jeton en trop dans le nom ("Carrefour Massy" au lieu de "Carrefour") degrade plus le rapprochement qu'un nom tronque. Instantane et sans risque d'erreur quand la fiche porte deja un identifiant : un siren, un siret (les 9 premiers chiffres) ou un numero de TVA francais sont resolus sans aucune recherche. Le quota, lui, compte les fiches soumises : un lot de 200 coute 200 appels quelle que soit leur forme. Retourne results[] (dans l'ordre d'entree, avec l'id fourni s'il y en a un) et summary{total, resolved, review, no_match}. summary indique si le fichier est exploitable tel quel ou s'il demande un passage manuel.
get_companyFiche complete d'une entreprise francaise identifiee par son SIREN. Pour plusieurs entreprises, le parametre sirens sert jusqu'a 10 fiches en une seule requete, au lieu d'un appel par societe. COUT : 1 appel de quota par societe, que les societes soient demandees une par une ou en lot. Les memes champs, descriptif d'activite (description_activite) et site web (site_internet) compris, sont disponibles en include_fields sur search_companies, qui rend jusqu'a 20 societes par appel de quota. "_quota_remaining_today" indique le quota restant du compte. Une societe peut etre mise sous surveillance via watch_company (alerte optionnelle sur les evenements futurs : procedures collectives, cessions, changements de dirigeants). Contenu de la fiche : 1. Identite — forme juridique, date creation, date_immatriculation (RCS), date_cloture_exercice (JJ-MM, date de cloture comptable recurrente), denomination_usuelle si presente, capital social, siege (adresse complete rue+numero, code postal, departement, region), activite (code NAF + libelle + objet_social si disponible + description si disponible), effectif. Le code LEI (Legal Entity Identifier) est expose au top-level pour les societes ayant un identifiant ESEF/GLEIF (typiquement les cotees). Si radiee : successeur (siren, denomination). 2. Financier — date_cloture (annee) et type_bilan (K=consolide, C=complet/social, S=simplifie) : un CA en bilan K (consolide groupe) n'est pas comparable a un bilan C (social). CA, croissance CA, resultat net, marge nette, EBITDA, marge EBITDA, dette nette, effectif moyen. 3. Contact — site web, telephone, email (pro), LinkedIn (pro). 4. Gouvernance — dirigeants principaux (president, DG), structure PM le cas echeant. 5. Groupe - appartenance a un groupe (est_filiale, nom du groupe), parent direct et ultime (denomination, SIREN, pays), societe_mere (holding mere directe : siren, denomination, pays, lei - source distincte, souvent renseignee quand parent_direct/ultime sont absents), tete de groupe (est_tete_de_groupe, siren_groupe), nb filiales directes. Absent = independante. 6. IFRS — si disponible (societes cotees), donnees financieres consolidees IFRS : CA, resultat net, EBITDA, total actif. Absent pour les societes non cotees. 7. Signaux — cotation, procedures collectives (historique avec type, date, tribunal, jugement), a_fusionne, modifications capital, transferts siege, changements denomination, est_societe_mission, est_ess, reconstitution_capitaux_propres, dernier_depot_date, comptes confidentiels, date radiation. 8. Score credit (credit_risk, tous plans) — grade AAA -> D, probabilite de defaut a 3/6/12 mois (taux du grade), 5 facteurs aggravants/attenuants, date du score. Null si la societe n'a pas de bilan recent (non scoree). Detail et explication : get_credit_risk. 8. Cessions — total, derniere_date, historique[] (date, type, cedant, cessionnaire, activite, prix). Null si aucune. 9. Donnees publiques — marches_publics (nb, montant, types), subventions (nb, montant, regions), brevets (nb total, nb actifs), salons (nb participations, secteurs). Null si aucune donnee. 10. Fonds d'investissement — bloc fonds si l'entreprise est detenue par un fonds (PE/VC) : nom_fonds, siren_fonds (SIREN du fonds, permet de chainer vers get_company), type_fonds, annee_entree_fonds, nb_fonds_actuels. Null sinon. Pour approfondir : get_financials (historique multi-annees), get_directors (detail dirigeants), get_events (timeline BODACC/evenements de l'entreprise).
get_financialsHistorique financier detaille d'une entreprise sur plusieurs exercices. COUT : 1 appel de quota par societe, pour une reponse de ~10 a 45 Kio selon detail et years. Perimetre : l'historique multi-annees et les postes detailles. Les agregats du seul dernier exercice (ca, ebitda, resultat_exploitation, resultat_net, effectif_moyen, annee_financiere) sont disponibles en include_fields sur search_companies, qui rend jusqu'a 20 societes par appel. Pour plusieurs entreprises, le parametre sirens sert jusqu'a 10 historiques en une requete (3 en detail=full, une reponse pesant alors ~330 Kio pour dix). Deux differences avec des appels un par un : le lot part en mode compact sauf demande explicite, y compris sur plan Pro, et il ne pagine pas. Defaut plan-aware : - Plan free : mode `compact` (~40 champs / exercice). Compte de resultat complet (CA -> resultat net en passant par EBITDA, REX, financier, exceptionnel, IS), bilan abrege PCG (actif immobilise net, stocks, creances clients, disponibilites, total general actif, total actif ; capital social, reserves, report a nouveau, capitaux propres, provisions, dettes financieres, dettes fournisseurs, dettes fiscales/sociales, total dettes, total passif), ratios (tresorerie, dette nette, BFR, marges, ratio endettement, CAF, delais paiement), dividendes verses, effectif moyen. - Plan pro : mode `full` par defaut (~140 champs / exercice, audit financier exhaustif). Override explicite via `detail=compact` si on veut la vue resumee. Mode `detail=full` (audit financier exhaustif) : retourne TOUS les champs financiers disponibles (~140 par exercice). Sur plan gratuit, renvoie 403 upgrade_required ; sur plan Pro c'est le defaut. Mode `fields` (recommande pour 1-5 ratios additionnels au-dessus de compact) : passer fields=["roe","bfr_jours_ca","autonomie_financiere"] ajoute les champs cibles a chaque exercice sans gonfler la reponse. Plus de 130 champs disponibles : ratios (roe, taux_marge_brute, liquidite_generale, capacite_remboursement, etc.), postes detailles (achats_marchandises, salaires_traitements, etc.), immobilisations brutes (terrains_brut, constructions_brut, etc.), reserves (reserve_legale, primes_emission_fusion_apport, etc.), croissance (cagr_ebitda_3ans, cagr_rn_signed_5ans, etc.). Bloc `ifrs` : pour les societes cotees, retourne en plus un objet ifrs avec les agregats comptes consolides (chiffre_affaires, ebitda, bpa, dividendes, etc.). Rendu : la reponse inclut `_layout`, qui decrit par section (compte de resultat, bilan actif, bilan passif, ratios, dividendes, effectif) l'ordre PCG des lignes, leur libelle francais (`line.label`), leur niveau d'indentation (`level`, 2 = lignes "dont ...") et leur nature (`kind` : value, subtotal, total). `exercices[annee][line.key]` porte la valeur ; null = poste absent de la source. `_layout.not_applicable_pcg: true` signale un plan comptable sectoriel (bilan B banque, A assurance) ; `_layout.missing_pcg_lines` liste les lignes PCG absentes de notre source. Montants en euros ; `_layout.doc_url` pointe la documentation du format.
get_directorsDetail 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 - **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. 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.
search_directorsRecherche 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, entreprise { siren, denomination, ville, departement, code_ape } }. pagination { total (nb entreprises matchees), limit, returned }. Homonymes : un meme nom+prenom recouvre souvent plusieurs personnes distinctes. date_naissance (et lieu_naissance) est le champ qui les distingue : deux dates differentes = deux personnes ; date absente = identite non confirmee ; meme date = meme personne. 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.
search_director_companiesCartographie 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.
search_eventsRecherche 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 / code_naf, OU un filtre d'evenement (date_min, date_max, cedant_siren, cessionnaire_siren, prix_min/max, tribunal, procedure_type) — sinon 400. 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", departement="69" - "Marches publics recents dans le BTP" → type="marche_public", code_naf="4120A"
get_eventsTimeline unifiee des evenements d'UNE entreprise (par SIREN). Fusionne cessions[] + procedures[] + dates scalaires (depot_comptes, augmentation_capital, marche_public, subvention, radiation, creation) en un flux chronologique decroissant. 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. La timeline est vide pour la majorite des societes ; search_companies indique lesquelles portent des evenements de cession via include_fields=nb_cessions,derniere_cession_date.
get_credit_riskScore 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.
get_company_graphCartographie des entites autour d'UNE entreprise (par SIREN) : graphe ORIENTE et TYPE construit sur les mandats RCS/RNE et les liens de groupe. Utiliser cet outil pour visualiser ou analyser la structure d'un groupe : holdings, filiales, societes soeurs, dirigeants communs. Complementaire de get_directors (detail des mandats d'UNE societe) et de search_director_companies (empreinte d'UNE personne). Reponse : nodes[] (entreprises et personnes physiques) + edges[] (aretes orientees source -> cible) : - mandat_pm : societe dirigeante -> societe dirigee (role, est_actif ; dates de mandat en best-effort, souvent absentes) - filiale : societe mere -> filiale (lien associe unique RNE, detention 100% implicite) - parent_ultime : parent ultime (GLEIF, grands groupes) -> societe - mandat_pp : personne physique -> societe dirigee (role) Points cles : - Les commissaires aux comptes sont EXCLUS des aretes (un CAC n'est pas de la gouvernance). - Ids : entreprises "co:<siren>" ; personnes "pp:<nom>|<prenom>|<AAAA-MM>" (date de naissance en precision mois) ; parents etrangers hors index "co:ext:<slug>". - Pas de pourcentages de detention (non disponibles dans les sources publiques utilisees). - depth=1 : liens directs de la racine. depth=2 (defaut) : expansion depuis les noeuds structurants (parents, societes dirigeantes) - jamais depuis les filiales pour eviter l'explosion sur les grands groupes. - Expansion via les personnes (defaut ON, depth=2) : les dirigeants de la RACINE tirent leurs AUTRES societes dans le graphe (holdings personnelles, SCI, structures soeurs d'un meme gerant = groupes de fait sans holding). Expansion depuis la racine uniquement, jamais depuis les niveaux suivants. Desactivable avec expand_persons=false pour un graphe purement capitalistique. - Garde hub-dirigeant : un dirigeant de la racine qui est un mandataire professionnel (expert-comptable / officier en serie) n'est PAS etendu - son portefeuille est un carnet de clients, pas le groupe. Detecte par un footprint eleve (plus de 50 societes dirigees) OU un mandat dans un cabinet comptable/audit. Le dirigeant reste dans le graphe (il est officier declare de la racine) mais ses autres societes ne sont pas tirees. Ces dirigeants sont listes dans meta.truncated.hub_directors. - Caps par noeud (20 filiales, 20 societes dirigees, 40 societes par personne) et global (max_nodes) : les troncatures sont signalees dans meta.truncated (dont hub_directors pour les mandataires non etendus) - le graphe peut etre partiel. Filtres : include_personnes (defaut true), include_sci (false = exclure les SCI), include_ceased (false = exclure les societes cessees), expand_persons (defaut true). La racine n'est jamais filtree. Pour plusieurs entreprises, le parametre sirens sert 3 graphes en une requete, 2 en depth=2. Ce plafond est bas parce qu'une traversee a froid coute 3 a 5 secondes et ne se parallelise pas sur le serving. Autre difference avec l'appel unitaire : le lot part a depth=1, la ou une societe seule part a depth=2.
create_saved_searchCreation 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 }.
watch_companyMise 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 }.
unwatch_companyRetrait 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) }.
list_saved_searchesListe 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.
list_watched_companiesListe 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) }.
get_newsVeille 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 Free ne donne acces qu'aux 10 signaux les plus recents, exactement comme la page /news. Ne presente jamais un fil ainsi tronque comme complet : dis combien de signaux sont masques et que le plan Pro les ouvre. 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.
mark_news_readMarque 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) }.