MCP, référence des tools
Le serveur MCP expose 399 tools pour Claude Desktop / Code / web.
Tu connectes le serveur en une commande depuis /settings/mcp dans l'app. Token au niveau workspace
ou accès plateforme pour les super-admins.
Voir aussi les recettes MCP.
Tools plateforme
Opérations cross-workspace. Super-admin uniquement.
agent.*
-
agent.provision_client_completeWRITE-safe AGENTProvisionne un workspace client Kernel complet : workspace + utilisateur admin + lien d'onboarding Stripe Connect + données initiales + email d'onboarding. Renvoie les détails du nouveau workspace. Idempotent sur le slug.
scope: * -
agent.archive_workspaceDESTRUCTIVE AGENTArchive proprement un workspace : export en dry-run, annulation de l'abonnement Stripe, archivage en douceur en base, notification de l'owner. Multi-étapes avec remontée des échecs partiels.
scope: *
platform.*
-
list_workspacesREADListe tous les workspaces avec billing, nombre de membres et dernière activité. Filtre par status (active/archived/past_due/comped/all), plan, ou recherche texte sur name/slug.
scope: * -
get_workspaceREADRécupère le détail complet d'un workspace par slug : owner, billing, Stripe Connect, domaines, thème, nombre de membres.
scope: * -
list_membersREADListe les membres d'un workspace. Si workspace_id est fourni, la requête est limitée à ce workspace, sinon retourne tous les membres de tous les workspaces.
scope: * -
get_memberREADRécupère un membre par user_id et workspace_id, avec les données de profil jointes.
scope: * -
list_auditREADListe les entrées kernel_activity récentes, sur tous les workspaces ou au sein d'un workspace. since : date ISO (24h par défaut).
scope: * -
get_billing_overviewREADAgrège les métriques de billing sur tous les workspaces : MRR, ARR, nombre d'abonnements actifs, nombre past_due, nombre comped.
scope: * -
list_domainsREADListe les domaines personnalisés de tous les workspaces.
scope: * -
list_themesREADListe les thèmes de workspace actifs.
scope: * -
list_integrationsREADListe les intégrations par workspace (Stripe Connect, Google, Meta, LinkedIn, TikTok).
scope: * -
get_system_healthREADAgrège la santé système : Apify en attente, publications studio en échec, approbations JIT en attente, nombre d'erreurs récentes.
scope: * -
list_plansREADListe tous les plans de billing (id, name, monthly_price_cents, currency).
scope: * -
list_billing_accountsREADListe les Billing Accounts (un utilisateur possède N comptes, chacun payant N workspaces). Chaque BA possède un seul client Stripe et une carte, et peut payer pour plusieurs workspaces. Filtre par has_card (les BA avec un client Stripe attaché) ou recherche texte sur l'email de l'owner.
scope: * -
get_billing_accountREADRécupère un Billing Account par id ou par owner_user_id. Retourne la ligne BA, le moyen de paiement Stripe (brand/last4/exp), et chaque workspace facturé par ce BA avec son plan et son statut d'abonnement.
scope: * -
list_waitlistREADListe les inscriptions de la waitlist (status, source, created_at).
scope: * -
search_globalREADRecherche texte transversale sur les workspaces, membres et contacts (top 5 de chaque).
scope: * -
create_workspaceWRITE-safeCrée un nouveau workspace via la RPC create_workspace_for_owner_v2_with_domains. Nécessite un user_id d'owner existant.
scope: * -
update_workspace_identityWRITE-safeMet à jour name, brand_color, icon_url, logo_url d'un workspace.
scope: * -
set_workspace_planWRITE-safeChange le plan de billing d'un workspace (met à jour workspaces.plan uniquement, le changement d'abonnement Stripe est séparé).
scope: * -
add_memberWRITE-safeInvite un utilisateur existant comme membre d'un workspace.
scope: * -
update_member_roleWRITE-safeChange le rôle d'un membre au sein d'un workspace.
scope: * -
set_platform_flagWRITE-safeDéfinit un feature flag global de la plateforme (scope Hypervisor). Affecte TOUS les workspaces.
scope: * -
connect_integrationWRITE-safeMarque une intégration de workspace comme connectée (les credentials sont stockés ailleurs, cet outil ne fait que basculer le status).
scope: * -
add_domainWRITE-safeAjoute un domaine personnalisé à un workspace (non vérifié tant que le contrôle DNS n'est pas passé).
scope: * -
archive_workspaceDESTRUCTIVEArchive en douceur un workspace (définit archived_at). Réversible. L'abonnement Stripe reste actif jusqu'à annulation manuelle.
scope: * -
delete_workspaceDESTRUCTIVESuppression DÉFINITIVE d'un workspace par cascade. Irréversible. Utilise d'abord archive_workspace.
scope: * -
delete_memberDESTRUCTIVERetire un membre d'un workspace. Sa ligne auth.user est conservée.
scope: * -
purge_audit_older_thanDESTRUCTIVESupprime définitivement les lignes kernel_activity antérieures à la date ISO donnée. Impossible à annuler.
scope: * -
force_billing_cancelDESTRUCTIVEForce le billing d'un workspace à l'état annulé (workspace_billing.stripe_subscription_status = canceled). Stripe doit être annulé séparément.
scope: * -
revoke_tokenDESTRUCTIVERévoque un token MCP par id. Définit revoked_at. Les appels suivants retournent 401.
scope: * -
replay_webhookDESTRUCTIVEMet en file un rejeu de webhook pour un workspace et un provider (Stripe/Meta/...).
scope: * -
list_partnersREADListe les partenaires du programme partenaire plateforme (Freelance OS). Filtre optionnel par status (pending/approved/rejected/suspended). Retourne name, email, company, referral code, status et tier.
scope: * -
list_partner_tiersREADListe les tiers du programme partenaire plateforme avec le type de commission, le taux (bps) et le modèle (referral/agency_override).
scope: * -
get_partner_referralsREADListe les referrals attribués à un partenaire, avec le décompte par status (clicked/signed_up/trial/converted/churned).
scope: * -
get_partner_commissionsREADListe le registre de commissions d'un partenaire avec les totaux par status (pending/approved/paid/clawed_back). Montants en centimes.
scope: * -
get_partnerREADRécupère le détail admin complet pour un partenaire : profile, application (channels/audience), tier, referrals (avec le canal d'attribution), commissions, et le récapitulatif des décomptes/totaux. Miroir de la fiche partenaire Hypervisor.
scope: * -
get_partner_kitREADRécupère le contenu du kit partenaire (markdown) affiché/téléchargé sur la page Ressources du programme partenaire. Retourne le markdown et le timestamp de dernière mise à jour.
scope: * -
approve_partnerWRITE-safeApprouve un partenaire en attente et lui assigne un tier. Active l'attribution des referrals et les commissions pour ce partenaire.
scope: * -
set_partner_tierWRITE-safeChange le tier assigné à un partenaire (override manuel).
scope: * -
reject_partnerWRITE-safeRejette une candidature de partenaire.
scope: * -
suspend_partnerWRITE-safeSuspend un partenaire approuvé (stoppe les nouvelles attributions, les commissions existantes ne sont pas affectées).
scope: * -
set_partner_noteWRITE-safeDéfinit la note admin interne sur un partenaire (stockée dans profile JSONB, admin uniquement, jamais montrée au partenaire). Une chaîne vide l'efface. Plafonnée à 2000 caractères.
scope: * -
set_partner_kitWRITE-safeRemplace le contenu du kit partenaire (markdown) affiché/téléchargé sur la page Ressources du programme partenaire. Le nouveau contenu prend effet immédiatement.
scope: * -
reactivate_partnerWRITE-safeRéactive un partenaire suspendu (status → approved). Le tier précédemment assigné est conservé.
scope: * -
reconsider_partnerWRITE-safeRemet une candidature refusée en attente (pending) pour la reconsidérer.
scope: * -
archive_partnerWRITE-safeArchive un partenaire (le masque de la liste par défaut). Réversible. N'affecte ni les referrals ni les commissions.
scope: * -
unarchive_partnerWRITE-safeDésarchive un partenaire (le restaure dans la liste par défaut).
scope: * -
delete_partnerDESTRUCTIVESupprime définitivement un partenaire. Refusé si le partenaire a des referrals ou des commissions (archive-le plutôt). Pensé pour purger les candidatures test/spam.
scope: * -
platform.media.workspace_statsREADUsage de la médiathèque par workspace (count, archivés, bytes, générés par IA, quota, dernier upload).
scope: * -
platform.media.orphansREADListe les médias sans aucun usage enregistré et plus vieux que N jours. Triés par taille décroissante.
scope: * -
platform.media.set_quotaWRITE-safeDéfinit storage_quota_bytes sur un workspace. Passe null pour retirer le quota (illimité).
scope: * -
platform.media.purge_workspaceDESTRUCTIVESupprime définitivement tous les media_items et objets de stockage archivés depuis plus de N jours pour un workspace donné. Irréversible.
scope: *
Tools workspace
Scopés à un seul workspace via token OAuth.
ads.*
-
ads.campaigns.listREADListe les campagnes Ads.
scope: ads:read -
ads.campaigns.get_perfREADRécupère les métriques de performance d'une campagne Ads (dépense, impressions, clics, leads).
scope: ads:read -
ads.lead_funnelREADFunnel de qualité des leads de bout en bout pour les ads du workspace sur une fenêtre configurable. Renvoie les compteurs agrégés à chaque étape : leads soumis, appels bookés, contacts ayant payé, et revenu total en centimes. Permet à un agent de répondre "quel est mon ROI ads" sans fouiller chaque table.
scope: ads:read -
ads.launches.listREADListe les groupes de lancement multi-plateformes. Chaque lancement a éclaté un seul brief en 2 à 4 campagnes par plateforme. Renvoie le launch_group_id, le nom de haut niveau, l'objectif abstrait, le nombre de plateformes et le budget quotidien total sur toutes les plateformes.
scope: ads:read -
ads.launches.getREADRécupère un groupe de lancement multi-plateformes avec ses sous-campagnes + les métriques agrégées sur 7 jours (impressions, clics, dépense, conversions) sur toutes les plateformes.
scope: ads:read -
ads.campaign.updateWRITE-safeMet à jour les champs d'une campagne Ads.
scope: ads:write -
ads.campaign.pauseWRITE-safeMet en pause une campagne Ads.
scope: ads:write -
ads.campaign.resumeWRITE-safeRelance une campagne Ads en pause.
scope: ads:write -
ads.campaign.deleteDESTRUCTIVESupprime une campagne Ads.
scope: ads:delete
agent.*
-
agent.weekly_studio_publishWRITE-safe AGENTPublie tous les brouillons Studio approuvés sur les canaux demandés (LinkedIn / TikTok / Instagram / YouTube). Limites par canal. Continue en cas d'échec partiel et renvoie le détail par canal.
scope: * -
agent.process_inbound_leadWRITE-safe AGENTTraite un lead entrant (URL LinkedIn ou email) : enrichit via Apollo + Apify, upsert le contact, crée un deal d'opportunité, l'inscrit dans la séquence de bienvenue. Continue malgré les échecs best-effort (ex. timeout Apify).
scope: * -
agent.monthly_invoice_runWRITE-safe AGENTGénère + envoie les factures mensuelles récurrentes pour tous les clients en régie actifs d'un workspace. Idempotent sur (workspace_id, billing_month). dry_run=true renvoie la liste sans créer de factures.
scope: * -
agent.seo_autopilotWRITE-safe AGENTLance l'autopilot de contenu SEO pour ce workspace : recharge le pool de sujets depuis les opportunités Search Console, met en file selon la cadence hebdo, génère les articles en file, et (seulement si l'auto-publication est activée) les approuve et les publie. Renvoie les compteurs. Ne fait rien si l'autopilot est désactivé.
scope: seo:write -
agent.relance_impayesWRITE-safe AGENTPour chaque facture en retard : classe la sévérité (1=légère, 2=moyenne, 3=recouvrement), choisit le modèle, envoie l'email de relance.
scope: * -
agent.bulk_enrich_contactsWRITE-safe AGENTMet en file des scrapes de profils LinkedIn (Apify) pour des contacts en masse. Filtre par lifecycle_stage ou liste d'ids. Idempotent : ignore les contacts ayant déjà un scrape en cours.
scope: * -
agent.daily_briefingREAD AGENTAgrège la veille : nouveaux contacts/deals/publications/paiements/inbox. Renvoie un briefing en markdown.
scope: * -
agent.send_dm_in_voiceWRITE-safe AGENTRédige un DM dans le profil de voix de l'utilisateur et le dépose comme réponse suggérée dans le fil inbox (l'humain valide/envoie).
scope: *
agents.*
-
agents.get_runREADRécupère le status et le résultat d'un run d'agent en arrière-plan lancé dans ce workspace.
scope: agents:read -
agents.dispatchWRITE-safeDélègue une tâche à un agent en arrière-plan dans ce workspace. Retourne un run_id. L'agent s'exécute de manière asynchrone avec accès aux données et aux outils du workspace, interroge agents.get_run pour son status et son résultat. Utilise le mode "suggest" (par défaut, analyse en lecture seule) ou "act" (l'agent peut effectuer des actions write-safe).
scope: agents:dispatch
ai.*
-
ai.set_instructionsWRITE-safeDéfinit les instructions IA globales du workspace (Cerveau IA — la couche de voix ajoutée à chaque génération: DM, posts, pages, emails). language est une langue forcée optionnelle (vide = s'adapte à l'audience). enabled=false désactive entièrement la couche. Sauver le défaut plateforme inchangé efface l'override pour continuer à suivre les futures mises à jour du défaut.
scope: settings:write
analytics.*
-
analytics.summaryREADRésumé business cross-canal sur une fenêtre : dépense ads + funnel de leads (leads, appels, revenu) + résultats de bookings + revenu total. Renvoie les ratios dérivés (CPL, CAC, close rate, ROAS, ROI mixé). L'outil en un appel pour répondre 'comment tourne le business ce mois'.
scope: analytics:read -
analytics.callsREADAnalytics des appels sur une fenêtre (7d/30d/90d/ytd) : appels de la période vs la précédente (par status) plus les bookings générés. Complète analytics.summary avec le canal d'appels.
scope: analytics:read -
analytics.conversationsREADAnalytics Inbox / conversations sur une fenêtre : volumes, temps de réponse et résultats par canal. La vue DM + messagerie du business.
scope: analytics:read -
analytics.linksREADAnalytics des liens trackés sur une fenêtre : clics par lien court (les redirections /r/<code>) pour voir lesquels performent. Pour répondre à 'quels liens marchent'.
scope: analytics:read -
analytics.trafficREADKPIs de trafic du site sur les N derniers jours : sessions, visiteurs, conversions et revenu suivis sur le site du workspace. La vue audience (distincte de analytics.summary, qui est le funnel ads → leads → cash).
scope: analytics:read -
analytics.exec_summaryREADRésumé analytics exécutif sur une fenêtre (7d/30d/90d/ytd) : les métriques de santé clés du workspace en un appel.
scope: analytics:read -
analytics.funnelREADÉtapes du funnel de conversion sur une fenêtre (7d/30d/90d/ytd) : le volume à chaque étape (visiteurs → leads → appels → clients) pour voir où les prospects décrochent.
scope: analytics:read -
analytics.geoREADRépartition géographique de l'audience du workspace sur une fenêtre (7d/30d/90d/ytd) : sessions/visiteurs par pays. Répond à 'd'où vient mon trafic'.
scope: analytics:read
api_keys.*
-
api_keys.listREADListe les clés API (fos_sk_live_...) du workspace courant. Retourne uniquement les métadonnées, les tokens en clair ne sont jamais lisibles après création.
scope: api_keys:read -
api_keys.createWRITE-safeCrée une clé API longue durée pour le workspace courant. Le token en clair est retourné UNE SEULE FOIS dans cette réponse, stocke-le immédiatement. Les scopes valent ["read:*"] par défaut, passe ["*"] pour un accès complet.
scope: api_keys:write -
api_keys.revokeDESTRUCTIVERévoque une clé API par id. Met revoked_at = now. Les appels suivants avec le token révoqué retournent 401. Idempotent.
scope: api_keys:write
billing.*
-
billing.get_subscriptionREADRécupère l'état actuel de l'abonnement Kernel SaaS de ce workspace : plan, status, trial_end, fin de période, cancel_at_period_end.
scope: billing:read -
billing.get_usageREADRécupère le résumé d'usage de la période courante (service, quota inclus, utilisé, coût estimé du dépassement) pour ce workspace.
scope: billing:read -
billing.get_accountREADRécupère le compte de facturation qui paie ce workspace (un utilisateur possède N comptes, chacun payant N workspaces). Renvoie le propriétaire, le client Stripe, le moyen de paiement (marque/4 derniers chiffres/expiration). La liste des workspaces facturés par le même compte n'est renvoyée qu'au propriétaire du compte (viewer_is_owner=true) ; les invités ne voient que le workspace courant.
scope: billing:read -
billing.list_my_accountsREADListe les comptes de facturation de l'utilisateur courant (un utilisateur possède N comptes, un par entité payeuse ; chacun paie N workspaces). Retourne id, nom, billing_email, présence d'une carte, et le nombre de workspaces facturés par chacun. Utilise billing.create_account / rename_account / assign_workspace / delete_account / open_account_portal pour les gérer.
scope: billing:read -
billing.upgrade_checkoutWRITE-safeCrée une session Stripe Checkout pour faire passer ce workspace en Pro (essai de 14 jours, CB requise). Retourne l'URL Checkout hébergée, ouvre-la dans un navigateur pour finaliser le paiement.
scope: billing:write -
billing.open_portalWRITE-safeOuvre une session Stripe Customer Portal pour ce workspace (mettre à jour la carte, changer de plan, annuler). Retourne l'URL du portail.
scope: billing:write -
billing.open_user_portalWRITE-safeOuvre une session Stripe Customer Portal pour le Billing Account de l'utilisateur courant (cross-workspace : chaque abonnement payé par la même carte est gérable depuis un seul portail). À utiliser quand l'utilisateur veut mettre à jour sa carte une seule fois pour tous les workspaces dont il est propriétaire.
scope: billing:write -
billing.create_accountWRITE-safeCrée un nouveau compte de facturation pour l'utilisateur courant (un par entité payeuse, ex. une société). Un utilisateur possède N comptes, chacun avec son propre client Stripe et sa carte, chacun pouvant payer N workspaces. Retourne l'id du nouveau compte.
scope: billing:write -
billing.rename_accountWRITE-safeRenomme un des comptes de facturation de l'utilisateur courant. Réservé au propriétaire. Nom de 2 à 80 caractères.
scope: billing:write -
billing.assign_workspaceWRITE-safeAffecte un workspace à un des comptes de facturation de l'utilisateur (change l'entité qui le paie). L'utilisateur doit posséder le workspace ET le compte. Refusé tant que le workspace a un abonnement actif, annule-le d'abord (déplacer un abonnement Stripe vivant entre clients ne se fait pas ici).
scope: billing:write -
billing.delete_accountWRITE-safeSupprime un des comptes de facturation de l'utilisateur. Réservé au propriétaire. Refusé tant qu'un workspace y est rattaché (réaffecte-les d'abord). Le client Stripe est conservé pour garder l'accès aux factures passées.
scope: billing:write -
billing.open_account_portalWRITE-safeOuvre une session Stripe Customer Portal pour un compte de facturation PRÉCIS de l'utilisateur (gérer/ajouter sa carte, l'adresse de facturation). Réservé au propriétaire. Crée le client Stripe si besoin, donc marche même pour un compte tout neuf. Retourne l'URL du portail.
scope: billing:write
booking.*
-
booking.revenue_attributionREADRenvoie l'attribution de revenu des bookings sur une période : total des bookings, complétés, annulés, no-show, revenu attribué aux contacts ayant eu un booking + une transaction réussie dans la fenêtre. La métrique business clé pour un dev freelance qui vit des appels jusqu'à la vente.
scope: booking:read -
booking.closer_performanceREADPerformance commerciale par closer (le cockpit closer) : leads captés, bookings, taux de présence, close rate, cash encaissé et commission gagnée sur une période, plus les totaux du workspace. Répond à 'comment vont mes closers' / 'qui convertit'. Le cash est attribué en associant une transaction payée au prospect assigné du closer.
scope: booking:read -
booking.event_types.listREADListe les types d'événements réservables dans le workspace.
scope: booking:read -
booking.bookings.listREADListe les bookings (filtrables par status, since).
scope: booking:read -
booking.bookings.list_detailedREADListe détaillée et paginée des bookings avec nom / email / fuseau horaire de l'invité / type d'événement lié / hôte. À utiliser quand la liste simple ne donne pas assez de contexte.
scope: booking:read -
booking.bookings.getREADRécupère un booking de l'hôte appelant : status, invité, type d'événement lié, lien de réunion et créneau planifié. Renvoie not_found pour le booking d'un autre hôte.
scope: booking:read -
booking.event_type.updateWRITE-safeMet à jour un type d'événement de booking (nom, durée, état actif).
scope: booking:write -
booking.event_type.deleteDESTRUCTIVESupprime un des types d'événement de réservation de l'hôte appelant. Irréversible.
scope: booking:delete -
booking.availability.getREADRécupère la disponibilité de booking de l'utilisateur appelant : les règles hebdomadaires récurrentes (jour + début/fin + fuseau) et les exceptions de dates (jours fermés / horaires spéciaux). Scopé au calendrier de l'appelant.
scope: booking:read -
booking.availability.set_rulesWRITE-safeRemplace la disponibilité hebdomadaire récurrente de l'utilisateur appelant par un nouveau jeu de règles (chacune : weekday 0-6 où 0=dimanche, start_time et end_time en 'HH:MM'). ÉCRASE toutes les règles hebdomadaires existantes. Scopé au calendrier de l'appelant.
scope: booking:write -
booking.availability.add_overrideWRITE-safeAjoute une exception de date au calendrier de l'utilisateur appelant : soit fermer une date précise (is_closed=true), soit définir des horaires spéciaux (is_closed=false + start_time/end_time 'HH:MM'). Scopé au calendrier de l'appelant.
scope: booking:write -
booking.availability.delete_overrideWRITE-safeRetire une exception de date du calendrier de l'utilisateur appelant par son id. Scopé au calendrier de l'appelant.
scope: booking:write -
booking.cancelWRITE-safeAnnule un rendez-vous confirmé par son id (le trouver d'abord via booking.bookings.list). Déroule tout : statut annulé, suppression de l'événement agenda, et email d'annulation à l'invité. Scopé au calendrier de l'appelant. Donne une raison courte si l'utilisateur en fournit une. Irréversible.
scope: booking:write -
booking.mark_statusWRITE-safeMarque un rendez-vous passé comme 'no_show' (l'invité n'est pas venu) ou 'completed' (l'appel a eu lieu), par son id. Le trouver via booking.bookings.list. Scopé au calendrier de l'appelant. Aucun email envoyé. Utilise booking.cancel (pas ceci) pour annuler un rendez-vous à venir.
scope: booking:write
brand.*
-
brand.save_theme_wizardWRITE-safeEnregistre le design system du workspace en un seul appel : preset de vibe + couleur d'accent + typographie + radius + densité. Compile le bundle complet de tokens (color/font/radius/shadow + layout) et l'écrit dans workspace_theme. Reflète l'accent dans workspaces.brand_color.
scope: settings:write
business.*
-
business.coupons.deleteDESTRUCTIVESupprime définitivement un coupon (scopé workspace). Refusé si le coupon a déjà été utilisé, pour préserver l'historique des transactions — mets-le en pause à la place. Irréversible.
scope: business:delete -
business.coupons.listREADListe les coupons de réduction du workspace : code, type/valeur de remise, nombre d'utilisations, fenêtre de validité et status. Répond à 'quels codes promo j'ai'.
scope: business:read -
business.referral.overviewREADVue d'ensemble du programme de parrainage : la config du programme (status, récompenses, déclencheur de paiement) plus les compteurs agrégés d'événements par status et les paiements en attente. Répond à 'comment tourne mon parrainage'.
scope: business:read -
business.referral.leaderboardREADLeaderboard de parrainage : par parrain, les visites, signups, conversions, revenu et récompense sur tout l'historique, trié par récompense/conversions/visites/signups/revenu. Répond à 'qui sont mes meilleurs parrains'.
scope: business:read -
business.coupons.createWRITE-safeCrée un coupon de réduction pour le workspace. code normalisé en MAJUSCULES (unique par workspace). discount_type : 'percentage' (discount_value = 0-100), 'fixed_amount' (discount_value = montant dans la plus petite unité de la devise, ex. 2000 = 20€), ou 'free_trial'. Créé en 'draft' par défaut — mets status:'active' pour le rendre utilisable tout de suite. max_redemptions et valid_until (date ISO) optionnels. Répond à 'crée un code promo'.
scope: business:write -
business.coupons.updateWRITE-safeMet à jour un coupon existant par id (scopé workspace). Chaque champ fourni est patché ; omets un champ pour le laisser inchangé. Utilise status pour activer ('active'), mettre en pause ('disabled') ou repasser en 'draft'. Répond à 'modifie / active / suspends un code promo'.
scope: business:write -
business.referral.update_programWRITE-safeMet à jour la config du programme de parrainage du workspace : status ('active' / 'paused' / 'archived'), récompense parrain (cash en cents ou pourcentage), récompense filleul, déclencheur de paiement, fenêtre cookie et paiement minimum. Crée le programme s'il n'existe pas. Répond à 'configure / modifie mon parrainage'.
scope: business:write
calendar.*
-
calendar.agendaREADL'agenda du workspace sur une période : tous les items datés fusionnés et triés — tâches et échéances dues, rendez-vous planifiés, posts programmés ou à vérifier, personnes à appeler, relances, factures à échéance, webinars. À UTILISER pour 'qu'est-ce que j'ai au calendrier / cette semaine / qu'est-ce qui est dû'. Ne renvoie que les domaines que l'appelant peut lire.
scope: calendar:read
collections.*
-
collections.listREADListe les collections de contenu du workspace avec leur id, nom, slug public et statut.
scope: collections:read -
collections.getREADRécupère une collection avec ses champs ordonnés (le schéma). Résolution par id ou slug.
scope: collections:read -
collections.recordsREADListe les entrées d’une collection avec leur contenu. Filtrable par statut.
scope: collections:read -
collections.plansREADListe les plans d’abonnement end-user du workspace (nom, prix, cadence, statut, si synchronisé à Stripe).
scope: collections:read -
collections.subscriptionsREADListe les abonnements end-user du workspace avec l’email du client, le nom du plan et le statut (qui est abonné à quoi).
scope: collections:read -
collections.revenueREADLe revenu récurrent end-user du workspace : MRR par devise (plans annuels ramenés au mois) plus le nombre d’abonnements actifs, en essai, en échec de paiement et se terminant bientôt.
scope: collections:read -
collections.createWRITE-safeCrée une collection de contenu en BROUILLON avec ses champs (le schéma). Ne publie jamais automatiquement, appelle collections.set_status pour publier. Marque un champ is_title pour le nom affiché.
scope: collections:write -
collections.set_statusWRITE-safePublie, dépublie (retour en brouillon) ou archive une collection.
scope: collections:write -
collections.add_recordWRITE-safeAjoute une entrée à une collection. `data` est indexé par clé de champ et validé contre le schéma. Créé en brouillon sauf si un statut est fourni.
scope: collections:write -
collections.set_record_statusWRITE-safePublie, dépublie (retour en brouillon) ou archive une entrée de collection.
scope: collections:write -
collections.create_planWRITE-safeCrée un plan d’abonnement end-user pour l’app du workspace. Synchronise un Stripe Price récurrent sur le compte connecté si Stripe est connecté (sinon le plan est créé mais pas encore souscriptible).
scope: collections:write -
collections.set_plan_statusWRITE-safeArchiver ou réactiver un plan d’abonnement end-user. Les plans archivés restent pour l’historique mais disparaissent des tarifs publics (seuls les plans actifs sont publics).
scope: collections:write -
collections.update_plan_pricingWRITE-safeChange le prix, la devise ou la cadence d’un plan end-user. Un Stripe Price est immuable, donc un nouveau Price est créé et le plan y est repointé : les abonnés existants gardent leur prix, les nouveaux checkouts prennent le nouveau. amount_cents est dans la plus petite unité (ex. 2500 = 25,00 EUR).
scope: collections:write
contacts.*
-
contacts.listREADListe les contacts du workspace courant, filtrables par lifecycle_stage / source / q (texte libre) / country / city / role (intitulé de poste ou headline) / company / icp_score_min / icp_score_max / has_linkedin / has_email / created_after / created_before (ISO). Renvoie les lignes correspondantes (avec company / role / country / icp_score). Pour répondre à "combien", utilise plutôt contacts.count, ne pagine pas pour compter à la main.
scope: contacts:read -
contacts.countREADCompte les contacts correspondant à un filtre structuré (lifecycle_stage / source / q (texte libre) / country / city / role (intitulé de poste ou headline) / company / icp_score_min / icp_score_max / has_linkedin / has_email / created_after / created_before (ISO).) SANS renvoyer les lignes. L'outil pour "combien de contacts sont <critères>" (ex. développeurs en France avec icp_score >= 70). Un appel, compte exact, jamais lister puis compter de tête.
scope: contacts:read -
contacts.getREADRécupère un contact par id (doit appartenir au workspace courant).
scope: contacts:read -
contacts.get_360READVue 360 du prospect : contact (avec icp_score) + conversations récentes + bookings + audits + deals + le brief outreach IA (hook/pain/belief/CTA + faits utilisés).
scope: contacts:read -
contacts.searchREADRecherche des contacts par sous-chaîne email/nom/linkedin.
scope: contacts:read -
contacts.hottestREADLes contacts à traiter en priorité, classés par un score d'intent composite (réponses/bookings/ouvertures mail + étape funnel + fit ICP + récence), top N en UN seul appel. mode 'hot' = contacts engagés à closer ; 'cold_fit' = fort fit ICP pas encore engagés, à prospecter. À UTILISER pour 'qui contacter en priorité / le plus susceptible d'acheter' — ne jamais boucler sur contacts.get_360. Chaque contact renvoie hotness, why_hot, l'accroche en cache (le message à envoyer) + opener_status, le canal + linkedin_url/email, et le détail des composantes. Pour agir : présente l'accroche et propose un bouton ui.link_action vers le linkedin_url du contact (envoi assisté — l'utilisateur relit et envoie ; ne prétends jamais avoir envoyé).
scope: contacts:read -
contacts.paying_customersREADListe les contacts qui ont payé sur la période, triés par montant total décroissant. Joint prospects.email avec transactions.email pour récupérer le contact_id quand il est présent. Utile pour un agent qui répond 'qui m'a acheté' ou pour déclencher des workflows de relance.
scope: contacts:read -
contacts.interactions.listREADListe les interactions journalisées (appels, emails, rdv, notes...) d'un contact, plus récentes d'abord. La timeline écrite par contacts.log_interaction. À UTILISER pour 'quel est l'historique avec X / quand ai-je parlé à Y la dernière fois'.
scope: contacts:read -
contacts.log_interactionWRITE-safeJournalise une interaction réelle avec un contact sur sa timeline (un appel, un email, un rdv, un message...). À UTILISER pour 'note que j'ai appelé X / log mon rdv avec Y' — ça ajoute une entrée horodatée, ça n'écrase PAS les notes du contact. kind vaut 'note' par défaut. occurred_at vaut maintenant par défaut (passe une date ISO pour une interaction passée). Trouve l'id du contact via contacts.search d'abord.
scope: contacts:write -
contacts.upsertWRITE-safeCrée ou met à jour un contact (par id, email ou linkedin_url).
scope: contacts:write -
contacts.enrichWRITE-safeMet en file un scrape de profil LinkedIn pour un contact (via Apify). Idempotent : réutilise un job en cours s'il en existe déjà un.
scope: contacts:write -
contacts.tagWRITE-safeAjoute un tag à un contact.
scope: contacts:write -
contacts.deleteDESTRUCTIVESupprime définitivement un contact et toutes ses données liées. Irréversible.
scope: contacts:delete
conversations.*
-
conversations.transcripts.listREADListe les enregistrements d'appels de ce workspace : réunions Fathom et appels vocaux Twilio, unifiés. Chaque élément porte provider, summary, durée, URL d'enregistrement et recording id.
scope: conversations:read -
conversations.transcripts.getREADRécupère la transcription d'un enregistrement d'appel par id (summary + tours Fathom ou segments vocaux diarisés). id est le transcript id renvoyé par conversations.transcripts.list.
scope: conversations:read -
conversations.note.createWRITE-safeAjoute une note à la transcription d'une conversation.
scope: conversations:write
copilot.*
-
copilot.briefingREADLe point proactif 'que dois-je faire maintenant' : les actions prioritaires entre contacts chauds à contacter, rendez-vous à préparer, tâches ouvertes, et factures impayées à relancer. À UTILISER pour 'que faire aujourd'hui / fais le point / où on en est'. Chaque item porte un compte + l'outil pour agir. Ne renvoie que ce que l'appelant a le droit de voir.
scope: agents:read -
copilot.askWRITE-safePose une question au copilote du workspace et récupère la réponse complète en synchrone. S'exécute en lecture seule sur les données et outils du workspace. Tu peux joindre des images ou PDF par URL, le copilote les lit (vision / document). Pour un travail autonome long pouvant écrire, utilise plutôt agents.dispatch.
scope: agents:dispatch
counsel.*
-
counsel.quotes.listREADListe les devis Counsel.
scope: counsel:read -
counsel.invoices.listREADListe les factures Counsel.
scope: counsel:read -
counsel.invoice.einvoicing_statusREADStatut de transmission (Plateforme Agréée) d'une facture Counsel.
scope: counsel:read -
counsel.received.listREADListe les factures fournisseurs reçues via la Plateforme Agréée (réception).
scope: counsel:read -
counsel.revenue.summaryREADRevenu total des transactions réussies sur une fenêtre. Ventile par semaine et donne les meilleurs clients contributeurs (email + total). Permet à un agent de répondre 'combien j'ai encaissé ce mois' en un seul appel.
scope: counsel:read -
counsel.contracts.getREADRécupère un contrat Counsel avec son corps, ses signataires et le contact lié.
scope: counsel:read -
counsel.contracts.templates_listREADListe les modèles de contrat disponibles pour le workspace (les siens + les presets), avec leur corps.
scope: counsel:read -
counsel.contracts.previewREADRend le corps d'un contrat avec ses variables résolues, tel que le client le lira. Passe un id de contrat, ou du markdown brut pour tester.
scope: counsel:read -
counsel.quote.createWRITE-safeCrée un devis Counsel.
scope: counsel:write -
counsel.quote.sendWRITE-safeEnvoie un devis Counsel au contact (status → sent).
scope: counsel:write -
counsel.invoice.createWRITE-safeCrée une facture Counsel.
scope: counsel:write -
counsel.invoice.sendWRITE-safeEnvoie une facture Counsel (status → sent).
scope: counsel:write -
counsel.contracts.createWRITE-safeCrée un contrat en brouillon. Part d'un modèle (template_head_id) ou d'un body_md. Les signataires peuvent être ajoutés maintenant ou plus tard ; l'envoi reste une action manuelle dans l'app.
scope: counsel:write -
counsel.contracts.updateWRITE-safeMet à jour un contrat en BROUILLON (titre, corps, client, signataires). Un contrat envoyé ou signé est immuable. Les champs omis ne bougent pas ; passer signers remplace toute la liste.
scope: counsel:write -
counsel.contracts.save_as_templateWRITE-safeEnregistre le corps d'un contrat comme modèle réutilisable et publié. Les variables sont conservées telles quelles pour se résoudre sur le client suivant.
scope: counsel:write -
counsel.invoice.cancelDESTRUCTIVEAnnule une facture Counsel (status → cancelled).
scope: counsel:delete -
counsel.payment.refundDESTRUCTIVERembourse le paiement d'une facture Counsel via Stripe.
scope: counsel:refund -
counsel.contracts.listREADListe les contrats Counsel du workspace (numéro, titre, status, sent_at, fully_signed_at), filtrables par status. Complète counsel.quotes.list / counsel.invoices.list.
scope: counsel:read
crm.*
-
crm.segments.listREADListe les segments CRM du workspace courant.
scope: contacts:read -
crm.segments.getREADRécupère un segment CRM avec les prospects qui le composent.
scope: contacts:read -
crm.segments.createWRITE-safeCrée un nouveau segment CRM (appartenance manuelle).
scope: contacts:write -
crm.segments.create_from_queryWRITE-safeCrée un segment CRM DYNAMIQUE à partir d'un filtre contact structuré et le remplit côté serveur en UN appel, sans boucle par contact ni filtrage en contexte. Filtre : lifecycle_stage / source / q (texte libre) / country / city / role (intitulé de poste ou headline) / company / icp_score_min / icp_score_max / has_linkedin / has_email / created_after / created_before (ISO). Le filtre est stocké sur le segment, appelle crm.segments.refresh plus tard pour le re-matérialiser. À UTILISER pour "crée un segment de <critères>" (ex. développeurs en France avec icp_score >= 70). Renvoie l'id du segment + member_count.
scope: contacts:write -
crm.segments.refreshWRITE-safeRe-matérialise un segment DYNAMIQUE à partir de son filtre stocké : ré-évalue les contacts correspondants et remplace les membres. Ne marche que sur les segments créés via crm.segments.create_from_query. Renvoie le nouveau member_count.
scope: contacts:write -
crm.segments.add_membersWRITE-safeAjoute des contacts à un segment CRM (idempotent, doublons ignorés).
scope: contacts:write -
crm.segments.remove_membersWRITE-safeRetire des contacts d'un segment CRM.
scope: contacts:write -
crm.segments.deleteWRITE-safeSupprime un segment CRM (les lignes d'appartenance sont supprimées en cascade).
scope: contacts:write
deals.*
-
deals.listREADListe les deals du workspace courant, filtrables par stage.
scope: deals:read -
deals.getREADRécupère un deal par id.
scope: deals:read -
deals.createWRITE-safeCrée un nouveau deal pour un contact.
scope: deals:write -
deals.updateWRITE-safeMet à jour un deal (n'importe quel champ).
scope: deals:write -
deals.move_stageWRITE-safeDéplace un deal vers une nouvelle étape du pipeline.
scope: deals:write -
deals.deleteDESTRUCTIVESupprime un deal.
scope: deals:delete
design.*
-
design.listREADListe les designs visuels du workspace (Brand Studio / éditeur de design) avec leurs URLs d'édition. Utilise design.create pour en démarrer un que l'utilisateur pourra ensuite éditer.
scope: design:read -
design.getREADRécupère un design du workspace par id, avec son URL d'édition.
scope: design:read -
design.get_docREADRécupère le document éditable complet d'un design : ses artboards et les layers de chacun (type, x/y/w/h, rotation, props). C'est la moitié lecture d'une boucle lire-modifier-écrire — récupère-le, change les layers, puis renvoie-les avec design.update_doc. Renvoie les artboards + l'URL d'édition.
scope: design:read -
design.renderREADRend un design en images PNG d'aperçu et renvoie leurs URLs publiques — pour voir le résultat, pas juste le lien d'édition. Rasterise chaque artboard côté serveur (une image par slide de carrousel / page de deck), fidèle à la vignette de l'éditeur. À enchaîner après design.create_from_doc / generate / generate_carousel / update_doc. Renvoie slides[] (index + preview_url + dimensions), preview_url (première) + edit_url.
scope: design:read -
design.createWRITE-safeCrée un nouveau design visuel vierge dans l'éditeur de design du workspace, au format d'un canal, et retourne son URL d'édition. Canaux : linkedin_square, linkedin_portrait, story_9x16, ad_square, one_pager_a4, wide_16x9, web_banner. L'utilisateur (ou un autre outil) l'édite ensuite dans l'éditeur de design.
scope: design:write -
design.generateWRITE-safeGénère un design visuel à la marque depuis une intention en texte (utilise le BrandContext du workspace + l'IA), au format d'un canal, et l'enregistre. Renvoie l'id du design + l'URL d'édition pour relecture. Canaux : linkedin_square, linkedin_portrait, story_9x16, ad_square, one_pager_a4, wide_16x9, web_banner. IA facturée : nécessite un moyen de paiement et le module design dans le plan.
scope: design:write -
design.from_referenceWRITE-safeRecrée le LANGAGE DE MISE EN PAGE d'une image d'inspiration en un design éditable à la marque. Un modèle de vision étudie la structure de la référence (grille, hiérarchie, style typo, rythme des couleurs, échelle des images) et la reconstruit avec la marque du workspace + un contenu original. Il ne copie PAS les logos, marques, noms ou textes exacts de la source : c'est un outil d'inspiration, pas un clone. Fournis une URL d'image publique. Renvoie l'id + l'URL d'édition. Canaux : linkedin_square, linkedin_portrait, story_9x16, ad_square, one_pager_a4, wide_16x9, web_banner. IA facturée : nécessite un moyen de paiement et le module design dans le plan.
scope: design:write -
design.compare_to_referenceWRITE-safeCompare visuellement un design à une image d'inspiration et renvoie une critique MESURÉE pour converger sur la mise en page. Rend le design, montre les deux à un modèle de vision, et renvoie un score de similarité (0-100), des problèmes classés, et surtout adjustments[] : pour chaque élément, une cible { x, y, w, h } en pixels du canvas, mesurée sur la référence. Compare chaque cible à la position actuelle de l'élément pour obtenir un déplacement exact au pixel, applique via design.update_doc, puis recompare jusqu'à ce que la similarité plafonne. Le rendu peut afficher des carrés à la place du texte (polices non embarquées), donc il juge la POSITION et la TAILLE, pas la forme des glyphes. IA facturée : nécessite un moyen de paiement et le module design.
scope: design:write -
design.generate_carouselWRITE-safeGénère un carrousel multi-slides à la marque depuis une intention en texte (BrandContext du workspace + IA), au format d'un canal, et l'enregistre comme un seul design. Renvoie l'id du design + l'URL d'édition. Canaux : linkedin_square, linkedin_portrait, story_9x16, ad_square, one_pager_a4, wide_16x9, web_banner. IA facturée : nécessite un moyen de paiement et le module design dans le plan.
scope: design:write -
design.create_from_docWRITE-safeCrée un design à partir d'un document de layers précis — la voie "design en détail" (comme construire dans Figma). Tu places chaque layer toi-même : text, image ou shape, positionné en x/y/w/h (pixels, origine en haut à gauche) dans l'artboard du canal, plus des props par type. Pas d'IA, déterministe : ce que tu envoies est ce qui est construit. Renvoie l'id du design + une URL d'édition. Canaux : linkedin_square, linkedin_portrait, story_9x16, ad_square, one_pager_a4, wide_16x9, web_banner. Props par layer : - text : { text, fontSize, color (hex), fontWeight (400-800), align (left|center|right), lineHeight } - image : { src (URL https publique) } - shape : { fill (hex), radius, stroke, strokeWidth } Nécessite le module design dans le plan (pas de carte, rien n'est facturé).
scope: design:write -
design.update_docWRITE-safeÉdite un design existant en remplaçant ses artboards par ceux que tu fournis — la moitié écriture d'une boucle lire-modifier-écrire (lis avec design.get_doc, change les layers, renvoie-les ici). Chaque artboard est un document complet (background + layers). Optionnellement change aussi le titre/statut. Déterministe, incrémente la version. Renvoie l'URL d'édition. Nécessite l'écriture design.
scope: design:write -
design.deleteDESTRUCTIVESupprime définitivement un design (visuel Brand Studio) du workspace. Irréversible.
scope: design:delete
domains.*
-
domains.removeDESTRUCTIVERetire un domaine personnalisé du workspace : le détache de l'hébergeur et le met hors ligne (le site ne répond plus sur cet hôte). Retire son drapeau principal. Réversible en le rajoutant via domains.add. Nécessite les droits d'écriture des réglages.
scope: settings:write -
domains.listREADListe les domaines personnalisés du workspace (site, membres, blog, pages) avec leur statut de vérification + SSL. Pour répondre à 'mon domaine est connecté / vérifié'.
scope: settings:read -
domains.dns_recordsREADRécupère les enregistrements DNS à poser chez le registrar pour un domaine personnalisé (les entrées A / CNAME / TXT qui le font vérifier et servir). À combiner avec domains.list pour le statut de vérification, et domains.refresh une fois posés.
scope: settings:read -
domains.addWRITE-safeConnecte un domaine personnalisé au site public ou à l'espace membres du workspace. L'enregistre chez l'hébergeur, stocke les DNS à poser et lance la vérification (statut 'verifying' jusqu'à propagation + SSL). Renvoie l'id du domaine et les enregistrements DNS. Nécessite le plan Pro. Sortant mais réversible avec domains.remove.
scope: settings:write -
domains.refreshWRITE-safeRevérifie la vérification et le SSL d'un domaine personnalisé auprès de l'hébergeur et met à jour son statut + ses DNS stockés. À appeler après avoir posé les DNS (ou pour suivre un domaine 'verifying').
scope: settings:write -
domains.sync_auth_redirectsWRITE-safeEnregistre les domaines personnalisés actifs du workspace dans la liste d'autorisation des redirections auth Supabase, pour que la connexion sociale end-user (Google) sur ces domaines revienne sur le site au lieu du Site URL par défaut. Idempotent, à lancer une fois après avoir connecté un domaine. Les domaines fraîchement vérifiés sont enregistrés automatiquement, ceci rattrape les existants. Sans effet si le token Management API n'est pas configuré.
scope: settings:write -
domains.set_primaryWRITE-safeFait d'un domaine personnalisé actif le domaine principal du workspace — l'hôte canonique utilisé pour les balises OG, le sitemap et les liens des emails sortants. Un seul principal par workspace ; le domaine doit être vérifié/actif.
scope: settings:write -
domains.connect_search_consoleWRITE-safeRelie un domaine de site public actif à Google Search Console en une étape : vérification de propriété (servie automatiquement par le site), création de la propriété et soumission du sitemap. Nécessite que le compte Google du workspace soit connecté avec accès en écriture. Renvoie 'connected', 'not_connected' (connecte Google d'abord) ou 'reconnect_required' (reconnecte Google pour autoriser l'écriture Search Console).
scope: settings:write
email.*
-
email.templates.listREADListe tous les templates email système (transactionnels + marketing) fusionnés avec les overrides de ce workspace. Affiche key, label, category, si le template est personnalisé et s'il est activé.
scope: email:read -
email.templates.getREADRécupère un template email effectif (subject + corps HTML, override ou registry default) par key, éventuellement pour une locale (fr/en).
scope: email:read -
email.campaigns.listREADListe les campagnes email du workspace avec leur status et les stats principales (enrolled/sent/opened/replied).
scope: campaigns:read -
email.campaigns.getREADRécupère une campagne email par id avec ses stats complètes et ses audience rules.
scope: campaigns:read -
email.templates.updateWRITE-safeCrée ou met à jour l'override de ce workspace pour un template email. Subject + bodyHtml peuvent utiliser des placeholders {{variable}} (voir email.templates.get pour les variables autorisées). Mets enabled=false pour arrêter complètement l'envoi de cet email.
scope: email:write -
email.templates.resetWRITE-safeSupprime l'override de ce workspace pour un template (pour une locale), retour au registry default.
scope: email:write -
email.send_testWRITE-safeRend un template email avec les variables d'exemple fournies et l'envoie à une adresse de test. Utilise le sender vérifié du workspace.
scope: email:write -
email.campaigns.createWRITE-safeCrée une campagne email en DRAFT (aucun email envoyé). Choisis une outbound sequence existante et des audience rules optionnelles. Utilise email.campaigns.launch pour enrôler l'audience et démarrer l'envoi.
scope: campaigns:write -
email.campaigns.pauseWRITE-safeMet en pause, reprend ou termine une campagne. action='pause' (active vers paused), 'resume' (paused vers active), 'done' (active|paused vers done). L'outbound runner vérifie le status avant chaque envoi.
scope: campaigns:write -
email.campaigns.launchDESTRUCTIVEActive une campagne et enrôle l'audience correspondante dans son outbound sequence. De VRAIS emails seront envoyés par l'outbound runner. Idempotent : relancer enrôle les prospects nouvellement correspondants. Nécessite une approbation.
scope: campaigns:write
entitlements.*
-
entitlements.listREADListe les entitlements résolus (modules, fonctionnalités, limites) pour ce workspace selon son plan actuel + son état offert.
scope: billing:read -
entitlements.checkREADVérifie si le workspace a accès à une fonctionnalité (module.* ou feature.*). Renvoie allowed + reason + required_plan en cas de refus.
scope: billing:read
forms.*
-
forms.listREADListe les formulaires de capture du workspace avec leur id, titre, slug public et statut (brouillon / publié / archivé).
scope: forms:read -
forms.getREADRécupère un formulaire par id avec ses champs ordonnés (type, label, options, requis).
scope: forms:read -
forms.submissionsREADListe les soumissions récentes d’un formulaire : données des réponses, id du contact lié (quand un email a été capturé) et horodatage submitted_at.
scope: forms:read -
forms.statsREADFunnel d’un formulaire : vues, soumissions (total + 7 derniers jours) et taux de complétion (%).
scope: forms:read -
forms.createWRITE-safeCrée un formulaire de capture en BROUILLON avec ses champs. Ne publie jamais automatiquement, appelle forms.set_status pour publier. Ajoute un champ email pour relier les soumissions aux contacts.
scope: forms:write -
forms.set_statusWRITE-safePublie, dépublie (retour en brouillon) ou archive un formulaire.
scope: forms:write -
forms.set_allowed_originsWRITE-safeDéfinit les domaines externes autorisés à envoyer ce formulaire depuis un autre site (Connexion site externe). Remplace la liste actuelle. Un domaine exact par entrée, ex https://mon-site.com. Vide = même origine seulement.
scope: forms:write -
forms.set_actionsWRITE-safeRemplace les actions à l'envoi de ce formulaire (Connexion site externe) : notify_internal (email à l'équipe), confirm_lead (email au contact), webhook (POST signé). Livrées en tâche de fond avec réessais.
scope: forms:write
inbox.*
-
inbox.threads.listREADListe les fils de conversation Inbox (DMs / commentaires).
scope: inbox:read -
inbox.get_agent_modesREADRécupère le mode de l'agent DM par canal (off | suggested | auto) pour Instagram, WhatsApp, LinkedIn, Messenger. Le mode 'auto' de LinkedIn est interdit (TOS) et toujours rapporté comme 'suggested' ou 'off'. Renvoie aussi le framework, le prompt de voix et la config de booking. Scopé au workspace appelant, renvoie les valeurs par défaut (tout en 'off') si aucune ligne de réglages n'existe encore pour ce workspace.
scope: inbox:read -
inbox.send_dmWRITE-safeRépond par DM dans un fil Inbox. Envoie réellement uniquement si le workspace a ce canal en mode auto (LinkedIn) ; sinon dépose une suggestion à valider par un humain.
scope: inbox:write -
inbox.set_agent_modeWRITE-safeDéfinit le mode de l'agent DM pour un seul canal (instagram_dm | whatsapp | linkedin | messenger). Modes : off | suggested | auto. Le mode 'auto' LinkedIn est refusé (TOS Microsoft, risque de bannissement du compte) et ramené à 'suggested'. L'ancien dm_agent_mode global est tenu à jour comme max(IG/WA/Messenger). Limité au workspace appelant, refuse si aucune ligne de réglages n'existe encore pour ce workspace.
scope: inbox:write -
inbox.set_dm_agent_settingsWRITE-safeDéfinit le positionnement de l'agent DM : son framework conversationnel (spin | bant | awareness | custom) et/ou son prompt de voix libre (le contexte business et le ton dans lequel il écrit). Mise à jour partielle, seuls les champs fournis sont modifiés, un prompt de voix vide l'efface. Sert à configurer comment l'agent sonne, pas le mode on/off par canal (voir inbox.set_agent_mode).
scope: inbox:write
integrations.*
-
integrations.connectREADRenvoie la page in-app pour connecter une intégration (linkedin, stripe, whatsapp, instagram, messenger, google_calendar, youtube, tiktok, analytics, resend). Le copilote NE PEUT PAS connecter à la place de l'utilisateur — combine avec ui.link_action pour qu'il finisse le flux OAuth/connexion. Vérifie d'abord team.integrations.list pour voir ce qui est déjà connecté.
scope: settings:read
knowledge.*
-
knowledge.listREADListe les éléments de la base de connaissance (faits, objections, preuves que le copilote peut réutiliser pour répondre aux prospects), filtrables par type. Chacun a son texte, son type, sa catégorie et son état d'approbation.
scope: knowledge:read -
knowledge.createWRITE-safeAjoute un élément à la base de connaissance que le copilote réutilise pour répondre aux prospects. type : 'objection', 'pain', 'win_phrase', 'story', 'vocabulary' ou 'anti_pattern'. text est le contenu (ex. l'objection et comment y répondre). category + context optionnels. Créé en source MANUAL et approuvé (l'utilisateur l'a saisi exprès). À utiliser pour 'retiens cette objection / ajoute à ma base de connaissance'.
scope: knowledge:write -
knowledge.set_approvedWRITE-safeApprouve ou retire l'approbation d'un élément de la base de connaissance. Les éléments approuvés sont ceux réutilisés pour répondre aux prospects.
scope: knowledge:write
linkedin.*
-
linkedin.list_devicesREADListe les navigateurs pairés du workspace courant : id, label, statut, santé, compte LinkedIn observé, dernier heartbeat.
scope: linkedin:read -
linkedin.list_jobsREADListe les actions LinkedIn en file du workspace courant, plus récentes d'abord. Filtre par statut, action ou device.
scope: linkedin:read -
linkedin.enqueue_actionWRITE-safeMet en file une action LinkedIn à exécuter par un navigateur pairé (connect, message, comment, react, visit, scrape_profile, post). Fournis target_urn ou un contact_id. Utilise dedupe_key pour éviter les doublons vivants. L'action s'exécute dans le vrai navigateur sous la politique anti-ban, pas immédiatement.
scope: linkedin:write -
linkedin.import_searchWRITE-safeImporte des leads depuis une recherche LinkedIn ou Sales Navigator dans les contacts, via un navigateur pairé (acquisition à la Waalaxy). Fournis un search_url (la page de résultats) ou des keywords, et le nombre max de leads. Le navigateur scrape la recherche et les leads sont upsertés en contacts, dédupliqués par URL de profil. Sous la politique anti-ban.
scope: linkedin:write -
linkedin.scrape_engagementWRITE-safeImporte en contacts (leads chauds) les personnes qui ont réagi ou commenté un post LinkedIn, via un navigateur pairé. Fournis le post_url (ou activity_urn). Remplace le pipeline d'engagement Unipile ; dédup par (post, auteur, type). Sous la politique anti-ban.
scope: linkedin:write -
linkedin.generate_pairing_codeWRITE-safeÉmet un code de pairing à usage unique pour connecter une extension navigateur à ce workspace. Renvoie le code une seule fois, à coller dans l'extension. Expire en 15 minutes.
scope: linkedin:manage_devices
mcp.*
-
mcp.tools.listREADAuto-introspection : renvoie le catalogue de tous les outils MCP que ce workspace peut appeler, filtrable par préfixe de module ou par tier. Utile quand un agent doit découvrir les actions disponibles avant de planifier un workflow multi-étapes.
scope: mcp:read
media.*
-
media.listREADListe les médias du workspace courant avec des filtres optionnels (kind, collection, tags, source). Paginé par cursor created_at.
scope: media:read -
media.searchREADRecherche full-text sur alt_text, caption et generation_prompt. Mêmes filtres que media.list.
scope: media:read -
media.getREADRécupère un média avec une signed URL fraîche (TTL 1h) ou une URL publique pour les assets publics.
scope: media:read -
media.lineageREADRenvoie les parents (refs utilisées pour générer cette image) et les enfants (images générées à partir d'elle).
scope: media:read -
media.usagesREADListe les entités (pages, drafts, ad creatives, etc.) qui référencent ce média.
scope: media:read -
media.uploadWRITE-safeUpload un média dans la librairie du workspace depuis des données base64. Auto-dédup sur le checksum. Renvoie la row persistée.
scope: media:write -
media.tagWRITE-safeAjoute/retire des tags, change la collection, met à jour l'alt-text ou la caption d'un média.
scope: media:write -
media.record_usageWRITE-safeEnregistre qu'une entité (page, draft, creative, …) référence ce média. Idempotent sur (media, entity, field).
scope: media:write -
media.archiveWRITE-safeArchive en douceur un média (renseigne archived_at). Réversible.
scope: media:write -
media.deleteDESTRUCTIVESupprime définitivement un média (row DB + bytes du storage). Irréversible. Nécessite une approbation JIT.
scope: media:delete
members_app.*
-
members_app.overviewREADAperçu de la config actuelle de l'app membres pour le workspace : domaine actif (kind=members), nombre de fonctionnalités activées, nombre d'éléments de menu.
scope: members_app:read -
members_app.features.listREADListe complète des bascules de fonctionnalités de l'app membres (registry + override workspace). Chaque entrée : key, label, href, default_enabled, enabled.
scope: members_app:read -
members_app.menu.listREADListe les éléments de menu personnalisés configurés pour la navigation de l'app membres (handle="members"). Retourne id, label, url, position, target.
scope: members_app:read -
members_app.features.toggleWRITE-safeActive ou désactive une fonctionnalité de l'app membres pour le workspace. Stocke un override seulement s'il diffère de la valeur par défaut du registry (sinon la ligne est supprimée).
scope: members_app:write -
members_app.menu.addWRITE-safeAjoute une nouvelle entrée de menu à la navigation de l'app membres. Positionnée automatiquement à la fin.
scope: members_app:write -
members_app.menu.removeWRITE-safeSupprime un élément de menu par id (doit appartenir au workspace courant).
scope: members_app:write -
members_app.appearance.set_modeWRITE-safeDéfinit le mode de thème utilisé par l'app membres : light, dark ou auto.
scope: members_app:write
memory.*
-
memory.listREADListe les faits durables que l'assistant retient sur ce workspace (TJM, ton, contraintes, préférences), plus récents d'abord. Ils sont aussi réinjectés automatiquement dans le contexte du copilot. À utiliser quand l'utilisateur demande "qu'est-ce que tu retiens de moi / mon activité".
scope: memory:read -
memory.rememberWRITE-safeEnregistre un fait durable sur ce workspace pour t'en souvenir dans les prochaines conversations (ex. 'TJM cible 600€', 'préfère un ton direct', 'cible les startups fintech'). Passe une `key` stable optionnelle (ex. 'tjm', 'ton', 'icp') pour METTRE À JOUR un fait existant au lieu d'empiler des doublons. Ne mémorise que des faits stables et utiles que l'utilisateur énonce sur lui ou son activité, jamais du bavardage passager.
scope: memory:write -
memory.forgetWRITE-safeSupprime un fait mémorisé par id (scopé à ce workspace). À utiliser après memory.list quand l'utilisateur demande d'oublier quelque chose. Irréversible, le fait est retiré.
scope: memory:write
orders.*
-
orders.listREADListe les commandes de la boutique du workspace, filtrées optionnellement par statut (pending / paid / cancelled / refunded). Chaque ligne porte le client, les totaux, le statut et l'état de préparation.
scope: products:read -
orders.countsREADNombre de commandes par statut pour la boutique du workspace — un aperçu rapide pending / paid / cancelled / refunded.
scope: products:read -
orders.getREADRécupère une commande avec ses lignes, le client, l'adresse de livraison, les totaux, le statut et la préparation (suivi). Renvoie null si la commande n'est pas dans ce workspace.
scope: products:read -
orders.set_statusWRITE-safeDéfinit le statut d'une commande : pending, paid, cancelled ou refunded. Marquer payé/remboursé est un changement d'état comptable ici (ça ne déplace pas l'argent chez le prestataire de paiement). Scopé au workspace.
scope: products:write -
orders.set_fulfillmentWRITE-safeMet à jour la préparation d'une commande : unfulfilled / partial / fulfilled, plus un numéro et une URL de suivi optionnels à partager avec le client. Scopé au workspace.
scope: products:write
outreach.*
-
outreach.strategy.getREADRécupère la stratégie outreach du workspace (offre, ICP, croyances à casser, CTA, ton, instruction personnalisée) qui pilote la personnalisation du brief par contact. Renvoie des valeurs nulles si non définie.
scope: contacts:read -
outreach.strategy.setWRITE-safeMet à jour la stratégie d'outreach du workspace (offre, ICP, croyances à casser, CTA, ton, instruction personnalisée) qui pilote la personnalisation du brief par contact. Seuls les champs fournis sont modifiés.
scope: contacts:write
pages.*
-
pages.listREADListe les pages CMS de ce workspace.
scope: pages:read -
pages.list_templatesREADListe les templates de page sélectionnés disponibles pour pages.create_from_template (id, name, description, slug/titre suggérés, nombre de blocs).
scope: pages:read -
pages.list_blocksREADListe les blocs brouillon d'une page (la copie de travail que l'éditeur visuel et les éditions MCP modifient, PAS le snapshot publié en ligne). Retourne pour chaque bloc id, type, parent_id, position, visibilité et props. À utiliser avant pages.update_block / pages.move_block pour connaître les ids actuels.
scope: pages:read -
pages.create_draftWRITE-safeCrée une nouvelle page CMS au statut brouillon.
scope: pages:write -
pages.publishWRITE-safePublie une page CMS (status → published, published_at = now).
scope: pages:write -
pages.create_from_templateWRITE-safeCrée une nouvelle page brouillon à partir d'un des 5 templates sélectionnés (landing-coaching, about, pricing-3-tiers, contact, blog-post). Retourne le nouvel id de page + blocks_count. Utilise d'abord pages.list_templates pour voir les ids disponibles.
scope: pages:write -
pages.generate_from_promptWRITE-safeCrée une nouvelle page brouillon en demandant à Claude de générer 6 à 12 blocs à partir d'un prompt en langage naturel. Le même générateur que le Mode IA de l'éditeur. Retourne le nouvel id de page + blocks_count.
scope: pages:write -
pages.insert_blockWRITE-safeInsère un bloc dans le brouillon d'une page. Valide le type + les props contre le design system et sanitise le rawHtml. parent_id optionnel (doit être un bloc existant de la page) et position (défaut : fin). Utilise site.get_design_context pour les types de blocs valides + props par défaut.
scope: pages:write -
pages.update_blockWRITE-safeMet à jour un bloc du brouillon d'une page : ses props et/ou sa visibilité. Valide + sanitise comme insert. Au moins props ou visible requis.
scope: pages:write -
pages.move_blockWRITE-safeRe-parente et/ou repositionne un bloc dans le brouillon d'une page. parent_id null = racine. Refuse un déplacement qui créerait un cycle.
scope: pages:write -
pages.delete_blockWRITE-safeSupprime un bloc (et ses descendants) du brouillon d'une page. Cascade le sous-arbre.
scope: pages:write -
pages.deleteDESTRUCTIVESupprime une page CMS.
scope: pages:delete
payments.*
-
payments.create_linkWRITE-safeGénère un lien de paiement ponctuel que l'acheteur règle en ligne, et l'envoie par email en option. Vends un produit du catalogue (passe product_id, son prix est utilisé) ou un montant ad-hoc (passe label + amount_cents). Nécessite l'email de l'acheteur : il est upserté en contact et une vraie facture réconciliée est créée derrière le lien, donc la vente apparaît dans le revenu (pas un encaissement non tracé). Renvoie l'URL de paiement hébergée — partage-la, mets-la en DM, ou send_email=true pour l'envoyer à l'acheteur. amount_cents est dans la plus petite unité (600000 = 6000€). À UTILISER pour 'sors-moi un lien de paiement pour X' / 'envoie un lien de paiement à <email>'. Nécessite une entité légale configurée et (pour la page en ligne) Stripe connecté.
scope: counsel:write
platform.*
-
sites_listREADListe les Sites du workspace (surfaces publiques : domaine + pages + audience + plans). Le site par défaut est renvoyé en premier.
scope: sites:read -
sites_createWRITE-safeCrée un Site secondaire dans le workspace (ex. un site SEO/marketing de niche sur son propre domaine qui draine vers le principal). Donne un nom ; le slug est dérivé ou fourni.
scope: sites:write -
sites_updateWRITE-safeRenomme, change le slug ou le mode de thème d'un Site. Le slug du site par défaut est verrouillé (son sous-domaine ne bouge jamais).
scope: sites:write -
sites_set_defaultWRITE-safePromeut un Site en tant que défaut du workspace (celui servi sur le sous-domaine nu du workspace).
scope: sites:write -
sites_deleteDESTRUCTIVESupprime un Site et tout ce qui lui est rattaché (pages, audience, plans, domaines en cascade). Le site par défaut ne peut pas être supprimé.
scope: sites:delete -
http_requestWRITE-safeAppelle une API externe en HTTP(S) et retourne { status, ok, headers, body, json }. Bloque les adresses internes (anti-SSRF). Utilise les références {{node:...}} pour injecter des valeurs d'étapes précédentes dans l'URL, les headers ou le body.
scope: automation:http -
send_emailWRITE-safeEnvoie un email (sujet + corps HTML) à une adresse, depuis l'expéditeur vérifié du workspace. Pièces jointes par URL (`url`) ou contenu base64 (`content_base64`, ex. la sortie de generate_pdf). Accepte les références {{node:...}} dans tous les champs.
scope: email:write -
send_smsWRITE-safeEnvoie un SMS (texte court) à un numéro de téléphone, depuis le numéro du workspace. Respecte la liste anti-appel (DNC). Accepte les références {{node:...}} dans tous les champs (ex. {{node:<déclencheur>.contact.phone}}).
scope: voice:sms -
generate_pdfWRITE-safeGénère un PDF (titre + contenu texte, un paragraphe par ligne), l'archive dans la bibliothèque média du workspace, et retourne { mediaId, filename, sizeBytes, base64 }. Le `base64` se branche directement sur send_email via {{node:<id>.base64}}.
scope: media:write
presentations.*
-
presentations.deleteDESTRUCTIVESupprime définitivement une présentation (deck de closing / slides d'audit) du workspace. Irréversible.
scope: presentations:delete -
presentations.listREADListe les présentations du workspace (decks de closing / slides d'audit), filtrables par status (draft / unlisted / published). Chacune a un id, slug, titre, status et updated_at.
scope: presentations:read -
presentations.createWRITE-safeCrée une présentation (deck de closing / slides d'audit) dans le workspace. Donne un titre ; le slug est dérivé s'il est omis. Amorce optionnellement le deck avec slides_html + speaker_notes_html, sinon il démarre vide pour l'édition. Status : draft (privé) / unlisted (lien seul) / published. Renvoie l'id + le slug.
scope: presentations:write -
presentations.set_statusWRITE-safeChange le status de visibilité d'une présentation : draft (privé), unlisted (lien seulement) ou published.
scope: presentations:write
products.*
-
products.listREADListe les produits / offres du workspace (filtre optionnel par état actif).
scope: products:read -
products.getREADRécupère un produit avec ses compteurs de détail (modules, fichiers, achats actifs).
scope: products:read -
products.files.listREADListe les fichiers téléchargeables attachés à un produit.
scope: products:read -
products.createWRITE-safeCrée un produit/offre dans le catalogue (ex. un accompagnement, un ebook, un abonnement). Donne au moins un titre ; price_cents est le prix dans la plus petite unité de la devise (600000 = 6000€). kind vaut 'consulting' par défaut, et le produit est créé INACTIF (brouillon) — active-le avec products.set_active après relecture. Le slug est dérivé du titre. Renvoie l'id du nouveau produit + kind.
scope: products:write -
products.set_activeWRITE-safeActive ou désactive (archive) un produit.
scope: products:write -
products.duplicateWRITE-safeDuplique un produit existant en un nouveau brouillon INACTIF (le price_id/payment_link Stripe ne sont volontairement PAS copiés, pour éviter une double facturation). Renvoie l'id du nouveau produit. Active-le avec products.set_active une fois son propre prix Stripe branché.
scope: products:write -
products.deleteDESTRUCTIVESupprime définitivement un produit du catalogue (scopé workspace). Refusé si le produit a encore des achats membres actifs, pour préserver l'historique d'accès — archive-le avec products.set_active à la place. Irréversible.
scope: products:delete
programme.*
-
programme.modules.listREADListe les modules du curriculum d'un produit (programme).
scope: programme:read -
programme.lessons.listREADListe les leçons à l'intérieur d'un module du curriculum.
scope: programme:read -
programme.module.set_publishedWRITE-safePublie ou dépublie un module de programme.
scope: programme:write -
programme.lesson.set_publishedWRITE-safePublie ou dépublie une leçon de programme.
scope: programme:write -
programme.lesson.deleteDESTRUCTIVESupprime définitivement une leçon d'un module de curriculum (scopé workspace). Retire aussi ses tâches/ressources. Irréversible.
scope: programme:delete -
programme.task.deleteDESTRUCTIVESupprime définitivement une tâche d'une leçon (scopé workspace). Irréversible.
scope: programme:delete -
programme.resource.deleteDESTRUCTIVESupprime définitivement une ressource (fichier ou lien) d'un module/leçon/tâche (scopé workspace). Irréversible.
scope: programme:delete
seo.*
-
seo.get_profileREADRécupère le profil SEO/GEO du workspace (nom de marque, alias, domaines, marché) et les concurrents suivis.
scope: seo:read -
seo.list_promptsREADListe les prompts suivis dans les moteurs IA pour ce workspace, avec leur état activé et leur catégorie.
scope: seo:read -
seo.visibilityREADRécupère le score de visibilité IA (0-100) et le dernier snapshot par prompt suivi (taux de mention, de citation, stabilité).
scope: seo:visibility -
seo.upsert_profileWRITE-safeCrée ou met à jour le profil SEO/GEO. Le nom de marque est requis ; les autres champs sont optionnels et préservés s'ils sont omis.
scope: seo:write -
seo.add_promptWRITE-safeAjoute un prompt à suivre dans les moteurs IA (une vraie question que tes prospects posent).
scope: seo:write -
seo.suggest_promptsWRITE-safeGénère automatiquement des prompts à suivre à partir du profil business (vraies questions de prospects) et les ajoute, dédupliqués contre les existants. Utilise la génération IA (bornée par le quota du plan).
scope: seo:write -
seo.set_prompt_enabledWRITE-safeActive ou désactive un prompt suivi sans le supprimer.
scope: seo:write -
seo.delete_promptWRITE-safeSupprime un prompt suivi.
scope: seo:write -
seo.run_scanWRITE-safeInterroge les moteurs IA maintenant pour tous les prompts actifs et persiste les snapshots de visibilité. Consomme des tokens IA, borné par le quota du plan.
scope: seo:visibility -
seo.list_topicsREADListe les sujets d'articles SEO suivis pour ce workspace, avec leur statut (suggéré/en file/en cours/rédigé) et leur source.
scope: seo:read -
seo.list_articlesREADListe les articles de blog du workspace (publiés + brouillons) avec leur performance Google Search Console (indexé, position, clics, impressions sur 28 jours).
scope: seo:read -
seo.suggest_topicsWRITE-safeSuggère par IA des sujets d'articles ancrés sur le profil de marque et les requêtes d'opportunité Google Search Console (termes classés en page 2+). Dédupliqués contre les sujets existants. Consomme des tokens IA, borné par le quota du plan.
scope: seo:write -
seo.generate_articleWRITE-safeGénère un brouillon d'article complet depuis un sujet suivi : brief SEO (recherche web) + rédaction + scoring SEO. Crée un studio_draft (statut brouillon, non auto-publié) lié au sujet. Consomme des tokens IA, borné par le quota du plan.
scope: seo:write -
seo.set_autopilotWRITE-safeActive ou désactive le pilote automatique SEO et règle sa cadence hebdo d'articles (0-14). Activé, le cron suggère, met en file et rédige des brouillons dans la limite. Les articles restent en brouillon (gate d'approbation conservée).
scope: seo:write
settings.*
-
settings.getREADRécupère les réglages généraux du workspace : nom, slug, couleur de marque, hashtag, titre/description SEO, et les modes de thème (app membre / site public). La lecture unique pour 'comment s'appelle mon espace / comment il est marqué'.
scope: settings:read -
settings.updateWRITE-safeMet à jour l'identité générale du workspace : au choix nom, couleur de marque (hex ou null), hashtag, titre SEO, description SEO, mode de thème app membre, mode de thème site public. Seuls les champs fournis changent ; le reste est conservé. Ne touche PAS au logo/icône/favicon (utilise le flux d'upload pour ça).
scope: settings:write
shipping.*
-
shipping.listREADListe les tarifs de livraison de la boutique (forfait ou au poids, avec seuil de gratuité éventuel) utilisés pour chiffrer la livraison au checkout.
scope: products:read -
shipping.saveWRITE-safeRemplace tout le jeu de tarifs de livraison de la boutique par ceux fournis (écrase les tarifs existants, envoie la liste complète). Chaque tarif est forfaitaire ou au poids, en centimes, avec un seuil de gratuité optionnel. Scopé au workspace.
scope: products:write
site.*
-
site.get_design_contextREADL'identité visuelle (DA) du workspace : marque (nom, couleur, logo, favicon), tokens de design du thème (couleurs, typo, radius), menus du site, et le catalogue des types de blocs disponibles avec leurs props par défaut. À appeler AVANT de créer ou éditer des pages pour que le contenu généré respecte le look du site et utilise des blocs valides. Lecture seule, public-safe (ni CSS custom ni internes de thème).
scope: pages:read
studio.*
-
studio.drafts.listREADListe les drafts Studio (contenus). Filtre par status / target_platform.
scope: studio:read -
studio.drafts.getREADRécupère un draft Studio par id (contenu complet).
scope: studio:read -
studio.publications.listREADListe les publications Studio (drafts planifiés ou déjà poussés sur un canal). Chaque ligne porte les champs scheduled_at / published_at / publish_error pour qu'un agent puisse auditer ce qui est en ligne, en file, ou en échec.
scope: studio:read -
studio.ideas.listREADListe les idées Studio (en amont des drafts). Chaque idée a un titre, un hook, un angle, un status et un score. Utile quand un agent de contenu a besoin du prochain lot d'inspirations à transformer en drafts.
scope: studio:read -
studio.seo_briefs.listREADListe les briefs SEO (mot-clé + intention de recherche + nombre de mots cible). Utilisés par les agents de contenu pour planifier des articles alignés avec la stratégie SEO du workspace.
scope: studio:read -
studio.draft.approval_stateREADVérifie si un draft est approuvé pour la publication en autopilot, et par qui / quand. Renvoie null si le draft n'existe pas ou n'a pas encore été relu.
scope: studio:read -
studio.draft.lineageREADRésout l'origine d'un draft : le post concurrent, le pattern décodé, et / ou le draft source qui l'a inspiré. Aide un agent à retracer pourquoi un draft a été généré avant d'itérer.
scope: studio:read -
studio.draft.viralityREADDernier score de viralité pour une entité Studio (draft, idée, publication). Renvoie le score prédit calculé par Gemini ainsi que le détail du raisonnement.
scope: studio:read -
studio.inspiration_packs.listREADListe les packs d'inspiration (post concurrent + structure décodée) disponibles pour que le workspace les remixe en nouveaux drafts.
scope: studio:read -
studio.draft.createWRITE-safeCrée un nouveau brouillon Studio.
scope: studio:write -
studio.draft.updateWRITE-safeMet à jour les champs d'un brouillon Studio.
scope: studio:write -
studio.draft.approveWRITE-safeMarque un brouillon Studio comme approuvé pour publication (publish_approved_at = now).
scope: studio:write -
studio.draft.unapproveWRITE-safeRévoque l'approbation de publication d'un brouillon Studio. À utiliser quand un agent ou l'utilisateur repère un problème après l'approbation et veut bloquer le prochain cycle autopilot.
scope: studio:write -
studio.draft.publishWRITE-safePublie un brouillon Studio sur LinkedIn maintenant, ou le programme. Sans scheduled_at, le post part immédiatement ; avec un scheduled_at ISO 8601, il est mis en file (un cron le publie à l'heure prévue une fois le brouillon approuvé). Publie via le compte LinkedIn OAuth connecté, ou, à défaut, via l'extension navigateur pairée (mise en ligne asynchrone). Nécessite un linkedin_text sur le brouillon et soit OAuth soit un device pairé. Une publication immédiate est sortante et non réversible une fois en ligne.
scope: studio:write -
studio.draft.publish_blogWRITE-safePublie un brouillon Studio en article de blog sur le site du workspace (le met en ligne et ping IndexNow). Le brouillon doit avoir un slug, un corps d'article, meta_title, meta_description et être approuvé pour publication (studio.draft.approve). Action sortante : l'article devient public et indexable. Renvoie l'URL publique de l'article.
scope: studio:write -
studio.draft.unpublish_blogWRITE-safeRetire un article de blog publié : efface sa date de publication pour qu'il n'apparaisse plus sur le blog ni dans le sitemap, et le repasse en état approuvé. Réversible avec studio.draft.publish_blog. La ligne et son contenu sont conservés.
scope: studio:write -
studio.draft.set_coverWRITE-safeDéfinit l'image de couverture d'un brouillon Studio / article de blog, depuis un média de la librairie (media_id, ex. un média ajouté via media.upload) ou une URL d'image publique (image_url). Exactement une source. L'image est ré-hébergée dans le workspace pour servir de cover d'article, d'og:image et d'ImageObject schema.org. Renseigne alt pour l'accessibilité et le SEO. Remplace la cover actuelle.
scope: studio:write -
studio.draft.archiveWRITE-safeDéplace un brouillon Studio vers l'archive (masquage léger des listes par défaut). Réversible : la ligne reste en DB. À préférer à la suppression sauf si le brouillon est inutilisable.
scope: studio:write -
studio.idea.archiveWRITE-safeArchive une idée Studio pour qu'elle n'apparaisse plus dans le pipeline d'idéation actif. Réversible.
scope: studio:write -
studio.draft.deleteDESTRUCTIVESupprime un brouillon Studio.
scope: studio:delete -
studio.publication.deleteDESTRUCTIVESupprime un enregistrement de publication Studio (historique des push vers les canaux). Ne retire rien du canal réel ; supprime seulement la ligne du registre du workspace.
scope: studio:delete
suppliers.*
-
suppliers.listREADListe les fournisseurs (dropship / logistique) configurés pour la boutique du workspace (nom, site, email de contact, notes).
scope: products:read -
suppliers.createWRITE-safeAjoute un fournisseur (dropship / logistique) à la boutique du workspace. Renvoie le nouvel id du fournisseur.
scope: products:write -
suppliers.updateWRITE-safeMet à jour un fournisseur de la boutique (nom, site, email de contact, notes). Scopé au workspace.
scope: products:write -
suppliers.deleteDESTRUCTIVESupprime un fournisseur de la boutique. Irréversible. Les produits qui le référencent gardent leurs données mais perdent le lien fournisseur.
scope: products:write
support.*
-
support.threads.listREADListe les fils de support membre de ce workspace (la messagerie support in-app), filtrables par status (open / pending_member / pending_team / resolved / archived) ou une requête texte. Chaque ligne porte le membre, le sujet, le status, les non-lus et l'aperçu du dernier message.
scope: support:read -
support.thread.getREADRécupère un fil de support membre avec tout son historique de messages. Scopé au workspace courant.
scope: support:read -
support.replyWRITE-safePublie une réponse de l'équipe dans un fil de support membre. Scopé au workspace courant ; le message est attribué à l'utilisateur appelant.
scope: support:write -
support.set_statusWRITE-safeRésout ou rouvre un fil de support membre. action 'resolve' le clôt ; 'reopen' le remet en ouvert. Scopé au workspace courant.
scope: support:write
team.*
-
team.listREADListe les membres de l'équipe du workspace (jointure workspace_members + profile). Chaque ligne porte user_id, role (owner / admin / staff / member), status (active / invited / suspended), joined_at.
scope: team:read -
team.getREADRécupère un membre du workspace avec son profil (nom affiché, avatar, email). Renvoie null si l'utilisateur n'est pas membre du workspace.
scope: team:read -
team.roles.listREADListe les rôles du workspace (système + custom) avec, pour chacun, son nombre de membres et combien de permissions il accorde. Utilise un id de rôle ici avec team.member.set_role ou team.roles.get.
scope: team:read -
team.roles.getREADRécupère un rôle du workspace avec les clés de permission exactes qu'il accorde et son nombre de membres, plus le catalogue des permissions attribuables (clé + libellé). Passe les clés accordées à team.roles.set_permissions pour les ajuster.
scope: team:read -
team.audit_logREADJournal d'audit du workspace : qui a fait quoi (login, changement de rôle, connexion d'intégration, etc.). Filtre par type d'événement ou récence.
scope: team:read -
team.integrations.listREADListe les intégrations tierces connectées au workspace (Stripe, Google, Meta, LinkedIn, TikTok, etc.) avec leur état de connexion.
scope: team:read -
team.member.set_roleWRITE-safeChange le rôle d'un membre du workspace (donc ses permissions). role_id est un id de rôle workspace vu dans team.get. Impossible de changer son propre rôle, de cibler le propriétaire du workspace, ou d'attribuer le rôle propriétaire. Nécessite la permission de gestion des rôles.
scope: team:manage_roles -
team.member.suspendWRITE-safeSuspend un membre du workspace : il garde son compte mais perd l'accès jusqu'à réactivation, et le siège facturé est libéré. Impossible de se suspendre soi-même ou de suspendre le propriétaire. Réversible avec team.member.reactivate. Nécessite la permission de retrait de membre.
scope: team:remove -
team.member.reactivateWRITE-safeRéactive un membre suspendu : restaure son accès et rétablit le siège facturé. Nécessite la permission de retrait de membre.
scope: team:remove -
team.invite.resendWRITE-safeRenvoie l'invitation d'un membre du workspace : lui envoie par email un nouveau lien magique de connexion à l'espace membres. Pour un membre en attente qui a perdu ou jamais reçu la première invitation. La cible doit déjà être membre de ce workspace. Nécessite la permission d'invitation.
scope: team:write -
team.roles.createWRITE-safeCrée un rôle custom du workspace. key est un slug minuscule (unique, pas une clé système réservée). duplicate_from_id copie optionnellement les permissions d'un autre rôle comme point de départ. Règle les permissions ensuite avec team.roles.set_permissions. Nécessite la permission de gestion des rôles.
scope: team:manage_roles -
team.roles.updateWRITE-safeMet à jour les métadonnées d'un rôle custom (nom, description, couleur, ou s'il est le rôle par défaut des nouveaux membres). Ne touche pas ses permissions, utilise team.roles.set_permissions pour ça. Nécessite la permission de gestion des rôles.
scope: team:manage_roles -
team.roles.set_permissionsWRITE-safeRemplace tout l'ensemble de permissions d'un rôle par les clés fournies (tout ce qui n'est pas listé est retiré). Les clés valides et l'ensemble actuel viennent de team.roles.get. Le rôle propriétaire est verrouillé. Nécessite la permission de gestion des rôles.
scope: team:manage_roles -
team.roles.deleteDESTRUCTIVESupprime un rôle custom du workspace. Les rôles système ne peuvent pas être supprimés. Les membres portant ce rôle sont réassignés au rôle par défaut du workspace. Nécessite la permission de gestion des rôles.
scope: team:manage_roles -
team.member.removeDESTRUCTIVERetire définitivement un membre du workspace : révoque son accès et libère le siège facturé. Impossible de se retirer soi-même ou de retirer le propriétaire. La personne garde son compte mais n'est plus membre. Irréversible via MCP, il faut ré-inviter pour le rajouter.
scope: team:remove -
team.inviteWRITE-safeInvite une personne dans l'équipe du workspace par email avec un rôle : 'admin', 'coach', 'closer' ou 'setter' (jamais 'owner'). Lui envoie un email d'invitation/lien magique et crée son accès. Un plan facturé au siège peut exiger une carte. À UTILISER pour 'invite X dans mon équipe / ajoute Y comme closer'. Action conséquente, une approbation s'affiche d'abord.
scope: team:write
voice.*
-
voice.list_callsREADListe les appels voix récents du workspace courant. Renvoie id, direction, status, duration, contact_id, slug de disposition, created_at.
scope: voice:read -
voice.get_call_detailREADRécupère le détail complet d'un appel voix : call row, metadata d'enregistrement, résumé de transcript, segments, score (si Tier 3 activé).
scope: voice:read -
voice.list_call_listsREADListe les call lists du workspace courant avec les compteurs de progression (total / completed / positive).
scope: voice:read -
voice.start_callWRITE-safePré-crée une row voice_calls pour qu'un client (dialer navigateur ou AI Voice Agent) puisse initier un appel. Renvoie le callId + le caller-id E.164. Ne compose PAS réellement le numéro, la composition est faite par le client via le Twilio Voice JS SDK ou par le provider AI Voice Agent.
scope: voice:write -
voice.enrich_prospect_phoneWRITE-safeEnrichit un prospect (ou des données de contact quelconques) avec des numéros de téléphone via Dropcontact. Écrit éventuellement le meilleur numéro dans la row prospects quand contact_id est fourni. Coûte 1 crédit Dropcontact par row enrichie.
scope: voice:write -
voice.add_to_dncWRITE-safeAjoute un numéro de téléphone à la liste Do-Not-Call du workspace. Le numéro est bloqué avant composition dans le queue runner, le MCP voice.start_call et les campagnes AI Voice Agent.
scope: voice:write -
voice.campaigns.listREADListe les campagnes d'appels IA (cold-calling) du workspace : nom, provider, status, nombre d'appels, bookings réussis, coût total et cap quotidien. Complète voice.list_calls (appels individuels).
scope: voice:read -
voice.campaign.getREADRécupère une campagne d'appels IA en détail (script, voix, langue, objectif, caps, horodatages) plus ses appels les plus récents et leurs résultats.
scope: voice:read
webinaires.*
-
webinaires.listREADListe les webinaires du workspace (les mis en avant d'abord, puis par date planifiée).
scope: webinars:read -
webinaires.getREADRécupère un webinaire par id.
scope: webinars:read -
webinaires.set_featuredWRITE-safeMarque un webinaire comme étant celui mis en avant (retire la mise en avant des autres).
scope: webinars:write -
webinaires.createWRITE-safeCrée une session de webinaire. Donne un titre ; le slug en est dérivé s'il est omis. status vaut 'draft' par défaut (mets 'scheduled' une fois la date fixée). scheduled_at est une date ISO. Renvoie l'id du nouveau webinaire.
scope: webinars:write -
webinaires.updateWRITE-safeMet à jour un webinaire par id. Seuls les champs fournis changent ; le reste est conservé (lu puis fusionné). Passe null sur subtitle/scheduled_at/replay_url pour les vider. Répond à 'reprogramme / renomme / publie un webinaire'.
scope: webinars:write -
webinaires.archiveWRITE-safeArchive un webinaire (le retire de la liste active ; inscrits et historique sont conservés).
scope: webinars:write -
webinaires.deleteDESTRUCTIVESupprime définitivement un webinaire (scopé workspace). Refusé s'il a déjà des inscrits, pour préserver l'historique des inscriptions — archive-le avec webinaires.archive à la place. Irréversible.
scope: webinars:write
workbench.*
-
workbench.tasks.listREADListe les tâches Workbench.
scope: workbench:read -
workbench.projects.listREADListe les projets Workbench.
scope: workbench:read -
workbench.milestones.listREADListe les jalons Workbench avec leur progression + date d'échéance. Utile quand un agent a besoin des prochains livrables d'un projet avant d'assigner de nouvelles tâches.
scope: workbench:read -
workbench.kpisREADKPIs du cockpit Workbench : tâches terminées sur les 7 derniers jours (vs les 7 jours précédents), compteurs ouvertes / en retard / bloquées actuelles, et la sparkline de complétion quotidienne.
scope: workbench:read -
workbench.focus_tasks.listREADListe les tâches actuellement assignées à l'appelant et encore ouvertes (todo / in_progress / blocked). La "liste focus" de l'utilisateur, ce que l'opérateur devrait faire aujourd'hui.
scope: workbench:read -
workbench.active_projectsREADListe les projets actifs avec leurs données de cockpit (couleur, deadline, owner, status). Limité à ce que le widget du dashboard affiche.
scope: workbench:read -
workbench.workload_heatmapREADHeatmap de charge de l'équipe : nombre de tâches ouvertes par assigné et par jour pour les ~14 prochains jours. Sert à repérer les surcharges avant d'assigner du nouveau travail.
scope: workbench:read -
workbench.recent_activityREADÉvénements récents de tâches / projets / jalons dans le journal d'audit Workbench (création, changement de status, assignation, suppression) sur les dernières 24 heures.
scope: workbench:read -
workbench.task.createWRITE-safeCrée une nouvelle tâche Workbench.
scope: workbench:write -
workbench.task.updateWRITE-safeMet à jour une tâche Workbench.
scope: workbench:write -
workbench.task.assignWRITE-safeAssigne une tâche Workbench à un utilisateur.
scope: workbench:write -
workbench.task.update_statusWRITE-safeChangement rapide de statut sur une tâche Workbench (todo / in_progress / blocked / done / cancelled). Renseigne automatiquement completed_at quand le statut passe à done, le vide sinon. Moins coûteux que le tool de mise à jour complet quand seul le statut change.
scope: workbench:write -
workbench.task.follow_upWRITE-safeCrée une tâche de relance liée à une autre entité (par ex. après un appel Voice : une tâche liée au prospect avec une échéance et une priorité).
scope: workbench:write -
workbench.task.deleteDESTRUCTIVESupprime une tâche Workbench.
scope: workbench:delete
workspace.*
-
workspace.branding.getREADRécupère le branding configuré du workspace : nom, URLs du logo / de l'icône / du favicon et couleur de marque. Ce sont les assets définis dans Réglages → Marque, stockés sur le workspace lui-même, PAS dans la bibliothèque média — sers-toi de CET outil (pas de media.search) pour afficher ou référencer le logo du workspace. has_logo est false si aucun logo n'est encore défini ; propose ui.request_upload seulement dans ce cas.
scope: agents:read