Sequenzy MCP
officielOutil 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_listet . - 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_campaignetsend_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_sequenceet . - 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_statusetresume_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 :
- Manifeste du serveur MCP :
server.json - Carte d'agent :
.well-known/agent-card.json - Manifeste des capacités d'agent :
agent-capability.json - Métadonnées de compétence OpenClaw :
openclaw/skill.json
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
- Ouvrez le tableau de bord Sequenzy.
- 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.
- Choisissez un préréglage d'autorisations ou les portées personnalisées exactes dont l'intégration a besoin.
- 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
| Outil | Description |
|---|---|
get_account | Obtenir les informations du compte, les entreprises disponibles, les permissions actuelles de la clé et l'URL de gestion des clés API. |
select_company | Définir l'entreprise active pour les futurs appels d'outils. |
get_app_urls | Construire 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_company | Créer une nouvelle entreprise ou marque. |
get_company | Lire 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_company | Modifier 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_rules | Lire 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_rules | Remplacer 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_settings | Lire 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_settings | Mettre à jour partiellement les paramètres d'automatisation Shopify ou réinitialiser une section individuelle à ses valeurs par défaut de plateforme. |
create_api_key | Cré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_handoff | Pré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_keys | Lister les clés API d'entreprise comme métadonnées non secrètes pour une identification et un nettoyage sûrs. |
update_api_key | Renommer 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_key | Révoquer définitivement une clé API d'entreprise exacte par ID après l'avoir vérifiée avec list_api_keys. |
delete_api_key | Alias de compatibilité pour revoke_api_key. |
list_websites | Lister les domaines d'envoi avec les statuts agrégés, SPF, DKIM et MAIL FROM stockés. |
add_sending_domain | Ajouter un domaine d'envoi et renvoyer ses enregistrements DNS spécifiques à la cohorte. |
add_website | Alias de compatibilité pour add_sending_domain. |
check_website | Lire les détails de vérification SPF, DKIM, MAIL FROM et agrégés stockés d'un domaine d'envoi. |
verify_sending_domain | Exécuter une nouvelle vérification DNS/fournisseur du domaine d'envoi et renvoyer le statut actuel et les diagnostics. |
list_integrations | Lister les intégrations connectées avec la santé de connexion et de synchronisation, sans renvoyer les identifiants. |
get_sending_status | Diagnostiquer 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_sending | Restaurer une pause de rebondissement dur éligible après avoir explicitement confirmé que la liste a été assainie. |
get_tracking_settings | Lire 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_settings | Mettre à 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_guide | Obtenir des exemples d'intégration spécifiques au framework. |
get_integration | Inspecter une intégration connectée, son câblage d'événements, le ciblage de listes, l'activité récente et les recommandations. |
list_integration_capabilities | Comparer les capacités des fournisseurs, qu'ils soient connectés ou non. |
connect_integration | Connecter 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_schema | Inspecter 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_activity | Lire le journal d'activité de webhook et de synchronisation spécifique à l'intégration conservé. |
set_integration_sync_enabled | Activer ou désactiver les importations en masse et les backfills tout en laissant les webhooks en direct connectés. |
set_integration_list_targeting | Choisir les listes auxquelles les contacts créés par une intégration prise en charge rejoignent lors des prochaines écritures du fournisseur. |
sync_integration | Mettre 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_pixel | Lire l'état en direct du pixel/configuration Shopify et distinguer les événements sombres confirmés d'une lecture inconnue. |
activate_integration_pixel | Installer ou réorienter le pixel de la vitrine Shopify ; idempotent lorsqu'il est déjà à jour. |
list_web_tracking_keys | Lister 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_key | Obtenir une clé de suivi de site web avec son extrait d'installation exact et son point de terminaison d'ingestion. |
create_web_tracking_key | Créer une clé de suivi publiable pour une vitrine ou un site web non-Shopify. |
update_web_tracking_key | Renommer, restreindre, révoquer ou réactiver une clé de suivi de site web. |
delete_web_tracking_key | Supprimer définitivement une clé de suivi de site web après le retrait de son extrait. |
list_sender_profiles | Lister 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_profile | Renommer un profil d'expéditeur ou de réponse sans modifier les valeurs par défaut du compte. |
delete_sender_profile | Supprimer 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_preferences | Lire 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_preferences | Mettre à 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_email | Rendre 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
| Outil | Description |
|---|---|
add_subscriber | Ajouter un abonné ; le statut est uniquement à la création, utilisez donc update_subscriber pour un contact existant. |
create_subscriber_import | Mettre 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_import | Lire la progression, les compteurs de résultats de lignes et les résumés d'échec pour une importation en file d'attente. |
update_subscriber | Mettre à jour les champs natifs du profil et du téléphone, le consentement SMS, les attributs, les balises ou le statut global. |
remove_subscriber | Désabonner tout en préservant l'historique de suppression, ou supprimer définitivement uniquement avec hardDelete: true. |
get_subscriber | Récupérer les détails de l'abonné par e-mail ou ID externe. |
search_subscribers | Rechercher 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_events | Importer 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_tags | Ajouter des balises à jusqu'à 500 abonnés existants ; nécessite subscribers:tag et peut également nécessiter tags:write. |
bulk_remove_subscriber_tags | Supprimer 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
| Outil | Description |
|---|---|
list_products | Liste les produits synchronisés depuis Stripe, Shopify, WooCommerce, manuels ou données Commerce API. |
upsert_products | Crée ou met à jour jusqu'à 100 produits Commerce API identifiés par votre ID produit. |
delete_product | Supprime un produit précédemment envoyé via la Commerce API. |
attach_product_file | Attache un fichier de livraison hébergé ou téléchargé localement à un produit. |
remove_product_file | Supprime un fichier de livraison de produit attaché. |
sync_products | Met 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
| Outil | Description |
|---|---|
upload_image_asset | Té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
| Outil | Description |
|---|---|
list_tags | Liste toutes les balises. |
create_tag | Crée une définition de balise avec une couleur facultative. |
update_tag | Met à jour la couleur d'une balise. |
delete_tag | Supprime une balise et la retire des abonnés. |
list_lists | Liste les listes d'abonnés. |
create_list | Crée une liste d'abonnés. |
update_list | Renomme ou décrit une liste d'abonnés. |
delete_list | Supprime une liste d'abonnés. |
add_subscribers_to_list | Ajoute jusqu'à 500 abonnés à une liste à partir d'un tableau d'e-mails. |
remove_subscribers_from_list | Supprime jusqu'à 500 abonnés d'une liste. |
list_segments | Liste les segments enregistrés et leurs compteurs. |
create_segment | Crée des segments filtrés par tableaux imbriqués ou de même élément. |
update_segment | Met à jour le nom, les filtres, le groupe racine ou l'opérateur de jointure d'un segment. |
delete_segment | Supprime un segment (nécessite segments:delete). |
get_segment_count | Aperç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_nottag:contains,not_contains,is_empty,is_not_emptyemail:contains,not_containsemailProvider,list:is,is_not,is_empty,is_not_emptyfirstName,lastName:contains,not_contains,is_empty,is_not_emptyadded:less_than,more_thanattribute:is,is_not,is_empty,is_not_empty,gte,lte,gt,lt,contains,not_containsevent, champs d'engagement e-mail :is,is_not,at_least,less_than_countemailBounced: prend également en chargeis_temporary_bounce,is_permanent_bouncestripeProduct:is,is_not,at_least,less_than_countstripeCurrentProduct,stripeTrialProduct:is,is_not,gte,lte,gt,ltcommerceProduct: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)
| Outil | Description |
|---|---|
list_audience_syncs | Liste les synchronisations segment-vers-audience avec le planning et le statut de la dernière synchronisation. |
list_ad_accounts | Liste les comptes publicitaires Meta disponibles pour la synchronisation. |
create_audience_sync | Pousse un segment vers une audience personnalisée Meta selon un planning. |
update_audience_sync | Modifie la fréquence de synchronisation (hourly, daily, weekly) ou met en pause/reprend. |
delete_audience_sync | Supprime un mappage de synchronisation ; l'audience Meta elle-même est conservée. |
sync_audience_now | Dé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
| Outil | Description |
|---|---|
list_templates | Liste les modèles avec le statut de localisation, le libellé et le filtrage isTemplate, avec pagination. |
get_template | Lit les détails d'un modèle, son contenu et ses variantes localisées. |
create_template | Cré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_template | Met à 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_localization | Crée ou remplace une variante localisée fournie par l'appelant. |
sync_template_localizations | Met en file d'attente la traduction IA pour les locales non principales sélectionnées ou toutes celles activées. |
delete_template | Supprime 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
| Outil | Description |
|---|---|
list_email_components | Liste les sections et pieds de page enregistrés, éventuellement limités aux valeurs par défaut épinglées. |
get_email_component | Lit les blocs, métadonnées, version et état d'emplacement par défaut d'un composant. |
get_default_email_component | Lit le composant actuellement épinglé à un emplacement par défaut tel que footer. |
set_default_email_component | Cré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_component | Enregistre une section ou un pied de page réutilisable à partir d'une liste de blocs. |
update_email_component | Met à jour les métadonnées d'un composant ou remplace ses blocs et incrémente sa version. |
delete_email_component | Supprime 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
| Outil | Description |
|---|---|
list_ab_tests | Liste les tests A/B et leurs variantes, éventuellement limités par séquence. |
get_ab_test | Obtient les paramètres effectifs, les variantes, le statut de localisation et la copie d'étape de séquence. |
get_ab_test_stats | Obtient les statistiques globales et par variante. |
restart_ab_test | Redémarre un test A/B arrêté ou terminé. |
select_ab_test_winner | Sélectionne un gagnant de test de campagne et met en file d'attente la livraison restante. |
update_ab_test | Met à jour les paramètres de sélection du gagnant pour une campagne ou une séquence. |
update_ab_test_variant | Met à jour la copie de variante de brouillon de campagne ou de séquence. |
create_ab_test | Crée un test de campagne ou convertit une étape d'e-mail de séquence. |
add_ab_test_variant | Ajoute une variante à un test A/B existant. |
delete_ab_test_variant | Supprime une variante de test A/B de brouillon. |
delete_ab_test | Supprime 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
| Outil | Description |
|---|---|
list_campaigns | Lister 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_campaign | Obtenir les détails, statistiques, retours des réviseurs et cadence d'envoi enregistrée pour une campagne. |
get_campaign_audience | Résoudre le ciblage enregistré, les références manquantes, un résumé en langage clair et le nombre de destinataires en direct. |
list_campaign_goals | Lister les objectifs de conversion persistés pour une campagne e-mail (SMS non pris en charge). |
create_campaign_goal | Ajouter un objectif de conversion de campagne e-mail basé sur un événement, un attribut d'abonné ou un tag appliqué. |
update_campaign_goal | Mettre à jour un objectif de conversion de campagne e-mail persisté. |
delete_campaign_goal | Supprimer un objectif de conversion de campagne e-mail persisté. |
list_email_sends | Rechercher 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_send | Inspecter un envoi en file d'attente, de test, envoyé, supprimé ou échoué par identifiant d'envoi e-mail durable. |
list_recipient_suppressions | Lister les destinataires supprimés associés, y compris les adresses globales invalides protégées et les plaintes. |
get_recipient_suppression | Vérifier le rebond local, la plainte, l'hygiène e-mail et la suppression SES régionale pour un destinataire exact. |
remove_recipient_suppression | Supprimer une escalade de rebond logiciel d'espace de travail tout en préservant les protections globales, de rebond dur et de plainte. |
create_campaign | Créer une campagne avec contenu, données et éventuelles surcharges d'identité De/Répondre à. |
update_campaign | Mettre à jour une campagne brouillon, y compris contenu, données, identités, audience et configuration STO persistée. |
schedule_campaign | Planifier ou replanifier une campagne, en surchargeant éventuellement STO et sa fenêtre d'envoi de 1 à 24 heures. |
send_test_email | Envoyer un e-mail de test à une adresse. |
render_email | Rendre 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_campaign | Annuler une campagne planifiée ou en cours d'envoi. |
pause_campaign | Mettre en pause une campagne en cours d'envoi. |
resume_campaign | Reprendre une campagne en pause, en étalant éventuellement l'envoi dans le temps. |
delete_campaign | Supprimer une campagne. |
duplicate_campaign | Dupliquer une campagne en un nouveau brouillon. |
resend_campaign_to_non_openers | Cré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
| Outil | Description |
|---|---|
list_forms | Liste 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_form | Cré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_form | Met à jour un formulaire enregistré, y compris son tableau complet de blocs ordonnés et ses champs personnalisés typés. |
get_form_embed | Renvoie 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
| Outil | Description |
|---|---|
list_popups | Liste les popups enregistrés avec leur statut et leurs statistiques d'engagement, en incluant éventuellement le contenu complet. |
get_popup | Obtient 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_popup | Crée un popup à partir d'un modèle de départ, publié par défaut, et renvoie son script de déploiement. |
update_popup | Met à jour partiellement le texte, l'audience, le comportement, le thème, les blocs ou le statut de publication d'un popup. |
get_popup_embed | Renvoie des extraits HTML sans secret, React/Next.js, WordPress et Shopify. |
duplicate_popup | Copie un popup dans un brouillon avec des compteurs d'engagement indépendants. |
delete_popup | Supprime 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
| Outil | Description |
|---|---|
list_landing_pages | Liste les pages de destination avec leur statut, leurs métriques, leur contenu et leurs URL. |
get_landing_page | Obtient les détails d'une page de destination, le contenu du constructeur, les métriques et les URL publiées. |
render_landing_page | Renvoie un aperçu visiteur signé de 24 heures sans publier, compter les vues ou collecter des inscriptions. |
create_landing_page | Crée une page de destination en brouillon à partir du contenu de modèle par défaut ou de JSON. |
update_landing_page | Modifie le nom, le slug ou le contenu complet compatible éditeur d'une page de destination. |
publish_landing_page | Publie une page de destination, en enregistrant éventuellement les modifications d'abord. |
unpublish_landing_page | Ramène une page de destination au statut de brouillon, en enregistrant éventuellement les modifications d'abord. |
duplicate_landing_page | Duplique une page de destination dans un nouveau brouillon avec un slug unique. |
delete_landing_page | Supprime une page de destination non publiée. |
connect_landing_page_domain | Connecte un domaine personnalisé de page de destination et renvoie les détails de configuration DNS. |
update_landing_page_domain_settings | Remplace 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
| Outil | Description |
|---|---|
list_sequences | Liste les séquences avec le statut du tableau de bord, la recherche, les filtres de libellé, de limite et de décalage. |
get_sequence | Obtient 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_enrollments | Liste 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_email | Envoie une étape action_email enregistrée à 1 à 10 réviseurs ; les étapes A/B sont inspectées par variante. |
create_sequence | Crée un brouillon vide du tableau de bord ou une séquence générée par IA ou à étapes explicites. |
update_sequence | Met à jour l'identité, les paramètres, l'inscription, les étapes existantes, la logique de branchement ou insère des étapes linéaires. |
update_sequence_node | Correctif typé d'un nœud de séquence existant. |
update_sequence_nodes | Correctif atomique de plusieurs nœuds de séquence existants. |
insert_sequence_step | Insè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_graph | Déplace, reconnecte, supprime ou duplique des nœuds du graphe ; signale les destinataires déplacés ou terminés. |
simulate_sequence | Simulation 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_sequence | Active une séquence. |
disable_sequence | Gèle une séquence, bloquant les nouvelles inscriptions et maintenant les destinataires actuels. |
duplicate_sequence | Crée une copie brouillon indépendante du graphe, des e-mails et des tests A/B de la séquence. |
archive_sequence | Déplace une séquence dans l'archive du tableau de bord et arrête les nouvelles inscriptions. |
unarchive_sequence | Restaure une séquence archivée en tant que brouillon désactivé. |
list_sequence_goals | Liste les objectifs de conversion persistés (événement, attribut d'abonné, étiquette appliquée) pour une séquence. |
create_sequence_goal | Ajoute un objectif de conversion (événement, attribut d'abonné ou étiquette appliquée). |
update_sequence_goal | Met à jour un objectif de conversion de séquence persisté. |
delete_sequence_goal | Supprime un objectif de conversion de séquence persisté. |
get_sequence_inbound_webhook | Lit 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_webhook | Configure 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_secret | Fait 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_enrollments | Arrête les nouvelles inscriptions pour une séquence active tandis que les destinataires actuels continuent. |
resume_sequence_enrollments | Rouvre les nouvelles inscriptions pour une séquence active sans modifier les destinataires actuels. |
enroll_subscribers_in_sequence | Inscrit jusqu'à 500 abonnés par e-mail, identifiant d'abonné ou les deux, avec idempotence sûre en cas de nouvelle tentative. |
cancel_sequence_enrollments | Arrête les inscriptions actives ou en attente par valeurs de champs d'abonné ou d'événement d'entrée. |
realign_sequence_enrollments | Pré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_realignment | Interroge un travail de réalignement appliqué et lit son résultat terminé ou son curseur de continuation. |
delete_sequence | Supprime 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"aveclistId, plusieurslistIdsoulistScope:any_contact(par défaut) inscrit chaque contact ajouté, y compris les contacts qui ne rejoignent aucune liste, tandis queany_listattend une adhésion réelle à une liste.trigger: "tag_added"avectagNameou plusieurstagNames; toute étiquette configurée inscrit le contact.trigger: "segment_entered"plussegmentIdpour 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"pluseventName,inactiveDaysetinactivityBaselinefacultatif (sequence_created_atousubscriber_created_at).goalpour 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.stepsexplicite avec Sequenzyblocks.stepsexplicite 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 viawaitUntilou portes de calendrier viawaitUntilWeekday. 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_discountcré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 unenrollmentFieldPathscalaire 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
| Outil | Description |
|---|---|
get_email_block_schema | Listez 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
| Outil | Description |
|---|---|
list_transactional_emails | Recherchez/filtrez les modèles et triez par métriques de livraison ; renvoie les objets et les URL du tableau de bord. |
get_transactional_email | Lisez un e-mail transactionnel par ID ou slug. |
create_transactional_email | Créez un modèle transactionnel à partir d'une invite, de HTML ou de blocs. |
update_transactional_email | Mettez à jour les métadonnées transactionnelles ou le contenu du corps. |
send_email | Envoyez 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
| Outil | Description |
|---|---|
get_stats | Obtenez les statistiques d'ensemble pour 7d, 30d ou 90d ; filtrez par type d'e-mail structurel. |
get_transactional_stats | Obtenez 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_stats | Obtenez 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_responses | Listez la dernière réponse Poll/NPS de chaque répondant par bloc, avec identité et heure de réponse. |
get_sequence_stats | Obtenez 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_metrics | Comparez 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_events | Listez les événements d'e-mail bruts paginés pour une campagne. |
list_sequence_events | Listez les événements bruts paginés pour une séquence, éventuellement limités à une étape d'e-mail. |
get_subscriber_activity | Obtenez 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
| Outil | Description |
|---|---|
list_team_members | Listez les membres de l'équipe et les invitations en attente. |
invite_team_member | Invitez un collègue comme administrateur ou observateur, avec accès à la facturation optionnel. |
cancel_team_invitation | Annulez une invitation d'équipe en attente. |
list_conversations | Listez les conversations de réponse d'abonné avec filtres de statut et non lus. |
get_conversation | Lisez une conversation et son historique de messages. |
reply_to_conversation | Mettez en file une réponse sortante ou ajoutez une note interne. |
update_conversation_status | Ouvrez ou fermez une conversation. |
mark_conversation_read | Marquez tous les messages d'une conversation comme lus. |
list_webhooks | Listez les points de terminaison de webhook sortants. |
create_webhook | Cré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_webhook | Mettez à jour le nom, l'URL, les événements ou le statut du webhook. |
delete_webhook | Supprimez définitivement un point de terminaison de webhook et l'historique de livraison. |
test_webhook | Envoyez un événement de test à un point de terminaison de webhook. |
list_webhook_deliveries | Listez les tentatives de livraison récentes pour un webhook. |
replay_webhook_delivery | Rejouez 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
| Outil | Description |
|---|---|
generate_email | Générez des blocs d'e-mail de marque à partir d'une invite. |
generate_sequence | Alias obsolète qui persiste un brouillon de séquence basé sur un objectif. |
generate_subject_lines | Gé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
| Outil | Description |
|---|---|
generate_sms | Générer un contenu SMS à partir d'une invite. |
get_sms_settings | Lire l'état de préparation des SMS, les crédits, les valeurs par défaut et les numéros provisionnés. |
get_sms_usage | Comparer 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_label | Mettre à jour le libellé d'un numéro ou la préférence de préfixe de marque par numéro. |
release_sms_number | Restituer définitivement un numéro à l'opérateur et libérer son emplacement dans l'espace de travail. |
send_test_sms | Envoyer 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.
| Ressource | Description |
|---|---|
sequenzy://dashboard | Statistiques d'aperçu en direct des 7 derniers jours. |
sequenzy://company | Paramètres actuels de l'entreprise et de localisation. |
sequenzy://campaigns/recent | 10 dernières campagnes avec statut et statistiques de base. |
sequenzy://subscribers/recent | Abonnés les plus récemment ajoutés. |
sequenzy://subscribers/engaged | Abonnés les plus actifs ou engagés. |
sequenzy://sequences | Toutes les séquences avec leur statut. |
sequenzy://templates | Modèles avec statut de localisation. |
sequenzy://segments | Segments enregistrés avec comptes d'abonnés. |
sequenzy://tags | Balises avec comptes d'utilisation. |
sequenzy://health | Métriques de délivrabilité et état de santé. |
sequenzy://email-blocks | Référence des champs pour chaque type de bloc d'e-mail. |
sequenzy://app-routes | Modè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
npxest 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
inputSchemades outils doivent être des schémastype: "object"simples. - Ne publiez pas
anyOfn'importe où dans les schémas d'outils. - Ne placez pas
oneOf,allOf,enumounotà 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 :
- Point de terminaison MCP distant :
https://api.sequenzy.com/v1/mcp - Manifeste de capacités d'agent :
agent-capability.json - Carte d'agent de type A2A :
.well-known/agent-card.json - Métadonnées de compétences OpenClaw/Moltbot :
openclaw/skill.json - Guide d'exploitation OpenClaw/Moltbot :
openclaw/SKILL.md
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.