{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_qpppjhaqj5ce","handle":"postari","url":"https://wellknown.network/agents/postari","links":{"self":"https://wellknown.network/agents/postari/record.json","html":"https://wellknown.network/agents/postari","markdown":"https://wellknown.network/agents/postari/record.md","api":"https://wellknown.network/api/v1/agents/postari","status":"https://wellknown.network/api/v1/agents/postari/status","claim":"https://wellknown.network/agents/postari/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/postari/claim.json","badge":"https://wellknown.network/agents/postari/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/postari/history","tools":"https://wellknown.network/api/v1/agents/postari/tools"},"ard":{"identifier":"urn:air:postari.io:server:postari","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"postari","summary":"Email marketing y transaccional AI-native: campañas, correos 1-a-1, contactos, flujos y métricas.","description":"Email marketing y transaccional AI-native: campañas, correos 1-a-1, contactos, flujos y métricas.","publisher":{"name":"wilmendezofficial","url":null},"homepage":"https://postari.io","repository":"https://github.com/wilmendezofficial/postari","version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://postari.io/api/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-06-22T13:17:18.007276Z","publishedAt":"2026-06-22T13:17:18.007276Z","registryName":"io.github.wilmendezofficial/postari"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.marketing","name":"Marketing","confidence":0.949,"provenance":"derived"},{"slug":"productivity.email","name":"Email","confidence":0.859,"provenance":"derived"},{"slug":"documents.conversion","name":"Document Conversion","confidence":0.554,"provenance":"derived"},{"slug":"ai.prompting","name":"Prompt Management","confidence":0.525,"provenance":"derived"},{"slug":"automation.workflows","name":"Workflow Automation","confidence":0.51,"provenance":"derived"}],"categories":["ai","automation","content","documents","productivity"],"language":"es"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-12T17:33:49.208Z","lastProbedAt":"2026-10-12T17:33:49.208Z","statusComputedAt":"2026-10-12T17:35:28.697Z","reliability30d":{"probes":114,"successRate":1,"p50Ms":179,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":111,"ok":111,"authBoundaryOk":0,"serviceOk":111,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-12T17:33:49.208Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":157,"error":null,"detail":{"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"toolCount":41,"toolsHash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","serverName":"postari","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-12T11:24:52.125Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":458,"error":null,"detail":{"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"toolCount":41,"toolsHash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","serverName":"postari","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-12T05:25:31.649Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":169,"error":null,"detail":{"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"toolCount":41,"toolsHash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","serverName":"postari","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T23:21:57.117Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":160,"error":null,"detail":{"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"toolCount":41,"toolsHash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","serverName":"postari","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T17:22:25.633Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":179,"error":null,"detail":{"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"toolCount":41,"toolsHash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","serverName":"postari","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T10:24:41.176Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":170,"error":null,"detail":{"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"toolCount":41,"toolsHash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","serverName":"postari","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T04:24:14.786Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":172,"error":null,"detail":{"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"toolCount":41,"toolsHash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","serverName":"postari","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T21:26:35.539Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":160,"error":null,"detail":{"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"toolCount":41,"toolsHash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","serverName":"postari","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T15:30:30.912Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":156,"error":null,"detail":{"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"toolCount":41,"toolsHash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","serverName":"postari","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T08:32:29.364Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":249,"error":null,"detail":{"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"toolCount":41,"toolsHash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","serverName":"postari","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"send_transactional_email","description":"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 `"},{"name":"create_subscriber","description":"Crea o actualiza (upsert) un contacto/suscriptor. Si ya existe, lo actualiza sin duplicar."},{"name":"get_subscriber","description":"Busca un contacto por su correo y devuelve sus datos, estado, etiquetas e historial básico. Si está rebotado trae `bounce: {tipo, subtipo, fecha, motivo, domini"},{"name":"list_subscribers","description":"Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lis"},{"name":"update_subscriber","description":"Actualiza datos de un contacto existente (nombre, país, teléfono, etiquetas). Solo envía esos campos: no cambia su estado de suscripción. Para devolver a alguie"},{"name":"reactivate_bounced_subscriber","description":"Devuelve a tus envíos a un contacto que salió por un rebote TEMPORAL suelto (buzón lleno, servidor ocupado). Solo funciona si el rebote fue temporal, el dominio"},{"name":"clean_bounced_subscribers","description":"Saca de circulación a los contactos activos que tienen un rebote PERMANENTE (la dirección no existe) o 3 rebotes temporales seguidos sin ninguna señal de vida e"},{"name":"list_lists","description":"Lista todas las listas de contactos con su tamaño: active_count = contactos ACTIVOS (a quienes les llega un envío) y total_count = todas las membresías (cualqui"},{"name":"create_list","description":"Crea una nueva lista de contactos."},{"name":"add_subscriber_to_list","description":"Añade un contacto (por email o contact_id) a una lista."},{"name":"tag_subscribers","description":"Añade o quita una etiqueta a varios contactos (por emails o contact_ids)."},{"name":"trigger_flow","description":"Mete un contacto (por email o contact_id) en un flujo automático para que reciba esa secuencia."},{"name":"account_stats","description":"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 cu"},{"name":"list_campaigns","description":"Lista las campañas/correos del tenant con sus métricas (metrics.*, desde los contadores que mantiene el reconciliador: durante un envío pueden ir unos minutos d"},{"name":"get_campaign_stats","description":"Métricas reales de una campaña leídas de los eventos en vivo: enviados, entregados, abrieron (únicos y aperturas registradas), clics únicos y registrados, clics"},{"name":"launch_campaign","description":"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"},{"name":"diagnose_deliverability","description":"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_vigila"},{"name":"get_agent_activity","description":"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"},{"name":"create_launch","description":"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"},{"name":"list_launches","description":"Lista los lanzamientos de la cuenta, con cuántas etapas tiene cada uno y cuántas ya están conectadas a un correo."},{"name":"get_launch","description":"Un lanzamiento con sus etapas y las MÉTRICAS REALES de cada una (enviados, entregados, abrieron, clics únicos, bajas, ingresos USD atribuidos por clic o apertur"},{"name":"link_campaign_to_launch_stage","description":"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íncu"},{"name":"create_flow","description":"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 de"},{"name":"update_flow","description":"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:"},{"name":"test_flow","description":"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 cor"},{"name":"activate_flow","description":"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)."},{"name":"arm_flow","description":"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 "},{"name":"list_flow_emails","description":"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: vi"},{"name":"update_flow_email","description":"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."},{"name":"create_form","description":"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."},{"name":"list_forms","description":"Lista los formularios con sus KPIs. El número de cada formulario es primary_count en la unidad primary_unit: people = personas distintas (correo normalizado, si"},{"name":"get_form","description":"Un formulario con sus campos y sus KPIs recontados en vivo (form_kpis_v2): primary_count en primary_unit (people en captura, submissions en encuesta), people, s"},{"name":"update_form","description":"Edita un formulario: título, campos, lista donde caen las altas, doble opt-in, mensaje de gracias o activarlo/desactivarlo."},{"name":"create_segment","description":"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."},{"name":"create_template","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."},{"name":"create_tag","description":"Crea una etiqueta (idempotente: si ya existe devuelve la que hay, no la duplica)."},{"name":"create_landing","description":"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"},{"name":"list_landings","description":"Lista las páginas de aterrizaje con sus visitas, conversiones y tasa de conversión (conversion_rate = conversiones / visitas en % con 2 decimales y tope 100; nu"},{"name":"update_landing","description":"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 respu"},{"name":"set_campaign_audience","description":"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 destinat"},{"name":"get_campaign_audience","description":"¿A cuánta gente le va a llegar este correo? Devuelve los destinatarios REALES aplicando el filtro guardado, por el mismo camino que el envío: base = activos de "}],"package":null,"toolSurface":{"id":"ts_k59m8qcexwfk","endpointId":"ep_b2zx5mymun3f","hash":"290c1cf800f14455387c9c294796b2fc2dd64ac03ac33de477570badcdeede42","toolCount":41,"serverName":"postari","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-05T02:21:33.924Z","lastSeenAt":"2026-10-12T17:33:49.218Z","observations":29,"toolNames":["send_transactional_email","create_subscriber","get_subscriber","list_subscribers","update_subscriber","reactivate_bounced_subscriber","clean_bounced_subscribers","list_lists","create_list","add_subscriber_to_list","tag_subscribers","trigger_flow","account_stats","list_campaigns","get_campaign_stats","launch_campaign","diagnose_deliverability","get_agent_activity","create_launch","list_launches","get_launch","link_campaign_to_launch_stage","create_flow","update_flow","test_flow","activate_flow","arm_flow","list_flow_emails","update_flow_email","create_form","list_forms","get_form","update_form","create_segment","create_template","create_tag","create_landing","list_landings","update_landing","set_campaign_audience","get_campaign_audience"],"distinctSurfaces":6},"endpointFacts":[{"id":"ep_b2zx5mymun3f","url":"https://postari.io/api/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-11T04:24:14.779Z","auth":{"observedAt":"2026-10-11T04:24:15.133Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://postari.io/.well-known/oauth-protected-resource/api/mcp","resource":"https://postari.io/api/mcp","authorizationServers":["https://postari.io"],"scopesSupported":["read","write","send"]},"authorizationServer":{"url":"https://postari.io/.well-known/oauth-authorization-server","issuer":"https://postari.io","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-11T04:24:15.161Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"postari.io","issuer":{"commonName":"YR1","organization":"Let's Encrypt"},"validFrom":"2026-08-30T23:53:51.000Z","validTo":"2026-11-28T23:53:50.000Z","daysToExpiry":47,"sanCount":1,"fingerprint256":"93:34:C3:93:44:82:6B:CB:BD:8B:A3:A1:FC:EB:C2:0C:A9:63:E8:61:AB:D9:8A:07:83:CC:FE:7F:45:71:F5:0B"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.wilmendezofficial/postari","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.wilmendezofficial%2Fpostari","firstSeenAt":"2026-09-07T06:18:07.347Z","fetchedAt":"2026-10-11T11:19:41.805Z","normalizedAt":"2026-10-11T11:19:41.805Z"}]},"firstSeenAt":"2026-09-07T06:18:07.347Z","updatedAt":"2026-10-12T17:36:30.383Z"}