Sequenzy MCP

officiel

Outil de marketing par e-mail pour SaaS

Que pouvez-vous faire avec Sequenzy MCP ?

  • Gérer les abonnés et les segments — Demandez à votre assistant de créer des listes, d'appliquer des tags, de réconcilier des tags en masse ou de tester des événements synthétiques via des outils comme create_list et .
  • Créer et envoyer des campagnes — Rédigez, planifiez, prévisualisez ou envoyez des campagnes e-mail, y compris des aperçus d'audience résolus et des objectifs de conversion, à l'aide d'outils comme create_campaign et send_campaign.
  • Créer des pages de destination et des formulaires — Concevez des formulaires d'inscription et des pages de destination liés à une liste avec des mises en page responsives par blocs, puis publiez-les ou obtenez des intégrations pour sites statiques via create_landing_page.
  • Synchroniser les audiences vers Meta — Poussez des segments dynamiques vers des audiences personnalisées Meta pour le reciblage sur Facebook et Instagram.
  • Gérer les séquences et les automatisations — Créez des séquences e-mail en plusieurs étapes avec des déclencheurs d'entrée, des conditions d'arrêt et des envois de test aux réviseurs à l'aide de create_sequence et .
  • Surveiller la délivrabilité et l'envoi — Diagnostiquez les envois en pause, inspectez les suppressions pour rebonds/plaintes et restaurez les pauses pour rebonds durs éligibles avec get_sending_status et resume_sending.

Documentation

Serveur MCP Sequenzy

Serveur MCP officiel pour Sequenzy, la plateforme de marketing par e-mail propulsée par l'IA.

Connectez Sequenzy à Claude Desktop, Claude Code, Codex, Cursor, Windsurf, VS Code Copilot, OpenClaw et d'autres clients MCP afin que votre assistant IA puisse gérer les opérations e-mail avec des outils structurés plutôt qu'avec des appels API écrits à la main.

Ce que vous pouvez faire

  • Gérer les abonnés, les tags, les listes et les segments dynamiques, y compris la réconciliation de tags en masse et les tests d'événements synthétiques.
  • Synchroniser les segments vers des audiences personnalisées Meta pour le reciblage Facebook et Instagram.
  • Gérer les produits et joindre des fichiers de livraison numérique pour les automatisations d'achat.
  • Téléverser des images e-mail hébergées avec texte alternatif et paramètres de recadrage réactifs réutilisables.
  • Rédiger, mettre à jour, planifier et inspecter des campagnes, y compris les aperçus d'audience résolus, les objectifs de conversion persistants et les identités De, Répondre à, Cc et Cci.
  • Rendre les campagnes, les étapes de séquence et les modèles dans leur HTML e-mail exact et sûr sans les envoyer.
  • Ajouter des blocs de sondage et de NPS en un clic aux e-mails et inspecter les résumés de réponses de campagne.
  • Créer et modifier des séquences e-mail, y compris les déclencheurs multi-listes/tags, les conditions d'arrêt filtrées par audience d'entrée et propriétés, les remplacements d'identité d'envoi, la restructuration de graphes existants et les envois de test directs aux réviseurs internes.
  • Annuler, mettre en pause, reprendre, dupliquer ou supprimer des campagnes et inscrire des contacts dans des séquences.
  • Gérer les modèles d'e-mails transactionnels et envoyer des e-mails transactionnels à des listes de destinataires partagées À, Cc et Cci.
  • Fournir des variantes de modèles localisées ou mettre en file d'attente la traduction IA pour les langues activées.
  • Créer, prévisualiser, modifier, publier, dépublier et supprimer des pages de destination.
  • Créer des formulaires d'inscription enregistrés limités à une liste avec des groupes de blocs réactifs en pile, ligne, grille et superposition d'image unique (y compris les contrôles d'espacement au premier plan), puis renvoyer des embeds de site statique sûrs pour le client.
  • Créer, cibler, publier, dupliquer et déployer des popups d'inscription enregistrés avec les mêmes mises en page de blocs récursives.
  • Connecter et vérifier des domaines personnalisés pour les pages de destination publiées.
  • Gérer les invitations d'équipe, les conversations de boîte de réception et les points de terminaison webhook sortants.
  • Générer des textes d'e-mail, des lignes d'objet et des séquences en plusieurs étapes.
  • Inspecter les analyses, l'activité des abonnés, la santé de la délivrabilité, les pauses d'envoi au niveau de l'entreprise, les intégrations, les schémas de charge utile d'événements publiés, les identités d'envoi, les paramètres de suivi et les URL du tableau de bord.
  • Inspecter si « Envoyé avec Sequenzy » est visible pour un espace de travail, pourquoi l'abonnement du propriétaire le supprime ou non, et ouvrir la page d'abonnement canonique pour une mise à niveau ou un renouvellement. Les changements de droits s'appliquent aux envois futurs des séquences en direct existantes sans modifier leurs blocs.
  • Diagnostiquer pourquoi l'envoi est en pause et restaurer les pauses de rebond définitif éligibles après confirmation du nettoyage de la liste.
  • Inspecter les suppressions de rebonds, plaintes et hygiène e-mail pour les destinataires exacts, et nettoyer les rebonds obsolètes éligibles sans exposer la liste de suppression SES partagée.
  • Configurer les informations produit de l'entreprise, les valeurs par défaut d'identité d'envoi à l'échelle du compte, renommer les profils d'expéditeur et de réponse individuels, gérer les domaines d'expéditeur et inspecter des exemples d'intégration pour les frameworks courants.

Chaque outil MCP publié inclut des annotations explicites readOnlyHint, destructiveHint et openWorldHint afin que les clients compatibles puissent afficher des affordances d'utilisation d'outils précises. Les outils publient également des définitions outputSchema et renvoient des structuredContent, donnant aux clients et aux modèles des formes de résultats lisibles par machine pour les appels de suivi.

Configuration rapide

Le chemin de configuration le plus simple est l'assistant Sequenzy :

npx @sequenzy/setup

L'assistant ouvre le flux de connexion navigateur, crée une clé API personnelle, détecte les clients IA pris en charge et les configure automatiquement lorsque c'est possible.

MCP distant hébergé

Pour les clients prenant en charge MCP HTTP Streamable, utilisez le point de terminaison hébergé de Sequenzy au lieu d'exécuter un processus stdio local :

https://api.sequenzy.com/v1/mcp

ChatGPT et le répertoire de plugins OpenAI utilisent la surface hébergée révisée :

https://api.sequenzy.com/v1/mcp/openai

Cette surface partage la même implémentation et conserve l'ensemble d'outils standard sauf pour six opérations : connect_integration, create_api_key, create_webhook, list_webhook_deliveries, replay_webhook_delivery et rotate_sequence_inbound_webhook_secret. Les retours restent disponibles avec un schéma réduit pour des retours produit généralisés et explicitement demandés.

Les clients distants doivent s'authentifier avec le flux OAuth Sequenzy lorsque c'est pris en charge. Les clients locaux et d'automatisation peuvent toujours utiliser le package stdio ci-dessous avec SEQUENZY_API_KEY.

Le point de terminaison hébergé et le package stdio prennent en charge la spécification MCP 2026-07-28 tout en restant compatibles avec les clients de l'ère 2025. Les clients HTTP modernes utilisent la découverte par requête et les en-têtes de méthode ; les clients existants continuent de fonctionner via le même point de terminaison et la même commande de package.

Fichiers de découverte lisibles par machine :

Données et confidentialité

Sequenzy envoie à un client MCP uniquement les données nécessaires à l'outil que l'utilisateur lui demande d'exécuter, dans l'espace de travail sélectionné et avec les clés ou portées OAuth accordées à ce client. Selon l'outil demandé, cela peut inclure les noms et identifiants d'espace de travail ; les données de contact, consentement, audience, attribut, événement, engagement, réponse, sondage et commerce des abonnés ; le contenu des campagnes et automatisations ; les analyses de livraison ; et le statut des intégrations ou webhooks. Voir la Politique de confidentialité Sequenzy pour les catégories complètes, finalités, destinataires, périodes de conservation et contrôles utilisateur.

N'utilisez pas d'attributs personnalisés, d'événements, de notes, de formulaires, d'échantillons webhook, de variables e-mail ou de retours à contenu ouvert pour soumettre des données de carte de paiement, des données de santé ou médicales, des identifiants gouvernementaux, des données biométriques ou génétiques, des identifiants d'authentification, des données démographiques sensibles ou une géolocalisation précise.

La route révisée par OpenAI énonce et applique ces restrictions sur les entrées à contenu ouvert pertinentes, y compris les chemins d'attributs imbriqués tels que profile.ssn, les paires de coordonnées telles que lat/lng, et le texte étiqueté tel que Religion: ... ou GPS coordinates: .... Elle rejette une URL contenant des identifiants dans tout argument, que l'identifiant se trouve dans l'userinfo, le chemin, la requête ou le fragment, comme un redirectUrl de formulaire ou popup avec un jeton d'accès ou une signature d'URL. Les sélecteurs d'attributs restreints dans les balises de fusion sont rejetés sans bloquer le contenu rédigé ordinaire sur le même sujet. Sur cette surface, render_email accepte des données d'échantillon ou un subscriber en ligne vérifié par politique, mais pas subscriberId, donc elle ne peut pas résoudre des attributs personnalisés stockés non inspectés. Ses résultats suppriment les champs restreints, les erreurs API brutes, les charges utiles de débogage, les identifiants internes de requête/trace/session, les identifiants de compte ou d'identifiant inutiles, les URL stockées contenant des identifiants et les URL de webhook entrant. Le MCP distant standard et le package stdio local conservent le contrat complet pour les clients de confiance, y compris la configuration d'intégration basée sur les identifiants, les secrets de clé API et webhook à usage unique, les URL de webhook entrant et les erreurs API détaillées. Préférez le tableau de bord ou le CLI local lorsque les secrets doivent rester hors d'une conversation IA. submit_feedback s'exécute uniquement lorsque l'utilisateur le demande explicitement ; son schéma OpenAI est limité à un message généralisé, une catégorie et un contexte de flux de travail optionnel, et la route rejette le texte de retour contenant une adresse e-mail ou un identifiant de ressource.

Ce que garantit la surface révisée est limité. Elle reconnaît les données restreintes par forme : des mots de noms de champs en anglais tels que passport_id, user.ssn ou api_secret à toute profondeur d'imbrication, du texte étiqueté tel que Diagnosis: ..., des formes d'identifiants connues, des paires de coordonnées décimales et des URL contenant des identifiants dans toute chaîne, y compris HTML. Elle n'interprète pas le texte non étiqueté, les noms de champs non anglais ou les valeurs qu'un client obscurcit délibérément ; ceux-ci restent couverts par la restriction d'utilisation ci-dessus plutôt que par le filtre.

Configuration manuelle

Tous les clients MCP stdio utilisent la même commande :

  • Commande : npx
  • Arguments : -y @sequenzy/mcp
  • Env requis : SEQUENZY_API_KEY=seq_user_your_key_here

Variables d'environnement optionnelles :

  • SEQUENZY_API_URL - URL de base de l'API Sequenzy. Par défaut : https://api.sequenzy.com.
  • SEQUENZY_APP_URL - URL de base du tableau de bord Sequenzy utilisée par les assistants d'URL d'application. Par défaut : https://sequenzy.com.

Claude Desktop

Ajoutez ceci à votre configuration Claude Desktop :

  • macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows : %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sequenzy": {
      "command": "npx",
      "args": ["-y", "@sequenzy/mcp"],
      "env": {
        "SEQUENZY_API_KEY": "seq_user_your_key_here"
      }
    }
  }
}

Redémarrez Claude Desktop après avoir modifié la configuration.

Claude Code

claude mcp add --scope user --env=SEQUENZY_API_KEY=seq_user_your_key_here sequenzy -- npx -y @sequenzy/mcp

Sur Windows natif, enveloppez npx avec cmd /c :

claude mcp add --scope user --env=SEQUENZY_API_KEY=seq_user_your_key_here sequenzy -- cmd /c npx -y @sequenzy/mcp

Pour une configuration de projet partagée, utilisez .mcp.json :

{
  "mcpServers": {
    "sequenzy": {
      "command": "npx",
      "args": ["-y", "@sequenzy/mcp"],
      "env": {
        "SEQUENZY_API_KEY": "seq_user_your_key_here"
      }
    }
  }
}

Codex

codex mcp add sequenzy --env SEQUENZY_API_KEY=seq_user_your_key_here -- npx -y @sequenzy/mcp
codex mcp list

Configuration manuelle Codex dans ~/.codex/config.toml :

[mcp_servers.sequenzy]
command = "npx"
args = ["-y", "@sequenzy/mcp"]

[mcp_servers.sequenzy.env]
SEQUENZY_API_KEY = "seq_user_your_key_here"

Cursor

Installez Sequenzy depuis le Marketplace Cursor pour une connexion hébergée avec OAuth Sequenzy. Le plugin se connecte à :

https://api.sequenzy.com/v1/mcp

Après l'installation, terminez le flux de connexion navigateur. L'agent de Cursor peut ensuite utiliser les outils Sequenzy depuis le chat, y compris lorsque Grok est le modèle sélectionné.

Pour une configuration stdio locale manuelle à la place, ajoutez ceci à ~/.cursor/mcp.json :

{
  "mcpServers": {
    "sequenzy": {
      "command": "npx",
      "args": ["-y", "@sequenzy/mcp"],
      "env": {
        "SEQUENZY_API_KEY": "seq_user_your_key_here"
      }
    }
  }
}

Windsurf

Utilisez la même forme JSON que Cursor.

  • macOS : ~/Library/Application Support/Windsurf/mcp.json
  • Windows : %APPDATA%\Windsurf\mcp.json

VS Code Copilot

VS Code utilise un objet servers :

{
  "servers": {
    "sequenzy": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@sequenzy/mcp"],
      "env": {
        "SEQUENZY_API_KEY": "seq_user_your_key_here"
      }
    }
  }
}

Autres clients MCP

Pour OpenClaw, Hermes et d'autres clients compatibles MCP, pointez le client vers npx -y @sequenzy/mcp et définissez SEQUENZY_API_KEY.

Obtenir une clé API

  1. Ouvrez le tableau de bord Sequenzy.
  2. Utilisez le flux de configuration MCP pour créer une clé personnelle, ou ouvrez Paramètres -> Clés API pour créer une clé d'entreprise.
  3. Choisissez un préréglage d'autorisations ou les portées personnalisées exactes dont l'intégration a besoin.
  4. Ajoutez la clé à votre configuration client MCP.

Les clés personnelles commencent par seq_user_. Vous pouvez les révoquer à tout moment dans le tableau de bord.

Les clés d'entreprise peuvent également être nettoyées sans exposer de secrets. Appelez list_api_keys pour comparer l'identifiant de clé, le nom, le préfixe non secret, les autorisations, l'horodatage de dernière utilisation et le marqueur isCurrent, puis transmettez l'identifiant exact à revoke_api_key. delete_api_key est un alias de compatibilité pour la même opération permanente. Les réponses de liste et de révocation ne contiennent jamais la clé en clair ou le hachage de clé stocké.

Récupérer après des autorisations de clé API manquantes

Si un outil signale une portée manquante telle que campaigns:read ou templates:write, appelez get_account. Son champ apiKeyPermissions répertorie l'identité et le type de clé actuels, les portées, les portées de lecture marketing manquantes courantes et un manageUrl direct. La route révisée par OpenAI renvoie les mêmes autorisations sans l'identifiant de compte de l'utilisateur ni l'identité de la clé active. Les clés personnelles ouvrent les clés API du compte ; les clés d'entreprise ouvrent les paramètres de clés API de l'espace de travail sélectionné. Si la clé n'inclut pas account:read, ouvrez le tableau de bord Sequenzy directement et choisissez la page de clés API correspondante.

Les autorisations sont modifiables sur place, donc ouvrez manageUrl. Pour une clé d'entreprise, utilisez list_api_keys et son indicateur isCurrent pour identifier la clé active avant de la modifier, puis réessayez l'outil ayant échoué sans remplacer l'identifiant ni redémarrer le client. Un agent utilisant une clé d'entreprise avec api_keys:manage peut à la place appeler update_api_key ; les clés personnelles doivent être modifiées sur la page au niveau du compte car cet outil ne gère que les clés d'entreprise. Ses entrées scopes et preset remplacent toute la sélection d'autorisations plutôt que de fusionner, donc préservez chaque portée existante encore nécessaire. Les connexions OAuth hébergées peuvent alternativement se déconnecter et se réautoriser avec des autorisations plus larges. Lorsque la clé active elle-même ne possède pas api_keys:manage, appelez request_api_key_handoff au lieu de réessayer update_api_key. Cela nécessite account:read et renvoie une URL de révision par le propriétaire avec le nom de clé demandé, les permissions et le prédécesseur facultatif préremplis. Cela ne crée ni ne renvoie jamais de clé ; le propriétaire de l’espace de travail révise le formulaire, crée le remplacement dans le navigateur et le copie dans le client. Passez replaceApiKeyId: "current" pour proposer la révocation de la clé active après la création du remplacement. Si la clé active ne possède pas non plus account:read, utilisez directement le tableau de bord.

Le préréglage par défaut Safer agent access inclut lists:write et tags:write, afin que les agents puissent créer et mettre à jour les définitions de listes et d’étiquettes, et il inclut subscribers:tag pour appliquer des étiquettes aux contacts existants. Il inclut également ab_tests:read, ab_tests:write et sequences:write, afin que les agents puissent auditer et modifier les variantes de texte des tests A/B de séquences, y compris les messages d’abandon de panier et de navigation. Il n’inclut pas subscribers:write, donc il ne peut pas ajouter des contacts à des listes ni les retirer de listes. La suppression d’une liste ou d’une étiquette nécessite toujours la permission lists:delete ou tags:delete correspondante.

Le préréglage de rédaction IA inclut subscribers:write, afin que les agents de rédaction puissent construire une liste ainsi que la créer. Les importations qui appliquent listIds nécessitent également lists:write ; l’inscription à une séquence ou la livraison en double opt-in nécessite en plus automations:trigger.

Outils

La surface standard expose actuellement 243 outils MCP. La surface révisée par OpenAI en expose 237 ; seules les six opérations listées ci-dessus sont omises.

Les outils rejettent les arguments qu’ils ne déclarent pas au lieu de les ignorer silencieusement. Les erreurs nomment les champs non pris en charge, listent les arguments pris en charge et fournissent des conseils ciblés pour les erreurs courantes telles que les filtres de souscripteurs inventés ou les options de tri.

Compte, Entreprises, Configuration

OutilDescription
get_accountObtenir les informations du compte, les entreprises disponibles, les permissions actuelles de la clé et l'URL de gestion des clés API.
select_companyDéfinir l'entreprise active pour les futurs appels d'outils.
get_app_urlsConstruire des URL de tableaux de bord pour les campagnes, les pages d'atterrissage, les séquences, les e-mails, les paramètres, la gestion des abonnements, les domaines et les détails des e-mails envoyés. settingsTab: "billing" renvoie à Compte -> Abonnement.
create_companyCréer une nouvelle entreprise ou marque.
get_companyLire les détails de l'entreprise, les informations produit, le contexte de marque, la localisation, les paramètres de suivi des réponses, les valeurs par défaut actuelles De/Répondre à, et le droit en lecture seule effectif emailBranding avec le motif du plan/statut et l'URL d'abonnement ; STO est explicitement identifié comme réservé aux campagnes.
update_companyModifier les informations produit, le contexte de marque, le thème des e-mails, le suivi des réponses et les valeurs par défaut ou noms du profil De/Répondre à à l'échelle du compte.
get_sync_rulesLire les règles de correspondance événement-étiquette de l'entreprise et savoir si elle utilise le préréglage de plateforme hérité.
update_sync_rulesRemplacer toutes les règles de synchronisation ; passer [] pour les désactiver ou null pour adopter le préréglage de plateforme SaaS/e-commerce.
get_shopify_automation_settingsLire les paramètres d'abandon de navigation, d'abandon de panier et de baisse de prix pour la boutique Shopify connectée.
update_shopify_automation_settingsMettre à jour partiellement les paramètres d'automatisation Shopify ou réinitialiser une section individuelle à ses valeurs par défaut de plateforme.
create_api_keyCréer une clé API d'entreprise et renvoyer son secret à usage unique sur MCP standard ; omis de la route révisée par OpenAI.
request_api_key_handoffPréparer une URL de création/rotation révisée par le propriétaire lorsque la clé active ne peut pas gérer elle-même les clés API.
list_api_keysLister les clés API d'entreprise comme métadonnées non secrètes pour une identification et un nettoyage sûrs.
update_api_keyRenommer une clé API d'entreprise ou remplacer son préréglage de permissions ou ses portées sans modifier la valeur de la clé.
revoke_api_keyRévoquer définitivement une clé API d'entreprise exacte par ID après l'avoir vérifiée avec list_api_keys.
delete_api_keyAlias de compatibilité pour revoke_api_key.
list_websitesLister les domaines d'envoi avec les statuts agrégés, SPF, DKIM et MAIL FROM stockés.
add_sending_domainAjouter un domaine d'envoi et renvoyer ses enregistrements DNS spécifiques à la cohorte.
add_websiteAlias de compatibilité pour add_sending_domain.
check_websiteLire les détails de vérification SPF, DKIM, MAIL FROM et agrégés stockés d'un domaine d'envoi.
verify_sending_domainExécuter une nouvelle vérification DNS/fournisseur du domaine d'envoi et renvoyer le statut actuel et les diagnostics.
list_integrationsLister les intégrations connectées avec la santé de connexion et de synchronisation, sans renvoyer les identifiants.
get_sending_statusDiagnostiquer l'envoi actif, en pause ou suspendu, y compris les dénominateurs d'application, les portes de révision et les étapes de remédiation.
resume_sendingRestaurer une pause de rebondissement dur éligible après avoir explicitement confirmé que la liste a été assainie.
get_tracking_settingsLire les valeurs par défaut d'ouverture/clic à l'échelle du compte et de l'API Transactionnelle, le désabonnement, l'attribution, UTM, le domaine de clic, le suivi des réponses et les paramètres de double opt-in.
update_tracking_settingsMettre à jour les valeurs par défaut de suivi à l'échelle du compte et de l'API Transactionnelle, l'attribution, UTM et le double opt-in à l'échelle du compte.
get_integration_guideObtenir des exemples d'intégration spécifiques au framework.
get_integrationInspecter une intégration connectée, son câblage d'événements, le ciblage de listes, l'activité récente et les recommandations.
list_integration_capabilitiesComparer les capacités des fournisseurs, qu'ils soient connectés ou non.
connect_integrationConnecter les fournisseurs pris en charge par clé API ou secret de webhook sur MCP standard, y compris les webhooks Lemon Squeezy gérés, Attio sortant uniquement, et l'import d'historique PostHog/Segment optionnel ; omis de la route révisée par OpenAI.
get_event_schemaInspecter les exemples de charges utiles d'événements publiés, les chemins de propriétés, les types et les balises de fusion par fournisseur.
list_integration_activityLire le journal d'activité de webhook et de synchronisation spécifique à l'intégration conservé.
set_integration_sync_enabledActiver ou désactiver les importations en masse et les backfills tout en laissant les webhooks en direct connectés.
set_integration_list_targetingChoisir les listes auxquelles les contacts créés par une intégration prise en charge rejoignent lors des prochaines écritures du fournisseur.
sync_integrationMettre en file d'attente les revenus de paiement, les utilisateurs Supabase ou un import d'historique d'événements PostHog/Segment en utilisant la configuration d'intégration enregistrée.
get_integration_pixelLire l'état en direct du pixel/configuration Shopify et distinguer les événements sombres confirmés d'une lecture inconnue.
activate_integration_pixelInstaller ou réorienter le pixel de la vitrine Shopify ; idempotent lorsqu'il est déjà à jour.
list_web_tracking_keysLister les clés de suivi de site web publiables, les restrictions d'origine, l'état d'utilisation et les extraits d'installation.
get_web_tracking_keyObtenir une clé de suivi de site web avec son extrait d'installation exact et son point de terminaison d'ingestion.
create_web_tracking_keyCréer une clé de suivi publiable pour une vitrine ou un site web non-Shopify.
update_web_tracking_keyRenommer, restreindre, révoquer ou réactiver une clé de suivi de site web.
delete_web_tracking_keySupprimer définitivement une clé de suivi de site web après le retrait de son extrait.
list_sender_profilesLister les profils d'expéditeur et de réponse, les valeurs par défaut et l'état de préparation du domaine d'envoi.
update_sender_profileRenommer un profil d'expéditeur ou de réponse sans modifier les valeurs par défaut du compte.
delete_sender_profileSupprimer définitivement un profil d'expéditeur inutilisé, avec des gardes pour les surfaces d'envoi actives et le dernier expéditeur restant.
get_notification_preferencesLire les paramètres de notification de compte et les modes pris en charge de l'utilisateur actuel par entreprise, y compris le rapport hebdomadaire du lundi.
update_notification_preferencesMettre à jour les modes de livraison des notifications de compte de l'utilisateur actuel, y compris la désinscription au rapport hebdomadaire, sans affecter les coéquipiers.
render_emailRendre le HTML final compatible e-mail et diagnostiquer les balises de fusion non résolues, y compris les fautes de frappe masquées par les valeurs par défaut. La route examinée par OpenAI accepte des données d'exemple ou un abonné en ligne vérifié par politique, pas un ID d'abonné stocké.
get_sending_status conserve l'état de pause basé sur Postgres, les contrôles de révision et la remédiation lorsque les analyses de santé de l'expéditeur sont temporairement indisponibles ; dans ce cas dégradé, senderHealth est null.

render_email renvoie unresolvedMergeTags afin que les appelants puissent distinguer un nom inconnu d'une balise reconnue qui est simplement vide pour le contact prévisualisé. Les noms inconnus sont signalés même lorsqu'un filtre default a fourni du texte : par exemple, {{ subscriber.frstName | default: "there" }} génère une salutation plausible pour chaque contact tout en contournant les prénoms stockés. Un nom reconnu qui est vide pour un contact n'est pas signalé lorsque sa valeur par défaut est utilisée. La route révisée par OpenAI rejette les sélecteurs d'attributs personnalisés restreints dans les balises de fusion. Elle omet également l'argument subscriberId ; utilisez un subscriber en ligne vérifié par politique, ou omettez les données de l'abonné pour un aperçu d'échantillon.

Pour générer une étape de séquence dont le nodeType est action_ab_test, transmettez le sequenceId et le nodeId de l'étape avec un variantId provenant de get_sequence.sequence.emails[].abTest.variants. Ces étapes n'ont pas d'e-mail propre, la variante est donc requise ; la lecture et le rendu de leur copie concurrente nécessitent également la portée ab_tests:read.

Pour Supabase, sync_integration réutilise le projet, le schéma, la table, la sélection de liste et les mappages de consentement enregistrés dans le tableau de bord. Il ne peut pas cibler une table arbitraire. Exécutez-le après l'installation du déclencheur de base de données en direct pour importer les utilisateurs qui existaient avant l'installation du déclencheur, puis interrogez get_integration et list_integration_activity pour la progression et les résultats au niveau des lignes.

set_integration_sync_enabled contrôle uniquement les importations en masse et les backfills ; il n'empêche pas le webhook en direct d'un fournisseur de créer des contacts. Utilisez set_integration_list_targeting pour choisir leurs futures adhésions à des listes : null suit les valeurs par défaut de l'espace de travail, [] n'ajoute à aucune liste, et un tableau rempli cible ces listes. Le changement n'est pas rétroactif et ne supprime jamais les adhésions existantes. Il n'arrête pas non plus les séquences any_contact par défaut, qui inscrivent les contacts sans liste ; les any_list explicites et les séquences de listes spécifiques nécessitent une adhésion correspondante. Associez le ciblage de liste à pause_sequence_enrollments lorsque ces inscriptions par défaut doivent également cesser. Supabase, Stripe, Shopify, Wix et Webflow prennent en charge ce contrôle.

Pour PostHog, sync_integration redémarre l'importation de l'historique des événements depuis le début avec la clé API personnelle stockée. Les événements importés sont dédupliqués, donc réessayer une importation échouée ne crée pas de doublons.

Pour Segment, connect_integration sur MCP standard peut éventuellement importer l'historique récent des événements depuis Unify après la connexion du webhook en direct. L'importation parcourt les contacts existants via l'API Profile, couvre les 14 jours les plus récents de l'API, ignore les contacts sans profil correspondant et déduplique en toute sécurité les nouvelles tentatives et le chevauchement du webhook en direct. Les nouvelles connexions ignorent les appels automatiques de page/écran, sauf si ces noms sont explicitement autorisés. Les secrets du webhook Segment doivent être de 16 à 153 octets UTF-8. Sur la route révisée par OpenAI, qui omet connect_integration, connectez Segment dans le tableau de bord ou le CLI local à la place. Utilisez sync_integration pour réessayer avec les informations d'identification enregistrées.

Pour Lemon Squeezy, transmettez provider: "lemon_squeezy", une clé API et l'ID de boutique numérique comme providerAccountId. Omettez webhookSecret pour la configuration gérée par défaut ; la réponse signale webhookProvisioning et testMode. Fournissez un secret de signature de 16 à 40 caractères uniquement pour la configuration manuelle du webhook, en utilisant le webhookUrl renvoyé. Les informations d'identification ne sont jamais renvoyées.

Pour Attio, connect_integration sur MCP standard accepte un jeton d'accès à l'espace de travail sans secret de webhook, avec settings.listMap facultatif comme carte des ID de listes Sequenzy vers les UUID ou slugs API des listes de personnes Attio, plus syncCompanyFromDomain pour contrôler la correspondance des entreprises à partir de domaines de messagerie non gratuits. Sur la route révisée par OpenAI, connectez Attio dans le tableau de bord ou le CLI local, puis utilisez update_attio_settings pour les mêmes paramètres. L'intégration est uniquement sortante : les nouvelles adhésions aux listes Sequenzy mappées créent ou mettent à jour la personne et l'ajoutent à la liste Attio ; les suppressions de liste ne suppriment pas les enregistrements d'Attio.

Appelez get_event_schema avant d'écrire une balise de fusion {{event.*}} ou un filtre de propriété d'événement. Omettez eventName pour lister les événements intégrés documentés ; fournissez un nom d'événement pour recevoir des exemples de charges utiles et de chemins de propriétés spécifiques au fournisseur, et éventuellement filtrer par provider. Les noms d'événements personnalisés restent valides même lorsque le résultat signale documented: false ; cela signifie seulement qu'aucun échantillon de référence n'est publié. Utilisez l'activité d'intégration ou les inscriptions aux séquences pour les données de livraison réelles, car cet outil renvoie des données de référence statiques.

Pour un nouveau domaine d'envoi, appelez add_sending_domain, publiez les enregistrements DNS dans le website.dnsRecords renvoyé, attendez la propagation DNS, puis appelez verify_sending_domain. Publiez chaque enregistrement renvoyé au lieu de supposer un fournisseur ou un nombre d'enregistrements fixe : les domaines unifiés incluent le DMARC requis, tandis que les domaines hérités peuvent renvoyer les enregistrements Amazon SES MAIL FROM et de réponse aux e-mails entrants. Si la vérification est tentée avant la création, l'erreur renvoie à add_sending_domain avec le domaine demandé.

Pour Shopify, appelez get_integration_pixel avant de vous fier aux vues de produits, à l'activité du panier ou aux déclencheurs d'abandon de navigation. Le résultat est lu en direct depuis Shopify car les marchands peuvent supprimer le pixel indépendamment. Si pixel.healthy est faux, dependentEvents nomme les déclencheurs qui ne peuvent pas arriver ; appelez activate_integration_pixel pour installer ou rediriger le pixel. L'activation est idempotente et les événements commencent à la prochaine visite de la boutique plutôt que d'être rétroactifs.

Pour les sites Web personnalisés, headless, de billetterie ou SaaS, utilisez list_web_tracking_keys avant de vous fier aux déclencheurs de vue de produit ou de panier. Créez une clé avec une liste d'origines autorisées explicite, installez le installSnippet renvoyé, puis faites générer par le backend authentifié du client une preuve à courte durée de vie via POST /api/v1/web-tracking-identities et appelez sequenzy.identify(email, identityToken) à la connexion ou au paiement. Une clé publiable seule n'enregistre que l'activité anonyme et ne peut pas déclencher l'automatisation des abonnés. L'extrait renvoyé installe des stubs de méthodes synchrones avant son chargeur asynchrone, de sorte que les appels d'identité et d'événements effectués pendant le chargement de la page sont mis en file d'attente jusqu'à ce que le SDK soit prêt. Préférez révoquer une clé avec update_web_tracking_key avant de la supprimer définitivement.

Les nouvelles entreprises commencent sans règles de synchronisation. Le préréglage hérité reste disponible pour les entreprises SaaS/ecommerce en transmettant null à update_sync_rules ; les entreprises de services et de conseil devraient normalement conserver [] ou définir des règles explicites.

Utilisez list_sender_profiles pour trouver l'ID du profil, puis appelez update_sender_profile pour modifier uniquement son nom d'affichage. Transmettez type: "reply" pour un profil de réponse ; l'expéditeur est la valeur par défaut. L'adresse, le domaine d'envoi et les sélections par défaut De/Répondre à à l'échelle du compte restent inchangés. Le renommage nécessite la portée companies:manage.

Utilisez delete_sender_profile pour supprimer définitivement une identité d'expéditeur obsolète. Il refuse le dernier expéditeur et tout profil utilisé par une campagne en direct, une séquence active (y compris une substitution d'étape) ou un e-mail transactionnel. Les brouillons éligibles et les valeurs par défaut du compte passent au fallbackSenderProfileId renvoyé ; examinez-le avant l'envoi. Les profils de réponse ne sont pas pris en charge par cet outil de suppression.

L'abandon de panier Shopify est activé par défaut. Il déclenche ecommerce.cart_abandoned après une heure d'inactivité du panier, avec un délai de récupération de 24 heures par abonné. Utilisez update_shopify_automation_settings pour modifier les champs cartAbandonment.enabled, delayHours ou cooldownHours ; transmettez cartAbandonment: null pour restaurer ces valeurs par défaut sans modifier les paramètres d'abandon de navigation ou de baisse de prix. Les valeurs de temporisation doivent être positives ; delayHours est plafonné à 168 et cooldownHours à 720.

Abonnés

OutilDescription
add_subscriberAjouter un abonné ; le statut est uniquement à la création, utilisez donc update_subscriber pour un contact existant.
create_subscriber_importMettre en file d'attente jusqu'à 5 000 enregistrements CRM complets avec un idempotencyKey facultatif sûr pour les nouvelles tentatives ; les contrôles d'hygiène des e-mails activés continuent séparément après l'ingestion.
get_subscriber_importLire la progression, les compteurs de résultats de lignes et les résumés d'échec pour une importation en file d'attente.
update_subscriberMettre à jour les champs natifs du profil et du téléphone, le consentement SMS, les attributs, les balises ou le statut global.
remove_subscriberDésabonner tout en préservant l'historique de suppression, ou supprimer définitivement uniquement avec hardDelete: true.
get_subscriberRécupérer les détails de l'abonné par e-mail ou ID externe.
search_subscribersRechercher par requête, balises, liste, statut, segment ou un attribut personnalisé, avec pagination automatique ou reprenable.
trigger_subscriber_eventÉmettre un événement personnalisé exactement comme le ferait une intégration, en appliquant les règles de synchronisation et en faisant correspondre les déclencheurs de séquence.
trigger_subscriber_eventsÉmettre plusieurs événements personnalisés ordonnés pour un seul abonné.
import_subscriber_eventsImporter jusqu'à 25 événements identifiés par source entre contacts ; l'historique silencieux exige que chaque ligne pour un contact ait plus d'une heure.
bulk_add_subscriber_tagsAjouter des balises à jusqu'à 500 abonnés existants ; nécessite subscribers:tag et peut également nécessiter tags:write.
bulk_remove_subscriber_tagsSupprimer des balises de jusqu'à 500 abonnés existants ; nécessite subscribers:tag ou subscribers:write.

Utilisez create_subscriber_import pour l'intégration CRM au lieu de boucler sur add_subscriber. Un appel accepte 5 000 enregistrements complets et renvoie un ID d'importation asynchrone ; interrogez-le avec get_subscriber_import. Une importation completed peut encore contenir des échecs de lignes, alors inspectez failedCount et failedReasons. Chaque ligne exclue est comptabilisée : skippedReasons totalise skippedCount, et failedReasons totalise failedCount. Signalez tout manque avec l'ID d'importation au lieu de deviner quelles lignes ont été omises. Lorsque l'hygiène des e-mails est activée, les contrôles de délivrabilité continuent séparément après l'ingestion et les résultats apparaissent dans l'état de santé de la liste ; le statut d'importation n'attend pas ces verdicts et ne les inclut pas. Les verdicts invalides sont supprimés des envois ultérieurs. Utilisez optInMode: "confirmed" uniquement lorsque le consentement a déjà été vérifié.

Pour import_subscriber_events, l'e-mail est requis lorsqu'une ligne peut créer un nouveau contact ; externalId peut se suffire à lui-même uniquement pour un contact existant. Fournissez un eventId stable sur chaque ligne. Réessayer réutilise le reçu d'origine et retente de manière idempotente la récupération en aval. La classification historique est par contact : si une ligne pour un contact est récente, tout le groupe de ce contact utilise le chemin d'effets secondaires en direct.

Pour la suppression de conformité, appelez update_subscriber avec status: "unsubscribed" (ou utilisez remove_subscriber sans hardDelete). Ne réessayez pas add_subscriber avec un statut différent : le statut sur cet outil ne s'applique que lorsque le contact est créé pour la première fois, et un résultat ignoré non concordant est signalé comme une erreur. When add_subscriber omet listIds, un contact créé par l'appel suit les listes par défaut de l'espace de travail, tandis qu'un contact existant conserve ses adhésions de listes actuelles. Passez des ID de listes explicitement lorsqu'un contact existant doit rejoindre des listes spécifiques ; passez [] pour cibler aucune liste.

update_subscriber.phone écrit le champ téléphone natif affiché sur le contact, pas un attribut personnalisé. Passez smsConsent: true uniquement après avoir vérifié un consentement écrit explicite, ou false pour désinscrire le contact. Changer le téléphone sans smsConsent réinitialise le consentement SMS, car le consentement appartient à l'ancien numéro.

add_subscriber, update_subscriber, et create_subscriber_import acceptent un fuseau horaire IANA timezone tel que America/New_York. La valeur est stockée sur le profil de contact natif et permet une livraison de campagne localisée au destinataire. Passez un fuseau horaire vide à update_subscriber pour l'effacer ; les valeurs de ligne d'import invalides sont ignorées sans rejeter le reste de l'import.

Produits et livraison numérique

OutilDescription
list_productsListe les produits synchronisés depuis Stripe, Shopify, WooCommerce, manuels ou données Commerce API.
upsert_productsCrée ou met à jour jusqu'à 100 produits Commerce API identifiés par votre ID produit.
delete_productSupprime un produit précédemment envoyé via la Commerce API.
attach_product_fileAttache un fichier de livraison hébergé ou téléchargé localement à un produit.
remove_product_fileSupprime un fichier de livraison de produit attaché.
sync_productsMet en file d'attente une synchronisation du catalogue Stripe, en sélectionnant éventuellement une intégration par ID.

Après qu'un fichier de livraison de produit est attaché, les événements d'achat correspondants incluent download.url et download.name, afin que les e-mails déclenchés par un achat puissent utiliser des balises de fusion comme {{event.download.url}}.

Pour les produits Stripe, list_products renvoie chaque prix actif comme variante, avec l'ID de prix Stripe dans variantId. Utilisez cet ID pour cibler un prix exact dans une séquence d'achat, même s'il ne s'agit pas du prix par défaut du produit.

Ressources d'images

OutilDescription
upload_image_assetTéléverse une image d'e-mail et renvoie son enregistrement média hébergé plus un bloc d'image prêt à insérer.

L'outil accepte les images PNG, JPEG, GIF et WebP jusqu'à 5 Mo. Les clients stdio locaux peuvent passer filePath. Les clients hébergés/distants qui peuvent accéder aux octets de pièces jointes peuvent passer imageBase64 avec filename. Fournissez altText pour l'accessibilité, puis utilisez displayWidthPercent, cropHeight, objectFit (cover ou contain), et align pour standardiser la présentation des captures d'écran. Le imageBlock renvoyé peut être copié directement dans le tableau de blocs accepté par les outils de campagne, séquence, modèle et e-mail transactionnel.

Les octets d'image authentifiés sont toujours téléversés vers l'origine configurée par SEQUENZY_API_URL, même si un proxy inverse renvoie une URL de téléversement équivalente sous un autre hôte. Les identifiants API ne sont jamais transmis à cette origine alternative.

{
  "filePath": "/Users/me/Desktop/product-results.png",
  "altText": "Product results dashboard",
  "displayWidthPercent": 100,
  "cropHeight": 320,
  "objectFit": "cover",
  "align": "center"
}

Listes, balises, segments

OutilDescription
list_tagsListe toutes les balises.
create_tagCrée une définition de balise avec une couleur facultative.
update_tagMet à jour la couleur d'une balise.
delete_tagSupprime une balise et la retire des abonnés.
list_listsListe les listes d'abonnés.
create_listCrée une liste d'abonnés.
update_listRenomme ou décrit une liste d'abonnés.
delete_listSupprime une liste d'abonnés.
add_subscribers_to_listAjoute jusqu'à 500 abonnés à une liste à partir d'un tableau d'e-mails.
remove_subscribers_from_listSupprime jusqu'à 500 abonnés d'une liste.
list_segmentsListe les segments enregistrés et leurs compteurs.
create_segmentCrée des segments filtrés par tableaux imbriqués ou de même élément.
update_segmentMet à jour le nom, les filtres, le groupe racine ou l'opérateur de jointure d'un segment.
delete_segmentSupprime un segment (nécessite segments:delete).
get_segment_countAperçu du nombre d'abonnés actifs pour un segment.

Pour les exports d'abonnés, search_subscribers accepte listId, un listName exact, ou list (ID d'abord, puis nom exact). Il accepte également attribute plus attributeValue, avec attributeOperator pour contains, des comparaisons numériques, ou is_not_empty ; la forme combinée "attributeName:value" reste prise en charge. Les filtres se combinent avec ET ; utilisez un segment enregistré pour la logique OU, les groupes imbriqués, les exclusions, l'engagement ou les conditions d'événement. Si limit est omis, l'outil récupère automatiquement chaque page correspondante. Pour les lectures par lots, passez limit et suivez pagination.nextCursor (ou pagination.nextOffset) tant que hasMore est vrai. offset et page sont pris en charge en dessous de 1 000 000 de correspondances ignorées ; utilisez le curseur pour des audiences plus profondes.

Pour le remplissage en masse de listes, utilisez add_subscribers_to_list ; le point de terminaison API sous-jacent est POST /api/v1/lists/{listId}/subscribers sans suffixe /bulk :

{
  "emails": ["ada@example.com", "grace@example.com"],
  "duplicateStrategy": "skip",
  "enrollInSequences": false,
  "optInMode": "default"
}

Envoyez au maximum 500 e-mails par requête. Les limites de débit API standard s'appliquent toujours : 100 requêtes par minute par clé API et 20 requêtes par seconde en rafale. Pour les imports CLI pilotés par CSV, les en-têtes d'e-mail acceptés incluent email, e-mail, email address et mail ; si aucun en-tête reconnu n'existe, la CLI lit la première colonne.

Les filtres de segment prennent en charge les attributs, les événements, l'adhésion à des segments enregistrés, les événements d'engagement, les règles d'achat de produits Stripe et les règles d'achat de produits commerciaux. Utilisez filterJoinOperator: "or" pour les segments correspondant-à-un, ou passez un groupe v2 root pour la logique imbriquée.

Pour les attributs de type tableau d'objets, utilisez des chemins génériques tels que history_events[].eventvenue_id:2103. Lorsqu'un groupe ET filtre également history_events[].showing_date, les deux conditions doivent correspondre à un élément history_events[] partagé ; les valeurs d'entrées d'historique non liées ne sont pas combinées. La suppression d'un segment nécessite segments:delete ; segments:write n'est pas suffisant.

Chaque champ de filtre de segment valide ses propres opérateurs :

  • status, segment : is, is_not
  • tag : contains, not_contains, is_empty, is_not_empty
  • email : contains, not_contains
  • emailProvider, list : is, is_not, is_empty, is_not_empty
  • firstName, lastName : contains, not_contains, is_empty, is_not_empty
  • added : less_than, more_than
  • attribute : is, is_not, is_empty, is_not_empty, gte, lte, gt, lt, contains, not_contains
  • event, champs d'engagement e-mail : is, is_not, at_least, less_than_count
  • emailBounced : prend également en charge is_temporary_bounce, is_permanent_bounce
  • stripeProduct : is, is_not, at_least, less_than_count
  • stripeCurrentProduct, stripeTrialProduct : is, is_not, gte, lte, gt, lt
  • commerceProduct : is, is_not, at_least, less_than_count

Exemples de filtres de produits Stripe :

{ "field": "stripeProduct", "operator": "is", "value": "prod_pro" }
{ "field": "stripeProduct", "operator": "is_not", "value": "prod_pro" }
{ "field": "stripeProduct", "operator": "at_least", "value": "prod_pro:3" }
{ "field": "stripeProduct", "operator": "less_than_count", "value": "prod_pro:3" }

Les filtres de produits commerciaux correspondent aux produits achetés via des commandes commerciales. Les valeurs peuvent être provider:productId pour les ID limités au fournisseur (shopify, woocommerce ou api), un ID produit nu pour correspondre à n'importe quel fournisseur, ou provider:productId:count pour les opérateurs de seuil :

{ "field": "commerceProduct", "operator": "is", "value": "api:starter-kit" }
{ "field": "commerceProduct", "operator": "at_least", "value": "shopify:42:2" }

Les champs d'engagement tels que emailSent, emailDelivered, emailOpened, emailClicked, emailBounced et emailComplained acceptent des fenêtres glissantes comme 7d, 30d, 90d, 180d ou all. Les opérateurs de présence peuvent être limités par la politique de livraison avec marketing:<timeRange> (trafic de campagne à politique marketing, automatisation et API d'envoi) ou transactional:<timeRange> (envois à politique transactionnelle) ; les portées de politique nécessitent un instantané de politique au moment de l'envoi, donc les événements d'automatisation et d'API d'envoi plus anciens et ambigus restent disponibles uniquement via des filtres non limités. emailBounced prend également en charge les valeurs limitées avec is_temporary_bounce et is_permanent_bounce. Avec at_least et less_than_count, utilisez count:timeRange, comme 10:30d ou 10:all. Les opérateurs de présence peuvent également utiliser une portée de campagne comme campaign:cmp_123 ; les portées de campagne et de type d'e-mail ne peuvent pas être combinées avec les opérateurs de comptage.

Synchronisations d'audience (Meta Ads)

OutilDescription
list_audience_syncsListe les synchronisations segment-vers-audience avec le planning et le statut de la dernière synchronisation.
list_ad_accountsListe les comptes publicitaires Meta disponibles pour la synchronisation.
create_audience_syncPousse un segment vers une audience personnalisée Meta selon un planning.
update_audience_syncModifie la fréquence de synchronisation (hourly, daily, weekly) ou met en pause/reprend.
delete_audience_syncSupprime un mappage de synchronisation ; l'audience Meta elle-même est conservée.
sync_audience_nowDéclenche un téléversement immédiat en dehors du planning régulier.

Nécessite que l'intégration Meta Ads soit connectée dans le tableau de bord Sequenzy (Paramètres -> Intégrations). create_audience_sync accepte un segment existant (segmentId) ou un modèle prêt à l'emploi (predefinedSegmentId, par exemple zero-ltv, no-purchase-1y, recent-buyers, high-spenders-ecom, non-buyers, engaged) - le segment modèle est créé automatiquement lors de la première utilisation, et le premier téléversement s'exécute immédiatement.

Les audiences sont en ajout uniquement : les abonnés qui quittent ensuite le segment restent dans l'audience Meta. Meta exige 100+ personnes correspondantes avant qu'une audience puisse être utilisée pour la diffusion publicitaire.

Modèles

OutilDescription
list_templatesListe les modèles avec le statut de localisation, le libellé et le filtrage isTemplate, avec pagination.
get_templateLit les détails d'un modèle, son contenu et ses variantes localisées.
create_templateCrée des modèles à partir d'une invite, de HTML ou de blocs Sequenzy ; utilisez isTemplate: true pour enregistrer un design maître réutilisable.
update_templateMet à jour les métadonnées d'un modèle, le texte d'aperçu de la boîte de réception, les libellés, le HTML ou les blocs ; marque ou démarque un maître avec isTemplate.
set_template_localizationCrée ou remplace une variante localisée fournie par l'appelant.
sync_template_localizationsMet en file d'attente la traduction IA pour les locales non principales sélectionnées ou toutes celles activées.
delete_templateSupprime un modèle.

list_templates renvoie 50 corps d'e-mails du plus récent au plus ancien par défaut et accepte une limit jusqu'à 100. Avancez offset par pagination.count tant que pagination.hasMore est vrai ; pagination.total indique le nombre total de correspondances, y compris les corps d'e-mails de campagne et transactionnels.

Définissez isTemplate: true sur list_templates pour ne renvoyer que les designs maîtres enregistrés, ou false pour renvoyer les corps d'e-mails ordinaires. Les maîtres marqués sont proposés comme points de départ pour les étapes de séquence et les campagnes du tableau de bord ; partir de l'un d'eux crée une copie indépendante afin que les modifications laissent le maître intact.

La copie de conception source autonome/séquence et la réécriture IA dans une mise en page sélectionnée sont actuellement réservées au tableau de bord. Cette version conserve intentionnellement ces flux de travail dans la création interactive, où les utilisateurs peuvent examiner la source, les traductions et toute copie de secours avant d'enregistrer une étape de séquence. REST, CLI et MCP n'exposent aucune opération équivalente de conception source autonome/séquence. create_template avec prompt génère un nouveau contenu sans préserver une mise en page existante ; le HTML ou les blocs fournis créent un nouveau corps sans copier automatiquement les variantes localisées. Voir la documentation sur la disponibilité des interfaces.

Les copies de campagne fonctionnent déjà via REST POST /api/v1/campaigns et MCP create_campaign avec templateId ; cela ne peut pas être combiné avec prompt pour une réécriture IA.

Pour un contenu entièrement nouveau demandé en langage naturel, transmettez prompt afin que Sequenzy génère des blocs natifs de marque côté serveur. Utilisez blocks uniquement pour le contenu Sequenzy terminé fourni par l'appelant, et utilisez html uniquement lors de la préservation du balisage fourni ou explicitement demandé. prompt, blocks et html sont mutuellement exclusifs ; style et tone ne sont valides qu'avec prompt.

Utilisez set_template_localization lorsque la copie traduite provient de votre propre flux de travail de localisation. Cela nécessite une locale non principale activée, une subject localisée, et exactement un de html ou blocks. Utilisez sync_template_localizations pour demander à Sequenzy de traduire les locales sélectionnées ; omettez locales pour synchroniser chaque locale non principale activée. La synchronisation explicite fonctionne même lorsque la localisation automatique à l'enregistrement est désactivée.

Composants d'e-mail réutilisables

OutilDescription
list_email_componentsListe les sections et pieds de page enregistrés, éventuellement limités aux valeurs par défaut épinglées.
get_email_componentLit les blocs, métadonnées, version et état d'emplacement par défaut d'un composant.
get_default_email_componentLit le composant actuellement épinglé à un emplacement par défaut tel que footer.
set_default_email_componentCrée ou remplace le pied de page par défaut de l'entreprise utilisé par les e-mails de blocs nouvellement créés.
create_email_componentEnregistre une section ou un pied de page réutilisable à partir d'une liste de blocs.
update_email_componentMet à jour les métadonnées d'un composant ou remplace ses blocs et incrémente sa version.
delete_email_componentSupprime un composant sans modifier les e-mails qui ont déjà copié ses blocs.

Les composants sont copiés dans les e-mails lors de leur création, donc les modifications ultérieures affectent les e-mails nouvellement créés plutôt que de réécrire le contenu existant. Le pied de page par défaut conserve son lien de désabonnement activé, tandis que le rendu transactionnel masque ce lien. Les e-mails HTML bruts conservent leur propre balisage et ne reçoivent pas de composants de blocs ; leur gestion du désabonnement à l'envoi reste inchangée.

Tests A/B

OutilDescription
list_ab_testsListe les tests A/B et leurs variantes, éventuellement limités par séquence.
get_ab_testObtient les paramètres effectifs, les variantes, le statut de localisation et la copie d'étape de séquence.
get_ab_test_statsObtient les statistiques globales et par variante.
restart_ab_testRedémarre un test A/B arrêté ou terminé.
select_ab_test_winnerSélectionne un gagnant de test de campagne et met en file d'attente la livraison restante.
update_ab_testMet à jour les paramètres de sélection du gagnant pour une campagne ou une séquence.
update_ab_test_variantMet à jour la copie de variante de brouillon de campagne ou de séquence.
create_ab_testCrée un test de campagne ou convertit une étape d'e-mail de séquence.
add_ab_test_variantAjoute une variante à un test A/B existant.
delete_ab_test_variantSupprime une variante de test A/B de brouillon.
delete_ab_testSupprime un test A/B.

Utilisez get_sequence.sequence.emails[].abTest.variants pour découvrir les identifiants de variantes de séquence, les objets, les textes d'aperçu et les nombres de blocs ; appelez get_ab_test pour auditer le blocks complet de chaque variante, le settings effectif, le statut de localisation ou les statistiques. Les paramètres de campagne utilisent testPercentage, testDurationMinutes et winnerCriteria ; les paramètres de séquence utilisent testType, winnerThreshold et winnerCriteria. Les valeurs de séquence héritées testPercentage: 100 et testDurationMinutes: 0 sont des sentinelles de compatibilité, pas des paramètres d'exécution. select_ab_test_winner s'applique uniquement à un test de campagne actuellement en cours de test et met immédiatement en file d'attente la variante gagnante pour le public restant. update_ab_test modifie le modèle de paramètres approprié et nécessite confirmLiveChange: true lorsque les paramètres de séquence affectent un test actif ou déjà utilisé. Les mises à jour de variantes acceptent soit html soit blocks, pas les deux.

create_ab_test accepte exactement un de campaignId ou automationNodeId ; ce dernier nécessite une à quatre variantes supplémentaires et convertit un nœud d'e-mail de séquence en action_ab_test. La conversion déplace l'objet, le texte d'aperçu et les blocs de l'étape vers des e-mails de variantes indépendants. Obtenez les identifiants du test et des variantes à partir de get_sequence, lisez la copie de chaque variante avec get_ab_test, et modifiez chacune avec update_ab_test_variant ; update_sequence_node et update_template ne peuvent pas modifier la copie de variante, et un changement destiné à toute l'étape doit être répété pour chaque variante. Si update_ab_test_variant n'est pas dans la liste des outils MCP, activez-le sur le connecteur Sequenzy plutôt que d'écrire via un autre outil d'e-mail. Le flux de travail complet nécessite ab_tests:read, ab_tests:write et sequences:write, tous inclus dans Accès agent plus sûr. Avec uniquement sequences:read, get_sequence conserve l'étape A/B et la copie de contrôle visibles mais masque les champs d'enregistrement de test et renvoie une liste de variantes vide. Une winnerCriteria de séquence explicite remplace la valeur par défaut testType, afin que les variantes de contenu puissent toujours être jugées par les ouvertures. Passez confirmLiveChange: true lors de la conversion d'un nœud dans une séquence active. Avec le contrôle A, un test A/B prend en charge au plus cinq variantes. Les variantes de séquence reçoivent des modèles d'e-mail indépendants et peuvent être modifiées après création ; une fois la séquence active ou le test ayant de l'activité, update_ab_test_variant nécessite confirmLiveChange: true. Les variantes ne peuvent être ajoutées ou supprimées que pendant que le test est un brouillon, et les modifications de séquence en direct nécessitent également une confirmation car elles changent immédiatement la rotation.

Campagnes

OutilDescription
list_campaignsLister les campagnes paginées par statut ou étiquette, y compris les retours des réviseurs et les champs de cadence d'envoi pour les audits STO à l'échelle du compte.
get_campaignObtenir les détails, statistiques, retours des réviseurs et cadence d'envoi enregistrée pour une campagne.
get_campaign_audienceRésoudre le ciblage enregistré, les références manquantes, un résumé en langage clair et le nombre de destinataires en direct.
list_campaign_goalsLister les objectifs de conversion persistés pour une campagne e-mail (SMS non pris en charge).
create_campaign_goalAjouter un objectif de conversion de campagne e-mail basé sur un événement, un attribut d'abonné ou un tag appliqué.
update_campaign_goalMettre à jour un objectif de conversion de campagne e-mail persisté.
delete_campaign_goalSupprimer un objectif de conversion de campagne e-mail persisté.
list_email_sendsRechercher l'historique d'envoi récent avec les identifiants de ressources et les URL, éventuellement limité à une étape de séquence. Les envois de test en direct réussis sont omis.
get_email_sendInspecter un envoi en file d'attente, de test, envoyé, supprimé ou échoué par identifiant d'envoi e-mail durable.
list_recipient_suppressionsLister les destinataires supprimés associés, y compris les adresses globales invalides protégées et les plaintes.
get_recipient_suppressionVérifier le rebond local, la plainte, l'hygiène e-mail et la suppression SES régionale pour un destinataire exact.
remove_recipient_suppressionSupprimer une escalade de rebond logiciel d'espace de travail tout en préservant les protections globales, de rebond dur et de plainte.
create_campaignCréer une campagne avec contenu, données et éventuelles surcharges d'identité De/Répondre à.
update_campaignMettre à jour une campagne brouillon, y compris contenu, données, identités, audience et configuration STO persistée.
schedule_campaignPlanifier ou replanifier une campagne, en surchargeant éventuellement STO et sa fenêtre d'envoi de 1 à 24 heures.
send_test_emailEnvoyer un e-mail de test à une adresse.
render_emailRendre le HTML exact compatible e-mail et signaler les tags non résolus, y compris les fautes de frappe masquées par les valeurs par défaut.
cancel_campaignAnnuler une campagne planifiée ou en cours d'envoi.
pause_campaignMettre en pause une campagne en cours d'envoi.
resume_campaignReprendre une campagne en pause, en étalant éventuellement l'envoi dans le temps.
delete_campaignSupprimer une campagne.
duplicate_campaignDupliquer une campagne en un nouveau brouillon.
resend_campaign_to_non_openersCréer un brouillon de renvoi pour les membres de l'audience d'origine qui n'ont pas ouvert une campagne envoyée.

Les campagnes créées par invite sont générées et persistées en une seule requête API et restent des brouillons. Utilisez templateId, blocks ou html uniquement lors de la copie ou de la préservation de contenu existant plutôt que de demander à l'agent de le rédiger. Omettez tous les champs de contenu pour créer un brouillon vide à modifier ultérieurement.

Les objectifs de campagne créditent les destinataires qui ont réellement reçu cette campagne dans la fenêtre d'attribution configurée ; une ouverture ou un clic reste le signal de dernier contact plus fort lorsqu'il existe. Les objectifs d'événement nécessitent triggerEventName, les objectifs d'attribut d'abonné nécessitent attributePath et les objectifs de tag appliqué nécessitent triggerTagName. La fenêtre d'attribution de campagne est par défaut de 168 heures lorsqu'elle est omise.

Pour livrer à la même heure d'horloge murale dans le fuseau horaire de chaque destinataire, appelez schedule_campaign avec sendInRecipientTimezone: true et un IANA scheduledTimezone qui identifie l'horloge murale représentée par scheduledAt. Les contacts sans fuseau horaire stocké reçoivent la campagne à l'instant scheduledAt. Ce mode ne peut pas être combiné avec une livraison récurrente ou étalée.

L'optimisation du temps d'envoi est configurée par campagne, pas au niveau de l'entreprise ou de la séquence. Auditez-la sur les campagnes avec list_campaigns, ou inspectez une campagne avec get_campaign. Définissez sendTimeOptimization et sendTimeWindowHours (1-24, défaut 12) sur un brouillon avec update_campaign, ou surchargez-les lors de la planification avec schedule_campaign. spreadOverHours a priorité et désactive STO, tout comme la livraison dans le fuseau horaire du destinataire. Les séquences utilisent plutôt sendingWindow, une porte partagée d'heures/jours autorisés plutôt que des heures d'envoi prédites par destinataire.

Pour les identités au niveau campagne et séquence, fromEmail plus fromName sélectionne l'identité d'expéditeur avec ce nom d'affichage sur la boîte aux lettres, la créant si nécessaire sans renommer les autres identités de même adresse. Une adresse Répondre à a plutôt un nom enregistré à l'échelle de l'entreprise : lorsque replyToName diffère de ce nom, le nom enregistré est conservé et la réponse réussie inclut des conseils de récupération dans warnings.

send_email et send_test_email renvoient un emailSendId durable. Utilisez list_email_sends pour découvrir les identifiants récents par sujet/titre, destinataire, statut d'envoi, type, type de rebond ou source ; passez un identifiant à get_email_send pour inspecter status, errorMessage, le corps stocké et les événements d'envoi. Les lignes de liste d'envoi sont conservées pendant 14 jours. Les envois de test en direct réussis et autres envois de test sont omis afin de ne pas enterrer les livraisons réelles. Les réponses à ces envois de test apparaissent dans list_conversations uniquement lorsque la capture de réponses entrantes est activée. Les travaux de file d'attente sont des détails d'exécution internes et ne sont pas exposés via le contrat MCP. Chaque envoi renvoyé a un url de tableau de bord direct. Utilisez list_recipient_suppressions pour distinguer les lignes de destinataire invalide global protégé, de rebond dur d'entreprise protégé et de plainte des escalades de rebond logiciel d'entreprise supprimables, et utilisez get_recipient_suppression pour le statut régional exact. remove_recipient_suppression supprime uniquement l'escalade d'entreprise ; les suppressions globales et au niveau du compte Amazon SES, les plaintes, les désabonnements et les protections d'hygiène e-mail restent intacts. Un résultat d'hygiène local utilise la raison bounced avec email_hygiene comme source sans modifier le statut de consentement de l'abonné.

Les agents doivent passer un idempotencyKey appartenant à l'appelant à send_email avant la première tentative et le réutiliser pour chaque nouvelle tentative de ce même e-mail logique. Sequenzy renvoie le emailSendId d'origine pendant 14 jours au lieu de créer un autre envoi. La réutilisation de la clé avec des arguments d'envoi différents est rejetée, donc ne générez pas une nouvelle clé à l'intérieur d'une boucle de nouvelle tentative.

Les blocs d'e-mail peuvent utiliser des règles d'affichage conditionnelles ou des branches conditional-group. Les conditions prennent en charge les variables au moment du rendu et les attributs d'abonné plus les données d'abonné en direct telles que l'appartenance à un segment/une liste, les tags, les événements, l'engagement, le statut d'abonnement/SMS et les achats Stripe ou commerciaux. Les conditions de données en direct utilisent les mêmes valeurs de champ et opérateurs que les filtres de segment ; les destinataires sans correspondance d'abonné stocké utilisent la branche OTHERWISE.

Les formes de blocs de base sont { "type": "heading", "content": "Title", "level": 1 }, { "type": "text", "content": "<p>Copy</p>" }, { "type": "button", "text": "Book a call", "url": "https://example.com", "variant": "primary" } , and { "type": "image", "src": "https://...", "alt": "Description", "width": 100, "widthType": "percent" }. Buttons also accept content comme alias pour text et par défaut la variante primary. Image widthType accepte percent ou px.

Les blocs vidéo YouTube acceptent une couverture personnalisée facultative : { "type": "video", "videoUrl": "https://www.youtube.com/watch?v=...", "thumbnailUrl": "https://cdn.example.com/cover.jpg", "alt": "Watch the product tour" }. Le remplacement des blocs sans thumbnailUrl restaure la vignette propre de YouTube tout en gardant videoUrl comme destination de clic.

Le html brut est stocké comme un bloc opaque. Il préserve le balisage fourni mais n'ajoute pas de logo d'entreprise, de sections de marque natives ou de conception de blocs pilotée par thème. Utilisez prompt pour un nouveau brouillon de marque ou blocks pour une conception native d'éditeur ; les résultats de création MCP incluent un avertissement lorsque du HTML brut est utilisé.

Utilisez update_company avec fromEmail et/ou replyTo pour définir les valeurs par défaut à l'échelle du compte. fromEmail doit utiliser un domaine d'envoi configuré et vérifié ; replyTo peut être n'importe quelle boîte aux lettres valide. create_campaign, update_campaign, create_sequence et update_sequence acceptent les mêmes champs d'adresse directe pour les surcharges spécifiques aux ressources et créent le profil sous-jacent si nécessaire. Envoyez fromName ou replyToName seul pour renommer le profil par défaut existant sans changer son adresse. Lorsqu'une adresse a plusieurs noms d'affichage, utilisez senderProfileId ou replyProfileId depuis list_sender_profiles pour sélectionner le profil exact à définir par défaut et renommer.

update_company gère également le thème d'e-mail par défaut de l'entreprise via emailTheme (presetId, colors, typography, layout). Les mises à jour de thème sont partielles - les champs omis conservent leur valeur actuelle (ou la valeur par défaut du préréglage) et les valeurs numériques sont limitées aux plages prises en charge. Passez emailTheme: null pour réinitialiser l'entreprise au thème par défaut de la plateforme. Les paramètres de mise en page peuvent contrôler le baseRadius partagé et un buttonRadius séparé. Dans colors, background peint la toile externe, content peint la carte de contenu interne, et surface peint les cartes imbriquées ou les tuiles teintées. Omettre content préserve sa valeur actuelle ; lorsqu'aucune couleur de contenu n'est stockée, la carte suit background.

Le suivi des réponses est disponible sur les mêmes outils d'entreprise. Utilisez replyTrackingEnabled, replyTrackingDomainMode (sequenzy ou custom) et forwardReplies avec update_company. Les lectures d'entreprise renvoient également la valeur actuelle en lecture seule de replyRetentionDays.

Les sondages et enquêtes NPS sont des blocs d'e-mail natifs, donc ils fonctionnent partout où un outil d'e-mail accepte blocks, y compris les campagnes, modèles, variantes A/B, modèles transactionnels et étapes d'e-mail de séquence. Les envois de sondage transactionnels doivent se résoudre à exactement un destinataire effectif après le filtrage de suppression et la déduplication des destinataires, et ce destinataire doit déjà exister en tant qu'abonné ; sinon, Sequenzy rejette l'envoi car le lien de réponse ne peut pas être attribué en toute sécurité. Utilisez un sondage à bouton de réponse :

{
  "type": "poll",
  "variant": "options",
  "question": "What did you think of this email?",
  "options": [
    { "label": "Loved it", "value": "loved" },
    { "label": "Not for me", "value": "not_for_me" }
  ],
  "attributeKey": "email_feedback"
}

Pour NPS, utilisez "variant": "nps", un tableau options vide, et un attribut tel que nps_score. L'échelle est toujours de 0 à 10 ; les npsLowLabel et npsHighLabel facultatifs personnalisent ses légendes. Chaque réponse met à jour l'attribut de l'abonné et déclenche poll.answered pour les automatisations et les webhooks sortants.

Définissez "allowMultiple": true sur un sondage à options textuelles uniquement pour ouvrir une page hébergée où les destinataires peuvent cocher plusieurs réponses et enregistrer toute la sélection en une fois. L'attribut de l'abonné stocke la liste des valeurs sélectionnées, donc les segments d'attributs doivent utiliser contains. Les sondages à sélection multiple ne peuvent pas utiliser d'images d'options ou de configurations dont les liens signés encodés dépassent la limite de taille sécurisée pour la livraison. Les résumés de sondages de campagne définissent allowMultiple: true, utilisent le nombre de répondants pour totalResponses, et peuvent rapporter des pourcentages de réponses qui dépassent 100 %.

Les blocs de sondage prennent également en charge un style spécifique à la marque. accentColor recolore chaque apparence, y compris "brutal" ; optionRadius définit les coins des boutons de réponse en pixels (0 est carré), indépendamment du styles.borderRadius du conteneur ; et questionColor recolore uniquement la question. fontFamily s'applique au sondage. Utilisez les champs optionFontSize, optionFontWeight, optionLetterSpacing et optionTextTransform pour les réponses, ou les champs question* correspondants pour la question. Les tailles et l'espacement sont en pixels, les graisses vont de 100 à 900, et les transformations de texte sont "none" ou "uppercase".

Formulaires enregistrés

OutilDescription
list_formsListe les formulaires enregistrés avec leurs paramètres d'audience gérés par le serveur, leurs blocs de contenu et leurs URL d'action publiques.
create_formCrée et publie un formulaire enregistré avec des champs standard email/nom, des paramètres d'audience, un thème et un comportement de succès.
update_formMet à jour un formulaire enregistré, y compris son tableau complet de blocs ordonnés et ses champs personnalisés typés.
get_form_embedRenvoie l'URL d'action publique, le JavaScript hébergé, le formulaire natif minimal et un exemple de fetch pour un formulaire enregistré.

Pour Astro, Hugo, Jekyll, Cloudflare Pages, Netlify, GitHub Pages ou tout autre site statique, appelez list_forms, utilisez create_form si un formulaire adapté n'existe pas, puis appelez get_form_embed. Le formId opaque renvoyé est la capacité publique : les listes, les tags, le comportement de duplication et la gestion du succès restent côté serveur, donc le code navigateur déployé ne contient jamais de clé API Sequenzy. Le balisage natif et autonome généré inclut « Powered by Sequenzy » pour les espaces de travail gratuits ; les espaces de travail payants reçoivent un balisage sans marque. L'API résout cette autorisation côté serveur, donc les appelants doivent utiliser l'extrait renvoyé tel quel. Lors de la mise à jour d'un formulaire, les champs omis restent inchangés et les champs de thème fusionnent dans le thème actuel. Passez un tableau tagIds vide pour effacer les tags ou un redirectUrl vide pour restaurer le comportement du message de confirmation. Le champ blocks est un remplacement complet, donc lisez d'abord le contenu actuel avec list_forms et conservez exactement un champ email requis et un bouton d'envoi. Ajoutez des entrées personnalisées comme blocs form-field avec un fieldType pris en charge ; les champs select, radio et case à cocher nécessitent des options, tandis que les valeurs par défaut masquées sont appliquées côté serveur.

Popups enregistrés

OutilDescription
list_popupsListe les popups enregistrés avec leur statut et leurs statistiques d'engagement, en incluant éventuellement le contenu complet.
get_popupObtient les blocs, le déclencheur, le ciblage, la planification, la fréquence, le thème et le code d'intégration publié d'un popup.
create_popupCrée un popup à partir d'un modèle de départ, publié par défaut, et renvoie son script de déploiement.
update_popupMet à jour partiellement le texte, l'audience, le comportement, le thème, les blocs ou le statut de publication d'un popup.
get_popup_embedRenvoie des extraits HTML sans secret, React/Next.js, WordPress et Shopify.
duplicate_popupCopie un popup dans un brouillon avec des compteurs d'engagement indépendants.
delete_popupSupprime définitivement un popup et ses compteurs d'engagement.

Le déploiement d'un popup utilise une seule balise de script publique ; les clés API, les paramètres d'audience, le déclenchement, le ciblage, la planification et les règles de fréquence restent côté serveur. Les popups capturent dans chaque liste par défaut, sauf si listIds est fourni. Lors de la mise à jour des blocs, lisez d'abord le popup et envoyez le tableau de remplacement complet, en conservant exactement un champ email requis et un bouton d'envoi. Définir status sur draft arrête un popup sans invalider son code d'intégration existant.

Pages de destination

OutilDescription
list_landing_pagesListe les pages de destination avec leur statut, leurs métriques, leur contenu et leurs URL.
get_landing_pageObtient les détails d'une page de destination, le contenu du constructeur, les métriques et les URL publiées.
render_landing_pageRenvoie un aperçu visiteur signé de 24 heures sans publier, compter les vues ou collecter des inscriptions.
create_landing_pageCrée une page de destination en brouillon à partir du contenu de modèle par défaut ou de JSON.
update_landing_pageModifie le nom, le slug ou le contenu complet compatible éditeur d'une page de destination.
publish_landing_pagePublie une page de destination, en enregistrant éventuellement les modifications d'abord.
unpublish_landing_pageRamène une page de destination au statut de brouillon, en enregistrant éventuellement les modifications d'abord.
duplicate_landing_pageDuplique une page de destination dans un nouveau brouillon avec un slug unique.
delete_landing_pageSupprime une page de destination non publiée.
connect_landing_page_domainConnecte un domaine personnalisé de page de destination et renvoie les détails de configuration DNS.
update_landing_page_domain_settingsRemplace ou vérifie les paramètres de domaine personnalisé d'une page de destination.

Le contenu des pages de destination utilise le schéma JSON compatible éditeur de Sequenzy avec version, template, seo, theme et blocks. Les paramètres SEO incluent faviconUrl et hideFromSearchEngines ; les pages masquées publient une directive noindex. Utilisez render_landing_page pour examiner la page actuelle côté visiteur avant de publier. Son previewUrl signé expire après 24 heures, n'est pas répertorié, n'est pas indexé et n'incrémente pas les vues de page ; les formulaires restent visibles mais ne collectent pas de contacts. Les blocs se rendent dans l'ordre des emplacements : top, hero, form, body, puis footer ; utilisez top pour une annonce ou une bannière pleine largeur au-dessus du hero. Les URL des boutons et des CTA de tarification acceptent des destinations HTTPS externes ou des ancres en page telles que #form, #section-<sectionId>, #block-<blockId> et #top. Définissez theme.sectionAnimation sur none, fade, slide-up ou zoom-in, avec theme.sectionAnimationSpeed défini sur slow, normal ou fast, pour contrôler les révélations au défilement publiées. Les sous-domaines personnalisés de pages de destination nécessitent un enregistrement CNAME pointant vers pages.sequenzydns.com ; les domaines racine utilisent un enregistrement A pointant vers 76.76.21.21, et leur hôte www redirige vers la racine lorsque son CNAME pointe vers pages.sequenzydns.com. Appelez update_landing_page_domain_settings avec verify: true après la propagation des modifications DNS.

Séquences

OutilDescription
list_sequencesListe les séquences avec le statut du tableau de bord, la recherche, les filtres de libellé, de limite et de décalage.
get_sequenceObtient les détails d'une séquence, les identifiants des variantes A/B et les compteurs de blocs avec ab_tests:read, les nœuds, les arêtes, la copie liée et la fenêtre d'envoi de la séquence.
list_sequence_enrollmentsListe les inscriptions de contacts avec pagination et attribution d'entrée précise basée sur les listes, étiquettes, événements et temps. Les tests de séquence en direct ne créent pas d'inscriptions.
send_sequence_test_emailEnvoie une étape action_email enregistrée à 1 à 10 réviseurs ; les étapes A/B sont inspectées par variante.
create_sequenceCrée un brouillon vide du tableau de bord ou une séquence générée par IA ou à étapes explicites.
update_sequenceMet à jour l'identité, les paramètres, l'inscription, les étapes existantes, la logique de branchement ou insère des étapes linéaires.
update_sequence_nodeCorrectif typé d'un nœud de séquence existant.
update_sequence_nodesCorrectif atomique de plusieurs nœuds de séquence existants.
insert_sequence_stepInsère toute étape typée du tableau de bord, y compris la génération IA, les webhooks sortants, les attentes et les branches câblées.
edit_sequence_graphDéplace, reconnecte, supprime ou duplique des nœuds du graphe ; signale les destinataires déplacés ou terminés.
simulate_sequenceSimulation des correspondances actuelles, de l'état de préparation à l'activation et du chemin de branchement optionnel d'un contact sans inscription ni envoi.
enable_sequenceActive une séquence.
disable_sequenceGèle une séquence, bloquant les nouvelles inscriptions et maintenant les destinataires actuels.
duplicate_sequenceCrée une copie brouillon indépendante du graphe, des e-mails et des tests A/B de la séquence.
archive_sequenceDéplace une séquence dans l'archive du tableau de bord et arrête les nouvelles inscriptions.
unarchive_sequenceRestaure une séquence archivée en tant que brouillon désactivé.
list_sequence_goalsListe les objectifs de conversion persistés (événement, attribut d'abonné, étiquette appliquée) pour une séquence.
create_sequence_goalAjoute un objectif de conversion (événement, attribut d'abonné ou étiquette appliquée).
update_sequence_goalMet à jour un objectif de conversion de séquence persisté.
delete_sequence_goalSupprime un objectif de conversion de séquence persisté.
get_sequence_inbound_webhookLit l'URL entrante, l'état de configuration, l'exemple et le mappage sur MCP standard ; la route OpenAI supprime l'URL contenant les identifiants.
configure_sequence_inbound_webhookConfigure le point de terminaison, le mappage des champs et l'exemple ; la route OpenAI supprime l'URL contenant les identifiants de son résultat.
rotate_sequence_inbound_webhook_secretFait pivoter le secret d'un point de terminaison de séquence entrant et renvoie son URL de remplacement sur MCP standard ; omis de la route examinée par OpenAI.
pause_sequence_enrollmentsArrête les nouvelles inscriptions pour une séquence active tandis que les destinataires actuels continuent.
resume_sequence_enrollmentsRouvre les nouvelles inscriptions pour une séquence active sans modifier les destinataires actuels.
enroll_subscribers_in_sequenceInscrit jusqu'à 500 abonnés par e-mail, identifiant d'abonné ou les deux, avec idempotence sûre en cas de nouvelle tentative.
cancel_sequence_enrollmentsArrête les inscriptions actives ou en attente par valeurs de champs d'abonné ou d'événement d'entrée.
realign_sequence_enrollmentsPrévisualise ou met en file d'attente le déplacement des attentes en direct plus tôt vers l'ouverture de leur fenêtre d'envoi.
get_sequence_enrollment_realignmentInterroge un travail de réalignement appliqué et lit son résultat terminé ou son curseur de continuation.
delete_sequenceSupprime une séquence.

La création de séquences prend en charge :

  • Création par nom uniquement pour un brouillon vide et désactivé de déclencheur à complétion correspondant au tableau de bord.
  • Métadonnées du tableau de bord et paramètres de livraison : description, labels, userCancellable, BCC de séquence et identité De/Répondre à.
  • trigger: "contact_added" avec listId, plusieurs listIds ou listScope : any_contact (par défaut) inscrit chaque contact ajouté, y compris les contacts qui ne rejoignent aucune liste, tandis que any_list attend une adhésion réelle à une liste.
  • trigger: "tag_added" avec tagName ou plusieurs tagNames ; toute étiquette configurée inscrit le contact.
  • trigger: "segment_entered" plus segmentId pour les automatisations d'entrée par segment enregistré.
  • trigger: "event_received" plus {{event.*}} fusionnent les balises dans les objets ou le contenu du corps.
  • trigger: "inbound_webhook" plus les métadonnées d'intégration pour les nœuds d'entrée webhook compatibles avec le tableau de bord.
  • trigger: "inactivity" plus eventName, inactiveDays et inactivityBaseline facultatif (sequence_created_at ou subscriber_created_at).
  • goal pour le contenu d'e-mail généré par IA.
  • emailStyle: "visual" ou "plain" pour choisir la présentation des e-mails générés par IA basés sur des objectifs ; lorsqu'omis, la préférence enregistrée de l'entreprise est utilisée.
  • steps explicite avec Sequenzy blocks.
  • steps explicite avec HTML, que Sequenzy convertit en blocs modifiables.
  • Étapes explicites de mise à jour d'abonné qui copient les propriétés de l'événement déclencheur dans les champs de profil ou les attributs personnalisés typés.
  • Attentes fixes via delay / delayMs, attentes dynamiques par champ de date via waitUntil ou portes de calendrier via waitUntilWeekday. Une porte de jour de semaine telle que { "day": "sunday", "startTime": "09:00", "endTime": "12:00", "timezone": "America/Los_Angeles" } maintient le flux jusqu'à la prochaine fenêtre correspondante. Placez-la immédiatement avant un e-mail pour garder cet envoi dans la fenêtre ; toute étape intermédiaire peut déplacer la livraison hors de celle-ci. La récupération de file d'attente revérifie la fenêtre avant de libérer un contact retardé.
  • Étapes d'action de remise dynamique Stripe ou Shopify. Une étape create_discount crée un code fournisseur frais lorsque chaque abonné l'atteint ; les e-mails ultérieurs peuvent utiliser des balises de fusion comme {{discount.code}}, {{discount.percentOff}} et {{discount.expiresAt}}.
  • enrollmentMode: "matching_field" et un enrollmentFieldPath scalaire pour les automatisations d'événements spécifiques aux produits, variantes, commandes ou abonnements. La traversée de tableaux avec [] appartient à propertyFilters, pas à la clé d'inscription.

Pour un déclencheur d'événement personnalisé, le résultat réussi de create_sequence inclut eventTrackingCode et un objet structuré eventTracking. L'objet contient le point de terminaison de l'événement, le contrat d'identité et de charge utile, tout chemin de propriété requis par l'inscription matching_field, le propertyFilters de déclencheur normalisé, un exemple de charge utile, examplePayloadMatchesFilters, l'URL de documentation de l'API d'événement directe et des arguments prêts à l'emploi pour get_integration_guide. Si le statut de correspondance est faux, adaptez l'exemple en utilisant examplePayloadNote et le contrat de charge utile. Ajoutez ce flux d'événements et vérifiez ses propriétés requises avant d'activer la séquence brouillon.

list_sequence_enrollments renvoie enteredVia pour chaque ligne. Les sources de liste et de segment conservent leur identifiant stable dans value et résolvent un name d'affichage ; les sources d'étiquette et d'événement conservent leurs noms dans value. Les déclencheurs basés sur le temps signalent inactivity ou frequency plutôt que d'être mal identifiés comme des inscriptions ordinaires d'événements reçus. Les tests de séquence en direct ne créent pas d'inscriptions ; ils envoient des e-mails de test isolés et enregistrent l'activité sur l'exécution du test de séquence à la place.

Pour un lot d'inscription manuelle confirmé, générez idempotencyKey une fois et réutilisez cette clé exacte uniquement avec des cibles ordonnées identiques et targetNodeId. Les reçus durent 14 jours. Une nouvelle tentative renvoie les valeurs originales de enrolled, skipped, notFound, targetNodeId et scheduledFor avec idempotentReplay: true ; elle ne crée pas de jetons ni ne remet le lot en file d'attente.

Exemple d'étape de remise dynamique Shopify :

{
  "type": "create_discount",
  "discount": {
    "provider": "shopify",
    "discountType": "percent",
    "percentOff": 20,
    "duration": "once",
    "appliesToAllPlans": true,
    "maxRedemptions": 1,
    "codePrefix": "WINBACK"
  }
}

Exemple d'étape de mise à jour d'abonné :

{
  "type": "update_subscriber",
  "nodeType": "action_update_attributes",
  "config": {
    "firstName": "{{event.firstName}}",
    "customAttributeUpdates": [
      { "name": "plan", "value": "{{event.plan}}", "valueType": "text" },
      { "name": "mrr", "value": "{{event.amount}}", "valueType": "number" },
      { "name": "active", "value": "{{event.active}}", "valueType": "boolean" }
    ]
  }
}

Les valeurs numériques et booléennes doivent être des littéraux ou une seule balise de fusion autonome. Utilisez update_sequence.subscriberUpdateSteps avec un identifiant de nœud action_update_attributes de get_sequence pour remplacer la configuration d'une étape existante. Les mises à jour de séquence prennent en charge insertSteps pour ajouter de nouvelles étapes linéaires après un nodeId renvoyé par get_sequence. Omettez afterNodeId uniquement lors de l'ajout à une séquence avec exactement une fin linéaire. insertSteps prend en charge les étapes ajoutables qui ne nécessitent pas d'enregistrements associés, telles que les e-mails, les délais, les actions de tag/liste, les mises à jour d'attributs, les remises, les conditions, les étapes d'attente d'événement, les webhooks sortants et les étapes IA. Une étape action_ai nécessite un tag de fusion prompt, un resultKey unique, et un ou plusieurs outputFields ; les étapes ultérieures lisent le texte généré ou de secours avec {{ai.KEY.field}}. Les limites combinées des champs de sortie doivent tenir dans le budget de réponse de 2000 jetons de l'étape. Utilisez includeTags, includeEventProperties ou includeAttributes pour intégrer un contexte de contact spécifique dans la génération, et onError (continue, exit ou fail) pour choisir le comportement en cas d'échec. Utilisez branch pour les branches conditionnelles multi-chemins ; fournissez soit branch soit insertSteps, pas les deux. Les conditions de branche prennent en charge les vérifications de présence et d'absence de tags avec has_tag et does_not_have_tag, ainsi que les listes, les segments enregistrés, les événements, les liens cliqués et les comparaisons de champs. Chaque chemin de branche peut fournir un nouveau steps, un targetNodeId existant, ou les deux ; le repli utilise elseSteps et/ou elseTargetNodeId. Une cible peut être le nœud de complétion renvoyé par get_sequence, de sorte qu'une seule requête atomique peut router les réponses vers la complétion et le Else vers un suivi existant. Les tableaux emails et steps modifient les étapes action_email ordinaires par nodeId, emailId ou ordre de tableau. get_sequence.sequence.emails inclut également les entrées action_ab_test ; avec ab_tests:read, chaque entrée abTest.variants[] contient l'ID de variante, l'objet, le texte d'aperçu et le nombre de blocs. Appelez get_ab_test pour obtenir les corps complets des variantes avant d'auditer ou de réécrire le contenu. Une mise à jour positionnelle tombant sur une variante est rejetée, et son contenu doit être modifié par variante avec update_ab_test_variant ; ne réessayez pas via update_template ou update_sequence_node. Utilisez insertSteps pour créer de nouvelles étapes et incluez un delay, delayMs, waitUntil ou waitUntilWeekday au niveau de l'étape lorsque l'e-mail inséré nécessite un minuteur. waitUntil accepte un champ de date de l'événement déclencheur plus un offset facultatif, direction (before ou after) et missingAction (continue ou exit). waitUntilWeekday accepte day ou days, startTime, un endTime facultatif (par défaut 24:00) et un timezone IANA ; les contacts déjà dans la fenêtre continuent immédiatement. Pour les séquences actives, passez confirmStructuralChange: true avec insertSteps ou branch uniquement après avoir confirmé l'impact sur le flux en direct.

insert_sequence_step expose directement chaque étape de tableau de bord sans enregistrement associé : e-mail, SMS, délai, remise, mise à jour d'abonné, action de tag/liste, webhook sortant, génération IA, condition, attente et branche. Définissez type: "ai" avec prompt, resultKey et outputFields pour générer un texte par contact pour les tags de fusion {{ai.KEY.field}} ultérieurs. Les webhooks sortants acceptent url, method (POST ou GET) et un headers à valeur de chaîne. Les étapes d'e-mail prennent en charge le mode transactionnel, l'identité par étape et les paramètres de livraison CC/Cci. Pour une porte d'attente, définissez type: "logic_wait_for_event" avec eventName, un timeoutDays facultatif (1-365), et timeoutAction (continue ou exit). Pour une branche, définissez type: "logic_branch", fournissez des branches typés et connectez leurs cibles :

{
  "sequenceId": "seq_123",
  "type": "logic_branch",
  "afterNodeId": "node_email_1",
  "branches": [
    {
      "id": "replied",
      "conditionType": "event_received",
      "eventName": "email.replied",
      "activityScope": "this_sequence",
      "targetNodeId": "node_complete"
    }
  ],
  "elseTargetNodeId": "node_email_2"
}

Chaque e-mail lié renvoyé par get_sequence inclut son emailPreset effectif (branded ou minimal), correspondant à Style > Format dans le tableau de bord. Définissez emailPreset sur un élément emails/steps, ou dans le changes d'un nœud action_email, pour modifier uniquement cet e-mail lié sans changer le thème de l'entreprise. Cela applique la même transformation de format que le tableau de bord aux blocs natifs Sequenzy, y compris les e-mails contenant des blocs HTML personnalisés pris en charge. Les e-mails stockés entièrement comme un seul bloc HTML brut autonome renvoient null pour emailPreset et ne prennent pas en charge les changements de format. emailPreset ne peut pas être combiné avec html ou htmlContent car ces champs remplacent l'e-mail entier par du HTML brut autonome.

Pour la position de séquence, préférez structuralStepNumber sur les e-mails liés et le niveau supérieur des nœuds d'e-mail. Elle est dérivée du graphe actuel et correspond au badge d'étape affiché dans le tableau de bord. Les e-mails de branches parallèles partagent intentionnellement la même profondeur structurelle, et une fusion de branches inégale continue depuis le chemin entrant le plus long. L'ancien champ stepNumber dans les e-mails liés et les configurations de nœuds reste un ordinal stocké pour la rétrocompatibilité et peut être obsolète après des modifications du graphe.

Chaque e-mail lié renvoie également son remplacement emailTheme stocké, ou null lorsqu'il suit le thème de l'entreprise. Définissez emailTheme sur un élément emails/steps ou dans le changes d'un nœud action_email pour restyler uniquement cette étape. Les mises à jour de thème sont des correctifs partiels, donc changes: { "emailTheme": { "colors": { "background": "#f3f4f6", "content": "#ffffff" } } } donne à cet e-mail un canevas extérieur gris et une carte de contenu blanche tout en conservant ses autres couleurs, sa typographie et sa mise en page. Omettre l'une ou l'autre couleur préserve sa valeur actuelle. Passez emailTheme: null pour supprimer le remplacement et suivre à nouveau le thème de l'entreprise. Utilisez update_company uniquement lorsque la valeur par défaut à l'échelle du compte doit changer.

Utilisez update_sequence_node pour une modification ciblée sur place, ou update_sequence_nodes lorsque plusieurs correctifs de nœuds doivent être validés atomiquement. Appelez get_sequence d'abord : chaque élément de sequence.nodes inclut le id du nœud, nodeType, le config actuel, updatedAt et updateHints avec les champs modifiables et gérés plus le jeton de concurrence exact à renvoyer. Passez ce jeton comme expectedUpdatedAt pour rejeter les écritures obsolètes. Les outils prennent en charge chaque type de nœud stocké, y compris les délais, le contenu des e-mails/SMS, les actions, les conditions, les webhooks, la configuration des branches sans changements de topologie et les déclencheurs. Pour changer un délai de 5 minutes en 7 jours, envoyez changes: { "delay": { "days": 7 } } pour son nœud logic_delay. Pour rendre plusieurs notes de style fondateur Minimal, corrigez leurs nœuds action_email avec changes: { "emailPreset": "minimal" }. La conversion de type de nœud et les changements de bords/chemins appartiennent à edit_sequence_graph. Les séquences actives nécessitent confirmLiveChange: true après que l'utilisateur confirme l'impact ; les destinataires déjà en attente conservent leur horodatage planifié existant.

Les étapes d'e-mail existantes et nouvellement insérées peuvent définir leur propre identité Expéditeur avec senderProfileId ou fromEmail plus un fromName facultatif, et leur identité Répondre à avec replyProfileId ou replyTo plus un replyToName facultatif. Un fromName seul modifie uniquement le nom d'expéditeur visible de cette étape. Un replyToName au niveau de l'étape remplace de la même manière le nom Répondre à visible pour cette étape sans renommer le profil de réponse à l'échelle de l'entreprise. Les nouvelles étapes d'e-mail sans champs d'identité explicites héritent de l'identité effective de l'e-mail de séquence le plus proche. Après une fusion de branches, seuls les champs d'identité partagés par chaque chemin entrant sont hérités ; les champs conflictuels utilisent les valeurs par défaut de la séquence ou de l'entreprise.

Utilisez edit_sequence_graph avec le graphRevision le plus récent de get_sequence pour restructurer une séquence existante de manière atomique. Il peut déplacer un nœud avant ou après un autre nœud, réutiliser le tableau sequence.edges normalisé pour une reconnexion explicite ou un réordonnancement multi-nœuds, supprimer un nœud ou copier en profondeur un nœud. La duplication de test A/B crée des enregistrements de test, de variante, d'e-mail et de localisation indépendants avec des statistiques réinitialisées. Déplacer un nœud avant le nœud partagé sous une branche reconnecte chaque chemin de branche convergent via ce nœud. La suppression d'un nœud déplace immédiatement les destinataires en attente vers son successeur survivant unique, ou les complète lorsqu'aucun successeur ne reste ; inspectez sequence.migratedRecipientCount et sequence.completedRecipientCount dans le résultat. La suppression est refusée lorsque les destinataires en attente auraient plusieurs continuations survivantes. Les révisions obsolètes, les voies de branche invalides, les cycles et les nœuds inaccessibles sont également rejetés. Les séquences actives nécessitent confirmStructuralChange: true.

Exécutez cancel_sequence_enrollments avec dryRun: true avant d'appliquer une annulation en masse.

Exécutez realign_sequence_enrollments après avoir modifié la fenêtre d'envoi d'une séquence en direct lorsque les attentes existantes liées aux e-mails doivent être déplacées plus tôt vers la nouvelle ouverture. Il est par défaut dryRun: true. Passer dryRun: false met en file d'attente un travail en arrière-plan et renvoie jobId ; interrogez-le avec get_sequence_enrollment_realignment. Lorsqu'un résultat terminé a hasMore: true, mettez en file d'attente la prochaine application bornée avec son nextCursor. Le réalignement appliqué modifie les heures de livraison en direct et ne doit être utilisé qu'après que l'utilisateur confirme l'aperçu.

Blocs d'e-mail

OutilDescription
get_email_block_schemaListez chaque type de bloc d'e-mail ou inspectez les champs requis, les valeurs d'énumération, les formes d'élément et un exemple d'un type.

Appelez get_email_block_schema avant de rédiger manuellement un type de bloc que vous n'avez pas utilisé auparavant. Omettez blockType pour lister chaque type, passez un type tel que list ou steps pour sa référence complète, ou passez creatableOnly: true pour masquer les types gérés par l'éditeur. Les blocs group persistés sont du contenu structurel de l'éditeur : ils enveloppent récursivement les blocs enfants dans des mises en page Stack, Row, Grid ou Overlay à image unique, mais la génération IA et creatableOnly les omettent intentionnellement. Demandez blockType: "group" pour inspecter leurs champs lors de la lecture ou de la mise à jour du contenu groupé existant. Les listes sont leur propre type de bloc plutôt qu'une variante text : les éléments list utilisent content, tandis que les éléments steps utilisent title et un description facultatif.

Les outils qui acceptent blocks persistent le style visuel par bloc sous l'objet styles d'un bloc :

{
  "type": "card",
  "title": "Your update",
  "content": "Everything is ready.",
  "variant": "default",
  "styles": {
    "backgroundColor": "#f8fafc",
    "backgroundOpacity": 85,
    "borderColor": "#cbd5e1",
    "borderWidth": 1,
    "borderRadius": 12
  }
}

Pour la compatibilité avec les anciennes invites d'agent, les clés de style de niveau supérieur telles que backgroundColor, backgroundOpacity, borderColor, borderWidth et borderRadius sont également acceptées et enregistrées sous styles.

E-mail transactionnel

OutilDescription
list_transactional_emailsRecherchez/filtrez les modèles et triez par métriques de livraison ; renvoie les objets et les URL du tableau de bord.
get_transactional_emailLisez un e-mail transactionnel par ID ou slug.
create_transactional_emailCréez un modèle transactionnel à partir d'une invite, de HTML ou de blocs.
update_transactional_emailMettez à jour les métadonnées transactionnelles ou le contenu du corps.
send_emailEnvoyez un e-mail par modèle ou HTML aux destinataires partagés À, Cc et Cci.

Les modèles transactionnels créés par invite sont générés côté serveur et sont désactivés par défaut pour révision. Les modèles HTML ou de blocs explicites conservent la valeur par défaut de compatibilité activée ; passez enabled explicitement pour remplacer l'une ou l'autre valeur par défaut. Pour un envoi direct, transmettez to, subject et html ; le serveur MCP mappe html au champ body de l'API transactionnelle. Pour un e-mail transactionnel enregistré, transmettez son slug d'API via le champ templateId au nom de compatibilité à la place. Pour les envois transactionnels, to, cc et bcc acceptent chacun une adresse ou un tableau de jusqu'à 50. L'API envoie un e-mail avec une liste de destinataires partagée et supprime les doublons entre champs dans l'ordre de priorité to, puis cc, puis bcc. Les envois marketing exigent toujours exactement une adresse to acceptée et ne prennent pas en charge de destinataires supplémentaires. Les variables send_email prennent en charge les tableaux imbriqués pour les blocs répétés, comme { "event": { "items": [...] } }. Lorsque le destinataire correspond à un abonné stocké par ID externe ou e-mail, les prénom et nom enregistrés remplissent automatiquement les variables de nom omises. Les valeurs explicites, y compris les blancs, ont priorité. Le tableau optionnel attachments accepte jusqu'à 10 fichiers / 7 Mo au total. Chaque élément nécessite filename et exactement un parmi Base64 content ou une path HTTP(S) publique. Définissez contentId pour intégrer une image CID référencée depuis le HTML et définissez éventuellement contentType pour remplacer la détection MIME. Lorsque trackingSettings est omis, les valeurs par défaut de suivi de l'API transactionnelle de l'entreprise s'appliquent. Utilisez trackingSettings.clickTracking: false ou trackingSettings.openTracking: false pour désactiver la réécriture de liens ou le pixel d'ouverture pour un envoi. Ces options par envoi ne font que se désengager ; elles ne peuvent pas activer un suivi désactivé par une valeur par défaut au niveau du compte ou de l'API transactionnelle. Utilisez get_tracking_settings et update_tracking_settings pour inspecter ou modifier ces valeurs par défaut.

Pour les nouvelles tentatives d'agent et de workflow, incluez un idempotencyKey stable (jusqu'à 255 caractères) dans send_email. Utilisez une clé par e-mail logique et envoyez les mêmes arguments lors d'une nouvelle tentative ; la clé reste valide pendant 14 jours.

Analytique

OutilDescription
get_statsObtenez les statistiques d'ensemble pour 7d, 30d ou 90d ; filtrez par type d'e-mail structurel.
get_transactional_statsObtenez des métriques de tous les temps ou limitées dans le temps pour un e-mail transactionnel enregistré par ID ou slug.
get_campaign_statsObtenez les performances de campagne, les métriques de réponse, les objectifs de conversion associés et les résumés Poll/NPS.
list_poll_responsesListez la dernière réponse Poll/NPS de chaque répondant par bloc, avec identité et heure de réponse.
get_sequence_statsObtenez les performances agrégées et par étape de séquence ainsi que les comptes d'inscriptions actives/en attente par nœud actuel.
list_email_metricsComparez les entonnoirs de campagne et d'étape de séquence, les réponses, les conversions et les revenus, y compris les étapes inter-séquences.
list_campaign_eventsListez les événements d'e-mail bruts paginés pour une campagne.
list_sequence_eventsListez les événements bruts paginés pour une séquence, éventuellement limités à une étape d'e-mail.
get_subscriber_activityObtenez les statistiques d'abonné, l'activité et les inscriptions par e-mail.

Les filtres d'événements de campagne et de séquence acceptent transport_failure en plus des événements de livraison, rebond, plainte, engagement, désabonnement et délai. Les échecs de transport décrivent l'infrastructure MTA ou l'épuisement du chemin de sortie ; ils ne classent pas une adresse de destinataire valide comme rebondie.

Les outils d'analytique excluent par défaut les ouvertures/clics détectés de bot, scanner, aperçu de lien et actifs suivis. Passez includeMachineEngagement: true à get_stats, get_campaign_stats, get_sequence_stats, get_ab_test_stats, get_subscriber ou get_subscriber_activity lorsque vous avez besoin de diagnostics d'engagement bruts ; les lignes d'activité d'ouverture/clic incluses exposent les champs machine, engagementQuality et classificationReasons lorsque l'API renvoie une activité au niveau de l'événement.

get_sequence_stats.enrollmentCounts est un instantané en direct à un moment donné des exécutions d'inscriptions actives et en attente groupées par nœud actuel. Il compte les jetons d'inscription plutôt que nécessairement des abonnés distincts, et il n'est pas limité par les filtres historiques period, start ou end.

Utilisez list_email_metrics pour des comparaisons entre campagnes ou étapes de séquence. Passez step avec des valeurs optionnelles sequenceId pour totaliser la même étape à travers les séquences ; utilisez le automationNodeId renvoyé avec list_sequence_events ou list_email_sends pour inspecter les destinataires. campaignId ne peut pas être combiné avec sequenceId ou step. Les portées explicites de campagne et de séquence conservent les e-mails configurés avec zéro activité afin que les faibles performeurs ne soient pas silencieusement omis.

Passez emailType: "transactional" à get_stats pour les taux de livraison, d'ouverture, de clic et de réponse de l'API d'envoi et du SMTP transactionnel. Cela inclut les envois directs et de modèles enregistrés. Utilisez le emailSendId renvoyé par send_email avec get_email_send lorsque vous avez besoin du statut et de la chronologie des événements d'une livraison. Utilisez get_transactional_stats lorsque vous avez besoin de taux agrégés pour un e-mail transactionnel enregistré. Sa réponse inclut les principaux liens cliqués, les plaintes, les réponses, les dernières classifications de rebond permanent/transitoire et des comptes séparés d'ouvertures/clics humains et machines. Les envois de contenu direct n'ont pas d'ID de modèle stable et restent disponibles via les statistiques transactionnelles du compte plus la recherche de livraison.

Lorsqu'une campagne collecte des réponses Poll ou NPS, get_campaign_stats inclut un tableau polls de niveau supérieur. Chaque abonné compte une fois par bloc de sondage en utilisant sa dernière réponse. Les résumés NPS incluent le score, la moyenne et les comptes promoteur/passif/détracteur. Ce sont des résumés de réponse à vie même lorsque les métriques d'engagement utilisent un filtre temporel.

Utilisez list_poll_responses pour lire qui a répondu quoi et quand. Il renvoie la dernière réponse de chaque abonné par bloc de sondage, la plus récente en premier, y compris l'e-mail, la valeur stockée, la clé d'attribut et l'heure de réponse. Passez blockId pour limiter à un sondage ; pour une étape d'e-mail de séquence, passez son ID de nœud d'automatisation comme campaignId. Ne reconstruisez pas cet historique en analysant les attributs d'abonné : un attribut n'a pas d'horodatage de réponse et peut avoir été écrasé par un e-mail ultérieur qui a réutilisé la même clé.

Pour lister les répondants historiques exacts derrière un compte, appelez create_segment avec le champ pollResponse, l'opérateur is et une valeur JSON limitée à la campagne et au blockId du résumé :

{
  "v": 1,
  "campaignId": "camp_123",
  "blockId": "poll_1",
  "match": { "kind": "answer", "value": "loved" }
}

Pour NPS, utilisez une correspondance telle que {"kind":"npsBucket","bucket":"detractors"} ; les compartiments valides sont promoters, passives et detractors. Le attributeKey du résumé stocke la réponse actuelle/dernière de l'abonné et peut être écrasé par un sondage ultérieur qui réutilise la clé, donc ce n'est pas une analyse descendante historique exacte.

Équipe, Boîte de réception, Webhooks

OutilDescription
list_team_membersListez les membres de l'équipe et les invitations en attente.
invite_team_memberInvitez un collègue comme administrateur ou observateur, avec accès à la facturation optionnel.
cancel_team_invitationAnnulez une invitation d'équipe en attente.
list_conversationsListez les conversations de réponse d'abonné avec filtres de statut et non lus.
get_conversationLisez une conversation et son historique de messages.
reply_to_conversationMettez en file une réponse sortante ou ajoutez une note interne.
update_conversation_statusOuvrez ou fermez une conversation.
mark_conversation_readMarquez tous les messages d'une conversation comme lus.
list_webhooksListez les points de terminaison de webhook sortants.
create_webhookCréez un point de terminaison et renvoyez son secret de signature à usage unique sur MCP standard ; omis sur la route révisée par OpenAI.
update_webhookMettez à jour le nom, l'URL, les événements ou le statut du webhook.
delete_webhookSupprimez définitivement un point de terminaison de webhook et l'historique de livraison.
test_webhookEnvoyez un événement de test à un point de terminaison de webhook.
list_webhook_deliveriesListez les tentatives de livraison récentes pour un webhook.
replay_webhook_deliveryRejouez une livraison de webhook.

Les changements de consentement par liste sont disponibles comme événements sortants d'opt-in : subscriber.list_subscribed et subscriber.list_unsubscribed. Leurs charges utiles identifient l'abonné et la liste, rapportent action comme added ou removed, et incluent le source du changement (par exemple preferences_page, dashboard, api ou automation).

Utilisez l'événement email.failed pour les échecs de livraison terminaux tels que les chemins de transport MTA épuisés. Les rebonds de destinataire continuent d'utiliser email.bounced.

Utilisez l'événement campaign.sent à activation explicite uniquement lorsqu'un workflow a besoin d'une notification terminale après qu'une campagne e-mail ou SMS se soit réglée, y compris un envoi valide à zéro destinataire. Il n'est pas ajouté lorsque create_webhook omet events sur MCP standard ; sur la route révisée par OpenAI, ajoutez-le dans le tableau de bord lors de la création ou de la modification du webhook.

Génération IA

OutilDescription
generate_emailGénérez des blocs d'e-mail de marque à partir d'une invite.
generate_sequenceAlias obsolète qui persiste un brouillon de séquence basé sur un objectif.
generate_subject_linesGénérez des variantes de lignes d'objet A/B.

Le contenu d'e-mail généré inclut le logo et le pied de page de l'entreprise par défaut. generate_email accepte applyBranding: false pour les blocs de contenu bruts et emailType: "transactional" pour un pied de page sans lien de désabonnement. Les campagnes basées sur une invite héritent de la police d'e-mail configurée de l'entreprise. Le contenu généré est renvoyé comme contenu de brouillon pour révision. Utilisez create_sequence pour générer et persister un brouillon de séquence désactivé qui apparaît dans list_sequences ; l'alias obsolète generate_sequence fait de même.

SMS

OutilDescription
generate_smsGénérer un contenu SMS à partir d'une invite.
get_sms_settingsLire l'état de préparation des SMS, les crédits, les valeurs par défaut et les numéros provisionnés.
get_sms_usageComparer les envois, les résultats de livraison, les crédits facturés, la dernière activité et les envois de test par numéro.
update_sms_number_labelMettre à jour le libellé d'un numéro ou la préférence de préfixe de marque par numéro.
release_sms_numberRestituer définitivement un numéro à l'opérateur et libérer son emplacement dans l'espace de travail.
send_test_smsEnvoyer un message de test, en choisissant éventuellement un expéditeur provisionné avec fromNumberId.

release_sms_number est irréversible. Les étapes de campagne ou de séquence liées à un numéro libéré ignoreront leurs envois SMS jusqu'à ce qu'elles soient réaffectées à un numéro actif. get_sms_usage rapporte les totaux de production séparément de testSends. Lorsque send_test_sms omet fromNumberId, il utilise la même valeur par défaut du numéro actif le plus ancien que les envois de production. Les envois de test sont de véritables messages facturés en crédits qui contournent les heures de silence et sont limités à 100 par entreprise sur une fenêtre glissante de 24 heures.

Retour produit

Utilisez submit_feedback uniquement lorsque l'utilisateur demande explicitement à l'assistant d'envoyer un retour à l'équipe Sequenzy. Le MCP standard peut inclure les champs de reproduction structurés userIntent, toolCalls, expected, actual et resourceIds lorsque cela est nécessaire pour ce rapport. La voie examinée par OpenAI accepte uniquement le message, la catégorie et un contexte de flux de travail généralisé facultatif. Ne pas inclure de données d'abonnés non liées, de contenu d'e-mail, de charges utiles d'API brutes, de données de débogage ou de secrets.

Ressources

Le serveur expose également des ressources MCP en lecture seule.

RessourceDescription
sequenzy://dashboardStatistiques d'aperçu en direct des 7 derniers jours.
sequenzy://companyParamètres actuels de l'entreprise et de localisation.
sequenzy://campaigns/recent10 dernières campagnes avec statut et statistiques de base.
sequenzy://subscribers/recentAbonnés les plus récemment ajoutés.
sequenzy://subscribers/engagedAbonnés les plus actifs ou engagés.
sequenzy://sequencesToutes les séquences avec leur statut.
sequenzy://templatesModèles avec statut de localisation.
sequenzy://segmentsSegments enregistrés avec comptes d'abonnés.
sequenzy://tagsBalises avec comptes d'utilisation.
sequenzy://healthMétriques de délivrabilité et état de santé.
sequenzy://email-blocksRéférence des champs pour chaque type de bloc d'e-mail.
sequenzy://app-routesModèles de routes du tableau de bord et onglets de paramètres.

Exemples d'invites

Add john@example.com with tags "vip" and "developer", then put them on the beta list.
Create a 4-email churn prevention sequence for users whose subscription expires soon. Leave it in draft mode.
Create a segment for subscribers who bought Stripe product prod_pro at least 3 times.
Draft a campaign about our new analytics dashboard, target the Pro users segment, and send a test to me.
How did the last campaign perform compared with the one before it?

Sécurité

  • Utilisez des clés API personnelles, pas de secrets d'équipe partagés.
  • Les clés n'accèdent qu'aux entreprises auxquelles votre utilisateur Sequenzy peut accéder.
  • Révoquez les clés depuis Paramètres -> Clés API lorsque l'accès n'est plus nécessaire.
  • Gardez les invites d'approbation client activées pour les envois, la planification, les suppressions et les modifications en masse.
  • Privilégiez les flux de travail en brouillon pour les campagnes et les séquences, puis examinez-les dans Sequenzy avant le lancement.

Dépannage

SEQUENZY_API_KEY environment variable is required

Définissez SEQUENZY_API_KEY dans la configuration du client MCP, ou exécutez :

npx @sequenzy/setup

Clé API invalide

Créez une nouvelle clé personnelle dans Paramètres -> Clés API, mettez à jour votre configuration MCP et redémarrez le client.

Portée de clé API manquante

Appelez get_account et inspectez apiKeyPermissions. Les connexions locales doivent ouvrir apiKeyPermissions.manageUrl, ajouter la portée manquante à la clé chargée, puis réessayer sans redémarrer. update_api_key ne peut effectuer cette opération que pour les clés d'entreprise qui détiennent déjà api_keys:manage ; modifiez les clés personnelles sur la page Clés API au niveau du compte. Les connexions OAuth hébergées peuvent également se déconnecter et se réautoriser avec des autorisations plus larges. L'erreur d'outil inclut la ou les portées exactes requises.

Ressources en double

Si un appel d'outil créerait un nom de segment ou un domaine d'envoi en double, le serveur renvoie un code stable, un description adapté aux agents, un resolution concret et un docsUrl. Pour les segments, appelez list_segments et réutilisez l'ID de segment existant ou choisissez un nom différent. Pour les sites Web, appelez list_websites ; si le domaine n'est pas répertorié pour l'entreprise sélectionnée, il appartient à une autre entreprise ou à un autre compte et doit être supprimé, réaffecté ou remplacé par un domaine d'envoi différent.

Les outils n'apparaissent pas

  • Confirmez que npx est disponible dans l'environnement utilisé par le client.
  • Redémarrez le client MCP après avoir modifié la configuration.
  • Vérifiez que la configuration se trouve au bon emplacement spécifique au client.

Problèmes de réseau ou d'URL d'API

Le serveur utilise https://api.sequenzy.com par défaut. Si vous le remplacez, vérifiez que SEQUENZY_API_URL pointe vers une URL de base d'API Sequenzy accessible.

Développement

bun install
bun test
bun run type-check
bun run build

Les schémas d'outils MCP doivent rester compatibles avec les clients stricts :

  • Les racines inputSchema des outils doivent être des schémas type: "object" simples.
  • Ne publiez pas anyOf n'importe où dans les schémas d'outils.
  • Ne placez pas oneOf, allOf, enum ou not à la racine d'un schéma d'outil.
  • Appliquez les exigences conditionnelles dans les gestionnaires et couvrez-les par des tests.

Ce dépôt autonome reflète le package MCP maintenu dans le monorepo principal de Sequenzy. Voir AGENTS.md pour les règles de synchronisation.

Licence

MIT

Découverte native pour agents

Sequenzy publie des manifestes lisibles par machine pour les réseaux d'agents et la découverte de type A2A :

Ces fichiers décrivent Sequenzy comme une capacité d'automatisation d'e-mails autorisée pour les agents. Ils excluent explicitement les cas d'utilisation de scraping, de spam et de prospection à froid non sollicitée.

Rôles d'espace de travail

L'accès par clé de compte combine les portées de clé avec votre rôle actuel dans l'espace de travail. get_account signale les portées bloquées dans apiKeyPermissions.roleRestrictedScopes ; canSendLive signifie qu'au moins un flux de travail de livraison autorisé est disponible, pas que chaque outil d'envoi est autorisé.

Vous pouvez inviter un marketer pour gérer les abonnés, les campagnes marketing et les séquences sans accorder l'accès aux e-mails transactionnels, aux paramètres de l'espace de travail, à l'équipe ou à la facturation. Les spécialistes du marketing choisissent les profils d'expéditeur/réponse existants. Les sources de campagnes, de tests A/B et de séquences adossées aux transactions restent protégées via les aperçus, le partage, les analyses et l'historique d'envoi. Les spécialistes du marketing et les membres restreints ne peuvent pas recevoir d'accès à la facturation.