Sequenzy MCP
oficialHerramienta de Email Marketing para SaaS
¿Qué puedes hacer con Sequenzy MCP?
- Gestionar suscriptores y segmentos — Pide a tu asistente que cree listas, aplique etiquetas, concilie etiquetas masivas o pruebe eventos sintéticos mediante herramientas como
create_listy . - Crear y enviar campañas — Redacta, programa, previsualiza o envía campañas de correo electrónico, incluyendo vistas previas de audiencia resueltas y objetivos de conversión, usando herramientas como
create_campaignysend_campaign. - Crear páginas de aterrizaje y formularios — Diseña formularios de registro y páginas de aterrizaje vinculados a listas con diseños de bloques responsivos, luego publícalos u obtén incrustaciones para sitios estáticos mediante
create_landing_page. - Sincronizar audiencias con Meta — Empuja segmentos dinámicos a audiencias personalizadas de Meta para retargeting en Facebook e Instagram.
- Gestionar secuencias y automatizaciones — Crea secuencias de correo de varios pasos con disparadores de entrada, condiciones de detención y envíos de prueba para revisores usando
create_sequencey . - Supervisar la entregabilidad y el envío — Diagnostica envíos pausados, inspecciona supresiones por rebotes/quejas y restaura pausas elegibles por rebotes duros con
get_sending_statusyresume_sending.
Documentación
Servidor Sequenzy MCP
Servidor MCP oficial para Sequenzy, la plataforma de email marketing impulsada por IA.
Conecta Sequenzy a Claude Desktop, Claude Code, Codex, Cursor, Windsurf, VS Code Copilot, OpenClaw y otros clientes MCP para que tu asistente de IA pueda gestionar operaciones de email con herramientas estructuradas en lugar de llamadas API escritas a mano.
Lo que puedes hacer
- Gestionar suscriptores, etiquetas, listas y segmentos dinámicos, incluyendo reconciliación masiva de etiquetas y pruebas de eventos sintéticos.
- Sincronizar segmentos a audiencias personalizadas de Meta para retargeting en Facebook e Instagram.
- Gestionar productos y adjuntar archivos de entrega digital para automatizaciones de compra.
- Subir imágenes de email alojadas con texto alternativo y configuraciones reutilizables de recorte responsivo.
- Redactar, actualizar, programar e inspeccionar campañas, incluyendo vistas previas de audiencia resueltas, objetivos de conversión persistidos e identidades de Remitente, Responder a, CC y CCO.
- Renderizar campañas, pasos de secuencia y plantillas a su HTML exacto seguro para email sin enviar.
- Añadir bloques de encuestas y NPS de un clic a los emails e inspeccionar resúmenes de respuestas de campaña.
- Crear y editar secuencias de email, incluyendo disparadores de múltiples listas/etiquetas, condiciones de detención filtradas por audiencia de entrada y propiedades, anulaciones de identidad de envío, reestructuración de gráficos existentes y envíos de prueba directos de pasos a revisores internos.
- Cancelar, pausar, reanudar, duplicar o eliminar campañas e inscribir contactos en secuencias.
- Gestionar plantillas de email transaccional y enviar emails transaccionales a listas compartidas de destinatarios Para, CC y CCO.
- Proporcionar variantes de plantilla localizadas o poner en cola la traducción por IA para idiomas habilitados.
- Crear, previsualizar, editar, publicar, despublicar y eliminar páginas de aterrizaje.
- Crear formularios de registro guardados con ámbito de lista con grupos de bloques responsivos de pila, fila, cuadrícula e imagen única superpuesta (incluyendo controles de espacio frontal), y luego devolver incrustaciones de sitio estático seguras para el cliente.
- Crear, segmentar, publicar, duplicar e implementar popups de registro guardados con los mismos diseños de bloques recursivos.
- Conectar y verificar dominios personalizados para páginas de aterrizaje publicadas.
- Gestionar invitaciones de equipo, conversaciones de bandeja de entrada y endpoints de webhook salientes.
- Generar copia de email, líneas de asunto y secuencias de múltiples pasos.
- Inspeccionar análisis, actividad de suscriptores, salud de entregabilidad, pausas de envío a nivel de empresa, integraciones, esquemas de payload de eventos publicados, identidades de envío, configuraciones de seguimiento y URLs de panel.
- Inspeccionar si "Enviado con Sequenzy" es visible para un espacio de trabajo, por qué la suscripción del propietario lo elimina o no, y abrir la página de suscripción canónica para una actualización o renovación. Los cambios de derechos se aplican a envíos futuros de secuencias en vivo existentes sin editar sus bloques.
- Diagnosticar por qué el envío está pausado y restaurar pausas elegibles por rebote duro después de confirmar la limpieza de la lista.
- Inspeccionar supresión de rebotes, quejas e higiene de email de destinatarios exactos, y limpiar rebotes obsoletos elegibles sin exponer la lista de supresión SES compartida.
- Configurar información de producto de la empresa, valores predeterminados de identidad de envío a nivel de cuenta, renombrar perfiles individuales de remitente y responder a, gestionar dominios de remitente e inspeccionar ejemplos de integración para marcos comunes.
Cada herramienta MCP publicada incluye anotaciones explícitas de readOnlyHint, destructiveHint y openWorldHint para que los clientes compatibles puedan mostrar affordances precisas de uso de herramientas. Las herramientas también publican definiciones de outputSchema y devuelven structuredContent, dando a clientes y modelos formas de resultados legibles por máquina para llamadas de seguimiento.
Configuración rápida
La ruta de configuración más fácil es el asistente de Sequenzy:
npx @sequenzy/setup
El asistente abre el flujo de inicio de sesión en el navegador, crea una clave API personal, detecta clientes de IA compatibles y los configura automáticamente cuando es posible.
MCP remoto alojado
Para clientes que admiten MCP HTTP Streamable, usa el endpoint alojado de Sequenzy en lugar de ejecutar un proceso stdio local:
https://api.sequenzy.com/v1/mcp
ChatGPT y el directorio de plugins de OpenAI usan la superficie alojada revisada:
https://api.sequenzy.com/v1/mcp/openai
Esa superficie comparte la misma implementación y mantiene el conjunto de herramientas estándar excepto por seis operaciones: connect_integration, create_api_key, create_webhook, list_webhook_deliveries, replay_webhook_delivery y rotate_sequence_inbound_webhook_secret. La retroalimentación sigue disponible con un esquema reducido para retroalimentación de producto generalizada y solicitada explícitamente.
Los clientes remotos deben autenticarse con el flujo OAuth de Sequenzy cuando sea compatible. Los clientes locales y de automatización aún pueden usar el paquete stdio a continuación con SEQUENZY_API_KEY.
El endpoint alojado y el paquete stdio admiten la especificación MCP 2026-07-28 mientras permanecen compatibles con clientes de la era 2025. Los clientes HTTP modernos usan descubrimiento por solicitud y encabezados de método; los clientes existentes siguen funcionando a través del mismo endpoint y comando de paquete.
Archivos de descubrimiento legibles por máquina:
- Manifiesto del servidor MCP:
server.json - Tarjeta de agente:
.well-known/agent-card.json - Manifiesto de capacidades del agente:
agent-capability.json - Metadatos de habilidad de OpenClaw:
openclaw/skill.json
Datos y privacidad
Sequenzy envía a un cliente MCP solo los datos necesarios para la herramienta que el usuario le pide ejecutar, dentro del espacio de trabajo seleccionado y los alcances de clave u OAuth otorgados a ese cliente. Dependiendo de la herramienta solicitada, esto puede incluir nombres e IDs de espacios de trabajo; datos de contacto, consentimiento, audiencia, atributos, eventos, participación, respuestas, encuestas y comercio de suscriptores; contenido de campañas y automatizaciones; análisis de entrega; y estado de integraciones o webhooks. Consulta la Política de Privacidad de Sequenzy para las categorías completas, propósitos, destinatarios, períodos de retención y controles de usuario.
No uses atributos personalizados, eventos, notas, formularios, muestras de webhook, variables de email o retroalimentación de propósito abierto para enviar datos de tarjetas de pago, datos de salud o médicos, identificadores gubernamentales, datos biométricos o genéticos, credenciales de autenticación, datos demográficos sensibles o geolocalización precisa.
La ruta revisada por OpenAI declara y aplica esas restricciones en entradas relevantes de propósito abierto, incluyendo rutas de atributos anidadas como profile.ssn, pares de coordenadas como lat/lng y prosa etiquetada como Religion: ... o GPS coordinates: .... Rechaza una URL con credenciales en cualquier argumento, ya sea que la credencial esté en la información de usuario, ruta, consulta o fragmento, como un redirectUrl de formulario o popup con un token de acceso o firma de URL. Los selectores de atributos restringidos dentro de etiquetas de fusión se rechazan sin bloquear copia autoral ordinaria sobre el mismo tema. En esta superficie, render_email acepta datos de muestra o un subscriber en línea verificado por políticas, pero no subscriberId, por lo que no puede resolver atributos personalizados almacenados no inspeccionados. Sus resultados eliminan campos restringidos, errores API crudos, payloads de depuración, identificadores internos de solicitud/seguimiento/sesión, identificadores innecesarios de cuenta o credenciales, URLs almacenadas con credenciales y URLs de webhook entrantes. El MCP remoto estándar y el paquete stdio local conservan el contrato completo para clientes confiables, incluyendo configuración de integración basada en credenciales, secretos de clave API y webhook de un solo uso, URLs de webhook entrantes y errores API detallados. Prefiere el panel o el CLI local cuando los secretos deban permanecer fuera de una conversación de IA. submit_feedback se ejecuta solo cuando el usuario lo solicita explícitamente; su esquema OpenAI se limita a un mensaje generalizado, categoría y contexto de flujo de trabajo opcional, y la ruta rechaza texto de retroalimentación que contenga una dirección de email o ID de recurso.
Lo que garantiza la superficie revisada es limitado. Reconoce datos restringidos por forma: palabras de nombres de campo en inglés como passport_id, user.ssn o api_secret en cualquier profundidad de anidamiento, prosa etiquetada como Diagnosis: ..., formas de credenciales conocidas, pares de coordenadas decimales y URLs con credenciales dentro de cualquier cadena, incluyendo HTML. No interpreta prosa sin etiquetar, nombres de campo no ingleses o valores que un cliente ofusca deliberadamente; esos permanecen cubiertos por la restricción de uso anterior en lugar del filtro.
Configuración manual
Todos los clientes MCP stdio usan el mismo comando:
- Comando:
npx - Argumentos:
-y @sequenzy/mcp - Env requerido:
SEQUENZY_API_KEY=seq_user_your_key_here
Variables de entorno opcionales:
SEQUENZY_API_URL- URL base de la API de Sequenzy. Por defectohttps://api.sequenzy.com.SEQUENZY_APP_URL- URL base del panel de Sequenzy utilizada por los ayudantes de URL de aplicación. Por defectohttps://sequenzy.com.
Claude Desktop
Añade esto a tu configuración de 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"
}
}
}
}
Reinicia Claude Desktop después de editar la configuración.
Claude Code
claude mcp add --scope user --env=SEQUENZY_API_KEY=seq_user_your_key_here sequenzy -- npx -y @sequenzy/mcp
En Windows nativo, envuelve npx con cmd /c:
claude mcp add --scope user --env=SEQUENZY_API_KEY=seq_user_your_key_here sequenzy -- cmd /c npx -y @sequenzy/mcp
Para una configuración de proyecto compartida, usa .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
Configuración manual de Codex en ~/.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
Instala Sequenzy desde el Marketplace de Cursor para una conexión alojada con OAuth de Sequenzy. El plugin se conecta a:
https://api.sequenzy.com/v1/mcp
Después de instalar, completa el flujo de inicio de sesión en el navegador. El agente de Cursor puede entonces usar herramientas de Sequenzy desde el chat, incluso cuando Grok es el modelo seleccionado.
Para una configuración manual local stdio en su lugar, añade esto a ~/.cursor/mcp.json:
{
"mcpServers": {
"sequenzy": {
"command": "npx",
"args": ["-y", "@sequenzy/mcp"],
"env": {
"SEQUENZY_API_KEY": "seq_user_your_key_here"
}
}
}
}
Windsurf
Usa la misma forma JSON que Cursor.
- macOS:
~/Library/Application Support/Windsurf/mcp.json - Windows:
%APPDATA%\Windsurf\mcp.json
VS Code Copilot
VS Code usa un objeto servers:
{
"servers": {
"sequenzy": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@sequenzy/mcp"],
"env": {
"SEQUENZY_API_KEY": "seq_user_your_key_here"
}
}
}
}
Otros clientes MCP
Para OpenClaw, Hermes y otros clientes compatibles con MCP, apunta el cliente a npx -y @sequenzy/mcp y establece SEQUENZY_API_KEY.
Obtener una clave API
- Abre el panel de Sequenzy.
- Usa el flujo de configuración MCP para crear una clave personal, o abre Configuración -> Claves API para crear una clave de empresa.
- Elige un preset de permisos o los alcances personalizados exactos que la integración necesita.
- Añade la clave a tu configuración de cliente MCP.
Las claves personales comienzan con seq_user_. Puedes revocarlas en cualquier momento en el panel.
Las claves de empresa también se pueden limpiar sin exponer secretos. Llama a list_api_keys para comparar el ID de clave, nombre, prefijo no secreto, permisos, marca de tiempo del último uso y marcador isCurrent, luego pasa el ID exacto a revoke_api_key. delete_api_key es un alias de compatibilidad para la misma operación permanente. Las respuestas de listado y revocación nunca contienen la clave en texto plano o el hash de clave almacenado.
Recuperarse de permisos de clave API faltantes
Si una herramienta informa un alcance faltante como campaigns:read o templates:write, llama a get_account. Su campo apiKeyPermissions lista la identidad y tipo de clave actual, alcances, alcances comunes de lectura de marketing faltantes y un manageUrl directo. La ruta revisada por OpenAI devuelve los mismos permisos sin el ID de cuenta del usuario o la identidad de la clave activa. Las claves personales abren Claves API de Cuenta; las claves de empresa abren la configuración de Claves API del espacio de trabajo seleccionado. Si la clave no incluye account:read, abre el panel de Sequenzy directamente y elige la página de Claves API correspondiente.
Los permisos son editables en el lugar, así que abre manageUrl. Para una clave de empresa, usa list_api_keys y su indicador isCurrent para identificar la clave activa antes de editarla, luego reintenta la herramienta fallida sin reemplazar la credencial o reiniciar el cliente. Un agente que usa una clave de empresa con api_keys:manage puede en su lugar llamar a update_api_key; las claves personales deben editarse en la página a nivel de cuenta porque esa herramienta solo gestiona claves de empresa. Sus entradas scopes y preset reemplazan toda la selección de permisos en lugar de fusionar, así que conserva cada alcance existente que aún se necesite. Las conexiones OAuth alojadas pueden alternativamente desconectarse y reautorizarse con permisos más amplios.
Cuando la clave activa carece de api_keys:manage, llama a
request_api_key_handoff en lugar de reintentar update_api_key. Requiere
account:read y devuelve una URL de revisión del propietario con el nombre de clave solicitado,
los permisos y el predecesor opcional ya completados. Nunca crea ni devuelve una
clave; el propietario del espacio de trabajo revisa el formulario, crea el reemplazo en el
navegador y lo copia en el cliente. Pasa replaceApiKeyId: "current" para
ofrecer la revocación de la clave activa después de que se cree el reemplazo. Si la
clave activa también carece de account:read, usa el panel de control directamente.
El ajuste predeterminado Acceso de agente más seguro incluye lists:write y
tags:write, por lo que los agentes pueden crear y actualizar definiciones de listas y etiquetas, e
incluye subscribers:tag para aplicar etiquetas a contactos existentes. También
incluye ab_tests:read, ab_tests:write y sequences:write, para que los agentes puedan
auditar y editar el texto de las variantes A/B de secuencias, incluidos los mensajes de abandono de carrito y de navegación.
No incluye subscribers:write, por lo que no puede agregar contactos a
listas ni eliminarlos de listas. Eliminar una lista o etiqueta aún requiere el
permiso lists:delete o tags:delete correspondiente.
El ajuste de redacción con IA incluye subscribers:write, por lo que los agentes de redacción pueden
crear una lista además de generarla. Las importaciones que aplican listIds también necesitan
lists:write; la inscripción en secuencias o la entrega con doble opt-in adicionalmente requiere
automations:trigger.
Herramientas
La superficie estándar expone actualmente 243 herramientas MCP. La superficie revisada por OpenAI expone 237; solo se omiten las seis operaciones enumeradas anteriormente.
Las herramientas rechazan argumentos que no declaran en lugar de ignorarlos silenciosamente. Los errores nombran los campos no admitidos, enumeran los argumentos admitidos y brindan orientación específica para errores comunes, como filtros de suscriptores inventados u opciones de ordenamiento.
Cuenta, Empresas, Configuración
| Herramienta | Descripción |
|---|---|
get_account | Obtén información de la cuenta, empresas disponibles, permisos actuales de la clave y la URL de gestión de claves de API. |
select_company | Establece la empresa activa para futuras llamadas a herramientas. |
get_app_urls | Construye URLs de paneles para campañas, páginas de aterrizaje, secuencias, correos electrónicos, configuraciones, gestión de suscripciones, dominios y detalles de correos enviados. settingsTab: "billing" se resuelve a Cuenta -> Suscripción. |
create_company | Crea una nueva empresa o marca. |
get_company | Lee detalles de la empresa, información del producto, contexto de marca, localización, configuraciones de seguimiento de respuestas, valores predeterminados actuales de De/Responder a, y el derecho efectivo de solo lectura emailBranding con motivo de plan/estado y URL de suscripción; STO se identifica explícitamente como solo para campañas. |
update_company | Edita información del producto, contexto de marca, tema de correo electrónico, seguimiento de respuestas y valores predeterminados de perfil De/Responder a a nivel de cuenta o nombres. |
get_sync_rules | Lee las reglas de evento a etiqueta de la empresa y si utiliza el ajuste preestablecido de plataforma heredado. |
update_sync_rules | Reemplaza todas las reglas de sincronización; pasa [] para deshabilitarlas o null para optar por el ajuste preestablecido de plataforma SaaS/comercio electrónico. |
get_shopify_automation_settings | Lee la configuración de abandono de navegación, abandono de carrito y caída de precios para la tienda Shopify conectada. |
update_shopify_automation_settings | Actualiza parcialmente la configuración de automatización de Shopify o restablece una sección individual a sus valores predeterminados de plataforma. |
create_api_key | Crea una clave de API de empresa y devuelve su secreto de un solo uso en MCP estándar; omitido en la ruta revisada por OpenAI. |
request_api_key_handoff | Prepara una URL de creación/rotación revisada por el propietario cuando la clave activa no puede gestionar claves de API por sí misma. |
list_api_keys | Lista las claves de API de la empresa como metadatos no secretos para identificación y limpieza seguras. |
update_api_key | Renombra una clave de API de empresa o reemplaza su ajuste preestablecido de permisos o ámbitos sin cambiar el valor de la clave. |
revoke_api_key | Revoca permanentemente una clave de API de empresa exacta por ID después de verificarla con list_api_keys. |
delete_api_key | Alias de compatibilidad para revoke_api_key. |
list_websites | Lista los dominios de envío con estado agregado almacenado, SPF, DKIM y MAIL FROM. |
add_sending_domain | Agrega un dominio de envío y devuelve sus registros de configuración DNS específicos de la cohorte. |
add_website | Alias de compatibilidad para add_sending_domain. |
check_website | Lee los detalles de verificación SPF, DKIM, MAIL FROM y agregados almacenados de un dominio de envío. |
verify_sending_domain | Ejecuta una verificación nueva de DNS/proveedor del dominio de envío y devuelve el estado actual y diagnósticos. |
list_integrations | Lista las integraciones conectadas con salud de conexión y sincronización, sin devolver credenciales. |
get_sending_status | Diagnostica envíos activos, en pausa o suspendidos, incluidos denominadores de aplicación, revisiones de control y pasos de remediación. |
resume_sending | Restaura una pausa elegible por rebote duro después de confirmar explícitamente que la lista ha sido saneada. |
get_tracking_settings | Lee los valores predeterminados de apertura/clic a nivel de cuenta y de la API transaccional, cancelación de suscripción, atribución, UTM, dominio de clic, seguimiento de respuestas y configuración de doble opt-in. |
update_tracking_settings | Actualiza los valores predeterminados de seguimiento a nivel de cuenta y de la API transaccional, atribución, UTM y doble opt-in a nivel de cuenta. |
get_integration_guide | Obtén ejemplos de integración específicos del framework. |
get_integration | Inspecciona una integración conectada, su cableado de eventos, segmentación de listas, actividad reciente y recomendaciones. |
list_integration_capabilities | Compara capacidades de proveedores estén o no conectados. |
connect_integration | Conecta proveedores compatibles con clave de API o secreto de webhook en MCP estándar, incluidos webhooks gestionados de Lemon Squeezy, Attio solo de salida y importación opcional de historial de PostHog/Segment; omitido en la ruta revisada por OpenAI. |
get_event_schema | Inspecciona ejemplos de cargas útiles de eventos publicados, rutas de propiedades, tipos y etiquetas de fusión por proveedor. |
list_integration_activity | Lee el registro de actividad de webhook y sincronización retenido específico de la integración. |
set_integration_sync_enabled | Habilita o deshabilita importaciones masivas y rellenos mientras deja los webhooks en vivo conectados. |
set_integration_list_targeting | Elige a qué listas se unen los contactos creados por una integración compatible en futuras escrituras del proveedor. |
sync_integration | Pon en cola ingresos de pago, usuarios de Supabase o una importación de historial de eventos de PostHog/Segment usando la configuración de integración guardada. |
get_integration_pixel | Lee el estado en vivo de píxel/configuración de Shopify y distingue eventos oscuros confirmados de una lectura desconocida. |
activate_integration_pixel | Instalar o reasignar el píxel de la tienda de Shopify; idempotente cuando ya está actualizado. |
list_web_tracking_keys | Listar claves de seguimiento web publicables, restricciones de origen, estado de uso y fragmentos de instalación. |
get_web_tracking_key | Obtener una clave de seguimiento web con su fragmento de instalación exacto y su punto de conexión de ingesta. |
create_web_tracking_key | Crear una clave de seguimiento publicable para una tienda o sitio web que no sea de Shopify. |
update_web_tracking_key | Renombrar, restringir, revocar o reactivar una clave de seguimiento web. |
delete_web_tracking_key | Eliminar permanentemente una clave de seguimiento web después de que se haya quitado su fragmento. |
list_sender_profiles | Listar perfiles de remitente y de respuesta, valores predeterminados y preparación del dominio de envío. |
update_sender_profile | Renombrar un perfil de remitente o de respuesta sin cambiar los valores predeterminados de la cuenta. |
delete_sender_profile | Eliminar permanentemente un perfil de remitente no utilizado, con protecciones para superficies de envío activas y el último remitente restante. |
get_notification_preferences | Leer la configuración de notificaciones de cuenta por empresa del usuario actual y los modos admitidos, incluido el informe semanal de los lunes. |
update_notification_preferences | Actualizar los modos de entrega de notificaciones de cuenta del usuario actual, incluida la exclusión del informe semanal, sin afectar a los compañeros de equipo. |
render_email | Renderizar HTML final seguro para correo electrónico y diagnosticar etiquetas de fusión no resueltas, incluidos errores tipográficos ocultos por valores predeterminados. La ruta revisada por OpenAI acepta datos de muestra o un suscriptor en línea verificado por políticas, no un ID de suscriptor almacenado. |
get_sending_status mantiene el estado de pausa respaldado por Postgres, los controles de revisión y la remediación disponibles cuando los análisis de salud del remitente no están temporalmente disponibles; en ese caso degradado, senderHealth es null. |
render_email devuelve unresolvedMergeTags para que los llamadores puedan distinguir un nombre desconocido de una etiqueta reconocida que simplemente está en blanco para el contacto previsualizado. Los nombres desconocidos se informan incluso cuando un filtro default proporcionó texto: por ejemplo, {{ subscriber.frstName | default: "there" }} genera un saludo plausible para cada contacto mientras omite los nombres almacenados. Un nombre reconocido que está en blanco para un contacto no se informa cuando se usa su valor predeterminado. La ruta revisada por OpenAI rechaza selectores de atributos personalizados restringidos dentro de las etiquetas de combinación. También omite el argumento subscriberId; use un subscriber en línea verificado por políticas, u omita los datos del suscriptor para una vista previa de muestra.
Para representar un paso de secuencia cuyo nodeType es action_ab_test, pase el sequenceId y nodeId del paso junto con un variantId de get_sequence.sequence.emails[].abTest.variants. Estos pasos no tienen correo electrónico propio, por lo que la variante es obligatoria; leer y representar su copia en competencia también requiere el alcance ab_tests:read.
Para Supabase, sync_integration reutiliza el proyecto, esquema, tabla, selección de listas y mapeos de consentimiento guardados en el panel. No puede apuntar a una tabla arbitraria. Ejecútelo después de instalar el disparador de base de datos en vivo para importar usuarios que existían antes de que se instalara el disparador, luego consulte get_integration y list_integration_activity para ver el progreso y los resultados a nivel de fila.
set_integration_sync_enabled controla solo importaciones masivas y rellenos; no detiene el webhook en vivo de un proveedor para crear contactos. Use set_integration_list_targeting para elegir sus futuras membresías de lista: null sigue los valores predeterminados del espacio de trabajo, [] no se une a ninguna lista, y un arreglo poblado apunta a esas listas. El cambio no es retroactivo y nunca elimina membresías existentes. Tampoco detiene las secuencias predeterminadas de any_contact, que inscriben contactos sin lista; las secuencias explícitas de any_list y de listas específicas requieren una membresía coincidente. Combine el direccionamiento de listas con pause_sequence_enrollments cuando esas inscripciones predeterminadas también deban detenerse. Supabase, Stripe, Shopify, Wix y Webflow admiten este control.
Para PostHog, sync_integration reinicia la importación del historial de eventos desde el principio con la clave de API personal almacenada. Los eventos importados se deduplican, por lo que reintentar una importación fallida no crea duplicados.
Para Segment, connect_integration en MCP estándar puede opcionalmente importar historial de eventos reciente de Unify después de que el webhook en vivo esté conectado. La importación recorre los contactos existentes a través de la API de Perfil, cubre los 14 días más recientes de la API, omite contactos sin un perfil coincidente y deduplica de manera segura reintentos y superposiciones de webhook en vivo. Las nuevas conexiones omiten llamadas automáticas de página/pantalla a menos que esos nombres estén explícitamente en la lista de permitidos. Los secretos del webhook de Segment deben tener 16-153 bytes UTF-8. En la ruta revisada por OpenAI, que omite connect_integration, conecte Segment en el panel o CLI local en su lugar. Use sync_integration para reintentar con las credenciales guardadas.
Para Lemon Squeezy, pase provider: "lemon_squeezy", una clave de API y el ID de tienda numérico como providerAccountId. Omita webhookSecret para la configuración administrada predeterminada; la respuesta informa webhookProvisioning y testMode. Proporcione un secreto de firma de 16-40 caracteres solo para configuración manual de webhook, usando el webhookUrl devuelto. Las credenciales nunca se devuelven.
Para Attio, connect_integration en MCP estándar acepta un token de acceso al espacio de trabajo sin secreto de webhook, con settings.listMap opcional como un mapa de IDs de listas de Sequenzy a UUIDs de listas de personas de Attio o slugs de API, más syncCompanyFromDomain para controlar la coincidencia de empresas desde dominios de correo no gratuitos. En la ruta revisada por OpenAI, conecte Attio en el panel o CLI local, luego use update_attio_settings para la misma configuración. La integración es solo de salida: las nuevas incorporaciones a listas de Sequenzy mapeadas actualizan la persona y la agregan a la lista de Attio; las eliminaciones de listas no eliminan registros de Attio.
Llame a get_event_schema antes de escribir una etiqueta de combinación {{event.*}} o un filtro de propiedad de evento. Omita eventName para listar eventos integrados documentados; proporcione un nombre de evento para recibir cargas útiles de ejemplo y rutas de propiedad específicas del proveedor, y opcionalmente filtre por provider. Los nombres de eventos personalizados siguen siendo válidos incluso cuando el resultado informa documented: false; eso solo significa que no se publica una muestra de referencia. Use la actividad de integración o las inscripciones de secuencia para datos de entrega reales porque esta herramienta devuelve datos de referencia estáticos.
Para un nuevo dominio de envío, llame a add_sending_domain, publique los registros DNS en el website.dnsRecords devuelto, espere la propagación de DNS y luego llame a verify_sending_domain. Publique cada registro devuelto en lugar de asumir un proveedor fijo o un recuento de registros: los dominios unificados incluyen DMARC obligatorio, mientras que los dominios heredados pueden devolver registros de MAIL FROM de Amazon SES y de respuesta de entrada. Si se intenta la verificación antes de la creación, el error apunta de vuelta a add_sending_domain con el dominio solicitado.
Para Shopify, llame a get_integration_pixel antes de confiar en vistas de productos, actividad de carrito o disparadores de abandono de navegación. El resultado se lee en vivo de Shopify porque los comerciantes pueden eliminar el píxel independientemente. Si pixel.healthy es falso, dependentEvents nombra los disparadores que no pueden llegar; llame a activate_integration_pixel para instalar o redirigir el píxel. La activación es idempotente, y los eventos comienzan en la próxima visita a la tienda en lugar de rellenarse retroactivamente.
Para sitios web personalizados, sin cabeza, de tickets o SaaS, use list_web_tracking_keys antes de confiar en disparadores de vista de producto o carrito. Cree una clave con una lista de permitidos de origen explícita, instale el installSnippet devuelto, luego haga que el backend autenticado del cliente genere una prueba de corta duración a través de POST /api/v1/web-tracking-identities y llame a sequenzy.identify(email, identityToken) al iniciar sesión o al finalizar la compra. Una clave publicable por sí sola solo registra actividad anónima y no puede disparar automatización de suscriptores. El fragmento devuelto instala stubs de métodos síncronos antes de su cargador asíncrono, por lo que las llamadas de identidad y eventos realizadas durante el arranque de la página se ponen en cola hasta que el SDK esté listo. Prefiera revocar una clave con update_web_tracking_key antes de eliminarla permanentemente.
Las nuevas empresas comienzan sin reglas de sincronización. El preset heredado sigue disponible para empresas SaaS/comercio electrónico pasando null a update_sync_rules; las empresas de servicios y consultoría normalmente deben mantener [] o definir reglas explícitas.
Use list_sender_profiles para encontrar el ID de perfil, luego llame a update_sender_profile para cambiar solo su nombre para mostrar. Pase type: "reply" para un perfil de respuesta; el remitente es el predeterminado. La dirección, el dominio de envío y las selecciones predeterminadas de De/Responder a nivel de cuenta permanecen sin cambios. Renombrar requiere el alcance companies:manage.
Use delete_sender_profile para eliminar permanentemente una identidad de remitente obsoleta. Rechaza el último remitente y cualquier perfil utilizado por una campaña en vivo, secuencia activa (incluida una anulación de paso) o correo transaccional. Los borradores elegibles y los valores predeterminados de cuenta se mueven al fallbackSenderProfileId devuelto; revíselo antes de enviar. Los perfiles de respuesta no son compatibles con esta herramienta de eliminación.
El abandono de carrito de Shopify está habilitado por defecto. Se dispara ecommerce.cart_abandoned después de una hora de inactividad del carrito, con un período de enfriamiento de 24 horas por suscriptor. Use update_shopify_automation_settings para cambiar los campos cartAbandonment.enabled, delayHours o cooldownHours; pase cartAbandonment: null para restaurar esos valores predeterminados sin cambiar la configuración de abandono de navegación o caída de precio. Los valores de tiempo deben ser positivos; delayHours está limitado a 168 y cooldownHours a 720.
Suscriptores
| Herramienta | Descripción |
|---|---|
add_subscriber | Agregar un suscriptor; el estado es solo de creación, así que use update_subscriber para un contacto existente. |
create_subscriber_import | Poner en cola hasta 5,000 registros CRM completos con un idempotencyKey opcional seguro para reintentos; los controles de higiene de correo habilitados continúan por separado después de la ingesta. |
get_subscriber_import | Leer progreso, conteos de resultados de filas y resúmenes de fallos para una importación en cola. |
update_subscriber | Actualizar campos nativos de perfil y teléfono, consentimiento SMS, atributos, etiquetas o estado global. |
remove_subscriber | Cancelar suscripción preservando el historial de supresión, o eliminar permanentemente solo con hardDelete: true. |
get_subscriber | Obtener detalles del suscriptor por correo electrónico o ID externo. |
search_subscribers | Buscar por consulta, etiquetas, lista, estado, segmento o un atributo personalizado, con paginación automática o reanudable. |
trigger_subscriber_event | Emitir un evento personalizado exactamente como lo haría una integración, aplicando reglas de sincronización y coincidiendo con disparadores de secuencia. |
trigger_subscriber_events | Emitir varios eventos personalizados ordenados para un suscriptor. |
import_subscriber_events | Importar hasta 25 eventos identificados por fuente entre contactos; el historial silencioso requiere que cada fila de un contacto tenga más de una hora. |
bulk_add_subscriber_tags | Agregar etiquetas a hasta 500 suscriptores existentes; requiere subscribers:tag y puede requerir tags:write. |
bulk_remove_subscriber_tags | Eliminar etiquetas de hasta 500 suscriptores existentes; requiere subscribers:tag o subscribers:write. |
Use create_subscriber_import para la incorporación de CRM en lugar de hacer un bucle sobre add_subscriber. Una llamada acepta 5,000 registros completos y devuelve un ID de importación asíncrono; consúltelo con get_subscriber_import. Una importación completed aún puede contener fallos de filas, así que inspeccione failedCount y failedReasons. Cada fila excluida está contabilizada: skippedReasons suma a skippedCount, y failedReasons suma a failedCount. Informe cualquier deficiencia con el ID de importación en lugar de adivinar qué filas se omitieron. Cuando la higiene de correo está habilitada, los controles de entregabilidad continúan por separado después de la ingesta y los resultados aparecen en la salud de la lista; el estado de importación no espera ni incluye esos veredictos. Los veredictos inválidos se suprimen de envíos posteriores. Use optInMode: "confirmed" solo cuando el consentimiento ya fue verificado.
Para import_subscriber_events, el correo electrónico es obligatorio cuando una fila puede crear un nuevo contacto; externalId puede estar solo solo para un contacto existente. Proporcione un eventId estable en cada fila. Reintentar reutiliza el recibo original y reintenta idempotentemente la recuperación posterior. La clasificación histórica es por contacto: si alguna fila de un contacto es reciente, todo el grupo de ese contacto usa la ruta de efectos secundarios en vivo.
Para la supresión de cumplimiento, llame a update_subscriber con status: "unsubscribed" (o use remove_subscriber sin hardDelete). No reintente add_subscriber con un estado diferente: el estado en esa herramienta se aplica solo cuando el contacto se crea por primera vez, y un resultado omitido no coincidente se informa como un error.
Cuando add_subscriber omite listIds, un contacto creado por la llamada sigue
las listas predeterminadas del espacio de trabajo, mientras que un contacto existente conserva
sus membresías de lista actuales. Pase los IDs de lista explícitamente cuando un contacto existente
deba unirse a listas específicas; pase [] para no apuntar a ninguna lista.
update_subscriber.phone escribe el campo de teléfono nativo que se muestra en el contacto,
no un atributo personalizado. Pase smsConsent: true solo después de verificar el consentimiento
expreso por escrito, o false para excluir al contacto. Cambiar el teléfono sin
smsConsent restablece el consentimiento de SMS porque el consentimiento pertenece al número anterior.
add_subscriber, update_subscriber y create_subscriber_import aceptan una
zona horaria IANA timezone como America/New_York. El valor se almacena en el
perfil de contacto nativo y permite la entrega de campañas localizadas para el destinatario. Pase una
zona horaria vacía a update_subscriber para borrarla; los valores no válidos de las filas de importación
se ignoran sin rechazar el resto de la importación.
Productos y Entrega Digital
| Herramienta | Descripción |
|---|---|
list_products | Lista productos sincronizados desde Stripe, Shopify, WooCommerce, manuales o datos de Commerce API. |
upsert_products | Crea o actualiza hasta 100 productos de Commerce API claveados por su ID de producto. |
delete_product | Elimina un producto previamente enviado a través de Commerce API. |
attach_product_file | Adjunta un archivo de entrega alojado o cargado localmente a un producto. |
remove_product_file | Elimina un archivo de entrega de producto adjunto. |
sync_products | Pone en cola una sincronización del catálogo de productos de Stripe, opcionalmente seleccionando una integración por ID. |
Después de adjuntar un archivo de entrega de producto, los eventos de compra coincidentes incluyen download.url y download.name, por lo que los correos activados por compras pueden usar etiquetas de combinación como {{event.download.url}}.
Para productos de Stripe, list_products devuelve cada precio activo como una variante, con el ID de precio de Stripe en variantId. Use ese ID para apuntar a un precio exacto en una secuencia de compra incluso cuando no sea el precio predeterminado del producto.
Recursos de Imagen
| Herramienta | Descripción |
|---|---|
upload_image_asset | Carga una imagen de correo y devuelve su registro de medios alojado más un bloque de imagen listo para insertar. |
La herramienta acepta imágenes PNG, JPEG, GIF y WebP de hasta 5MB. Los clientes stdio locales
pueden pasar filePath. Los clientes alojados/remotos que pueden acceder a los bytes de los adjuntos pueden
pasar imageBase64 con filename. Proporcione altText para accesibilidad, luego
use displayWidthPercent, cropHeight, objectFit (cover o contain) y
align para estandarizar la presentación de capturas de pantalla. El imageBlock devuelto puede
copiarse directamente en el bloque de matriz aceptado por las herramientas de campaña, secuencia,
plantilla y correo transaccional.
Los bytes de imagen autenticados siempre se cargan al origen configurado por
SEQUENZY_API_URL, incluso si un proxy inverso devuelve una URL de carga equivalente
bajo otro host. Las credenciales de API nunca se reenvían a ese origen
alternativo.
{
"filePath": "/Users/me/Desktop/product-results.png",
"altText": "Product results dashboard",
"displayWidthPercent": 100,
"cropHeight": 320,
"objectFit": "cover",
"align": "center"
}
Listas, Etiquetas, Segmentos
| Herramienta | Descripción |
|---|---|
list_tags | Lista todas las etiquetas. |
create_tag | Crea una definición de etiqueta con un color opcional. |
update_tag | Actualiza el color de una etiqueta. |
delete_tag | Elimina una etiqueta y la quita de los suscriptores. |
list_lists | Lista las listas de suscriptores. |
create_list | Crea una lista de suscriptores. |
update_list | Renombra o describe una lista de suscriptores. |
delete_list | Elimina una lista de suscriptores. |
add_subscribers_to_list | Agrega hasta 500 suscriptores a una lista desde una matriz de correos. |
remove_subscribers_from_list | Elimina hasta 500 suscriptores de una lista. |
list_segments | Lista segmentos guardados y conteos. |
create_segment | Crea segmentos filtrados por matriz anidados o de mismo elemento. |
update_segment | Actualiza nombre, filtros, grupo raíz u operador de unión del segmento. |
delete_segment | Elimina un segmento (requiere segments:delete). |
get_segment_count | Previsualiza el conteo activo de suscriptores para un segmento. |
Para exportaciones de suscriptores, search_subscribers acepta listId, listName exacto,
o list (ID primero, luego nombre exacto). También acepta attribute más
attributeValue, con attributeOperator para contains, comparaciones numéricas,
o is_not_empty; la forma combinada de "attributeName:value" sigue siendo compatible.
Los filtros se combinan con AND; use un segmento guardado para lógica OR, grupos anidados,
exclusiones, participación o condiciones de eventos. Si se omite limit, la herramienta
obtiene automáticamente cada página coincidente. Para lecturas fragmentadas, pase limit y
siga pagination.nextCursor (o pagination.nextOffset) mientras hasMore sea
verdadero. offset y page son compatibles por debajo de 1,000,000 coincidencias omitidas; use el
cursor para audiencias más profundas.
Para la población masiva de listas, use add_subscribers_to_list; el endpoint de API subyacente es POST /api/v1/lists/{listId}/subscribers sin sufijo /bulk:
{
"emails": ["ada@example.com", "grace@example.com"],
"duplicateStrategy": "skip",
"enrollInSequences": false,
"optInMode": "default"
}
Envíe como máximo 500 correos por solicitud. Los límites estándar de tasa de API siguen aplicándose: 100 solicitudes por minuto por clave de API y 20 solicitudes por segundo en ráfaga. Para importaciones CLI impulsadas por CSV, los encabezados de correo aceptados incluyen email, e-mail, email address y mail; si no existe un encabezado reconocido, el CLI lee la primera columna.
Los filtros de segmento admiten atributos, eventos, membresía en segmentos guardados, eventos de participación, reglas de compra de productos de Stripe y reglas de compra de productos de comercio. Use filterJoinOperator: "or" para segmentos de coincidencia-cualquiera, o pase un grupo root v2 para lógica anidada.
Para atributos de matriz de objetos, use rutas comodín como
history_events[].eventvenue_id:2103. Cuando un grupo AND también filtra
history_events[].showing_date, ambas condiciones deben coincidir con un
elemento history_events[] compartido; los valores de entradas de historial no relacionadas no se
combinan. Eliminar un segmento requiere segments:delete; segments:write no
es suficiente.
Cada campo de filtro de segmento valida sus propios operadores:
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, campos de participación de correo:is,is_not,at_least,less_than_countemailBounced: también admiteis_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
Ejemplos de filtros de productos de 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" }
Los filtros de productos de comercio coinciden con productos comprados a través de pedidos de comercio. Los valores pueden ser provider:productId para IDs con alcance de proveedor (shopify, woocommerce o api), un ID de producto simple para coincidir con cualquier proveedor, o provider:productId:count para operadores de umbral:
{ "field": "commerceProduct", "operator": "is", "value": "api:starter-kit" }
{ "field": "commerceProduct", "operator": "at_least", "value": "shopify:42:2" }
Campos de participación como emailSent, emailDelivered, emailOpened, emailClicked, emailBounced y emailComplained aceptan ventanas móviles como 7d, 30d, 90d, 180d o all. Los operadores de presencia pueden delimitar por política de entrega con marketing:<timeRange> (tráfico de campaña con política de marketing, automatización y API de envío) o transactional:<timeRange> (envíos con política transaccional); los alcances de política requieren una instantánea de política al momento del envío, por lo que los eventos ambiguos más antiguos de automatización y API de envío permanecen disponibles solo a través de filtros sin alcance. emailBounced también admite valores con alcance con is_temporary_bounce y is_permanent_bounce. Con at_least y less_than_count, use count:timeRange, como 10:30d o 10:all. Los operadores de presencia pueden usar en su lugar un alcance de campaña como campaign:cmp_123; los alcances de campaña y tipo de correo no se pueden combinar con operadores de conteo.
Sincronizaciones de Audiencia (Meta Ads)
| Herramienta | Descripción |
|---|---|
list_audience_syncs | Lista sincronizaciones de segmento a audiencia con horario y estado de última sincronización. |
list_ad_accounts | Lista las cuentas publicitarias de Meta disponibles para sincronizar. |
create_audience_sync | Envía un segmento a una audiencia personalizada de Meta según un horario. |
update_audience_sync | Cambia la frecuencia de sincronización (hourly, daily, weekly) o pausa/reanuda. |
delete_audience_sync | Elimina una asignación de sincronización; la audiencia de Meta en sí se conserva. |
sync_audience_now | Activa una carga inmediata fuera del horario regular. |
Requiere que la integración de Meta Ads esté conectada en el panel de Sequenzy (Configuración -> Integraciones). create_audience_sync acepta un segmento existente (segmentId) o una plantilla lista (predefinedSegmentId, por ejemplo zero-ltv, no-purchase-1y, recent-buyers, high-spenders-ecom, non-buyers, engaged): el segmento de plantilla se crea automáticamente en el primer uso, y la primera carga se ejecuta inmediatamente.
Las audiencias son de solo adición: los suscriptores que luego abandonan el segmento permanecen en la audiencia de Meta. Meta requiere 100+ personas coincidentes antes de que una audiencia pueda usarse para la entrega de anuncios.
Plantillas
| Herramienta | Descripción |
|---|---|
list_templates | Lista plantillas con estado de localización, etiqueta y filtrado por isTemplate, y paginación. |
get_template | Lee detalles de plantilla, contenido y variantes localizadas. |
create_template | Crea plantillas desde un prompt, HTML o bloques de Sequenzy; usa isTemplate: true para guardar un diseño maestro reutilizable. |
update_template | Actualiza metadatos de plantilla, texto de vista previa en bandeja de entrada, etiquetas, HTML o bloques; marca o desmarca un maestro con isTemplate. |
set_template_localization | Crea o reemplaza una variante localizada proporcionada por el llamador. |
sync_template_localizations | Pone en cola la traducción por IA para locales no primarios seleccionados o todos los habilitados. |
delete_template | Elimina una plantilla. |
list_templates devuelve 50 cuerpos de correo del más reciente al más antiguo por defecto y acepta un
limit de hasta 100. Avanza offset mediante pagination.count mientras
pagination.hasMore sea verdadero; pagination.total informa el recuento completo de coincidencias,
incluyendo cuerpos de campañas y correos transaccionales.
Establece isTemplate: true en list_templates para devolver solo diseños maestros guardados,
o false para devolver cuerpos de correo ordinarios. Los maestros marcados se ofrecen como
puntos de partida para pasos de secuencia y campañas del panel; comenzar desde uno crea
una copia independiente para que las ediciones dejen el maestro intacto.
La copia de diseño fuente independiente/de secuencia y la reescritura por IA dentro de un diseño seleccionado son actualmente
solo del panel. Esta versión mantiene intencionalmente esos flujos de trabajo en la autoría
interactiva, donde los usuarios pueden revisar la fuente, las traducciones y cualquier copia de respaldo
antes de guardar un paso de secuencia. REST, CLI y MCP no exponen una operación equivalente de diseño fuente independiente/de secuencia.
create_template con prompt genera contenido nuevo sin preservar
un diseño existente; el HTML o los bloques proporcionados crean un cuerpo nuevo sin copiar
automáticamente variantes localizadas. Consulta la documentación de disponibilidad de interfaces.
Las copias de campaña ya funcionan a través de REST POST /api/v1/campaigns y MCP
create_campaign con templateId; no se puede combinar con prompt para una reescritura por IA.
Para contenido completamente nuevo solicitado en lenguaje natural, pasa prompt para que Sequenzy
genere bloques nativos con marca en el servidor. Usa blocks solo para contenido
de Sequenzy terminado proporcionado por el llamador, y usa html solo al preservar
marcado proporcionado o solicitado explícitamente. prompt, blocks y html son mutuamente
excluyentes; style y tone son válidos solo con prompt.
Usa set_template_localization cuando la copia traducida provenga de tu propio
flujo de trabajo de localización. Requiere un locale no primario habilitado, un
subject localizado y exactamente uno de html o blocks. Usa
sync_template_localizations para pedir a Sequenzy que traduzca locales seleccionados;
omite locales para sincronizar cada local no primario habilitado. La sincronización explícita funciona
incluso cuando la localización automática al guardar está deshabilitada.
Componentes de Correo Reutilizables
| Herramienta | Descripción |
|---|---|
list_email_components | Lista secciones y pies de página guardados, opcionalmente limitados a valores predeterminados fijados. |
get_email_component | Lee los bloques, metadatos, versión y estado de ranura predeterminada de un componente. |
get_default_email_component | Lee el componente actualmente fijado a una ranura predeterminada como footer. |
set_default_email_component | Crea o reemplaza el pie de página predeterminado de la empresa usado por correos de bloques recién construidos. |
create_email_component | Guarda una sección o pie de página reutilizable desde una lista de bloques. |
update_email_component | Actualiza metadatos de componente o reemplaza sus bloques e incrementa su versión. |
delete_email_component | Elimina un componente sin cambiar correos que ya copiaron sus bloques. |
Los componentes se copian en los correos cuando esos correos se construyen, por lo que ediciones posteriores afectan a correos recién construidos en lugar de reescribir contenido existente. El pie de página predeterminado mantiene su enlace de cancelación de suscripción habilitado, mientras que la representación transaccional oculta ese enlace. Los correos HTML sin procesar mantienen su propio marcado y no reciben componentes de bloques; su manejo de cancelación de suscripción al enviar permanece sin cambios.
Pruebas A/B
| Herramienta | Descripción |
|---|---|
list_ab_tests | Lista pruebas A/B y variantes, opcionalmente limitadas por secuencia. |
get_ab_test | Obtiene configuraciones efectivas, variantes, estado de localización y copia de paso de secuencia. |
get_ab_test_stats | Obtiene estadísticas agregadas y por variante. |
restart_ab_test | Reinicia una prueba A/B detenida o completada. |
select_ab_test_winner | Selecciona un ganador de prueba de campaña y pone en cola la entrega restante. |
update_ab_test | Actualiza configuraciones de selección de ganador de campaña o secuencia. |
update_ab_test_variant | Actualiza el borrador de campaña o la copia de variante de secuencia. |
create_ab_test | Crea una prueba de campaña o convierte un paso de correo de secuencia. |
add_ab_test_variant | Agrega una variante a una prueba A/B existente. |
delete_ab_test_variant | Elimina una variante de prueba A/B en borrador. |
delete_ab_test | Elimina una prueba A/B. |
Usa get_sequence.sequence.emails[].abTest.variants para descubrir IDs de variante de secuencia, asuntos, texto de vista previa y recuentos de bloques; llama a get_ab_test para auditar el blocks completo de cada variante, settings efectivo, estado de localización o estadísticas. Las configuraciones de campaña usan testPercentage, testDurationMinutes y winnerCriteria; las configuraciones de secuencia usan testType, winnerThreshold y winnerCriteria. Los valores de secuencia heredados testPercentage: 100 y testDurationMinutes: 0 son centinelas de compatibilidad, no configuraciones de ejecución. select_ab_test_winner se aplica solo a una prueba de campaña que actualmente está probando e inmediatamente pone en cola la variante ganadora para la audiencia restante. update_ab_test cambia el modelo de configuración apropiado y requiere confirmLiveChange: true cuando las configuraciones de secuencia afectan una prueba activa o ya utilizada. Las actualizaciones de variante aceptan html o blocks, no ambos.
create_ab_test acepta exactamente uno de campaignId o automationNodeId; el último requiere de una a cuatro variantes adicionales y convierte un nodo de correo de secuencia en action_ab_test. La conversión mueve el asunto, texto de vista previa y bloques del paso a correos de variante independientes. Obtén los IDs de prueba y variante de get_sequence, lee la copia de cada variante con get_ab_test y edita cada una con update_ab_test_variant; update_sequence_node y update_template no pueden editar copia de variante, y un cambio destinado a todo el paso debe repetirse para cada variante. Si update_ab_test_variant no está en la lista de herramientas MCP, habilítalo en el conector de Sequenzy en lugar de escribir a través de otra herramienta de correo. El flujo de trabajo completo requiere ab_tests:read, ab_tests:write y sequences:write, todos incluidos en Acceso de agente más seguro. Con solo sequences:read, get_sequence mantiene el paso A/B y la copia de control visibles pero redacta los campos de registro de prueba y devuelve una lista de variantes vacía. Un winnerCriteria de secuencia explícito anula el valor predeterminado de testType, por lo que las variantes de contenido aún pueden evaluarse por aperturas. Pasa confirmLiveChange: true al convertir un nodo en una secuencia activa. Junto con el control A, una prueba A/B admite como máximo cinco variantes. Las variantes de secuencia reciben plantillas de correo independientes y pueden editarse después de la creación; una vez que la secuencia está activa o la prueba tiene actividad, update_ab_test_variant requiere confirmLiveChange: true. Las variantes solo pueden agregarse o eliminarse mientras la prueba es un borrador, y los cambios en secuencias activas también requieren confirmación porque cambian inmediatamente la rotación.
Campañas
| Herramienta | Descripción |
|---|---|
list_campaigns | Lista campañas paginadas por estado o etiqueta, incluyendo comentarios del revisor y campos de ritmo de entrega para auditorías STO a nivel de cuenta. |
get_campaign | Obtén detalles, estadísticas, comentarios del revisor y el ritmo de entrega registrado de una campaña. |
get_campaign_audience | Resuelve la segmentación guardada, referencias faltantes, un resumen en lenguaje sencillo y el recuento de destinatarios en vivo. |
list_campaign_goals | Lista los objetivos de conversión persistidos para una campaña de correo electrónico (SMS no es compatible). |
create_campaign_goal | Añade un objetivo de conversión de campaña de correo electrónico por evento, atributo de suscriptor o etiqueta aplicada. |
update_campaign_goal | Actualiza un objetivo de conversión de campaña de correo electrónico persistido. |
delete_campaign_goal | Elimina un objetivo de conversión de campaña de correo electrónico persistido. |
list_email_sends | Busca el historial de entregas reciente con IDs de recursos y URLs, opcionalmente limitado a un paso de secuencia. Los envíos de prueba en vivo exitosos se omiten. |
get_email_send | Inspecciona una entrega en cola, de prueba, enviada, suprimida o fallida mediante el ID duradero de envío de correo. |
list_recipient_suppressions | Lista los destinatarios suprimidos asociados, incluyendo direcciones globales inválidas protegidas y quejas. |
get_recipient_suppression | Comprueba el rebote local, la queja, la higiene de correo y la supresión regional de SES para un destinatario exacto. |
remove_recipient_suppression | Elimina una escalada de rebote suave del espacio de trabajo preservando las protecciones globales, de rebote duro y de quejas. |
create_campaign | Crea una campaña con contenido, datos y anulaciones opcionales de identidad De/Responder a. |
update_campaign | Actualiza una campaña en borrador, incluyendo contenido, datos, identidades, audiencia y configuración STO persistida. |
schedule_campaign | Programa o reprograma una campaña, anulando opcionalmente STO y su ventana de entrega de 1 a 24 horas. |
send_test_email | Envía un correo de prueba a una dirección. |
render_email | Renderiza HTML exacto seguro para correo e informa etiquetas no resueltas, incluyendo errores tipográficos ocultos por valores predeterminados. |
cancel_campaign | Cancela una campaña programada o en envío. |
pause_campaign | Pausa una campaña en envío. |
resume_campaign | Reanuda una campaña pausada, opcionalmente distribuyendo la entrega en el tiempo. |
delete_campaign | Elimina una campaña. |
duplicate_campaign | Duplica una campaña en un nuevo borrador. |
resend_campaign_to_non_openers | Crea un reenvío en borrador para los miembros de la audiencia original que no abrieron una campaña enviada. |
Las campañas creadas mediante prompt se generan y persisten en una sola solicitud de API y
permanecen como borradores. Usa templateId, blocks o html solo al copiar o
preservar contenido existente en lugar de pedir al agente que lo cree. Omite todos los
campos de contenido para crear un borrador vacío para editar más tarde.
Los objetivos de campaña acreditan a los destinatarios que realmente recibieron esa campaña dentro de
la ventana de atribución configurada; una apertura o clic sigue siendo la señal
de último toque más fuerte cuando existe una. Los objetivos de evento requieren triggerEventName,
los objetivos de atributo de suscriptor requieren attributePath y los objetivos de etiqueta aplicada
requieren triggerTagName. La ventana de atribución de campaña se establece por defecto en 168
horas cuando se omite.
Para entregar a la misma hora de reloj de pared en la zona horaria de cada destinatario, llama
a schedule_campaign con sendInRecipientTimezone: true y un scheduledTimezone IANA
que identifique el reloj de pared representado por
scheduledAt. Los contactos sin una zona horaria almacenada reciben la campaña en el
instante scheduledAt. Este modo no se puede combinar con entrega recurrente o distribuida.
La optimización del tiempo de envío se configura por campaña, no a nivel de empresa o
secuencia. Audítala entre campañas con list_campaigns, o inspecciona una
campaña con get_campaign. Establece sendTimeOptimization y
sendTimeWindowHours (1-24, predeterminado 12) en un borrador con update_campaign, o
anúlalos al programar con schedule_campaign. spreadOverHours
tiene prioridad y desactiva STO, al igual que la entrega en la zona horaria del destinatario.
Las secuencias usan en su lugar sendingWindow, una puerta compartida de horas/días permitidos en lugar
de tiempos de envío predichos por destinatario.
Para identidades a nivel de campaña y secuencia, fromEmail más fromName
selecciona la identidad del remitente con ese nombre para mostrar en el buzón, creándola
cuando sea necesario sin renombrar otras identidades con la misma dirección. Una dirección de Responder a
tiene en cambio un nombre guardado a nivel de empresa: cuando replyToName difiere de ese
nombre, se mantiene el nombre guardado y la respuesta exitosa incluye orientación
de recuperación en warnings.
send_email y send_test_email devuelven un emailSendId duradero. Usa
list_email_sends para descubrir IDs recientes por asunto/título, destinatario, estado
de entrega, tipo, tipo de rebote o fuente; pasa un ID a get_email_send para inspeccionar
status, errorMessage, el cuerpo almacenado y los eventos de entrega. Las filas de la lista de entregas
se conservan durante 14 días. Los envíos de prueba en vivo exitosos y otros envíos de prueba se
omiten para que no entierren las entregas reales. Las respuestas a esos envíos de prueba se muestran
en list_conversations solo cuando la captura de respuestas entrantes está habilitada. Los trabajos en cola
son detalles de ejecución interna y
no se exponen a través del contrato MCP. Cada entrega devuelta tiene un url directo
del panel de control. Usa list_recipient_suppressions para distinguir las filas protegidas
de destinatario inválido global, rebote duro de empresa protegido y quejas de las escaladas de rebote suave de empresa
eliminables, y usa get_recipient_suppression para el estado regional exacto.
remove_recipient_suppression elimina solo la escalada de empresa; las supresiones globales y
a nivel de cuenta de Amazon SES, quejas, cancelaciones de suscripción y protecciones de higiene de correo
permanecen intactas. Un resultado de higiene local usa el motivo bounced con
email_hygiene como su fuente sin cambiar el estado de consentimiento del suscriptor.
Los agentes deben pasar un idempotencyKey propiedad del llamante a send_email antes del
primer intento y reutilizarlo para cada reintento de ese mismo correo lógico. Sequenzy
devuelve el emailSendId original durante 14 días en lugar de crear otra
entrega. Reutilizar la clave con argumentos de envío diferentes se rechaza, así que no
generes una clave nueva dentro de un bucle de reintentos.
Los bloques de correo pueden usar reglas de visualización condicional o ramas conditional-group.
Las condiciones admiten variables de tiempo de renderizado y atributos de suscriptor más datos
de suscriptor en vivo como membresía de segmento/lista, etiquetas, eventos, participación,
estado de suscripción/SMS y compras de Stripe o comercio. Las condiciones de datos
en vivo usan los mismos valores de campo y operadores que los filtros de segmento;
los destinatarios sin una coincidencia de suscriptor almacenada usan la rama OTHERWISE.
Las formas de bloque principales son { "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 como un
alias para text y se establecen por defecto en la variante primary. El widthType de imagen acepta
percent o px.
Los bloques de video de YouTube aceptan una portada personalizada opcional: { "type": "video", "videoUrl": "https://www.youtube.com/watch?v=...", "thumbnailUrl": "https://cdn.example.com/cover.jpg", "alt": "Watch the product tour" }.
Reemplazar bloques sin thumbnailUrl restaura la imagen fija propia de YouTube mientras
mantiene videoUrl como destino del clic.
El html sin procesar se almacena como un bloque opaco. Preserva el marcado proporcionado pero no
añade un logotipo de empresa, secciones de marca nativas o diseño de bloques basado en temas.
Usa prompt para un nuevo borrador con marca o blocks para diseño nativo del editor; los resultados
de creación MCP incluyen una advertencia cuando se usa HTML sin procesar.
Usa update_company con fromEmail y/o replyTo para establecer valores
predeterminados a nivel de cuenta. fromEmail debe usar un dominio de envío configurado y verificado; replyTo
puede ser cualquier buzón válido. create_campaign, update_campaign,
create_sequence y update_sequence aceptan los mismos campos de dirección directa
para anulaciones específicas de recursos y crean el perfil de respaldo cuando sea necesario.
Envía fromName o replyToName solo para renombrar el perfil predeterminado existente
sin cambiar su dirección. Cuando una dirección tiene múltiples nombres para mostrar, usa
senderProfileId o replyProfileId de list_sender_profiles para seleccionar el
perfil exacto que se convertirá en predeterminado y renombrar.
update_company también gestiona el tema de correo predeterminado de la empresa mediante
emailTheme (presetId, colors, typography, layout). Las actualizaciones de tema son
parciales: los campos omitidos mantienen su valor actual (o el predeterminado del ajuste preestablecido) y
los valores numéricos se limitan a los rangos compatibles. Pasa emailTheme: null para
restablecer la empresa al tema predeterminado de la plataforma. La configuración de diseño puede controlar
el baseRadius compartido y un buttonRadius separado. Dentro de colors,
background pinta el lienzo exterior, content pinta la tarjeta de contenido interior
y surface pinta tarjetas anidadas o mosaicos teñidos. Omitir content preserva
su valor actual; cuando no se almacena ningún color de contenido, la tarjeta sigue
a background.
El seguimiento de respuestas está disponible en las mismas herramientas de empresa. Usa
replyTrackingEnabled, replyTrackingDomainMode (sequenzy o custom) y
forwardReplies con update_company. Las lecturas de empresa también devuelven el valor
actual de solo lectura replyRetentionDays.
Las encuestas y los sondeos NPS son bloques de correo nativos, por lo que funcionan en cualquier lugar donde una herramienta
de correo acepte blocks, incluyendo campañas, plantillas, variantes A/B,
plantillas transaccionales y pasos de correo de secuencia. Los envíos de encuestas transaccionales
deben resolverse a exactamente un destinatario efectivo después del filtrado de supresión y la
deduplicación de destinatarios, y ese destinatario ya debe existir como suscriptor;
de lo contrario, Sequenzy rechaza el envío porque el enlace de respuesta no se puede atribuir
de forma segura. Usa una encuesta con botón de respuesta:
{
"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"
}
Para NPS, usa "variant": "nps", un array vacío options y un atributo
como nps_score. La escala es siempre 0-10; los opcionales npsLowLabel y
npsHighLabel personalizan sus leyendas. Cada respuesta actualiza el atributo
del suscriptor y dispara poll.answered para automatizaciones y webhooks salientes.
Establece "allowMultiple": true en una encuesta de opciones solo texto para abrir una página
alojada donde los destinatarios pueden marcar varias respuestas y guardar toda la selección de
una vez. El atributo del suscriptor almacena la lista de valores seleccionados, por lo que
los segmentos de atributos deben usar contains. Las encuestas de selección múltiple no pueden usar imágenes de opciones ni
configuraciones cuyos enlaces firmados codificados superen el límite de tamaño seguro para la entrega.
Los resúmenes de encuestas de campaña establecen allowMultiple: true, usan el recuento de encuestados para
totalResponses y pueden reportar porcentajes de respuestas que suman más del 100%.
Los bloques de encuestas también admiten estilos específicos de marca. accentColor recolorea cada
aparición, incluyendo "brutal"; optionRadius establece las esquinas de los botones de respuesta en
píxeles (0 es cuadrado), independientemente del
styles.borderRadius del contenedor; y questionColor recolorea solo la pregunta.
fontFamily se aplica a la encuesta. Usa los campos optionFontSize,
optionFontWeight, optionLetterSpacing y optionTextTransform para las
respuestas, o los campos question* correspondientes para la pregunta. Los tamaños y
el espaciado están en píxeles, los pesos van de 100 a 900 y las transformaciones de texto son
"none" o "uppercase".
Formularios Guardados
| Herramienta | Descripción |
|---|---|
list_forms | Lista los formularios guardados con su configuración de audiencia gestionada por el servidor, bloques de contenido y URLs de acción públicas. |
create_form | Crea y publica un formulario guardado con campos estándar de correo/nombre, configuración de audiencia, tema y comportamiento de éxito. |
update_form | Actualiza un formulario guardado, incluyendo su array completo de bloques ordenados y campos personalizados tipados. |
get_form_embed | Devuelve la URL de acción pública, JavaScript alojado, formulario nativo mínimo y ejemplo de fetch para un formulario guardado. |
Para Astro, Hugo, Jekyll, Cloudflare Pages, Netlify, GitHub Pages o cualquier otro
sitio estático, llama a list_forms, usa create_form si no existe un formulario
adecuado, luego llama a get_form_embed. El formId opaco devuelto es la
capacidad pública: listas, etiquetas, comportamiento de duplicados y manejo de éxito permanecen
en el servidor, por lo que el código del navegador desplegado nunca contiene una clave de API de Sequenzy.
El marcado nativo y autónomo generado incluye "Powered by Sequenzy" para espacios de trabajo
gratuitos; los espacios de trabajo de pago reciben marcado sin marca. La API resuelve esa
autorización en el servidor, por lo que los llamadores deben usar el fragmento devuelto sin cambios.
Al actualizar un formulario, los campos omitidos permanecen sin cambios y los campos de tema se fusionan
en el tema actual. Pasa un array vacío tagIds para borrar etiquetas o un
redirectUrl vacío para restaurar el comportamiento del mensaje de confirmación. El campo blocks es
un reemplazo completo, así que lee el contenido actual con list_forms primero
y conserva exactamente un campo de correo obligatorio y un botón de envío. Añade entradas
personalizadas como bloques form-field con un fieldType compatible; los campos de selección, radio y
casillas requieren opciones, mientras que los valores predeterminados ocultos se aplican en el servidor.
Popups Guardados
| Herramienta | Descripción |
|---|---|
list_popups | Lista los popups guardados con estado y estadísticas de participación, opcionalmente incluyendo contenido completo. |
get_popup | Obtiene los bloques, disparador, segmentación, programación, frecuencia, tema y código de inserción publicado de un popup. |
create_popup | Crea un popup desde una plantilla inicial, publicado por defecto, y devuelve su script de despliegue. |
update_popup | Actualiza parcialmente el texto, audiencia, comportamiento, tema, bloques o estado de publicación del popup. |
get_popup_embed | Devuelve fragmentos de inserción HTML sin secretos, React/Next.js, WordPress y Shopify. |
duplicate_popup | Copia un popup en un borrador con contadores de participación independientes. |
delete_popup | Elimina permanentemente un popup y sus contadores de participación. |
El despliegue de popups usa una etiqueta de script pública; las claves de API, configuración de audiencia,
disparo, segmentación, programación y reglas de frecuencia permanecen en el servidor.
Los popups capturan en cada lista por defecto a menos que se proporcione listIds. Al
actualizar bloques, lee primero el popup y envía el array de reemplazo completo,
conservando exactamente un campo de correo obligatorio y un botón de envío. Establecer
status a draft detiene un popup sin invalidar su código de inserción existente.
Páginas de Aterrizaje
| Herramienta | Descripción |
|---|---|
list_landing_pages | Lista las páginas de aterrizaje con estado, métricas, contenido y URLs. |
get_landing_page | Obtiene detalles de la página de aterrizaje, contenido del constructor, métricas y URLs publicadas. |
render_landing_page | Devuelve una vista previa firmada de 24 horas para visitantes sin publicar, contar vistas ni recopilar registros. |
create_landing_page | Crea una página de aterrizaje en borrador desde contenido de plantilla predeterminado o JSON. |
update_landing_page | Edita el nombre, slug o contenido completo compatible con el editor de una página de aterrizaje. |
publish_landing_page | Publica una página de aterrizaje, opcionalmente guardando ediciones primero. |
unpublish_landing_page | Devuelve una página de aterrizaje a estado de borrador, opcionalmente guardando ediciones primero. |
duplicate_landing_page | Duplica una página de aterrizaje en un nuevo borrador con un slug único. |
delete_landing_page | Elimina una página de aterrizaje no publicada. |
connect_landing_page_domain | Conecta un dominio personalizado de página de aterrizaje y devuelve detalles de configuración DNS. |
update_landing_page_domain_settings | Reemplaza o verifica la configuración de dominio personalizado de la página de aterrizaje. |
El contenido de la página de aterrizaje usa el esquema JSON compatible con el editor de Sequenzy con
version, template, seo, theme y blocks. La configuración SEO incluye
faviconUrl y hideFromSearchEngines; las páginas ocultas publican una directiva noindex.
Usa render_landing_page para revisar la página actual orientada al visitante
antes de publicar. Su previewUrl firmado caduca después de 24 horas, no está listado,
no se indexa y no incrementa las vistas de página; los formularios permanecen visibles pero no
recopilan contactos. Los bloques se renderizan en orden de ranura:
top, hero, form, body, luego
footer; usa top para un anuncio o banner de ancho completo sobre el héroe.
Las URLs de CTA de botones y precios aceptan destinos HTTPS externos o anclas
dentro de la página como #form, #section-<sectionId>, #block-<blockId> y
#top. Establece theme.sectionAnimation a none, fade, slide-up o
zoom-in, con theme.sectionAnimationSpeed establecido a slow, normal o
fast, para controlar las revelaciones de desplazamiento publicadas. Los subdominios personalizados de páginas de aterrizaje
requieren un registro CNAME que apunte a pages.sequenzydns.com; los dominios raíz usan un
registro A que apunta a 76.76.21.21, y su host www redirige a la raíz
cuando su CNAME apunta a pages.sequenzydns.com. Llama a
update_landing_page_domain_settings con verify: true después de que los cambios DNS
se propaguen.
Secuencias
| Herramienta | Descripción |
|---|---|
list_sequences | Lista secuencias con estado de panel, búsqueda, etiqueta, límite y filtros de desplazamiento. |
get_sequence | Obtén detalles de la secuencia, IDs de variantes A/B y conteos de bloques con ab_tests:read, nodos, aristas, copia vinculada y la ventana de envío de la secuencia. |
list_sequence_enrollments | Lista inscripciones de contactos con paginación y atribución precisa de entrada basada en lista/etiqueta/evento/hora. Las pruebas de secuencia en vivo no crean inscripciones. |
send_sequence_test_email | Envía un paso guardado de action_email a 1-10 revisores; los pasos A/B se inspeccionan por variante. |
create_sequence | Crea un borrador de panel en blanco o una secuencia generada por IA o con pasos explícitos. |
update_sequence | Actualiza identidad, configuración, inscripción, pasos existentes, lógica de ramas o inserta pasos lineales. |
update_sequence_node | Parcheo consciente de tipos de un nodo de secuencia existente. |
update_sequence_nodes | Parchea atómicamente múltiples nodos de secuencia existentes. |
insert_sequence_step | Inserta cualquier paso de panel tipado, incluyendo generación por IA, webhooks salientes, esperas y ramas cableadas. |
edit_sequence_graph | Mueve, reconecta, elimina o duplica nodos del grafo; reporta destinatarios movidos o completados. |
simulate_sequence | Prueba en seco coincidencias actuales, preparación de activación y la ruta de rama opcional de un contacto sin inscribir ni enviar. |
enable_sequence | Activa una secuencia. |
disable_sequence | Congela una secuencia, bloqueando nuevas inscripciones y reteniendo a los destinatarios actuales. |
duplicate_sequence | Crea una copia de borrador independiente del grafo, correos electrónicos y pruebas A/B de la secuencia. |
archive_sequence | Mueve una secuencia al archivo del panel y detiene nuevas inscripciones. |
unarchive_sequence | Restaura una secuencia archivada como borrador deshabilitado. |
list_sequence_goals | Lista los objetivos de conversión de evento, atributo de suscriptor y etiqueta aplicada persistidos para una secuencia. |
create_sequence_goal | Agrega un objetivo de conversión de evento, atributo de suscriptor o etiqueta aplicada. |
update_sequence_goal | Actualiza un objetivo de conversión de secuencia persistido. |
delete_sequence_goal | Elimina un objetivo de conversión de secuencia persistido. |
get_sequence_inbound_webhook | Lee la URL entrante, estado de configuración, muestra y mapeo en MCP estándar; la ruta de OpenAI elimina la URL con credenciales. |
configure_sequence_inbound_webhook | Configura el endpoint, mapeo de campos y muestra; la ruta de OpenAI elimina la URL con credenciales de su resultado. |
rotate_sequence_inbound_webhook_secret | Rota el secreto de un endpoint de secuencia entrante y devuelve su URL de reemplazo en MCP estándar; omitido en la ruta revisada por OpenAI. |
pause_sequence_enrollments | Detiene nuevas inscripciones para una secuencia activa mientras los destinatarios actuales continúan. |
resume_sequence_enrollments | Reabre nuevas inscripciones para una secuencia activa sin cambiar a los destinatarios actuales. |
enroll_subscribers_in_sequence | Inscribe hasta 500 suscriptores por correo electrónico, ID de suscriptor o ambos, con idempotencia segura para reintentos. |
cancel_sequence_enrollments | Detiene inscripciones activas o en espera por valores de campos de suscriptor o evento de entrada. |
realign_sequence_enrollments | Previsualiza o pone en cola el movimiento de esperas en vivo anteriores a la apertura de su ventana de envío. |
get_sequence_enrollment_realignment | Consulta un trabajo de realineación aplicado y lee su resultado completado o cursor de continuación. |
delete_sequence | Elimina una secuencia. |
La creación de secuencias admite:
- Creación solo con nombre para un borrador en blanco, deshabilitado, de disparo a finalización que coincide con el panel.
- Metadatos del panel y configuración de entrega:
description,labels,userCancellable, CCO de secuencia e identidad De/Responder a. trigger: "contact_added"conlistId, varioslistIdsolistScope:any_contact(el predeterminado) inscribe a cada contacto agregado, incluidos los contactos que no se unen a ninguna lista, mientras queany_listespera una membresía de lista real.trigger: "tag_added"contagNameo variostagNames; cualquier etiqueta configurada inscribe al contacto.trigger: "segment_entered"mássegmentIdpara automatizaciones de entrada de segmentos guardados.trigger: "event_received"más{{event.*}}fusiona etiquetas en asuntos o contenido del cuerpo.trigger: "inbound_webhook"más metadatos de integración para nodos de entrada de webhook compatibles con el panel.trigger: "inactivity"máseventName,inactiveDaysyinactivityBaselineopcional (sequence_created_atosubscriber_created_at).goalpara contenido de correo electrónico generado por IA.emailStyle: "visual"o"plain"para elegir la presentación de correos electrónicos generados por IA basados en objetivos; cuando se omite, se usa la preferencia guardada de la empresa.stepsexplícito conblocksde Sequenzy.stepsexplícito con HTML, que Sequenzy convierte en bloques editables.- Pasos explícitos de Actualizar Suscriptor que copian propiedades del evento de disparo en campos de perfil o atributos personalizados tipados.
- Esperas fijas mediante
delay/delayMs, esperas dinámicas de campo de fecha mediantewaitUntilo compuertas de calendario mediantewaitUntilWeekday. Una compuerta de día de semana como{ "day": "sunday", "startTime": "09:00", "endTime": "12:00", "timezone": "America/Los_Angeles" }mantiene el flujo hasta la siguiente ventana coincidente. Colócala inmediatamente antes de un correo electrónico para mantener ese envío dentro de la ventana; cualquier paso intermedio puede desplazar la entrega fuera de ella. La recuperación de cola vuelve a verificar la ventana antes de liberar un contacto retrasado. - Pasos de acción de descuento dinámicos de Stripe o Shopify. Un paso
create_discountcrea un código de proveedor nuevo cuando cada suscriptor lo alcanza; los correos electrónicos posteriores pueden usar etiquetas de fusión como{{discount.code}},{{discount.percentOff}}y{{discount.expiresAt}}. enrollmentMode: "matching_field"y unenrollmentFieldPathescalar para automatizaciones de eventos específicos de producto, variante, pedido o suscripción. El recorrido de arreglos con[]pertenece apropertyFilters, no a la clave de inscripción.
Para un disparador de evento personalizado, el resultado exitoso de create_sequence incluye
eventTrackingCode y un objeto estructurado eventTracking. El objeto contiene
el endpoint del evento, el contrato de identidad y carga útil, cualquier ruta de propiedad requerida por
la inscripción matching_field, el propertyFilters de disparo normalizado, una carga útil
de ejemplo, examplePayloadMatchesFilters, la URL de documentación directa de la API de eventos y
argumentos listos para usar para get_integration_guide. Si el estado de coincidencia es
falso, adapta el ejemplo usando examplePayloadNote y el contrato de carga útil.
Agrega este feed de eventos y verifica sus propiedades requeridas antes de habilitar el borrador
de la secuencia.
list_sequence_enrollments devuelve enteredVia para cada fila. Las fuentes de lista y
segmento mantienen su ID estable en value y resuelven un name de visualización; las fuentes de etiqueta y
evento conservan sus nombres en value. Los disparadores basados en tiempo reportan
inactivity o frequency en lugar de ser mal identificados como inscripciones
ordinarias de evento recibido. Las pruebas de secuencia en vivo no crean inscripciones;
envían correos electrónicos de prueba aislados y registran actividad en la ejecución de prueba de la secuencia
en su lugar.
Para un lote de inscripción manual confirmado, genera idempotencyKey una vez y
reutiliza esa clave exacta solo con objetivos ordenados idénticos y targetNodeId.
Los recibos duran 14 días. Un reintento devuelve los valores originales de enrolled, skipped,
notFound, targetNodeId y scheduledFor con
idempotentReplay: true; no crea tokens ni vuelve a poner en cola el lote.
Ejemplo de paso de descuento dinámico de Shopify:
{
"type": "create_discount",
"discount": {
"provider": "shopify",
"discountType": "percent",
"percentOff": 20,
"duration": "once",
"appliesToAllPlans": true,
"maxRedemptions": 1,
"codePrefix": "WINBACK"
}
}
Ejemplo de paso de Actualizar Suscriptor:
{
"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" }
]
}
}
Los valores numéricos y booleanos deben ser literales o una etiqueta de fusión independiente. Usa
update_sequence.subscriberUpdateSteps con un ID de nodo action_update_attributes
de get_sequence para reemplazar la configuración de un paso existente.
Las actualizaciones de secuencias admiten insertSteps para agregar nuevos pasos lineales después de un nodeId devuelto por get_sequence. Omita afterNodeId solo al agregar a una secuencia con exactamente una cola lineal. insertSteps admite pasos agregables que no requieren registros complementarios, como correo electrónico, retraso, acciones de etiqueta/lista, actualizaciones de atributos, descuentos, condiciones, pasos de espera de eventos, webhooks salientes y pasos de IA. Un paso de action_ai requiere una etiqueta de combinación prompt, un resultKey único y uno o más outputFields; los pasos posteriores leen texto generado o de respaldo con {{ai.KEY.field}}. Los límites combinados de campos de salida deben caber en el presupuesto de respuesta de 2000 tokens del paso. Use includeTags, includeEventProperties o includeAttributes para optar por incluir contexto de contacto específico en la generación, y onError (continue, exit o fail) para elegir el comportamiento ante fallos. Use branch para ramas if/else de múltiples rutas; proporcione branch o insertSteps, no ambos. Las condiciones de rama admiten comprobaciones de presencia y ausencia de etiquetas con has_tag y does_not_have_tag, además de listas, segmentos guardados, eventos, enlaces en los que se hizo clic y comparaciones de campos. Cada ruta de rama puede proporcionar un nuevo steps, un targetNodeId existente, o ambos; el respaldo usa elseSteps y/o elseTargetNodeId. Un destino puede ser el nodo de finalización devuelto por get_sequence, de modo que una sola solicitud atómica puede enrutar respuestas a finalización y Else a un seguimiento existente. Los arreglos emails y steps editan pasos ordinarios de action_email por nodeId, emailId u orden de arreglo. get_sequence.sequence.emails también incluye entradas de action_ab_test; con ab_tests:read, cada entrada de abTest.variants[] contiene el ID de variante, asunto, texto de vista previa y recuento de bloques. Llame a get_ab_test para obtener los cuerpos completos de las variantes antes de auditar o reescribir el texto. Una actualización posicional que aterriza en una es rechazada, y su texto debe cambiarse por variante con update_ab_test_variant; no reintente a través de update_template o update_sequence_node. Use insertSteps para crear nuevos pasos e incluya un delay, delayMs, waitUntil o waitUntilWeekday a nivel de paso cuando el correo electrónico insertado necesite un temporizador. waitUntil acepta un campo de fecha del evento de activación más offset, direction (before o after) y missingAction (continue o exit) opcionales. waitUntilWeekday acepta day o days, startTime, endTime opcional (predeterminado 24:00) y un timezone IANA; los contactos que ya están dentro de la ventana continúan de inmediato. Para secuencias activas, pase confirmStructuralChange: true con insertSteps o branch solo después de confirmar el impacto en el flujo en vivo.
insert_sequence_step expone directamente cada paso del panel sin registro complementario: correo electrónico, SMS, retraso, descuento, actualización de suscriptor, acción de etiqueta/lista, webhook saliente, generación de IA, condición, espera y rama. Establezca type: "ai" con prompt, resultKey y outputFields para generar texto por contacto para etiquetas de combinación {{ai.KEY.field}} posteriores. Los webhooks salientes aceptan url, method (POST o GET) y headers con valores de cadena. Los pasos de correo electrónico admiten modo transaccional, identidad por paso y configuraciones de entrega CC/CCO. Para una puerta de espera, establezca
type: "logic_wait_for_event" con eventName, timeoutDays opcional (1-365),
y timeoutAction (continue o exit). Para una rama, establezca
type: "logic_branch", proporcione branches tipados y conecte sus destinos:
{
"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"
}
Cada correo electrónico vinculado devuelto por get_sequence incluye su
emailPreset efectivo (branded o minimal), que coincide con Estilo > Formato en el
panel. Establezca emailPreset en un elemento de emails/steps, o en el
changes de un nodo de action_email, para cambiar solo ese correo electrónico vinculado sin
cambiar el tema de la empresa. Esto aplica la misma transformación de formato que el
panel a los bloques nativos de Sequenzy, incluidos los correos electrónicos que contienen
bloques HTML personalizados admitidos. Los correos electrónicos almacenados enteramente como un solo bloque HTML sin procesar independiente
devuelven null para emailPreset y no admiten cambios de formato.
emailPreset no se puede combinar con html o htmlContent porque esos
campos reemplazan todo el correo electrónico con HTML sin procesar independiente.
Para la posición en la secuencia, prefiera structuralStepNumber en correos electrónicos vinculados y en el
nivel superior de los nodos de correo electrónico. Se deriva del gráfico actual y coincide con la
insignia de paso que se muestra en el panel. Los correos electrónicos de ramas paralelas comparten intencionalmente
la misma profundidad estructural, y una fusión de ramas desigual continúa desde la
ruta entrante más larga. El campo más antiguo stepNumber en correos electrónicos vinculados y configuraciones
de nodo sigue siendo un ordinal almacenado para compatibilidad hacia atrás y puede estar desactualizado
después de ediciones del gráfico.
Cada correo electrónico vinculado también devuelve su anulación emailTheme almacenada, o null cuando
sigue el tema de la empresa. Establezca emailTheme en un elemento de emails/steps o en
el changes de un nodo de action_email para cambiar el estilo solo de ese paso. Las actualizaciones de tema son
parches parciales, por lo que changes: { "emailTheme": { "colors": { "background": "#f3f4f6", "content": "#ffffff" } } } le da a ese correo electrónico un lienzo
exterior gris y una tarjeta de contenido blanca mientras conserva sus otros colores,
tipografía y diseño. Omitir cualquiera de los colores conserva su valor actual. Pase
emailTheme: null para eliminar la anulación y seguir el tema de la empresa nuevamente. Use
update_company solo cuando el valor predeterminado de toda la cuenta deba cambiar.
Use update_sequence_node para una edición enfocada en el lugar, o
update_sequence_nodes cuando varios parches de nodo deban confirmarse atómicamente. Llame
get_sequence primero: cada elemento en sequence.nodes incluye el id del nodo,
nodeType, el config actual, updatedAt y updateHints con campos editables y
gestionados, además del token de concurrencia exacto a devolver. Pase ese token como
expectedUpdatedAt para rechazar escrituras obsoletas. Las herramientas admiten cada tipo de nodo
almacenado, incluidos retrasos, contenido de correo electrónico/SMS, acciones, condiciones, webhooks,
configuración de ramas sin cambios de topología y activadores. Para cambiar un
retraso de 5 minutos a 7 días, envíe changes: { "delay": { "days": 7 } } para su
nodo logic_delay. Para hacer que varias notas de estilo fundador sean Mínimas, parchee sus
nodos action_email con changes: { "emailPreset": "minimal" }. La conversión de tipo de nodo
y los cambios de bordes/rutas pertenecen a edit_sequence_graph. Las secuencias
activas requieren confirmLiveChange: true después de que el usuario confirme el impacto;
los destinatarios que ya están en espera conservan su marca de tiempo programada existente.
Los pasos de correo electrónico existentes y recién insertados pueden establecer su propia identidad De con
senderProfileId o fromEmail más fromName opcional, y su identidad Responder a
con replyProfileId o replyTo más replyToName opcional. Un
fromName por sí solo cambia solo el nombre visible del remitente de ese paso. Un
replyToName a nivel de paso anula de manera similar el nombre visible de Responder a para ese paso
sin renombrar el perfil de respuesta de toda la empresa. Los nuevos pasos de correo electrónico sin
campos de identidad explícitos heredan la identidad efectiva del correo electrónico de secuencia
más cercano. Después de una fusión de ramas, solo se heredan los campos de identidad compartidos por cada
ruta entrante; los campos en conflicto usan los valores predeterminados de la secuencia o la empresa.
Use edit_sequence_graph con el graphRevision más reciente de get_sequence para reestructurar una secuencia existente atómicamente. Puede mover un nodo antes o después de otro nodo, reutilizar el arreglo normalizado sequence.edges para reconexión explícita o reordenamiento de múltiples nodos, eliminar un nodo o copiar en profundidad un nodo. La duplicación de pruebas A/B crea registros independientes de prueba, variante, correo electrónico y localización con estadísticas reiniciadas. Mover un nodo antes del nodo compartido debajo de una rama reconecta cada ruta de rama convergente a través de ese nodo. Eliminar un nodo mueve inmediatamente a los destinatarios en espera a su único sucesor sobreviviente, o los completa cuando no queda ningún sucesor; inspeccione sequence.migratedRecipientCount y sequence.completedRecipientCount en el resultado. La eliminación se rechaza cuando los destinatarios en espera tendrían múltiples continuaciones sobrevivientes. Las revisiones obsoletas, los carriles de rama inválidos, los ciclos y los nodos inalcanzables también se rechazan. Las secuencias activas requieren confirmStructuralChange: true.
Ejecute cancel_sequence_enrollments con dryRun: true antes de aplicar la cancelación masiva.
Ejecute realign_sequence_enrollments después de cambiar la ventana de envío de una secuencia
en vivo cuando las esperas existentes vinculadas a correo electrónico deban moverse antes a la nueva apertura.
El valor predeterminado es dryRun: true. Pasar dryRun: false pone en cola un trabajo en segundo plano
y devuelve jobId; consúltelo con get_sequence_enrollment_realignment. Cuando un
resultado completado tiene hasMore: true, ponga en cola la siguiente aplicación limitada con su
nextCursor. La realineación aplicada cambia los tiempos de entrega en vivo y solo debe
usarse después de que el usuario confirme la vista previa.
Bloques de correo electrónico
| Herramienta | Descripción |
|---|---|
get_email_block_schema | Liste cada tipo de bloque de correo electrónico o inspeccione los campos obligatorios, valores de enumeración, formas de elementos y ejemplo de un tipo. |
Llame a get_email_block_schema antes de redactar manualmente un tipo de bloque que no haya
usado antes. Omita blockType para listar cada tipo, pase un tipo como list o
steps para su referencia completa, o pase creatableOnly: true para ocultar tipos
gestionados por el editor. Los bloques group persistidos son contenido estructural del editor:
envuelven recursivamente bloques secundarios en diseños Stack, Row, Grid o Overlay de imagen única,
pero la generación de IA y creatableOnly los omiten intencionalmente. Solicite
blockType: "group" para inspeccionar sus campos al leer o actualizar contenido
agrupado existente. Las listas son su propio tipo de bloque en lugar de una variante de text:
los elementos de list usan content, mientras que los elementos de steps usan title y un
description opcional.
Las herramientas que aceptan blocks persisten el estilo visual por bloque bajo el objeto styles de un bloque:
{
"type": "card",
"title": "Your update",
"content": "Everything is ready.",
"variant": "default",
"styles": {
"backgroundColor": "#f8fafc",
"backgroundOpacity": 85,
"borderColor": "#cbd5e1",
"borderWidth": 1,
"borderRadius": 12
}
}
Para compatibilidad con indicaciones de agentes más antiguas, las claves de estilo de nivel superior como backgroundColor, backgroundOpacity, borderColor, borderWidth y borderRadius también se aceptan y guardan bajo styles.
Correo electrónico transaccional
| Herramienta | Descripción |
|---|---|
list_transactional_emails | Buscar/filtrar plantillas y ordenar por métricas de entrega; devuelve asuntos y URL del panel. |
get_transactional_email | Leer un correo electrónico transaccional por ID o slug. |
create_transactional_email | Crear una plantilla transaccional a partir de una indicación, HTML o bloques. |
update_transactional_email | Actualizar metadatos transaccionales o contenido del cuerpo. |
send_email | Enviar un correo electrónico por plantilla o HTML a destinatarios compartidos Para, Cc y Cco. |
Las plantillas transaccionales creadas por indicación se generan en el servidor y tienen como valor predeterminado
deshabilitadas para revisión. Las plantillas HTML o de bloques explícitas conservan el
valor predeterminado de compatibilidad de habilitadas; pase enabled explícitamente para anular cualquiera de los
valores predeterminados.
Para un envío directo, pasa to, subject y html; el servidor MCP asigna html
al campo body de la API transaccional. Para un correo transaccional guardado, pasa
su slug de API a través del campo templateId con nombre de compatibilidad en su lugar.
Para envíos transaccionales, to, cc y bcc aceptan cada uno una dirección o un
array de hasta 50. La API envía un correo con una lista de destinatarios compartida y
elimina duplicados entre campos en orden de prioridad to, luego cc y luego bcc.
Los envíos de marketing aún requieren exactamente una dirección to aceptada y no
admiten destinatarios adicionales.
Las variables send_email admiten arrays anidados para bloques repetidos, como
{ "event": { "items": [...] } }. Cuando el destinatario coincide con un
suscriptor almacenado por ID externo o correo electrónico, los nombres y apellidos guardados completan automáticamente las variables de nombre omitidas. Los valores explícitos, incluidos los vacíos, tienen prioridad.
El array opcional attachments acepta hasta 10 archivos / 7MB en total. Cada elemento
necesita filename y exactamente uno de Base64 content o una URL pública HTTP(S) path.
Establece contentId para incrustar una imagen CID referenciada desde el HTML y opcionalmente establece
contentType para anular la detección MIME.
Cuando se omite trackingSettings, se aplican los valores predeterminados de seguimiento de la API transaccional
de la empresa. Usa trackingSettings.clickTracking: false o
trackingSettings.openTracking: false para deshabilitar la reescritura de enlaces o el píxel de
apertura para un solo envío. Estas opciones por envío solo optan por no participar; no pueden habilitar
el seguimiento deshabilitado por un valor predeterminado de toda la cuenta o de la API transaccional. Usa
get_tracking_settings y update_tracking_settings para inspeccionar o cambiar
esos valores predeterminados.
Para reintentos de agentes y flujos de trabajo, incluye un idempotencyKey estable (hasta 255
caracteres) en send_email. Usa una clave por correo lógico y envía los mismos
argumentos al reintentar; la clave permanece válida durante 14 días.
Analítica
| Herramienta | Descripción |
|---|---|
get_stats | Obtén estadísticas generales para 7d, 30d o 90d; filtra por tipo estructural de correo. |
get_transactional_stats | Obtén métricas de todo el tiempo o de un período para un correo transaccional guardado por ID o slug. |
get_campaign_stats | Obtén rendimiento de campañas, métricas de respuestas, objetivos de conversión adjuntos y resúmenes de Poll/NPS. |
list_poll_responses | Lista la respuesta más reciente de Poll/NPS de cada encuestado por bloque, con identidad y tiempo de respuesta. |
get_sequence_stats | Obtén rendimiento agregado y por paso de secuencias, más recuentos de inscripciones activas/en espera por nodo actual. |
list_email_metrics | Compara embudos de campañas y pasos de secuencia, respuestas, conversiones e ingresos, incluidos pasos entre secuencias. |
list_campaign_events | Lista eventos de correo sin procesar paginados para una campaña. |
list_sequence_events | Lista eventos sin procesar paginados para una secuencia, opcionalmente limitados a un paso de correo. |
get_subscriber_activity | Obtén estadísticas de suscriptores, actividad e inscripciones de correo. |
Los filtros de eventos de campañas y secuencias aceptan transport_failure junto con
eventos de entrega, rebote, queja, interacción, baja y retraso.
Las fallas de transporte describen infraestructura MTA o agotamiento de rutas de salida; no
clasifican una dirección de destinatario válida como rebotada.
Las herramientas de analítica excluyen aperturas/clics de bots, escáneres, vistas previas de enlaces y activos rastreados detectados por defecto. Pasa includeMachineEngagement: true a get_stats, get_campaign_stats, get_sequence_stats, get_ab_test_stats, get_subscriber o get_subscriber_activity cuando necesites diagnósticos de interacción sin procesar; las filas de actividad de apertura/clic incluidas exponen los campos machine, engagementQuality y classificationReasons donde la API devuelve actividad a nivel de evento.
get_sequence_stats.enrollmentCounts es una instantánea en vivo de
ejecuciones de inscripciones activas y en espera agrupadas por nodo actual. Cuenta
tokens de inscripción en lugar de suscriptores necesariamente distintos, y no está
limitado por filtros históricos de period, start o end.
Usa list_email_metrics para comparaciones entre campañas o pasos de secuencia.
Pasa step con valores opcionales de sequenceId para totalizar el mismo paso entre
secuencias; usa el automationNodeId devuelto con list_sequence_events o
list_email_sends para inspeccionar destinatarios. campaignId no se puede combinar con
sequenceId o step. Los alcances explícitos de campaña y secuencia conservan correos
configurados con cero actividad para que los de bajo rendimiento no se omitan silenciosamente.
Pasa emailType: "transactional" a get_stats para tasas de entrega, apertura, clic y respuesta de la API de envío y
SMTP transaccional. Esto incluye envíos directos y de plantillas guardadas. Usa el emailSendId devuelto por send_email con
get_email_send cuando necesites el estado y la línea de tiempo de eventos de una entrega.
Usa get_transactional_stats cuando necesites tasas agregadas para un correo
transaccional guardado. Su respuesta incluye los enlaces más clicados, quejas,
respuestas, clasificaciones de rebote permanente/transitorio más recientes y recuentos separados de aperturas/clics humanos y de máquina. Los envíos de contenido directo no tienen un ID de plantilla
estable y permanecen disponibles a través de estadísticas transaccionales de la cuenta más
búsqueda de entregas.
Cuando una campaña recopila respuestas de Poll o NPS, get_campaign_stats incluye un
array polls de nivel superior. Cada suscriptor cuenta una vez por bloque de encuesta usando su
respuesta más reciente. Los resúmenes de NPS incluyen la puntuación, el promedio y
recuentos de promotores/pasivos/detractores. Estos son resúmenes de respuestas de por vida incluso
cuando las métricas de interacción usan un filtro de tiempo.
Usa list_poll_responses para leer quién respondió qué y cuándo. Devuelve la
respuesta más reciente de cada suscriptor por bloque de encuesta, de la más nueva a la más antigua, incluido el correo,
valor almacenado, clave de atributo y tiempo de respuesta. Pasa blockId para limitar a una
encuesta; para un paso de correo de secuencia, pasa su ID de nodo de automatización como campaignId.
No reconstruyas este historial escaneando atributos de suscriptores: un
atributo no tiene marca de tiempo de respuesta y puede haber sido sobrescrito por un correo
posterior que reutilizó la misma clave.
Para listar los encuestados históricos exactos detrás de un recuento, llama a create_segment
con el campo pollResponse, el operador is y un valor JSON limitado a la
campaña y al blockId del resumen:
{
"v": 1,
"campaignId": "camp_123",
"blockId": "poll_1",
"match": { "kind": "answer", "value": "loved" }
}
Para NPS, usa una coincidencia como
{"kind":"npsBucket","bucket":"detractors"}; los buckets válidos son
promoters, passives y detractors. El attributeKey del resumen almacena
la respuesta actual/más reciente del suscriptor y puede ser sobrescrito por una encuesta
posterior que reutilice la clave, por lo que no es un desglose histórico exacto.
Equipo, Bandeja de entrada, Webhooks
| Herramienta | Descripción |
|---|---|
list_team_members | Lista miembros del equipo e invitaciones pendientes. |
invite_team_member | Invita a un compañero como administrador o visor, con acceso de facturación opcional. |
cancel_team_invitation | Cancela una invitación de equipo pendiente. |
list_conversations | Lista conversaciones de respuestas de suscriptores con filtros de estado y no leídos. |
get_conversation | Lee una conversación y su historial de mensajes. |
reply_to_conversation | Pon en cola una respuesta saliente o agrega una nota interna. |
update_conversation_status | Abre o cierra una conversación. |
mark_conversation_read | Marca todos los mensajes de una conversación como leídos. |
list_webhooks | Lista endpoints de webhooks salientes. |
create_webhook | Crea un endpoint y devuelve su secreto de firma de un solo uso en MCP estándar; omitido en la ruta revisada por OpenAI. |
update_webhook | Actualiza nombre, URL, eventos o estado del webhook. |
delete_webhook | Elimina permanentemente un endpoint de webhook y su historial de entregas. |
test_webhook | Envía un evento de prueba a un endpoint de webhook. |
list_webhook_deliveries | Lista intentos de entrega recientes para un webhook. |
replay_webhook_delivery | Reproduce una entrega de webhook. |
Los cambios de consentimiento por lista están disponibles como eventos salientes de opt-in:
subscriber.list_subscribed y subscriber.list_unsubscribed. Sus cargas útiles
identifican al suscriptor y la lista, reportan action como added o removed, e
incluyen el source del cambio (por ejemplo preferences_page, dashboard,
api o automation).
Usa el evento email.failed para fallas de entrega terminales como rutas de transporte MTA
agotadas. Los rebotes de destinatarios continúan usando email.bounced.
Usa el evento campaign.sent solo explícito cuando un flujo de trabajo necesite una notificación
terminal después de que una campaña de correo o SMS se asiente, incluido un envío válido
con cero destinatarios. No se agrega cuando create_webhook omite events en
MCP estándar; en la ruta revisada por OpenAI, agrégalo en el panel al
crear o editar el webhook.
Generación con IA
| Herramienta | Descripción |
|---|---|
generate_email | Genera bloques de correo con marca a partir de un prompt. |
generate_sequence | Alias obsoleto que persiste un borrador de secuencia basado en objetivos. |
generate_subject_lines | Genera variantes de líneas de asunto A/B. |
El contenido de correo generado incluye el logotipo y el pie de página de la empresa por defecto.
generate_email acepta applyBranding: false para bloques de contenido sin procesar y
emailType: "transactional" para un pie de página sin enlace de baja.
Las campañas basadas en prompts heredan la fuente de correo configurada de la empresa. El contenido
generado se devuelve como contenido de borrador para revisión. Usa create_sequence para
generar y persistir un borrador de secuencia deshabilitado que aparece en
list_sequences; el alias obsoleto generate_sequence hace lo mismo.
SMS
| Herramienta | Descripción |
|---|---|
generate_sms | Genera texto de SMS a partir de un prompt. |
get_sms_settings | Lee la preparación del complemento de SMS, créditos, valores predeterminados y números aprovisionados. |
get_sms_usage | Compara envíos, resultados de entrega, créditos cobrados, última actividad y envíos de prueba por número. |
update_sms_number_label | Actualiza la etiqueta de un número o la anulación del prefijo de marca por número. |
release_sms_number | Devuelve permanentemente un número al operador y libera su espacio en el workspace. |
send_test_sms | Envía un mensaje de prueba, eligiendo opcionalmente un remitente aprovisionado con fromNumberId. |
release_sms_number es irreversible. Los pasos de campañas o secuencias vinculados a un
número liberado omitirán sus envíos de SMS hasta que se reasignen a un número
activo. get_sms_usage reporta los totales de producción por separado de testSends.
Cuando send_test_sms omite fromNumberId, utiliza el mismo valor predeterminado
de número activo más antiguo que los envíos de producción. Los envíos de prueba son mensajes reales que consumen créditos,
omiten las horas de silencio y están limitados a 100 por empresa en una ventana móvil de 24
horas.
Comentarios sobre el producto
Usa submit_feedback solo cuando el usuario pida explícitamente al asistente que envíe
comentarios al equipo de Sequenzy. El MCP estándar puede incluir los campos estructurados
de reproducción userIntent, toolCalls, expected, actual y
resourceIds cuando sean necesarios para ese informe. La ruta revisada por OpenAI acepta
solo el mensaje, la categoría y el contexto de flujo de trabajo generalizado opcional. No
incluyas datos de suscriptores no relacionados, contenido de correos electrónicos, cargas útiles de API sin procesar, datos de depuración
o secretos.
Recursos
El servidor también expone recursos MCP de solo lectura.
| Recurso | Descripción |
|---|---|
sequenzy://dashboard | Estadísticas generales en vivo de los últimos 7 días. |
sequenzy://company | Configuración actual de la empresa y localización. |
sequenzy://campaigns/recent | Últimas 10 campañas con estado y estadísticas básicas. |
sequenzy://subscribers/recent | Suscriptores agregados más recientemente. |
sequenzy://subscribers/engaged | Suscriptores más activos o comprometidos. |
sequenzy://sequences | Todas las secuencias con estado. |
sequenzy://templates | Plantillas con estado de localización. |
sequenzy://segments | Segmentos guardados con recuentos de suscriptores. |
sequenzy://tags | Etiquetas con recuentos de uso. |
sequenzy://health | Métricas de entregabilidad y estado de salud. |
sequenzy://email-blocks | Referencia de campos para cada tipo de bloque de correo electrónico. |
sequenzy://app-routes | Plantillas de rutas del panel y pestañas de configuración. |
Prompts de ejemplo
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?
Seguridad
- Usa claves de API personales, no secretos de equipo compartidos.
- Las claves solo acceden a empresas a las que tu usuario de Sequenzy puede acceder.
- Revoca claves desde Configuración -> Claves de API cuando ya no se necesite acceso.
- Mantén habilitados los avisos de aprobación del cliente para envíos, programación, eliminaciones y cambios masivos.
- Prefiere flujos de trabajo de borrador para campañas y secuencias, y luego revisa en Sequenzy antes de lanzar.
Solución de problemas
SEQUENZY_API_KEY environment variable is required
Establece SEQUENZY_API_KEY en la configuración del cliente MCP, o ejecuta:
npx @sequenzy/setup
Clave de API no válida
Crea una nueva clave personal en Configuración -> Claves de API, actualiza tu configuración de MCP y reinicia el cliente.
Falta el alcance de la clave de API
Llama a get_account e inspecciona apiKeyPermissions. Las conexiones locales deben
abrir apiKeyPermissions.manageUrl, agregar el alcance faltante a la clave cargada y
reintentar sin reiniciar. update_api_key puede hacer esto solo para claves de empresa
que ya tengan api_keys:manage; edita las claves personales en la página de Claves de API
a nivel de cuenta. Las conexiones OAuth alojadas pueden alternativamente desconectarse y
reautorizarse con permisos más amplios. El error de la herramienta incluye el alcance o los
alcances exactos requeridos.
Recursos duplicados
Si una llamada de herramienta crearía un nombre de segmento o dominio de envío duplicado, el servidor devuelve un code estable, un description amigable para agentes, un resolution concreto y un docsUrl. Para segmentos, llama a list_segments y reutiliza el ID de segmento existente o elige un nombre diferente. Para sitios web, llama a list_websites; si el dominio no aparece listado para la empresa seleccionada, pertenece a otra empresa o cuenta y debe eliminarse, reasignarse o reemplazarse con un dominio de envío diferente.
Las herramientas no aparecen
- Confirma que
npxesté disponible en el entorno que usa el cliente. - Reinicia el cliente MCP después de editar la configuración.
- Verifica que la configuración esté en la ubicación correcta específica del cliente.
Problemas de red o URL de API
El servidor usa https://api.sequenzy.com por defecto. Si lo anulas, verifica que SEQUENZY_API_URL apunte a una URL base de API de Sequenzy accesible.
Desarrollo
bun install
bun test
bun run type-check
bun run build
Los esquemas de herramientas MCP deben permanecer compatibles con clientes estrictos:
- Las raíces de
inputSchemade herramientas deben ser esquemastype: "object"simples. - No publiques
anyOfen ningún lugar de los esquemas de herramientas. - No pongas
oneOf,allOf,enumonoten la raíz de un esquema de herramienta. - Aplica requisitos condicionales en los manejadores y cúbrelos con pruebas.
Este repositorio independiente refleja el paquete MCP mantenido en el monorepo principal de Sequenzy. Consulta AGENTS.md para las reglas de sincronización.
Licencia
MIT
Descubrimiento nativo para agentes
Sequenzy publica manifiestos legibles por máquina para redes de agentes y descubrimiento estilo A2A:
- Endpoint MCP remoto:
https://api.sequenzy.com/v1/mcp - Manifiesto de capacidades de agente:
agent-capability.json - Tarjeta de agente estilo A2A:
.well-known/agent-card.json - Metadatos de habilidad OpenClaw/Moltbot:
openclaw/skill.json - Guía operativa de OpenClaw/Moltbot:
openclaw/SKILL.md
Estos archivos describen a Sequenzy como una capacidad de automatización de correo electrónico autorizada para agentes. Excluyen explícitamente casos de uso de scraping, spam y divulgación no solicitada en frío.
Roles del workspace
El acceso con clave de cuenta combina los alcances de la clave con tu rol actual en el workspace. get_account reporta los alcances bloqueados en apiKeyPermissions.roleRestrictedScopes; canSendLive significa que al menos un flujo de trabajo de entrega permitido está disponible, no que todas las herramientas de envío estén permitidas.
Puedes invitar a un marketer para gestionar suscriptores, campañas de marketing y secuencias sin otorgar acceso al correo transaccional, configuración del workspace, equipo o facturación. Los especialistas en marketing eligen perfiles de remitente/respuesta existentes. Las fuentes de campañas, pruebas A/B y secuencias respaldadas por transacciones permanecen protegidas mediante vistas previas, uso compartido, análisis e historial de envíos. Los especialistas en marketing y los miembros restringidos no pueden recibir acceso de facturación.