Postari

io.github.wilmendezofficial由 GitHub 帳號 wilmendezofficial 發布v1.0.0更新於 Oct 27, 2026

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

已驗證Streamable HTTP可網頁執行效率與工作流溝通與協作商業與電商

概覽

AI 產生的概覽

Postari 是遠端電子郵件行銷 MCP 伺服器,讓助理寄送交易信、管理聯絡人與名單、建立行銷活動、自動化流程、表單與著陸頁,並讀取指標。

可以做什麼
  • 以範本和變數寄送一對一交易信
  • 建立、查詢、更新、列出、標記與恢復聯絡人;清理永久退信聯絡人;管理名單與分群
  • 建立並啟動行銷活動、設定受眾、讀取活動與帳戶指標、診斷送達率
  • 建立自動化:建立、編輯、測試、啟用並武裝流程;列出與編輯流程中的信件
  • 建立與管理表單、著陸頁、範本、標籤與發布計畫及其各階段指標
  • 檢視 AI 代理活動紀錄以便稽核
適用情境
適合想讓助理在對話中端到端操作電子郵件行銷的情境:寄送收據或報價、成長並清理聯絡人、撰寫並啟動行銷活動,或建立自動化與名單蒐集表單並查看實際成效指標。
執行需求
透過 streamable HTTP 連線至 postari.io 的遠端端點;未宣告任何套件、環境變數或標頭。它作用於 Postari 帳戶,部分工具需要 send 等權限範圍,因此須在 Postari 端授予帳戶存取與權限。
安裝前請注意
許多工具會寫入或寄送真實資料:交易信會寄往真實地址;武裝流程後會自動寄送真實信件,需字面確認 ARMAR ENVIOS 且事先測試;test_flow 會實際寄信。行銷活動、表單、著陸頁與名單會被建立或修改,變更著陸頁 slug 會使已分享的連結失效。帳戶指標、聯絡人與代理活動皆從 Postari 帳戶讀取。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Postari,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.wilmendezofficial%2Fpostari/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

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

README

該儲存庫沒有 README。

工具

41

send_transactional_email

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

輸入參數subjectto_email必填from_namehtml_bodyvariablestemplate_idconfirm_send

create_subscriber

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

輸入參數tagsemail必填phonecountrymetadatalast_namefirst_name

get_subscriber

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, dominio_sugerido}` (tipo permanente o temporal; motivo rebote_permanente, rebote_temporal_repetido, rebote_temporal o rebote_sin_evento; dominio_sugerido si la dirección parece mal escrita, p. ej. gmail.co → gmail.com); si no, `bounce: null`.

輸入參數email必填

list_subscribers

Lista contactos paginados (más recientes primero, cursor keyset). Filtros: status (active|unsubscribed|bounced|complained), list_id (membresías físicas: una lista inteligente devuelve 0 filas; su tamaño está en list_lists (active_count / total_count) o en GET /api/v1/lists/{id}/count) y tag = nombre EXACTO de una etiqueta del catálogo (contact_tags, la misma fuente que /etiquetas). Desde el 3-oct-2026 tag ya no mira las etiquetas importadas (imported_tags): cada fila trae `tags` (importadas, como siempre) y `catalog_tags` (las del catálogo, las que filtra tag). include_count:true añade total_count; si el conteo no se puede hacer responde 503 count_unavailable, nunca 0.

輸入參數taglimitcursorstatuslist_idinclude_count

update_subscriber

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 alguien que salió por un rebote usa reactivate_bounced_subscriber. Quien se dio de baja o marcó spam solo vuelve por decisión propia (centro de preferencias del pie de los correos); un agente no puede resuscribirlo: el PUT /api/v1/subscribers/{email} con confirmar_resuscripcion:true es solo para una persona con su llave, queda auditado y desde el puente MCP responde 403 resuscripcion_no_disponible_para_agentes.

輸入參數tagsemail必填phonecountrylast_namefirst_name

reactivate_bounced_subscriber

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 no está bloqueado ni mal escrito (gmail.co, hormail.com: corrige la dirección; el 409 trae dominio_sugerido) y no se dio de baja ni marcó spam; si no, responde 409 con el motivo (por ejemplo, rebote definitivo: la dirección no existe). No reanuda flujos viejos ni envía la bienvenida. Úsalo en vez de update_subscriber con status "active".

輸入參數email必填

clean_bounced_subscribers

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 entre medio (ni entregado, ni abierto, ni clic). Un rebote temporal suelto, como un buzón lleno, nunca saca a nadie. Deja escrito el motivo en el contacto. Sin `aplicar:true` solo devuelve el recuento por motivo, no cambia nada.

輸入參數aplicarlist_id

list_lists

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 (cualquier estado), de list_sizes_v1, la misma fuente que la app. Una lista inteligente se mide evaluando su filtro (hoy no se envía a listas inteligentes); size_ok false = no se pudo medir y los conteos vienen en null. contacts_count es un alias deprecado de total_count.

無需輸入參數。

create_list

Crea una nueva lista de contactos.

輸入參數name必填description

add_subscriber_to_list

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

輸入參數emaillist_id必填contact_id

tag_subscribers

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

輸入參數tag必填emailsoperationcontact_ids

trigger_flow

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

輸入參數emailflow_id必填contact_idtrigger_data

account_stats

Métricas globales de la cuenta (enviados, entregados, abrieron, hicieron clic, bajas, rebotes, contactos nuevos) en un rango de días de la zona horaria de la cuenta, ambos incluidos; la cohorte es el día de ENVÍO de cada correo, la misma fuente que /metricas. avg_open_rate y avg_click_rate en % con 2 decimales sobre ENTREGADOS (avg_*_rate_fraction: alias deprecados en fracción). Si hay días aún sin calcular responde 503 metrics_recalculating: reintenta, nunca son sumas parciales. Rebote separado: bounced_hard / bounce_rate_hard (definitivo, el que se vigila) y bounced_soft / bounce_rate_soft (temporal), en % sobre enviados (bounce_rates_base: "sent"); null si el período no tiene el tipo medido, nunca un 0 inventado. total_bounces = definitivos + temporales. Ojo: en la ficha de campaña (get_campaign_stats) el mismo dato se llama bounce_hard_rate.

輸入參數tofrom

list_campaigns

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 detrás de get_campaign_stats). En este listado opened_total, clicked_total, clicked_system, delivered_confirmed, failed, bounced_hard, bounced_soft y bounce_hard_rate llegan en null (los contadores no los guardan; null = no medido, no 0): pídelos a get_campaign_stats. audience_count = «¿a cuántos?»: si ya empezó, la foto del envío; en borrador o programada, los ACTIVOS de la lista hoy ANTES del filtro guardado (audience_basis "list_active_before_filters"); el neto exacto lo da get_campaign_audience. Filtrable por estado (draft, scheduled, sending, sent). Definiciones: enviados = correos con sent_at; entregados = enviados − rebotados; abrieron = correos con apertura (píxel, webhook o clic); clics únicos = correos con clic en un enlace de contenido (baja, preferencias y pie aparte en clicked_system). Tasas en % con 2 decimales: entrega y rebote sobre ENVIADOS; apertura, clic, bajas y quejas sobre ENTREGADOS (rate_base "delivered"); ctor = clics únicos / abrieron. null = sin denominador, nunca 0 inventado. *_fraction son alias heredados en fracción 0-1 (deprecados).

輸入參數limitstatus

get_campaign_stats

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 de sistema, rebotes (bounce_hard_rate = definitivo, el que se vigila), bajas, quejas, ingresos USD atribuidos (ventas con clic o, sin clic, apertura de este correo antes de comprar; si la persona solo lo recibió la venta es «influida» y NO suma) y by_link (clics de contenido por URL). maturity: sending/paused = parcial, settling = enviada hace menos de 24 h. stale true = la lectura falló y las cifras no son de fiar. Definiciones: enviados = correos con sent_at; entregados = enviados − rebotados; abrieron = correos con apertura (píxel, webhook o clic); clics únicos = correos con clic en un enlace de contenido (baja, preferencias y pie aparte en clicked_system). Tasas en % con 2 decimales: entrega y rebote sobre ENVIADOS; apertura, clic, bajas y quejas sobre ENTREGADOS (rate_base "delivered"); ctor = clics únicos / abrieron. null = sin denominador, nunca 0 inventado. *_fraction son alias heredados en fracción 0-1 (deprecados).

輸入參數campaign_id必填

launch_campaign

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

輸入參數goaltonebriefblockscta_urllist_id必填subjectcta_labelfrom_namehtml_bodyvariablesconfirm_send另有 1 個

diagnose_deliverability

Diagnóstico de ENTREGABILIDAD de la cuenta (últimos 28 días): rebotes, quejas de spam, aperturas y salud del dominio (DNS). Devuelve un veredicto (sano/a_vigilar/en_riesgo) + acciones priorizadas. El rebote que se juzga (`bounce_rate`) es el DEFINITIVO; el temporal (buzón lleno) va aparte en `bounce_rate_temporal`. Tasas en % con 2 decimales: rebotes y quejas sobre ENVIADOS (umbrales sanos <2 % y <0,1 %); open_rate sobre ENTREGADOS, como account_stats. Úsalo antes de un envío grande o si los correos no llegan.

無需輸入參數。

get_agent_activity

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

輸入參數limit

create_launch

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

輸入參數kindname必填stagesends_atstarts_atseed_default_stagestarget_revenue_cents

list_launches

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

輸入參數limitstatus

get_launch

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 apertura, sin las ventas solo «influidas») más el total; cada campaña se suma una sola vez. stages_sent de stages_total = etapas ya enviadas. metrics null en una etapa = todavía no tiene correo (no es 0). Es la forma de saber cómo va un lanzamiento. Definiciones: enviados = correos con sent_at; entregados = enviados − rebotados; abrieron = correos con apertura (píxel, webhook o clic); clics únicos = correos con clic en un enlace de contenido (baja, preferencias y pie aparte en clicked_system). Tasas en % con 2 decimales: entrega y rebote sobre ENVIADOS; apertura, clic, bajas y quejas sobre ENTREGADOS (rate_base "delivered"); ctor = clics únicos / abrieron. null = sin denominador, nunca 0 inventado. *_fraction son alias heredados en fracción 0-1 (deprecados).

輸入參數launch_id必填

create_flow

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

輸入參數name必填graphtrigger_typetrigger_config

update_flow

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

輸入參數namearmedgraphstatusflow_id必填trigger_config

test_flow

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

輸入參數flow_id必填to_email

activate_flow

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).

輸入參數pausedflow_id必填

arm_flow

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

輸入參數confirm必填flow_id必填acknowledge_no_list_filter

list_flow_emails

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

輸入參數flow_id必填

update_flow_email

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.

輸入參數labelblocksflow_id必填node_id必填subjectpreheader

create_form

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必填fieldslist_iddisplay_modedouble_optinthank_you_message

list_forms

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, sin papelera) en un formulario de captura; submissions = respuestas en una encuesta (is_survey true: una persona puede responder varias veces). people = personas distintas; submissions = envíos sin papelera (filas, repeticiones incluidas: NO es el número del formulario de captura); views = cargas del formulario (1 por navegador cada 24 h); views_measured false = la página que envía las altas no avisa de las visitas; conversion_rate = primary_count / views en % con 1 decimal (null si las vistas no están medidas). Los mismos números que la app.

輸入參數limitis_active

get_form

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, submissions (envíos sin papelera), views, views_measured y conversion_rate (primary_count / views, % con 1 decimal, null si las vistas no están medidas). Mismas definiciones que list_forms. Si la lectura falla responde 503 metrics_unavailable (nunca un número sin avisar).

輸入參數form_id必填

update_form

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

輸入參數namefieldsform_id必填list_idis_activedouble_optinredirect_urlthank_you_message

create_segment

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必填definition必填description

create_template

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必填blockssubjectcategorypreheaderdescriptionfrom_template_id

create_tag

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

輸入參數name必填color

create_landing

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

輸入參數kindname必填slug必填blocksform_idai_prompthtml_codeiframe_urlexternal_url

list_landings

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; null si aún no hubo visitas: no medible, no es 0 · cambio de contrato del 3-oct-2026, antes devolvía 0).

輸入參數limit

update_landing

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

輸入參數nameslugblocksform_idai_prompthtml_codeis_activelanding_id必填

set_campaign_audience

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

輸入參數campaign_id必填exclude_tagsinclude_tagsexclude_liststag_on_deliveryexclude_campaigns

get_campaign_audience

¿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 la lista hoy, excluidos = los que quita el filtro, audience_live_total = el público de HOY. Si ya empezó a enviarse trae además recipients_snapshot (la foto del primer tick), excluded_on_send (tope de frecuencia y dominios bloqueados) y remaining_to_send. total_recipients es un alias deprecado de audience_live_total.

輸入參數campaign_id必填

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 75%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分

    請宣告包含 README 的 GitHub 儲存庫,或在 OAuth 受保護資源後設資料中提供 resource_documentation。

  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。