Agents et MCP
Serveur MCP
L’adresse du serveur MCP Lead Scorer, son authentification, les clients compatibles et les fonctionnalités regroupées par famille.
Dernière mise à jour
Sur cette page
Lead Scorer est conçu autour de l’IA : ses fonctionnalités sont exposées sous forme d’outils MCP. Votre agent peut exécuter les actions de l’application via le protocole, avec les mêmes crédits, la même facturation et la même validation avant tout envoi.
Adresse du serveur et authentification
https://mcp.lead-scorer.com/mcp
- OAuth 2.1 est la méthode d’authentification recommandée. Un écran de configuration dans l’application vous guide.
- Un en-tête Authorization: Bearer contenant une clé API MCP peut servir de solution manuelle pour les clients sans prise en charge d’OAuth.
- Inclus dans toutes les offres, y compris le CRM gratuit.
Clients compatibles
Claude avec ses connecteurs personnalisés, Claude Code, ChatGPT en mode développeur, Codex, Cursor et vos propres clients MCP. Les instructions de configuration par client, avec les commandes et le JSON exacts, sont centralisées sur la page MCP.
Les mises à jour MCP ne nécessitent ni réinstallation de Lead Scorer ni changement d’adresse du serveur. Les clients découvrent la liste actuelle des outils à l’ouverture ou à la reconnexion. Si une conversation conserve une ancienne liste en cache, ouvrez une nouvelle conversation ou actualisez le connecteur. Une nouvelle autorisation n’est nécessaire que si le client signale une autorisation expirée ou révoquée.
Campagnes quotidiennes d’invitation à un événement
Depuis Campagnes → Inviter à un événement, ou l’action de campagne événementielle d’une liste, choisissez la liste, l’événement LinkedIn, le compte connecté, la limite quotidienne, les jours et le fuseau horaire. La création fige la sélection des prospects accessibles et laisse toutes les invitations en attente de validation. Activez la campagne sur sa page pour lancer les envois quotidiens ; vous pouvez aussi l’y suspendre et la reprendre. La création n’envoie aucune invitation et ne consomme aucun crédit.
Avec MCP, découvrez les identifiants via get_lead_lists et list_sender_accounts, puis appelez create_event_invite_campaign avec list_id, linkedin_account_id, event_url et une idempotency_key stable. Par défaut : jusqu’à 100 invitations par jour, sept jours sur sept, de 09:00 à 18:00 dans le fuseau Europe/Paris. Utilisez update_campaign_sending pour modifier daily_event_invite_limit, les jours ou les horaires. L’activation humaine reste dans l’application. Consultez les résultats avec get_campaign et list_campaign_actions.
Les invitations à un événement ont leur propre limite, distincte des demandes de connexion et des messages. Le plafond du compte est partagé avec les invitations manuelles et les autres campagnes ; il se réinitialise à minuit UTC. Les plages d’envoi utilisent le fuseau choisi. Les membres déjà invités sont ignorés, même entre variantes d’URL ou d’identifiant, campagnes et envois manuels. Les identifiants de membre manquants sont ignorés avec un motif. La limite quotidienne est un maximum : le nombre de contacts disponibles, la disponibilité du compte et la plage d’envoi peuvent réduire les envois réels.
Signaux de recrutement et rattachement aux entreprises
Découvrez les entreprises avec search_companies ou get_companies_from_list et ne créez que celles qui manquent. Rattachez chaque prospect avec company_id lors de la création, ou enrichissez-le puis consultez get_lead.positions avant set_lead_primary_company. L’entreprise doit faire partie de son parcours ; ne devinez jamais les identifiants et ne confondez pas la société mère avec la filiale qui recrute. Le rattachement choisi reste conservé après un nouvel enrichissement.
Commencez par list_hiring_taxonomy avec kind=role, skill ou seniority et parcourez les pages jusqu’à has_more=false pour découvrir le vocabulaire de référence. Réutilisez ses slugs ; ensure_hiring_term enregistre un terme générique réellement absent ou réutilise un libellé ou alias existant, sans distinction de casse. Le catalogue ne révèle ni entreprises ni compteurs d’utilisation. Enregistrez une offre publique vérifiée avec upsert_company_hiring_signal : intitulé, lieu, URL, statut open/closed/unknown et observed_at. Dans details, conservez la rémunération — devise et période uniquement si précisées —, le mode de travail, la politique de télétravail, les critères de profil, les technologies, les missions, avantages, étapes d’entretien et sources datées. Ces informations apparaissent dans les postes ouverts de l’entreprise et le dossier complet de l’offre. Les champs de détail omis sont conservés lors des actualisations ; null efface explicitement un champ. posted_at est facultatif : distinguez date de vérification et date de publication ; conservez les dates relatives dans details.publication_label. Le couple entreprise et URL source met à jour le même signal ; une observation ancienne ne remplace pas une preuve plus récente. Relisez get_company_signals et get_lead pour vérifier la fiche entreprise et le rattachement CRM. Transmettez normalized.roles, normalized.skills et normalized.seniorities sous forme de tableaux de {slug,evidence}, avec une citation exacte du titre ou des détails enregistrés. Les slugs inconnus et les preuves absentes sont refusés ; les doublons deviennent une seule étiquette de référence. Un tableau remplace la sélection ; un tableau vide ne sélectionne rien, un champ omis conserve la sélection et normalized=null rétablit l’extraction automatique. Les imports historiques et prestataires utilisent aussi le catalogue global. Le texte source peut conserver sa casse d’origine. La séniorité est distincte du rôle et n’est jamais déduite uniquement des années d’expérience. Utilisez search_hiring_companies ou les filtres de recrutement des entreprises pour combiner rôle, compétences, séniorité et lieu ; tous les critères doivent correspondre à une même offre. Par défaut, seules les offres ouvertes non expirées sont retenues ; status=all inclut les besoins historiques et observed_since filtre la fraîcheur de vérification. L’index conserve les preuves et regroupe les alias comme Postgres/PostgreSQL. Il s’agit de besoins détectés dans des offres, pas d’une preuve d’utilisation des technologies dans toute l’entreprise. Ces opérations sont gratuites et n’inscrivent ni ne contactent personne ; gardez les informations privées sur les candidats et la prospection dans la mémoire privée.
Vivier de talents freelances
Les freelances restent des prospects CRM ordinaires : les listes, tags, coordonnées, expériences et la mémoire relationnelle continuent donc de fonctionner. Un profil freelance structuré ajoute la disponibilité et sa date de vérification, la date de début possible, la fourchette et la devise du tarif journalier, les années d’expérience, le préavis, les modes de travail, les préférences contractuelles, les localisations, les langues, l’expérience sectorielle, les liens vers un portfolio ou un CV, un résumé recruteur, les métiers, compétences et niveaux d’expérience normalisés, ainsi que les observations issues de sources publiques datées. Le même vocabulaire global évite les doublons Python/python entre les offres et les candidats.
Utilisez search_freelancers avant toute nouvelle recherche et filtrez par métier canonique, toutes les compétences requises, niveau d’expérience, date de disponibilité, tarif maximal, devise, mode de travail, localisation, source ou liste de prospects vous appartenant. Transmettez lead_id à upsert_freelance_profile pour un contact CRM existant. Si le profil d’une plateforme nommée ne possède ni LinkedIn ni adresse email publique, transmettez plutôt identity : l’URL de source exacte crée ou réutilise en une seule opération le prospect et son appartenance à la liste source, sans fusion sur le seul nom. Chaque terme normalisé exige un extrait verbatim du prospect ou de la source fournie. La disponibilité, les tarifs et l’expérience restent inconnus sauf publication explicite. Les anciennes observations restent visibles mais ne peuvent pas remplacer des informations plus récentes. Consultez get_freelance_profile pour auditer chaque source. Ces opérations sont gratuites et n’envoient rien.
Contacts sans LinkedIn
Créez un contact avec un email, une identité LinkedIn vérifiée, ou un nom complet et un company_id autorisé. Une adresse générique d’entreprise peut omettre full_name ; contact_kind=company conserve une personnalisation neutre. Dans Imports, le CSV de contacts accepte email, company_name, company_website, country, preferred_language et, facultativement, full_name ou une identité LinkedIn. Prévisualisez les erreurs et relancez sans doublons les lots terminés : la déduplication des emails normalisés est limitée à votre compte.
Dans une campagne mixte comportant une branche email, les destinataires sans LinkedIn commencent par l’étape email joignable après approbation, selon le calendrier d’envoi. Aucune invitation n’est comptée comme envoyée. Les destinataires avec LinkedIn conservent le parcours d’invitation et le délai d’acceptation habituels. Les relances attendent l’envoi de l’email précédent et les deux branches de connexion restent exclusives. Sans identité LinkedIn utilisable ni données de profil en cache, l’enrichissement LinkedIn n’appelle aucun prestataire et ne consomme aucun crédit ; l’exécution enregistre le motif de non-applicabilité.
Fonctionnalités par famille
Les fonctionnalités sont regroupées par famille. Les noms des outils sont stables et correspondent à ceux que votre agent découvre sur le serveur.
La capture d’audience accepte les liens de publications LinkedIn, y compris les liens partagés et les URL d’intégration. Les publications partagées sont résolues via les métadonnées publiques d’intégration LinkedIn. En cas d’échec, l’un de vos comptes LinkedIn connectés sert à retrouver la publication ; linkedin_account_id permet de choisir le compte. Ce recours nécessite une connexion active et du quota de lecture LinkedIn. Réactions et commentaires sont ensuite collectés à partir de l’identifiant d’activité résolu. Les grandes audiences se poursuivent automatiquement par lots de 1 000 profils maximum, avec des progressions distinctes pour les réactions et les commentaires. Une nouvelle synchronisation reprend une capture inachevée ; après sa fin, elle lance une nouvelle recherche des interactions récentes.
- Lecture du CRM
- get_lead · get_leads_from_list · get_lead_lists · get_company_info · get_company_signals · list_hiring_taxonomy · search_hiring_companies · search_freelancers · get_freelance_profile · get_companies_from_list · get_company_lists · search_companies · list_tags · list_products · list_sender_accounts
- Écriture dans le CRM
- create_lead · update_lead · set_lead_primary_company · ensure_hiring_term · upsert_company_hiring_signal · upsert_freelance_profile · remove_lead_access · create_company · create_list · create_product · update_product · delete_product · add_leads_to_list · add_companies_to_list · add_tags_to_lead · add_lead_email · add_lead_phone · update_lead_linkedin · update_company_linkedin
- Recherche de prospects et audiences
- create_audience_source · list_audience_sources · sync_audience_source · fetch_profile_posts · get_lead_posts
- Estimation de recherche de coordonnées
- Utilisez find_lead_contact_info avec dry_run: true pour vérifier l’accès, les données exploitables, les limites d’exécutions actives et la configuration des prestataires avant de dépenser des crédits. Aucune boîte email connectée n’est nécessaire. Une estimation réussie ne garantit pas la disponibilité réelle du prestataire. Lancez la recherche une seule fois, puis consultez get_contact_enrichment_run ; seules les coordonnées trouvées sont facturées.
- Vérifier les adresses email déjà présentes dans votre CRM
- Trouvez le prospect avec get_lead_lists et get_leads_from_list, puis appelez verify_lead_emails avec lead_id et dry_run: true. Cette simulation vérifie gratuitement l’accès, les adresses visibles et la configuration du prestataire. L’exécution coûte 1 crédit par prospect vérifié avec succès, quel que soit le nombre d’adresses ; les échecs sont remboursés. Respectez le seuil de confirmation. Cette opération ne recherche pas de nouveaux contacts. Consultez verification_status, verification_provider et verified_at avec get_lead ; relancer la vérification constitue une nouvelle opération payante. L’absence d’accès aux adresses, l’absence d’adresse visible, l’insuffisance de crédits et les erreurs du prestataire sont signalées explicitement.
- Enrichissement et scoring
- enrich_leads · enrich_company · find_lead_contact_info · verify_lead_emails · create_scoring_config · submit_lead_score · submit_lead_ai_enrichment · submit_company_classification · submit_company_research · get_leads_pending_scoring · get_leads_pending_ai_enrichment · get_companies_pending_classification · get_companies_pending_research
- Campagnes et prospection
- list_sender_accounts · update_sender_account · list_campaigns · create_campaign · create_event_invite_campaign · update_campaign_sending · update_campaign_senders · get_campaign · get_campaign_authoring_context · add_leads_to_campaign · list_campaign_leads · remove_lead_from_campaign · add_campaign_step · update_campaign_step · generate_campaign_drafts · write_campaign_drafts · list_campaign_actions · update_campaign_action_draft · upload_campaign_action_attachment · delete_campaign_action_attachment · invite_list_to_linkedin_event
- Retirer un prospect d’une campagne
- Dans l’onglet Prospects d’une campagne, choisissez Retirer et confirmez. Avec MCP, découvrez la campagne via list_campaigns et le prospect via list_campaign_leads, puis confirmez remove_lead_from_campaign avec lead_id. Le retrait supprime l’inscription à la campagne, les brouillons, actions et réponses, tout en conservant le prospect dans le CRM. Retirer l’accès CRM, individuellement ou en lot, retire aussi le prospect de vos campagnes. Les envois en cours ou dont le résultat est inconnu doivent d’abord être résolus.
- Studio de contenu
- create_content_post · update_content_post · schedule_content_post · archive_content_post · mark_content_post_published · list_content_posts · get_content_calendar · list_content_items · get_content_item · upsert_content_item · update_content_item · list_content_shows · upload_content_media
- Workflows d’agents
- list_workflows · start_workflow_run · advance_workflow_run · get_workflow_run · list_workflow_runs
- Mémoire personnelle et Context Packs
- get_my_memory · get_my_workspace_context · update_my_memory · list_relationship_memories · get_relationship_memory · update_relationship_memory · remember_relationship_fact · archive_relationship_memory · list_company_memories · get_company_memory · update_company_memory · remember_company_fact · archive_company_memory · list_memory_revisions · list_memory_sources · get_memory_source · archive_memory_source · estimate_memory_source_reprocessing · start_memory_source_reprocessing · compile_context_pack · estimate_memory_ingestion · start_memory_ingestion · get_memory_ingestion_run · list_memory_proposals · review_memory_proposal · review_memory_proposals
Les lectures et modifications directes de Markdown ainsi que les faits sourcés sélectionnés sont gratuits. Importer ou retraiter du contexte ChatGPT, Claude, des transcriptions ou des notes utilise l’IA Lead Scorer : l’estimation est réservée sur le budget IA de l’utilisateur, les tokens réellement utilisés sont facturés, le solde inutilisé est rendu et les faits étayés sont ajoutés dans une révision unique et réversible après confirmation de l’import.
Les imports actuels demandent une seule confirmation pour la source complète et l’estimation IA, sans validation fait par fait. review_memory_proposals reste disponible pour résoudre jusqu’à 100 faits en attente d’anciennes exécutions, dans une révision atomique gratuite.
Les pièces jointes de campagne sont limitées à un véritable PDF de 2 000 000 octets décodés maximum, lié à un brouillon email précis. Elles restent dans un stockage privé et ne sont jamais rattachées globalement à un prospect. Chaque ajout ou suppression invalide l’approbation précédente jusqu’à la validation explicite de cette révision par une personne.
Crédits via MCP
Les appels d’outils utilisant l’IA consomment les mêmes crédits et le même budget IA que dans l’application. Il n’existe pas de quota distinct ni de tarif réduit par ce canal.
Les envois restent soumis à votre approbation même lorsqu’un agent orchestre toute l’exécution. Il peut créer une campagne, ajouter une étape avec add_campaign_step, rédiger tous les brouillons et les mettre en file, mais pas lancer la campagne à votre place. Chaque message ajouté demande une nouvelle relecture humaine.