Sequenzy MCP

oficial

Herramienta 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_list y .
  • 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_campaign y send_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_sequence y .
  • 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_status y resume_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:

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 defecto https://api.sequenzy.com.
  • SEQUENZY_APP_URL - URL base del panel de Sequenzy utilizada por los ayudantes de URL de aplicación. Por defecto https://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

  1. Abre el panel de Sequenzy.
  2. Usa el flujo de configuración MCP para crear una clave personal, o abre Configuración -> Claves API para crear una clave de empresa.
  3. Elige un preset de permisos o los alcances personalizados exactos que la integración necesita.
  4. 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

HerramientaDescripción
get_accountObtén información de la cuenta, empresas disponibles, permisos actuales de la clave y la URL de gestión de claves de API.
select_companyEstablece la empresa activa para futuras llamadas a herramientas.
get_app_urlsConstruye 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_companyCrea una nueva empresa o marca.
get_companyLee 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_companyEdita 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_rulesLee las reglas de evento a etiqueta de la empresa y si utiliza el ajuste preestablecido de plataforma heredado.
update_sync_rulesReemplaza 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_settingsLee la configuración de abandono de navegación, abandono de carrito y caída de precios para la tienda Shopify conectada.
update_shopify_automation_settingsActualiza parcialmente la configuración de automatización de Shopify o restablece una sección individual a sus valores predeterminados de plataforma.
create_api_keyCrea 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_handoffPrepara 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_keysLista las claves de API de la empresa como metadatos no secretos para identificación y limpieza seguras.
update_api_keyRenombra una clave de API de empresa o reemplaza su ajuste preestablecido de permisos o ámbitos sin cambiar el valor de la clave.
revoke_api_keyRevoca permanentemente una clave de API de empresa exacta por ID después de verificarla con list_api_keys.
delete_api_keyAlias de compatibilidad para revoke_api_key.
list_websitesLista los dominios de envío con estado agregado almacenado, SPF, DKIM y MAIL FROM.
add_sending_domainAgrega un dominio de envío y devuelve sus registros de configuración DNS específicos de la cohorte.
add_websiteAlias de compatibilidad para add_sending_domain.
check_websiteLee los detalles de verificación SPF, DKIM, MAIL FROM y agregados almacenados de un dominio de envío.
verify_sending_domainEjecuta una verificación nueva de DNS/proveedor del dominio de envío y devuelve el estado actual y diagnósticos.
list_integrationsLista las integraciones conectadas con salud de conexión y sincronización, sin devolver credenciales.
get_sending_statusDiagnostica envíos activos, en pausa o suspendidos, incluidos denominadores de aplicación, revisiones de control y pasos de remediación.
resume_sendingRestaura una pausa elegible por rebote duro después de confirmar explícitamente que la lista ha sido saneada.
get_tracking_settingsLee 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_settingsActualiza 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_guideObtén ejemplos de integración específicos del framework.
get_integrationInspecciona una integración conectada, su cableado de eventos, segmentación de listas, actividad reciente y recomendaciones.
list_integration_capabilitiesCompara capacidades de proveedores estén o no conectados.
connect_integrationConecta 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_schemaInspecciona ejemplos de cargas útiles de eventos publicados, rutas de propiedades, tipos y etiquetas de fusión por proveedor.
list_integration_activityLee el registro de actividad de webhook y sincronización retenido específico de la integración.
set_integration_sync_enabledHabilita o deshabilita importaciones masivas y rellenos mientras deja los webhooks en vivo conectados.
set_integration_list_targetingElige a qué listas se unen los contactos creados por una integración compatible en futuras escrituras del proveedor.
sync_integrationPon 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_pixelLee el estado en vivo de píxel/configuración de Shopify y distingue eventos oscuros confirmados de una lectura desconocida.
activate_integration_pixelInstalar o reasignar el píxel de la tienda de Shopify; idempotente cuando ya está actualizado.
list_web_tracking_keysListar claves de seguimiento web publicables, restricciones de origen, estado de uso y fragmentos de instalación.
get_web_tracking_keyObtener una clave de seguimiento web con su fragmento de instalación exacto y su punto de conexión de ingesta.
create_web_tracking_keyCrear una clave de seguimiento publicable para una tienda o sitio web que no sea de Shopify.
update_web_tracking_keyRenombrar, restringir, revocar o reactivar una clave de seguimiento web.
delete_web_tracking_keyEliminar permanentemente una clave de seguimiento web después de que se haya quitado su fragmento.
list_sender_profilesListar perfiles de remitente y de respuesta, valores predeterminados y preparación del dominio de envío.
update_sender_profileRenombrar un perfil de remitente o de respuesta sin cambiar los valores predeterminados de la cuenta.
delete_sender_profileEliminar permanentemente un perfil de remitente no utilizado, con protecciones para superficies de envío activas y el último remitente restante.
get_notification_preferencesLeer 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_preferencesActualizar 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_emailRenderizar 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

HerramientaDescripción
add_subscriberAgregar un suscriptor; el estado es solo de creación, así que use update_subscriber para un contacto existente.
create_subscriber_importPoner 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_importLeer progreso, conteos de resultados de filas y resúmenes de fallos para una importación en cola.
update_subscriberActualizar campos nativos de perfil y teléfono, consentimiento SMS, atributos, etiquetas o estado global.
remove_subscriberCancelar suscripción preservando el historial de supresión, o eliminar permanentemente solo con hardDelete: true.
get_subscriberObtener detalles del suscriptor por correo electrónico o ID externo.
search_subscribersBuscar por consulta, etiquetas, lista, estado, segmento o un atributo personalizado, con paginación automática o reanudable.
trigger_subscriber_eventEmitir un evento personalizado exactamente como lo haría una integración, aplicando reglas de sincronización y coincidiendo con disparadores de secuencia.
trigger_subscriber_eventsEmitir varios eventos personalizados ordenados para un suscriptor.
import_subscriber_eventsImportar 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_tagsAgregar etiquetas a hasta 500 suscriptores existentes; requiere subscribers:tag y puede requerir tags:write.
bulk_remove_subscriber_tagsEliminar 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

HerramientaDescripción
list_productsLista productos sincronizados desde Stripe, Shopify, WooCommerce, manuales o datos de Commerce API.
upsert_productsCrea o actualiza hasta 100 productos de Commerce API claveados por su ID de producto.
delete_productElimina un producto previamente enviado a través de Commerce API.
attach_product_fileAdjunta un archivo de entrega alojado o cargado localmente a un producto.
remove_product_fileElimina un archivo de entrega de producto adjunto.
sync_productsPone 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

HerramientaDescripción
upload_image_assetCarga 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

HerramientaDescripción
list_tagsLista todas las etiquetas.
create_tagCrea una definición de etiqueta con un color opcional.
update_tagActualiza el color de una etiqueta.
delete_tagElimina una etiqueta y la quita de los suscriptores.
list_listsLista las listas de suscriptores.
create_listCrea una lista de suscriptores.
update_listRenombra o describe una lista de suscriptores.
delete_listElimina una lista de suscriptores.
add_subscribers_to_listAgrega hasta 500 suscriptores a una lista desde una matriz de correos.
remove_subscribers_from_listElimina hasta 500 suscriptores de una lista.
list_segmentsLista segmentos guardados y conteos.
create_segmentCrea segmentos filtrados por matriz anidados o de mismo elemento.
update_segmentActualiza nombre, filtros, grupo raíz u operador de unión del segmento.
delete_segmentElimina un segmento (requiere segments:delete).
get_segment_countPrevisualiza 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_not
  • tag: contains, not_contains, is_empty, is_not_empty
  • email: contains, not_contains
  • emailProvider, list: is, is_not, is_empty, is_not_empty
  • firstName, lastName: contains, not_contains, is_empty, is_not_empty
  • added: less_than, more_than
  • attribute: is, is_not, is_empty, is_not_empty, gte, lte, gt, lt, contains, not_contains
  • event, campos de participación de correo: is, is_not, at_least, less_than_count
  • emailBounced: también admite is_temporary_bounce, is_permanent_bounce
  • stripeProduct: is, is_not, at_least, less_than_count
  • stripeCurrentProduct, stripeTrialProduct: is, is_not, gte, lte, gt, lt
  • commerceProduct: is, is_not, at_least, less_than_count

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)

HerramientaDescripción
list_audience_syncsLista sincronizaciones de segmento a audiencia con horario y estado de última sincronización.
list_ad_accountsLista las cuentas publicitarias de Meta disponibles para sincronizar.
create_audience_syncEnvía un segmento a una audiencia personalizada de Meta según un horario.
update_audience_syncCambia la frecuencia de sincronización (hourly, daily, weekly) o pausa/reanuda.
delete_audience_syncElimina una asignación de sincronización; la audiencia de Meta en sí se conserva.
sync_audience_nowActiva 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

HerramientaDescripción
list_templatesLista plantillas con estado de localización, etiqueta y filtrado por isTemplate, y paginación.
get_templateLee detalles de plantilla, contenido y variantes localizadas.
create_templateCrea plantillas desde un prompt, HTML o bloques de Sequenzy; usa isTemplate: true para guardar un diseño maestro reutilizable.
update_templateActualiza metadatos de plantilla, texto de vista previa en bandeja de entrada, etiquetas, HTML o bloques; marca o desmarca un maestro con isTemplate.
set_template_localizationCrea o reemplaza una variante localizada proporcionada por el llamador.
sync_template_localizationsPone en cola la traducción por IA para locales no primarios seleccionados o todos los habilitados.
delete_templateElimina 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

HerramientaDescripción
list_email_componentsLista secciones y pies de página guardados, opcionalmente limitados a valores predeterminados fijados.
get_email_componentLee los bloques, metadatos, versión y estado de ranura predeterminada de un componente.
get_default_email_componentLee el componente actualmente fijado a una ranura predeterminada como footer.
set_default_email_componentCrea o reemplaza el pie de página predeterminado de la empresa usado por correos de bloques recién construidos.
create_email_componentGuarda una sección o pie de página reutilizable desde una lista de bloques.
update_email_componentActualiza metadatos de componente o reemplaza sus bloques e incrementa su versión.
delete_email_componentElimina 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

HerramientaDescripción
list_ab_testsLista pruebas A/B y variantes, opcionalmente limitadas por secuencia.
get_ab_testObtiene configuraciones efectivas, variantes, estado de localización y copia de paso de secuencia.
get_ab_test_statsObtiene estadísticas agregadas y por variante.
restart_ab_testReinicia una prueba A/B detenida o completada.
select_ab_test_winnerSelecciona un ganador de prueba de campaña y pone en cola la entrega restante.
update_ab_testActualiza configuraciones de selección de ganador de campaña o secuencia.
update_ab_test_variantActualiza el borrador de campaña o la copia de variante de secuencia.
create_ab_testCrea una prueba de campaña o convierte un paso de correo de secuencia.
add_ab_test_variantAgrega una variante a una prueba A/B existente.
delete_ab_test_variantElimina una variante de prueba A/B en borrador.
delete_ab_testElimina 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

HerramientaDescripción
list_campaignsLista 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_campaignObtén detalles, estadísticas, comentarios del revisor y el ritmo de entrega registrado de una campaña.
get_campaign_audienceResuelve la segmentación guardada, referencias faltantes, un resumen en lenguaje sencillo y el recuento de destinatarios en vivo.
list_campaign_goalsLista los objetivos de conversión persistidos para una campaña de correo electrónico (SMS no es compatible).
create_campaign_goalAñade un objetivo de conversión de campaña de correo electrónico por evento, atributo de suscriptor o etiqueta aplicada.
update_campaign_goalActualiza un objetivo de conversión de campaña de correo electrónico persistido.
delete_campaign_goalElimina un objetivo de conversión de campaña de correo electrónico persistido.
list_email_sendsBusca 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_sendInspecciona una entrega en cola, de prueba, enviada, suprimida o fallida mediante el ID duradero de envío de correo.
list_recipient_suppressionsLista los destinatarios suprimidos asociados, incluyendo direcciones globales inválidas protegidas y quejas.
get_recipient_suppressionComprueba el rebote local, la queja, la higiene de correo y la supresión regional de SES para un destinatario exacto.
remove_recipient_suppressionElimina una escalada de rebote suave del espacio de trabajo preservando las protecciones globales, de rebote duro y de quejas.
create_campaignCrea una campaña con contenido, datos y anulaciones opcionales de identidad De/Responder a.
update_campaignActualiza una campaña en borrador, incluyendo contenido, datos, identidades, audiencia y configuración STO persistida.
schedule_campaignPrograma o reprograma una campaña, anulando opcionalmente STO y su ventana de entrega de 1 a 24 horas.
send_test_emailEnvía un correo de prueba a una dirección.
render_emailRenderiza HTML exacto seguro para correo e informa etiquetas no resueltas, incluyendo errores tipográficos ocultos por valores predeterminados.
cancel_campaignCancela una campaña programada o en envío.
pause_campaignPausa una campaña en envío.
resume_campaignReanuda una campaña pausada, opcionalmente distribuyendo la entrega en el tiempo.
delete_campaignElimina una campaña.
duplicate_campaignDuplica una campaña en un nuevo borrador.
resend_campaign_to_non_openersCrea 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

HerramientaDescripción
list_formsLista los formularios guardados con su configuración de audiencia gestionada por el servidor, bloques de contenido y URLs de acción públicas.
create_formCrea y publica un formulario guardado con campos estándar de correo/nombre, configuración de audiencia, tema y comportamiento de éxito.
update_formActualiza un formulario guardado, incluyendo su array completo de bloques ordenados y campos personalizados tipados.
get_form_embedDevuelve 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

HerramientaDescripción
list_popupsLista los popups guardados con estado y estadísticas de participación, opcionalmente incluyendo contenido completo.
get_popupObtiene los bloques, disparador, segmentación, programación, frecuencia, tema y código de inserción publicado de un popup.
create_popupCrea un popup desde una plantilla inicial, publicado por defecto, y devuelve su script de despliegue.
update_popupActualiza parcialmente el texto, audiencia, comportamiento, tema, bloques o estado de publicación del popup.
get_popup_embedDevuelve fragmentos de inserción HTML sin secretos, React/Next.js, WordPress y Shopify.
duplicate_popupCopia un popup en un borrador con contadores de participación independientes.
delete_popupElimina 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

HerramientaDescripción
list_landing_pagesLista las páginas de aterrizaje con estado, métricas, contenido y URLs.
get_landing_pageObtiene detalles de la página de aterrizaje, contenido del constructor, métricas y URLs publicadas.
render_landing_pageDevuelve una vista previa firmada de 24 horas para visitantes sin publicar, contar vistas ni recopilar registros.
create_landing_pageCrea una página de aterrizaje en borrador desde contenido de plantilla predeterminado o JSON.
update_landing_pageEdita el nombre, slug o contenido completo compatible con el editor de una página de aterrizaje.
publish_landing_pagePublica una página de aterrizaje, opcionalmente guardando ediciones primero.
unpublish_landing_pageDevuelve una página de aterrizaje a estado de borrador, opcionalmente guardando ediciones primero.
duplicate_landing_pageDuplica una página de aterrizaje en un nuevo borrador con un slug único.
delete_landing_pageElimina una página de aterrizaje no publicada.
connect_landing_page_domainConecta un dominio personalizado de página de aterrizaje y devuelve detalles de configuración DNS.
update_landing_page_domain_settingsReemplaza 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

HerramientaDescripción
list_sequencesLista secuencias con estado de panel, búsqueda, etiqueta, límite y filtros de desplazamiento.
get_sequenceObté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_enrollmentsLista 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_emailEnvía un paso guardado de action_email a 1-10 revisores; los pasos A/B se inspeccionan por variante.
create_sequenceCrea un borrador de panel en blanco o una secuencia generada por IA o con pasos explícitos.
update_sequenceActualiza identidad, configuración, inscripción, pasos existentes, lógica de ramas o inserta pasos lineales.
update_sequence_nodeParcheo consciente de tipos de un nodo de secuencia existente.
update_sequence_nodesParchea atómicamente múltiples nodos de secuencia existentes.
insert_sequence_stepInserta cualquier paso de panel tipado, incluyendo generación por IA, webhooks salientes, esperas y ramas cableadas.
edit_sequence_graphMueve, reconecta, elimina o duplica nodos del grafo; reporta destinatarios movidos o completados.
simulate_sequencePrueba en seco coincidencias actuales, preparación de activación y la ruta de rama opcional de un contacto sin inscribir ni enviar.
enable_sequenceActiva una secuencia.
disable_sequenceCongela una secuencia, bloqueando nuevas inscripciones y reteniendo a los destinatarios actuales.
duplicate_sequenceCrea una copia de borrador independiente del grafo, correos electrónicos y pruebas A/B de la secuencia.
archive_sequenceMueve una secuencia al archivo del panel y detiene nuevas inscripciones.
unarchive_sequenceRestaura una secuencia archivada como borrador deshabilitado.
list_sequence_goalsLista los objetivos de conversión de evento, atributo de suscriptor y etiqueta aplicada persistidos para una secuencia.
create_sequence_goalAgrega un objetivo de conversión de evento, atributo de suscriptor o etiqueta aplicada.
update_sequence_goalActualiza un objetivo de conversión de secuencia persistido.
delete_sequence_goalElimina un objetivo de conversión de secuencia persistido.
get_sequence_inbound_webhookLee 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_webhookConfigura el endpoint, mapeo de campos y muestra; la ruta de OpenAI elimina la URL con credenciales de su resultado.
rotate_sequence_inbound_webhook_secretRota 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_enrollmentsDetiene nuevas inscripciones para una secuencia activa mientras los destinatarios actuales continúan.
resume_sequence_enrollmentsReabre nuevas inscripciones para una secuencia activa sin cambiar a los destinatarios actuales.
enroll_subscribers_in_sequenceInscribe hasta 500 suscriptores por correo electrónico, ID de suscriptor o ambos, con idempotencia segura para reintentos.
cancel_sequence_enrollmentsDetiene inscripciones activas o en espera por valores de campos de suscriptor o evento de entrada.
realign_sequence_enrollmentsPrevisualiza o pone en cola el movimiento de esperas en vivo anteriores a la apertura de su ventana de envío.
get_sequence_enrollment_realignmentConsulta un trabajo de realineación aplicado y lee su resultado completado o cursor de continuación.
delete_sequenceElimina 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" con listId, varios listIds o listScope: any_contact (el predeterminado) inscribe a cada contacto agregado, incluidos los contactos que no se unen a ninguna lista, mientras que any_list espera una membresía de lista real.
  • trigger: "tag_added" con tagName o varios tagNames; cualquier etiqueta configurada inscribe al contacto.
  • trigger: "segment_entered" más segmentId para 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ás eventName, inactiveDays y inactivityBaseline opcional (sequence_created_at o subscriber_created_at).
  • goal para 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.
  • steps explícito con blocks de Sequenzy.
  • steps explí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 mediante waitUntil o compuertas de calendario mediante waitUntilWeekday. 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_discount crea 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 un enrollmentFieldPath escalar para automatizaciones de eventos específicos de producto, variante, pedido o suscripción. El recorrido de arreglos con [] pertenece a propertyFilters, 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

HerramientaDescripción
get_email_block_schemaListe 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

HerramientaDescripción
list_transactional_emailsBuscar/filtrar plantillas y ordenar por métricas de entrega; devuelve asuntos y URL del panel.
get_transactional_emailLeer un correo electrónico transaccional por ID o slug.
create_transactional_emailCrear una plantilla transaccional a partir de una indicación, HTML o bloques.
update_transactional_emailActualizar metadatos transaccionales o contenido del cuerpo.
send_emailEnviar 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

HerramientaDescripción
get_statsObtén estadísticas generales para 7d, 30d o 90d; filtra por tipo estructural de correo.
get_transactional_statsObtén métricas de todo el tiempo o de un período para un correo transaccional guardado por ID o slug.
get_campaign_statsObtén rendimiento de campañas, métricas de respuestas, objetivos de conversión adjuntos y resúmenes de Poll/NPS.
list_poll_responsesLista la respuesta más reciente de Poll/NPS de cada encuestado por bloque, con identidad y tiempo de respuesta.
get_sequence_statsObtén rendimiento agregado y por paso de secuencias, más recuentos de inscripciones activas/en espera por nodo actual.
list_email_metricsCompara embudos de campañas y pasos de secuencia, respuestas, conversiones e ingresos, incluidos pasos entre secuencias.
list_campaign_eventsLista eventos de correo sin procesar paginados para una campaña.
list_sequence_eventsLista eventos sin procesar paginados para una secuencia, opcionalmente limitados a un paso de correo.
get_subscriber_activityObté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

HerramientaDescripción
list_team_membersLista miembros del equipo e invitaciones pendientes.
invite_team_memberInvita a un compañero como administrador o visor, con acceso de facturación opcional.
cancel_team_invitationCancela una invitación de equipo pendiente.
list_conversationsLista conversaciones de respuestas de suscriptores con filtros de estado y no leídos.
get_conversationLee una conversación y su historial de mensajes.
reply_to_conversationPon en cola una respuesta saliente o agrega una nota interna.
update_conversation_statusAbre o cierra una conversación.
mark_conversation_readMarca todos los mensajes de una conversación como leídos.
list_webhooksLista endpoints de webhooks salientes.
create_webhookCrea un endpoint y devuelve su secreto de firma de un solo uso en MCP estándar; omitido en la ruta revisada por OpenAI.
update_webhookActualiza nombre, URL, eventos o estado del webhook.
delete_webhookElimina permanentemente un endpoint de webhook y su historial de entregas.
test_webhookEnvía un evento de prueba a un endpoint de webhook.
list_webhook_deliveriesLista intentos de entrega recientes para un webhook.
replay_webhook_deliveryReproduce 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

HerramientaDescripción
generate_emailGenera bloques de correo con marca a partir de un prompt.
generate_sequenceAlias obsoleto que persiste un borrador de secuencia basado en objetivos.
generate_subject_linesGenera 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

HerramientaDescripción
generate_smsGenera texto de SMS a partir de un prompt.
get_sms_settingsLee la preparación del complemento de SMS, créditos, valores predeterminados y números aprovisionados.
get_sms_usageCompara envíos, resultados de entrega, créditos cobrados, última actividad y envíos de prueba por número.
update_sms_number_labelActualiza la etiqueta de un número o la anulación del prefijo de marca por número.
release_sms_numberDevuelve permanentemente un número al operador y libera su espacio en el workspace.
send_test_smsEnví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.

RecursoDescripción
sequenzy://dashboardEstadísticas generales en vivo de los últimos 7 días.
sequenzy://companyConfiguración actual de la empresa y localización.
sequenzy://campaigns/recentÚltimas 10 campañas con estado y estadísticas básicas.
sequenzy://subscribers/recentSuscriptores agregados más recientemente.
sequenzy://subscribers/engagedSuscriptores más activos o comprometidos.
sequenzy://sequencesTodas las secuencias con estado.
sequenzy://templatesPlantillas con estado de localización.
sequenzy://segmentsSegmentos guardados con recuentos de suscriptores.
sequenzy://tagsEtiquetas con recuentos de uso.
sequenzy://healthMétricas de entregabilidad y estado de salud.
sequenzy://email-blocksReferencia de campos para cada tipo de bloque de correo electrónico.
sequenzy://app-routesPlantillas 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 npx esté 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 inputSchema de herramientas deben ser esquemas type: "object" simples.
  • No publiques anyOf en ningún lugar de los esquemas de herramientas.
  • No pongas oneOf, allOf, enum o not en 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:

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.