postari

Email marketing y transaccional AI-native: campañas, correos 1-a-1, contactos, flujos y métricas.

使うべきか

品質と安全性

B
説明の品質
75%
スキーマの完全性
85%
命名の品質
95%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(16)

  • LOWTool 'create_subscriber' description lacks action verbcreate_subscriber 内
  • LOWTool 'get_subscriber' description lacks action verbget_subscriber 内
  • LOWTool 'update_subscriber' description lacks action verbupdate_subscriber 内
  • LOWTool 'clean_bounced_subscribers' description lacks action verbclean_bounced_subscribers 内
  • LOWTool 'tag_subscribers' description lacks action verbtag_subscribers 内
  • LOWTool 'trigger_flow' description lacks action verbtrigger_flow 内
  • LOWTool 'account_stats' description lacks action verbaccount_stats 内
  • LOWTool 'get_campaign_stats' description lacks action verbget_campaign_stats 内
  • LOWTool 'get_launch' description lacks action verbget_launch 内
  • LOWTool 'link_campaign_to_launch_stage' description lacks action verblink_campaign_to_launch_stage 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~5,084トークン数(ツール定義)
~949 B一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 3.97%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "postari": {
      "url": "https://postari.io/api/mcp"
    }
  }
}

リモートエンドポイント

https://postari.io/api/mcpstreamable-http

できること

ツール一覧

ツール(37)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟡send_transactional_email(to_email, template_id, subject, html_body, variables, ...)

Envía un correo transaccional 1-a-1 (cotización, recibo, bienvenida, recordatorio) a UNA dirección, usando una plantilla y variables. Síncrono. Requiere scope `send`.

入力スキーマ

{
  "type": "object",
  "properties": {
    "to_email": {
      "type": "string",
      "description": "Correo del destinatario."
    },
    "template_id": {
      "type": "string",
      "description": "ID de la plantilla en Postari (opcional si mandas subject+html_body)."
    },
    "subject": {
      "type": "string",
      "description": "Asunto (opcional si la plantilla lo trae)."
    },
    "html_body": {
      "type": "string",
      "description": "HTML libre (opcional, alternativa a template_id)."
    },
    "variables": {
      "type": "object",
      "description": "Variables mustache {{var}} para rellenar la plantilla. Ej: {\"first_name\":\"María\"}.",
      "additionalProperties": true
    },
    "from_name": {
      "type": "string",
      "description": "Nombre del remitente (opcional)."
    }
  },
  "required": [
    "to_email"
  ]
}
🟡create_subscriber(email, first_name, last_name, country, phone, ...)

Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar.

入力スキーマ

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Correo del contacto (requerido)."
    },
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "type": "string"
    },
    "country": {
      "type": "string",
      "description": "Código ISO de país, ej \"CO\"."
    },
    "phone": {
      "type": "string"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Etiquetas a aplicar."
    },
    "metadata": {
      "type": "object",
      "description": "Campos personalizados.",
      "additionalProperties": true
    }
  },
  "required": [
    "email"
  ]
}
🟢get_subscriber(email)

Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico.

入力スキーマ

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Correo a buscar."
    }
  },
  "required": [
    "email"
  ]
}
🟡update_subscriber(email, first_name, last_name, country, phone, ...)

Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas).

入力スキーマ

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string"
    },
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "email"
  ]
}
⚪clean_bounced_subscribers(list_id, aplicar)

Saca de circulación a los contactos que rebotaron y NUNCA recibieron ningún correo (direcciones muertas que ensucian la reputación en cada envío). Conserva a quien alguna vez recibió bien: ese rebote fue transitorio. Sin `aplicar:true` solo devuelve el recuento, no cambia nada.

入力スキーマ

{
  "type": "object",
  "properties": {
    "list_id": {
      "type": "string",
      "description": "Limitar la limpieza a una lista. Si se omite, aplica a toda la cuenta."
    },
    "aplicar": {
      "type": "boolean",
      "description": "false (por defecto) = simulacro, devuelve el recuento sin tocar nada. true = ejecuta la supresión."
    }
  }
}
🟢list_lists

Lista todas las listas de contactos del tenant con su nombre y conteo.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟡create_list(name, description)

Crea una nueva lista de contactos.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Nombre de la lista."
    },
    "description": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ]
}
🟡add_subscriber_to_list(list_id, email, contact_id)

Añade un contacto (por email o contact_id) a una lista.

入力スキーマ

{
  "type": "object",
  "properties": {
    "list_id": {
      "type": "string",
      "description": "ID de la lista."
    },
    "email": {
      "type": "string"
    },
    "contact_id": {
      "type": "string"
    }
  },
  "required": [
    "list_id"
  ]
}
⚪tag_subscribers(tag, operation, emails, contact_ids)

Añade o quita una etiqueta a varios contactos (por emails o contact_ids).

入力スキーマ

{
  "type": "object",
  "properties": {
    "tag": {
      "type": "string",
      "description": "Nombre de la etiqueta."
    },
    "operation": {
      "type": "string",
      "enum": [
        "add",
        "remove"
      ],
      "description": "add (default) o remove."
    },
    "emails": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "contact_ids": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "tag"
  ]
}
⚪trigger_flow(flow_id, email, contact_id, trigger_data)

Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia.

入力スキーマ

{
  "type": "object",
  "properties": {
    "flow_id": {
      "type": "string",
      "description": "ID del flujo."
    },
    "email": {
      "type": "string"
    },
    "contact_id": {
      "type": "string"
    },
    "trigger_data": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "flow_id"
  ]
}
⚪account_stats(from, to)

Métricas globales de la cuenta (enviados, entregados, abrieron, hicieron clic, bajas, rebotes, contactos nuevos) en un rango de días de la zona horaria de la cuenta, ambos incluidos. Tasas en % sobre entregados.

入力スキーマ

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "description": "Fecha inicio YYYY-MM-DD (opcional)."
    },
    "to": {
      "type": "string",
      "description": "Fecha fin YYYY-MM-DD (opcional)."
    }
  }
}
🟢list_campaigns(status, limit)

Lista las campañas/correos del tenant. Filtrable por estado (draft, scheduled, sending, sent).

入力スキーマ

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Filtro de estado (opcional)."
    },
    "limit": {
      "type": "number",
      "description": "1-500, default 20."
    }
  }
}
🟢get_campaign_stats(campaign_id)

Métricas reales de una campaña (enviados, aperturas únicas/totales, clics, rebotes, bajas, ingresos).

入力スキーマ

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "description": "ID de la campaña."
    }
  },
  "required": [
    "campaign_id"
  ]
}
⚪launch_campaign(brief, list_id, goal, tone, cta_url, ...)

AGÉNTICA · Lanza una campaña de correo COMPLETA desde un brief en lenguaje natural. Postari GENERA el correo (asunto + diseño con la voz y el color de marca del tenant), lo arma sobre una lista y devuelve un BORRADOR con preview (preview_html). Por defecto NO envía: para enviar de verdad, vuelve a llamar con los mismos campos + confirm_send:true (o scheduled_at para agendar). Es la forma de "dile el objetivo y Postari lo logra". Requiere scope `write` (borrador) o `send` (enviar).

入力スキーマ

{
  "type": "object",
  "properties": {
    "brief": {
      "type": "string",
      "description": "Qué comunicar, en lenguaje natural. Ej: \"Black Friday 30% OFF en todos los cursos, tono urgente, cierra el viernes\". Postari escribe el correo."
    },
    "list_id": {
      "type": "string",
      "description": "UUID de la lista destino (usa list_lists para verlas)."
    },
    "goal": {
      "type": "string",
      "description": "Objetivo opcional: ventas, reactivación, anuncio, evento…"
    },
    "tone": {
      "type": "string",
      "description": "Tono opcional: cálido, urgente, divertido, profesional…"
    },
    "cta_url": {
      "type": "string",
      "description": "URL del botón principal (opcional)."
    },
    "cta_label": {
      "type": "string",
      "description": "Texto del botón (opcional)."
    },
    "subject": {
      "type": "string",
      "description": "Asunto exacto (opcional · si lo das, no se genera)."
    },
    "blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "description": "Bloques de contenido propios (opcional · alternativa a brief)."
    },
    "html_body": {
      "type": "string",
      "description": "HTML libre (opcional · alternativa a brief/blocks)."
    },
    "from_name": {
      "type": "string",
      "description": "Nombre del remitente (opcional)."
    },
    "scheduled_at": {
      "type": "string",
      "description": "ISO8601 para agendar el envío (opcional · requiere confirm_send)."
    },
    "variables": {
      "type": "object",
      "additionalProperties": true,
      "description": "Variables mustache {{var}} (opcional)."
    },
    "confirm_send": {
      "type": "boolean",
      "description": "false (default) = solo borrador + preview, no envía. true = ENVÍA de verdad a la lista (requiere scope send + que el tenant tenga habilitados los envíos por agente)."
    }
  },
  "required": [
    "list_id"
  ]
}
⚪diagnose_deliverability

Diagnóstico de ENTREGABILIDAD de la cuenta (últimos 28 días): rebotes, quejas de spam, aperturas y salud del dominio (DNS). Devuelve un veredicto (sano/a_vigilar/en_riesgo) + acciones priorizadas. Úsalo antes de un envío grande o si los correos no llegan.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟢get_agent_activity(limit)

Transparencia "qué hizo la IA": lista las acciones de la cuenta originadas por un agente/IA (chat Atelier, API de agente, A2A) — qué se hizo, sobre qué y cuándo. Para auditar lo que un agente ejecutó.

入力スキーマ

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "1-100, default 50."
    }
  }
}
🟡create_launch(name, kind, starts_at, ends_at, target_revenue_cents, ...)

Crea un LANZAMIENTO (curso, infoproducto, evento…) con sus etapas: es la unidad que agrupa los correos de una campaña con fechas. Si no pasas `stages` y el tipo es curso/infoproducto, siembra 8 etapas estándar (lead magnet → webinar → apertura de carrito → cierre).

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Nombre del lanzamiento."
    },
    "kind": {
      "type": "string",
      "description": "curso | membresía | infoproducto | evento | servicio | otro. Default: curso."
    },
    "starts_at": {
      "type": "string",
      "description": "Fecha de inicio en ISO 8601."
    },
    "ends_at": {
      "type": "string",
      "description": "Fecha de cierre en ISO 8601."
    },
    "target_revenue_cents": {
      "type": "number",
      "description": "Objetivo de facturación en céntimos (opcional)."
    },
    "seed_default_stages": {
      "type": "boolean",
      "description": "false para crearlo SIN etapas. Default: true en curso/infoproducto."
    },
    "stages": {
      "type": "array",
      "description": "Etapas explícitas: [{kind,title,scheduled_at}].",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "name"
  ]
}
🟢list_launches(status, limit)

Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo.

入力スキーマ

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "planning | active | closed | archived."
    },
    "limit": {
      "type": "number"
    }
  }
}
🟢get_launch(launch_id)

Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, aperturas y clics de personas únicas) más el total. Es la forma de saber cómo va un lanzamiento.

入力スキーマ

{
  "type": "object",
  "properties": {
    "launch_id": {
      "type": "string"
    }
  },
  "required": [
    "launch_id"
  ]
}
⚪link_campaign_to_launch_stage(launch_id, stage_id, campaign_id, title, scheduled_at, ...)

Conecta un correo YA ESCRITO a una etapa del lanzamiento (o lo desconecta con campaign_id null). Sin esto la etapa no mide nada: sus KPIs dependen de este vínculo. También sirve para cambiar título, fecha o estado de la etapa.

入力スキーマ

{
  "type": "object",
  "properties": {
    "launch_id": {
      "type": "string"
    },
    "stage_id": {
      "type": "string"
    },
    "campaign_id": {
      "type": "string",
      "description": "ID de la campaña a conectar. null para desconectar."
    },
    "title": {
      "type": "string"
    },
    "scheduled_at": {
      "type": "string",
      "description": "ISO 8601."
    },
    "status": {
      "type": "string",
      "description": "planned | sent | done | skipped."
    }
  },
  "required": [
    "launch_id",
    "stage_id"
  ]
}
🟡create_flow(name, trigger_type, trigger_config, graph)

Crea una automatización. NACE EN BORRADOR Y DESARMADA: no envía nada hasta que se pruebe, se active y se arme a propósito. El `graph` es el mismo formato que devuelve get_flow.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "trigger_type": {
      "type": "string",
      "description": "list_subscribe | tag_added | form_submit | date_relative | birthday | abandoned_cart | api | manual…"
    },
    "trigger_config": {
      "type": "object",
      "description": "Config del disparador (p. ej. {\"list_id\":\"...\"}).",
      "additionalProperties": true
    },
    "graph": {
      "type": "object",
      "description": "Pasos: {\"nodes\":[{\"id\":\"1\",\"type\":\"email\",\"label\":\"...\",\"config\":{\"subject\":\"...\",\"blocks\":[...]},\"next\":\"2\"}],\"edges\":[]}.",
      "additionalProperties": true
    }
  },
  "required": [
    "name"
  ]
}
🟡update_flow(flow_id, name, status, armed, trigger_config, ...)

Edita una automatización: nombre, disparador, pasos (graph) o estado. NO sirve para armar (eso es arm_flow, que exige confirmación); sí para DESARMAR con armed:false.

入力スキーマ

{
  "type": "object",
  "properties": {
    "flow_id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "description": "draft | active | paused."
    },
    "armed": {
      "type": "boolean",
      "description": "Solo false (desarmar). Para armar usa arm_flow."
    },
    "trigger_config": {
      "type": "object",
      "additionalProperties": true
    },
    "graph": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "flow_id"
  ]
}
⚪test_flow(flow_id, to_email)

Prueba una automatización enviándola de verdad a UN miembro de la cuenta (por defecto el dueño). Es OBLIGATORIO antes de armar. No se puede usar para mandar correo a terceros: to_email tiene que ser de un miembro.

入力スキーマ

{
  "type": "object",
  "properties": {
    "flow_id": {
      "type": "string"
    },
    "to_email": {
      "type": "string",
      "description": "Correo de un miembro de la cuenta. Por defecto, el dueño."
    }
  },
  "required": [
    "flow_id"
  ]
}
⚪activate_flow(flow_id, paused)

Pone la automatización en servicio (status active) o la pausa con paused:true. OJO: activar NO hace que envíe — para eso hace falta armarla (arm_flow).

入力スキーマ

{
  "type": "object",
  "properties": {
    "flow_id": {
      "type": "string"
    },
    "paused": {
      "type": "boolean",
      "description": "true para pausar en vez de activar."
    }
  },
  "required": [
    "flow_id"
  ]
}
⚪arm_flow(flow_id, confirm, acknowledge_no_list_filter)

ARMA la automatización: a partir de aquí envía correos REALES sola. Exige confirm:"ARMAR ENVIOS" literal, haber probado el flujo antes, y que la cuenta permita envíos por agente. NO es retroactivo: solo entra quien cumpla el disparador de ahora en adelante.

入力スキーマ

{
  "type": "object",
  "properties": {
    "flow_id": {
      "type": "string"
    },
    "confirm": {
      "type": "string",
      "description": "Tiene que ser exactamente \"ARMAR ENVIOS\"."
    },
    "acknowledge_no_list_filter": {
      "type": "boolean",
      "description": "Obligatorio si el disparador es \"cualquier lista\"."
    }
  },
  "required": [
    "flow_id",
    "confirm"
  ]
}
🟢list_flow_emails(flow_id)

Los correos de una automatización, cada uno con su node_id, su asunto y su URL propia para compartir con el cliente. Antes estos correos no tenían dirección: vivían enterrados en el flujo.

入力スキーマ

{
  "type": "object",
  "properties": {
    "flow_id": {
      "type": "string"
    }
  },
  "required": [
    "flow_id"
  ]
}
🟡update_flow_email(flow_id, node_id, subject, preheader, label, ...)

Edita UN correo de una automatización (asunto, preheader, bloques o etiqueta) sin tocar el resto del flujo. Más seguro que reescribir el graph entero.

入力スキーマ

{
  "type": "object",
  "properties": {
    "flow_id": {
      "type": "string"
    },
    "node_id": {
      "type": "string"
    },
    "subject": {
      "type": "string"
    },
    "preheader": {
      "type": "string"
    },
    "label": {
      "type": "string"
    },
    "blocks": {
      "type": "array",
      "description": "Bloques del correo.",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "flow_id",
    "node_id"
  ]
}
🟡create_form(name, list_id, display_mode, double_optin, thank_you_message, ...)

Crea un formulario de captación y devuelve su URL pública y su código para embeber. Si no pasas campos, lleva uno de correo.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "list_id": {
      "type": "string",
      "description": "Lista donde caen las altas."
    },
    "display_mode": {
      "type": "string",
      "description": "inline | popup."
    },
    "double_optin": {
      "type": "boolean"
    },
    "thank_you_message": {
      "type": "string"
    },
    "fields": {
      "type": "array",
      "description": "Campos: [{name,type,label,required}]. Debe incluir uno \"email\".",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "name"
  ]
}
🟡update_form(form_id, name, is_active, list_id, double_optin, ...)

Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo.

入力スキーマ

{
  "type": "object",
  "properties": {
    "form_id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "is_active": {
      "type": "boolean"
    },
    "list_id": {
      "type": "string"
    },
    "double_optin": {
      "type": "boolean"
    },
    "thank_you_message": {
      "type": "string"
    },
    "redirect_url": {
      "type": "string"
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "form_id"
  ]
}
🟡create_segment(name, description, definition)

Crea un segmento: una regla de "quién entra" que se recalcula sola. Es lo que se usa para segmentar un lanzamiento sin duplicar listas.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "definition": {
      "type": "object",
      "description": "Reglas del segmento (mismo JSON que la UI de /segmentos).",
      "additionalProperties": true
    }
  },
  "required": [
    "name",
    "definition"
  ]
}
🟡create_template(name, subject, preheader, category, description, ...)

Crea una plantilla propia de la cuenta, opcionalmente duplicando una del catálogo con from_template_id. Las del catálogo son compartidas y no se editan.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "subject": {
      "type": "string"
    },
    "preheader": {
      "type": "string"
    },
    "category": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "from_template_id": {
      "type": "string",
      "description": "Duplica esta plantilla como punto de partida."
    },
    "blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "name"
  ]
}
🟡create_tag(name, color)

Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica).

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "color": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ]
}
🟡create_landing(name, slug, kind, blocks, html_code, ...)

Crea una página de aterrizaje y devuelve su URL pública. `kind`: blocks (bloques de Postari) · code (HTML propio) · ai (desde un prompt) · iframe · external_url. Conéctale un formulario con form_id para que capte suscriptores.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string",
      "description": "Va en la URL /l/<slug>: minúsculas, números y guiones."
    },
    "kind": {
      "type": "string",
      "description": "blocks | code | ai | iframe | external_url. Default: blocks."
    },
    "blocks": {
      "type": "array",
      "description": "Contenido si kind=blocks.",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "html_code": {
      "type": "string",
      "description": "HTML si kind=code."
    },
    "ai_prompt": {
      "type": "string",
      "description": "Instrucción si kind=ai."
    },
    "iframe_url": {
      "type": "string"
    },
    "external_url": {
      "type": "string"
    },
    "form_id": {
      "type": "string",
      "description": "Formulario que se muestra en la página."
    }
  },
  "required": [
    "name",
    "slug"
  ]
}
🟢list_landings(limit)

Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión.

入力スキーマ

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number"
    }
  }
}
🟡update_landing(landing_id, name, slug, is_active, form_id, ...)

Edita una página de aterrizaje: contenido, slug, formulario conectado o activarla/desactivarla. Cambiar el slug rompe la URL que ya se haya compartido (la respuesta avisa).

入力スキーマ

{
  "type": "object",
  "properties": {
    "landing_id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "is_active": {
      "type": "boolean"
    },
    "form_id": {
      "type": "string"
    },
    "html_code": {
      "type": "string"
    },
    "ai_prompt": {
      "type": "string"
    },
    "blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "landing_id"
  ]
}
🟡set_campaign_audience(campaign_id, include_tags, exclude_tags, exclude_lists, exclude_campaigns, ...)

Define A QUIÉN se le manda un correo y a quién NO: excluir por etiqueta, por lista entera o por haber recibido otra campaña. Devuelve el número REAL de destinatarios para confirmar antes de enviar. Si alguna referencia no existe, falla con 400 en vez de guardar a medias.

入力スキーマ

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string"
    },
    "include_tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Solo quien tenga estas etiquetas (nombre o UUID)."
    },
    "exclude_tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fuera quien tenga estas etiquetas (nombre o UUID)."
    },
    "exclude_lists": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fuera los miembros de estas listas · \"manda a A menos los de B\"."
    },
    "exclude_campaigns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fuera quien ya recibió estas campañas · no repetir el envío."
    },
    "tag_on_delivery": {
      "type": "string",
      "description": "Etiqueta que se pone a quien RECIBA el correo, para poder excluirlo la próxima vez."
    }
  },
  "required": [
    "campaign_id"
  ]
}
🟢get_campaign_audience(campaign_id)

¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, ANTES de enviar: base de la lista, cuántos quita la exclusión y el total final.

入力スキーマ

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string"
    }
  },
  "required": [
    "campaign_id"
  ]
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 37 件
検証済みバージョンは記録されていませんツール 37 件