MultiMail

Correo electrónico para agentes de IA. Enviar y recibir como markdown con supervisión humana.

Documentación

@multimail/mcp-server

Tu agente aún no tiene correo electrónico porque nadie le confía el correo todavía. MultiMail lo soluciona. Una dirección de correo real con una escalera de confianza desde solo lectura hasta totalmente autónomo, identidad criptográfica en cada mensaje y controles de envío por destinatario.

Inicio rápido

{
  "mcpServers": {
    "multimail": {
      "type": "url",
      "url": "https://mcp.multimail.dev/mcp"
    }
  }
}

Servidor remoto. Sin instalación. Se autentica mediante OAuth en la primera conexión.

Funciona con Claude.ai, Claude Desktop, Claude Code, Cursor, Windsurf, Copilot (VS Code), ChatGPT Desktop y cualquier cliente MCP que admita servidores remotos.

Alternativa: servidor stdio local

{
  "mcpServers": {
    "multimail": {
      "command": "npx",
      "args": ["-y", "@multimail/mcp-server"],
      "env": {
        "MULTIMAIL_API_KEY": "mm_live_...",
        "MULTIMAIL_MAILBOX_ID": "01KJ1NHN8J..."
      }
    }
  }
}

Obtén una clave en multimail.dev. O ejecuta sin una para crear una cuenta de forma interactiva.

Ubicaciones de archivos de configuración

ClienteArchivo de configuración
Claude Code~/.claude/.mcp.json
Claude Desktopclaude_desktop_config.json
Cursor.cursor/mcp.json en tu proyecto
Windsurf~/.codeium/windsurf/mcp_config.json
Copilot (VS Code).vscode/mcp.json en tu proyecto
OpenCodemcp.json en tu proyecto
ChatGPT DesktopConfiguración > Servidores MCP

Escalera de confianza

Cada buzón tiene un modo de supervisión. Comienza con restricciones y avanza a medida que el agente gana confianza.

ModoComportamiento
read_onlyEl agente lee el correo. Todos los envíos están bloqueados.
gated_allCada acción requiere aprobación humana.
gated_sendSaliente retenido para aprobación. Entrante inmediato. (predeterminado)
monitoredEl agente envía libremente. Las copias van a la dirección de supervisión.
autonomousEnvío/recepción completos. Sin restricciones.

Los agentes solicitan actualizaciones mediante la API. El operador las aprueba con un código de un solo uso. Las degradaciones no requieren aprobación. El agente siempre puede restringirse a sí mismo.

El flujo de aprobación con compuertas está verificado formalmente en Lean 4. Ningún correo llega a la entrega sin pasar por la aprobación del operador, para cada posible ruta de código.

Lista de permitidos por destinatario

En el modo gated_send, los destinatarios en la lista de permitidos omiten la cola de aprobación. Añade direcciones exactas (vendor@example.com) o comodines de dominio (*@example.com). Cada adición requiere aprobación por correo del operador. El agente no puede autoaprobar cambios en la lista de permitidos.

El punto medio práctico: la correspondencia habitual con contactos conocidos se envía de inmediato; los destinatarios nuevos aún requieren supervisión.

Identidad criptográfica

Cada correo saliente lleva un encabezado X-MultiMail-Identity firmado (ECDSA P-256). La carga útil incluye el nombre del operador, el modo de supervisión, las capacidades y el estado de verificación. Los destinatarios verifican contra la clave pública en GET /.well-known/multimail-signing-key.

Un encabezado X-MultiMail-Reputation separado enlaza con datos de reputación que preservan la privacidad: tasas de rebote, tasas de quejas, antigüedad de la cuenta. No se exponen direcciones sin procesar.

Sin identidad verificada, los destinatarios no pueden distinguir a tu agente de un spammer. Con ella, pueden verificar al operador, el nivel de supervisión y el historial de envíos antes de leer una palabra.

Retransmisión DID del agente (opcional). Si tu agente ha vinculado un did:key a su cuenta de MultiMail, pasa un parámetro opcional ucan a send_email / reply_email. MultiMail retransmite el UCAN autofirmado de tu agente textualmente en un encabezado X-Agent-Identity separado (did="…"; ucan="…") — no lo firma ni lo avala; las herramientas del destinatario verifican la delegación de forma independiente. Inerte a menos que se vincule un DID.

Autorregistro del agente (auth.md)

Los agentes pueden registrarse sin navegador. El protocolo usa la aserción de identidad por correo verificado, siguiendo la convención auth.md inspirada en WorkOS AuthKit:

POST /agent/auth -> claim_token + OTP sent to operator email
POST /agent/auth/claim/complete -> API key + tenant_id + granted scopes

El descubrimiento sigue RFC 9728:

  • GET /.well-known/oauth-protected-resource (metadatos del recurso)
  • GET /.well-known/oauth-authorization-server (metadatos de autorización con extensión agent_auth)
  • GET /auth.md (guía de registro legible por humanos/agentes)

El encabezado WWW-Authenticate en las respuestas 401 apunta a los agentes a estos endpoints automáticamente. Un agente que recibe un 401 puede seguir el enlace, leer el protocolo de registro e incorporarse por sí mismo.

Escaneo de contenido

Cada correo saliente se escanea antes de la entrega. Los correos entran en estado pending_scan y luego pasan a entrega o pending_send_approval (en modos con compuertas). Los correos entrantes pasan por el mismo proceso. Los patrones de phishing, malware e inyección de prompts se marcan antes de llegar a la bandeja de entrada del agente.

Cómo funciona

  • Los cuerpos de correo son markdown de entrada y HTML formateado de salida. El HTML entrante llega como markdown limpio (15 veces menos tokens que el MIME sin procesar).
  • El hilo es automático. Responde a un correo y los encabezados se configuran correctamente.
  • Los envíos devuelven pending_scan mientras se escanean. Los buzones con compuertas pasan luego a pending_send_approval para revisión humana. No reintentes.
  • Cada correo saliente lleva un encabezado X-MultiMail-Identity firmado criptográficamente.
  • Datos de reputación mediante el encabezado X-MultiMail-Reputation: tasas de rebote, tasas de quejas, antigüedad de la cuenta. Preservan la privacidad y se actualizan a diario.

Herramientas (50)

HerramientaDescripción
Correo principal
send_emailEnvía correo como markdown. Admite adjuntos, idempotency_key, entrega programada mediante send_at.
check_inboxLista correos con filtros: estado, remitente, asunto, rango de fechas, dirección, adjuntos, paginación.
read_emailContenido completo del correo. Metadatos confiables y cuerpo no confiable devueltos como bloques de contenido separados.
reply_emailResponde en el hilo. Los encabezados de hilo se configuran automáticamente.
get_threadTodos los correos en un hilo de conversación con participantes y metadatos.
download_attachmentDescarga el adjunto como base64 con tipo de contenido.
cancel_messageCancela un correo pendiente o programado.
edit_scheduled_emailEdita el correo programado antes de que se envíe.
wait_for_emailBloquea hasta que llegue un correo que coincida o se agote el tiempo (máx. 120 s).
get_tagsObtiene todas las etiquetas de un correo. Memoria persistente clave-valor del agente entre sesiones.
set_tagsEstablece etiquetas en un correo. Se fusiona con las etiquetas existentes.
delete_tagElimina una clave de etiqueta específica de un correo.
Supervisión
list_pendingCorreos pendientes de decisión de supervisión (requiere alcance de supervisión).
decide_emailAprueba o rechaza un correo pendiente (requiere alcance de supervisión).
manage_upgradeSolicita o aplica una actualización del modo de supervisión (acción: request|apply).
Lista de permitidos de envío
list_allowlistLista las entradas de la lista de permitidos de envío.
add_allowlist_entryAñade un destinatario a la lista de permitidos de envío. Se requiere aprobación del operador.
remove_allowlist_entryElimina una entrada de la lista de permitidos.
Gestión de buzones
list_mailboxesTodos los buzones con ID, dirección, modo de supervisión, nombre para mostrar.
configure_mailboxConfiguración inicial: modo de supervisión, nombre para mostrar, CC/CCO, programación, firma.
update_mailboxActualiza la configuración (nombre para mostrar, modo de supervisión, firma, webhooks).
create_mailboxCrea un buzón (alcance de administrador + aprobación del operador).
delete_mailboxElimina permanentemente un buzón (alcance de administrador).
Cuenta y facturación
get_accountEstado de la cuenta, plan, cuota, envío habilitado, nivel de aplicación.
update_accountActualiza el nombre de la organización, el correo de supervisión y la dirección física.
delete_accountElimina permanentemente la cuenta y todos los datos (alcance de administrador).
get_usageCuota y estadísticas de uso del período de facturación.
upgrade_planActualiza al plan de pago (Builder $9/mes, Pro $29/mes, Scale $99/mes).
cancel_subscriptionCancela la suscripción de pago y vuelve al plan inicial al final del período.
get_billing_portalURL del portal de Stripe para facturación de autoservicio.
Registro (sin necesidad de clave de API)
request_challengeDesafío de prueba de trabajo ALTCHA para la creación de cuentas.
create_accountCrea una cuenta con el desafío PoW resuelto.
resend_confirmationReenvía el correo de activación con un código nuevo.
activate_accountActiva la cuenta con el código de confirmación.
setup_multimailIncorporación guiada en el endpoint público /onboard.
Claves de API y auditoría
list_api_keysLista todas las claves de API (alcance de administrador).
create_api_keyCrea una clave de API con alcances (administrador + aprobación del operador). send+oversight rechazados para evitar la autoaprobación.
revoke_api_keyRevoca una clave de API (alcance de administrador).
get_audit_logRegistro de auditoría de la cuenta (alcance de administrador).
Contactos y spam
search_contactsBusca contactos por nombre o correo.
add_contactAñade un contacto.
delete_contactElimina un contacto.
manage_spam_statusReporta spam o limpia el estado de spam (acción: report|clear).
list_spamCorreos marcados como spam y en cuarentena.
list_suppressionLista destinatarios suprimidos con paginación.
remove_suppressionElimina un destinatario de la lista de supresión.
Webhooks
create_webhookCrea un webhook para notificaciones de eventos de correo en tiempo real.
list_webhooksLista todos los webhooks.
delete_webhookElimina un webhook.
Meta
report_issueReporta un error, un problema del sitio o una solicitud de función.

Ejemplos de prompts

Find the most recent email from alice@example.com, summarize what she's asking,
then draft a reply saying I'll review this week. Don't send until I approve.
Check my inbox and summarize the last 5 unread emails.
For each: sender, subject, time, and whether it needs action today.
Review the pending approval queue. For each pending email: who it goes to,
the subject, risk factors, and whether to approve or reject.
Show my current sending allowlist. Then add *@acme.com so emails to Acme skip approval.

Variables de entorno

VariableRequeridoDescripción
MULTIMAIL_API_KEYPara modo stdioTu clave de API (mm_live_...). No es necesaria para el servidor remoto (usa OAuth).
MULTIMAIL_MAILBOX_IDNoID de buzón predeterminado. Si no se establece, pasa mailbox_id por herramienta o llama a list_mailboxes.
MULTIMAIL_API_URLNoURL base de la API. El valor predeterminado es https://api.multimail.dev.

También disponible

Desarrollo

npm install
npm run dev   # Run with tsx
npm run build # Compile TypeScript
npm start     # Run compiled version

Licencia

MIT

Al usar MultiMail aceptas los Términos de servicio y la Política de uso aceptable.