Documentación

Conecta Gmail, Outlook o IMAP a Claude
en cuatro pasos.

Conecta cualquier cuenta de correo, pega una URL en un cliente MCP con OAuth y autoriza. Los clientes sin OAuth usan una clave de API en su lugar. Referencia completa de herramientas y guía de conexión más abajo.

Inicio rápidoOAuth (claude.ai)Referencia de herramientasModelo de seguridadSoporte de proveedores
Inicio rápido

En marcha en minutos.

No se requiere SDK. MCPEmails habla MCP estándar sobre HTTP, así que encaja en cualquier agente compatible con MCP.

01Regístrate y conecta una bandeja

Crea tu cuenta y conecta tu bandeja de entrada

Regístrate en mcpemails.com, luego ve a Panel → Bandejas → Conectar bandeja. Elige Gmail, Outlook, iCloud, Fastmail o cualquier bandeja IMAP, después completa el flujo de OAuth o pega una contraseña de aplicación. Tu bandeja queda lista en menos de un minuto.

Conecta tu bandeja de entrada →
02Crea una clave de API

Genera un token bearer para tu agente

En Panel → Claves de API, haz clic en «Crear clave». Ponle nombre, selecciona los ámbitos que tu agente necesita (read:email, search:email, send:email, manage:folders, delete:email, manage:drafts, manage:contacts, schedule:email y manage:automations) y copia la clave. Solo se muestra una vez.

# Your key looks like this:
mcpe_live_AbCdEfGhIjKlMnOpQrStUvWxYz123456
03Añade MCPEmails a tu agente

Pega el endpoint MCP en tu cliente

Elige la pestaña de tu cliente más abajo. Los clientes MCP con soporte de OAuth 2.0 (claude.ai, Claude Desktop, Cursor y otros) solo pegan la URL y autorizan, sin necesidad de clave de API. Los clientes sin OAuth, además del acceso por scripts, usan la clave de API del paso 02.

json
# OAuth-capable clients (claude.ai, Claude Desktop, Cursor…)
# No API key required. Paste the URL, click Connect, authorize.
#
# Example: claude.ai
#   1. Go to claude.ai → Customize → Connectors
#   2. Click "Add connector" and paste this URL:
#
#        https://mcpemails.com/api/mcp
#
#   3. Click Connect and sign in with your mcpemails account.
#   4. Every tool your approved scopes allow is live immediately.
#
# Claude Desktop and Cursor follow the same OAuth flow when
# the server URL is configured in their MCP settings.
04Haz tu primera llamada

Pídele a tu agente que revise tu bandeja

Sin copiar y pegar UUIDs de bandejas. Tu agente llama primero a inbox_list para descubrir cada bandeja conectada y su UUID, y luego le preguntas: «Revisa mi bandeja y resume los últimos 5 mensajes no leídos.»

# The agent calls inbox_list first, so no hardcoded UUIDs.
# System prompt (optional, for multi-inbox setups):
You have access to email via MCPEmails.
Start by calling inbox_list to discover available inboxes.
Endpoint

Una URL, MCP estándar.

Todo el tráfico va a un único endpoint Streamable HTTP. Autentícate con un token bearer de tu panel.

POSThttps://mcpemails.com/api/mcp

Envía un cuerpo de petición JSON-RPC 2.0. Métodos admitidos: initialize, tools/list, tools/call.

Transporte: Streamable HTTP (MCP 2025-06-18)
Autenticación: Authorization: Bearer <api-key>
Límites de tasa: 100 pet/min · 1.000/h · 10.000/día por clave, más el límite del espacio de trabajo de tu plan
Formato de respuesta: JSON-RPC 2.0. Los resultados correctos también incluyen un objeto tipado structuredContent
Handshake de inicialización
bash
curl -X POST https://mcpemails.com/api/mcp \
  -H "Authorization: Bearer mcpe_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "clientInfo": { "name": "my-agent", "version": "1.0" },
      "capabilities": {}
    }
  }'
Sondeo, no push

MCPEmails es solo de petición/respuesta: cada resultado proviene de una llamada a una herramienta que hace tu agente. No hay webhooks, notificaciones push ni eventos iniciados por el servidor: un correo entrante nunca activa por sí solo una llamada del agente. Para reaccionar al correo nuevo, haz que tu agente sondee de forma periódica, p. ej. llamando a email_read con action: "list" y unread: true al intervalo que necesite tu flujo (ten en cuenta los límites de tasa anteriores).

Diseñado para el trabajo real con el correo

Más control, sin más desorden de herramientas.

Son capacidades conscientes del proveedor dentro de la misma interfaz MCP compacta y basada en acciones, no un catálogo de herramientas aparte para cada caso límite.

Aprobación de envío aplicada en el servidor

Activa la aprobación por bandeja en el panel para retener envíos, respuestas, reenvíos, envíos de borradores y envíos programados. El agente recibe un resultado pendiente y un miembro del espacio de trabajo lo aprueba o lo rechaza en el panel antes de que se envíe nada.

Perfiles de compatibilidad por proveedor

Llama a inbox_list para ver un perfil versionado de cada bandeja. Identifica las operaciones normalizadas como exactas, diferentes o no disponibles, de modo que los agentes puedan elegir flujos portables sin fingir que todos los proveedores son idénticos.

Adjuntos y correo original

Lee un adjunto seleccionado como texto transitorio para archivos de texto compatibles, CSV, HTML, JSON y PDF con capa de texto, o descarga el original almacenado por el proveedor como un .eml portable. La extracción no ejecuta código incrustado ni aplica OCR a las imágenes.

Automatización fiable y revisable

Reutiliza una idempotency_key para reintentar con seguridad la misma solicitud saliente durante 24 horas. Las ejecuciones de organización masiva mantienen su estado en el panel y aceptan solicitudes de cancelación; en esos registros no se guarda ningún contenido de los mensajes ni los términos de búsqueda.

Flujos de trabajo MCP guiados

Los clientes compatibles con los prompts de MCP pueden ofrecer rutinas integradas para un triaje cuidadoso de la bandeja, la revisión de conversaciones abiertas, la preparación de borradores de respuesta, propuestas de organización y la revisión de envíos programados. Los prompts nunca conceden permisos ni se ejecutan automáticamente.

Borradores de respuesta en el hilo y Send As de Gmail

Crea una respuesta sin enviar dentro de su conversación original para que la revise una persona. Los envíos, respuestas y reenvíos de Gmail solo pueden elegir una identidad Send As verificada por el proveedor y devuelta por inbox_list; los demás proveedores usan su dirección conectada.

Conexión OAuth

Cero configuración para clientes con OAuth.

Los clientes MCP que admiten OAuth 2.0 (claude.ai, Claude Desktop, Cursor y otros) se conectan automáticamente mediante código de autorización + PKCE. Sin clave de API, sin archivo de configuración. Pega la URL y haz clic en Conectar.

Paso 1: Ve a claude.ai → Personalizar → Conectores → Añadir conector
Paso 2: Pega https://mcpemails.com/api/mcp como la URL del servidor
Paso 3: Haz clic en Conectar. MCPEmails abre una pantalla de autorización
Paso 4: Inicia sesión con tu cuenta de mcpemails y aprueba el acceso
Listo: Todas las herramientas que permiten los alcances aprobados están activas. claude.ai actualiza los tokens automáticamente

Cómo funciona internamente

claude.ai se registra a sí mismo mediante el Registro dinámico de clientes RFC 7591, así que nunca pre-registras un ID de cliente.

La autorización usa Código de autorización OAuth 2.0 + PKCE (RFC 7636), así que nunca se transmite ningún secreto de cliente.

Los tokens se limitan exactamente a los permisos que apruebas: read:email, search:email, send:email, manage:folders, delete:email, manage:drafts, manage:contacts, schedule:email y manage:automations.

¿Usas un cliente sin soporte de OAuth? Crea una clave de API en Panel → Claves de API y pásala como token bearer. Las conexiones por clave de API y por OAuth usan el mismo endpoint MCP y el mismo catálogo de herramientas.
Referencia de herramientas

17 herramientas. Todas las operaciones de correo que tu agente necesita.

Indicar una bandeja es opcional. Cuando tu clave tiene exactamente una bandeja, cada herramienta por bandeja la resuelve automáticamente, así que no hace falta inbox_id. Con varias bandejas, pasa inbox_id (el UUID de inbox_list) o inbox (la dirección de la bandeja). La mayoría de las herramientas toman un argumento action que selecciona la operación; las insignias muestran los permisos que necesita cada una, y tools/list solo devuelve las herramientas para las que tu clave (o token OAuth) tiene permiso. Una clave con todos los permisos ve 23 herramientas en tools/list: estas 17 más seis herramientas de aprobación y de operaciones masivas que tu cliente MCP maneja desde la tarjeta de revisión que te muestra, en lugar de herramientas que compongas a mano. Haz clic en «Mostrar ejemplo» para ver una petición y respuesta completas.

inbox_listread:email

Devuelve todas las bandejas a las que la clave API u OAuth actual tiene acceso. Llama a esta primero para descubrir los valores de inbox_id, así nunca copias UUID desde el panel. Cada resultado incluye la dirección de correo, el proveedor, una marca de servicio opcional (icloud/yahoo/zoho/yandex/generic/fastmail) y un objeto capabilities que describe qué funciones admite esa bandeja.

ParámetroTipoObligatorioDescripción
providerenumopcionalFiltro opcional: devuelve solo las bandejas servidas por este proveedor. Uno de: gmail, outlook, fastmail, imap. Omítelo para listar todas las bandejas a las que la clave tiene acceso.
include_capabilitiesbooleanopcionalSi cada bandeja incluye su objeto capabilities (qué funciones admite). Por defecto true; ponlo en false para una lista compacta con solo inbox_id, dirección de correo, nombre visible, proveedor y marca de servicio.
email_readread:emailsearch:email

Lee, lista y busca mensajes en una bandeja. Define action: 'list' para resúmenes de mensajes recientes (más nuevos primero, con filtro por carpeta/no leídos y paginación), 'read' para el contenido completo de un message_id (cuerpo de texto, HTML saneado opcional y adjuntos), 'read_batch' para obtener hasta 50 message_ids en una sola llamada, 'search' para filtros estructurados e independientes del proveedor (from, to, cc, subject, body, text, unread, has_attachment, flagged, since, before), o 'attachment' para descargar un único adjunto (por attachment_index o filename) como datos base64, hasta 25 MB. Solo lectura: nunca cambia nada. La acción 'search' también se desbloquea por sí sola con el permiso más limitado search:email. Los cuerpos largos se devuelven por ventanas: revisa body_truncated y reenvía body_next_offset como body_offset para continuar. En Outlook, un criterio de texto (from, to, cc, subject, body, text o query) no se puede combinar con unread, has_attachment, flagged, since ni before: esos filtros no se aplican y el resultado indica cuáles.

ParámetroTipoObligatorioDescripción
actionenumobligatorioQué operación realizar: "list" (resúmenes de mensajes recientes), "read" (contenido completo de un message_id), "read_batch" (varios message_ids), "search" (filtros estructurados) o "attachment" (descargar un adjunto como base64). Determina qué otros argumentos se aplican.
inbox_idstring (uuid)opcionalUUID de la bandeja desde la que leer. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para descubrir los IDs de bandeja.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
message_idstringopcionalID de mensaje del proveedor a leer (action 'read' o 'attachment'), de un list o search previo.
message_idsarray[string]opcionalIDs de mensaje del proveedor a leer (action 'read_batch'), de un list o search previo. Máx. 50 por llamada.
folderstringopcionalCarpeta a listar (action 'list'). Por defecto "INBOX". Otros valores: "SENT", "DRAFTS", "TRASH".
limitintegeropcionalMáximo de resultados a devolver (action 'list' o 'search'). Por defecto 20, máx. 100.
offsetintegeropcionalDesplazamiento de paginación basado en cero (action 'list' o 'search'). Por defecto 0.
include_htmlbooleanopcionalIncluir el cuerpo HTML saneado (action 'read'/'read_batch'). Por defecto false.
include_attachmentsbooleanopcionalIncluir datos de adjuntos en base64 (action 'read'/'read_batch'). En 'read_batch' el total de 10 MB se comparte entre todos los mensajes de la llamada. Por defecto false.
mark_as_readbooleanopcionalMarcar el mensaje (o mensajes) como leído tras obtenerlo (action 'read'/'read_batch'). Por defecto false.
body_offsetintegeropcionalDesplazamiento de caracteres en el cuerpo de texto plano (acción 'read'/'read_batch'). Predeterminado 0. Reenvía el body_next_offset devuelto para continuar.
body_html_offsetintegeropcionalComo body_offset, para el cuerpo HTML saneado cuando include_html es true. Predeterminado 0.
body_max_charsintegeropcionalCaracteres del cuerpo devueltos por mensaje. Predeterminado 8000 para 'read' y 2000 para 'read_batch'. Máximo 50000.
attachment_indexintegeropcionalÍndice (base 0) del adjunto a descargar (action 'attachment'), según el orden de la lista de adjuntos de 'read'. Tiene prioridad sobre filename. Omite ambos cuando el mensaje tiene exactamente un adjunto.
filenamestringopcionalNombre del adjunto a descargar (action 'attachment'), coincidencia exacta sin distinción de mayúsculas y minúsculas. Se ignora si se indica attachment_index.
fromstringopcionalRemitente a coincidir (action 'search'): dirección de correo, nombre visible o fragmento (p. ej. "alice@example.com" o "Alice").
tostringopcionalDestinatario principal (To) a coincidir (action 'search'): dirección de correo, nombre visible o fragmento.
ccstringopcionalDestinatario en copia (Cc) a coincidir (action 'search'): dirección de correo, nombre visible o fragmento.
subjectstringopcionalTexto a coincidir en el asunto, tal cual se escribe (action 'search'). Gmail (API o IMAP) y Outlook coinciden por palabras completas, así que una palabra a medias no encuentra nada; los demás servidores IMAP coinciden por subcadena.
bodystringopcionalTexto libre a encontrar en el cuerpo del mensaje (action 'search'). (En Gmail esto coincide con todo el mensaje, no solo el cuerpo.)
textstringopcionalTexto libre a coincidir en cualquier parte del mensaje: cabeceras y cuerpo (action 'search').
unreadbooleanopcionalAcciones 'list' y 'search': true = solo mensajes no leídos; false = solo leídos; omítelo para ambos.
has_attachmentbooleanopcionalAction 'search': true = solo mensajes con adjunto. No admitido en IMAP genérico (se ignora ahí).
flaggedbooleanopcionalAction 'search': true = solo mensajes marcados/destacados.
sincestring (ISO date)opcionalFecha o fecha-hora ISO 8601 (action 'search'); devuelve mensajes recibidos en/después de (>=) este instante. P. ej. "2026-06-01".
beforestring (ISO date)opcionalFecha o fecha-hora ISO 8601 (action 'search'); devuelve mensajes recibidos estrictamente antes de (<) este instante.
querystringopcionalCadena de consulta nativa del proveedor (action 'search', recurso de emergencia). Prefiere los campos estructurados de arriba. Se combina con ellos donde se admite; se ignora en Fastmail.
include_foldersarrayopcionalRestringe una búsqueda a estos nombres de carpeta (action 'search'). En IMAP genérico, omitirlo busca solo en INBOX; indica tus carpetas de archivo o de enviados para ampliarlo. Gmail y Outlook buscan en todas las carpetas salvo la papelera (Elementos eliminados en Outlook; Gmail también omite Spam); indícala para incluirla.
email_organizemanage:folders

Mueve, copia, marca o archiva mensajes que indicas por message_id. Define action: 'move'/'move_batch' (a un destination_folder_id), 'copy'/'copy_batch' (duplica en un destination_folder_id, dejando el original en su lugar; disponible allí donde inbox_list indique capabilities.copy true: todas las bandejas IMAP, incluida una dirección de Gmail conectada por IMAP, y Outlook), 'flag' (establece leído/no leído/destacado mediante flag_action sobre message_ids), o 'archive' (saca un mensaje de la bandeja de entrada). Obtén antes los IDs con email_read. Cada acción toca solo los IDs que pasas y se deshace con otra llamada: un movimiento con el movimiento inverso, archive con un movimiento a la bandeja de entrada, flag con la marca contraria, y una copia deja el original donde estaba. En Gmail, mover añade la etiqueta de destino y quita INBOX; las demás etiquetas se mantienen, sacar un mensaje de Trash o Spam también limpia TRASH/SPAM, así que es una restauración real, y el conector de la API de Gmail (provider 'gmail') no tiene copia nativa, aunque un buzón de Gmail conectado por IMAP copia como cualquier otra bandeja IMAP. Para mover todo lo que coincida con una búsqueda en lugar de una lista de IDs, usa email_search_and_move: es una herramienta aparte porque un solo filtro equivocado allí reubica una bandeja entera. Cada acción necesita manage:folders. Eliminar mensajes vive en su propia herramienta email_delete.

ParámetroTipoObligatorioDescripción
actionenumobligatorioQué operación realizar: "move", "move_batch", "copy", "copy_batch", "flag" o "archive". Determina qué otros argumentos se aplican. Mover cada mensaje que coincida con una búsqueda es la herramienta aparte email_search_and_move.
inbox_idstring (uuid)opcionalUUID de la bandeja que contiene los mensajes. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
message_idstringopcionalID de mensaje del proveedor para una acción de un solo mensaje (move, copy, archive), de un list, read o search previo.
message_idsarray[string]opcionalIDs de mensaje del proveedor para una acción por lotes (move_batch, copy_batch, flag). Máx. 500 por llamada.
destination_folder_idstringopcionalCarpeta de destino (move, move_batch, copy, copy_batch): un alias canónico (inbox, sent, drafts, trash, archive, spam), un nombre de carpeta/etiqueta (p. ej. 'Receipts') o un ID de carpeta nativo del proveedor obtenido de folder_list. Los nombres y alias se resuelven automáticamente.
flag_actionenumopcionalPara action 'flag': el cambio a aplicar a cada mensaje: "read" o "unread" para fijar el estado de lectura, o "flag"/"unflag" para añadir o quitar una estrella/marca de seguimiento.
email_search_and_movemanage:folders

Mueve a una carpeta de destino cada mensaje que coincida con una búsqueda, en una sola operación del lado del servidor, de modo que ningún ID de mensaje quede obsoleto antes de usarse. La búsqueda usa los mismos campos estructurados e independientes del proveedor que email_read (from, to, cc, subject, body, text, unread, has_attachment, flagged, since, before), que el servidor traduce a la sintaxis nativa de la bandeja; query es un recurso de emergencia en crudo. Es una herramienta aparte de email_organize, y es la que se marca como destructiva ante tu cliente MCP, porque actúa sobre todo lo que encuentra el filtro y no sobre IDs que hayas elegido: un solo filtro equivocado reubica una bandeja entera. Para mover mensajes que ya has listado, usa email_organize (action 'move' o 'move_batch') en su lugar. Limitada por limit, por defecto y máximo 500: comprueba has_more en el resultado antes de dar una bandeja por barrida del todo, y termina el resto con email_organize (action 'move_batch'). En Gmail, mover añade la etiqueta de destino y quita INBOX. Devuelve los recuentos succeeded/failed y un resultado por mensaje. Necesita manage:folders.

ParámetroTipoObligatorioDescripción
inbox_idstring (uuid)opcionalUUID de la bandeja que se va a barrer. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
destination_folder_idstringobligatorioAdónde se mueve cada coincidencia: un alias canónico (inbox, sent, drafts, trash, archive, spam), un nombre de carpeta/etiqueta (p. ej. 'Receipts') o un ID de carpeta nativo del proveedor obtenido de folder_list. Los nombres y alias se resuelven automáticamente.
fromstringopcionalRemitente a coincidir: dirección de correo, nombre visible o fragmento.
tostringopcionalDestinatario principal (To) a coincidir: dirección de correo, nombre visible o fragmento.
ccstringopcionalDestinatario en copia (Cc) a coincidir: dirección de correo, nombre visible o fragmento.
subjectstringopcionalTexto a coincidir en el asunto.
bodystringopcionalTexto libre a encontrar en el cuerpo del mensaje. (En Gmail esto coincide con todo el mensaje.)
textstringopcionalTexto libre a coincidir en cualquier parte del mensaje: cabeceras y cuerpo.
unreadbooleanopcionaltrue = solo no leídos; false = solo leídos; omítelo para ambos.
has_attachmentbooleanopcionaltrue = solo mensajes con adjunto. No admitido en IMAP genérico (se ignora ahí).
flaggedbooleanopcionaltrue = solo mensajes marcados/destacados.
sincestring (ISO date)opcionalFecha o fecha-hora ISO 8601; coincide con mensajes recibidos en/después de (>=) este instante.
beforestring (ISO date)opcionalFecha o fecha-hora ISO 8601; coincide con mensajes recibidos estrictamente antes de (<) este instante.
querystringopcionalCadena de consulta nativa del proveedor (recurso de emergencia). Prefiere los campos estructurados de arriba. Se ignora en Fastmail.
include_foldersarrayopcionalRestringe la búsqueda a estos nombres de carpeta. En IMAP genérico, omitirlo busca solo en INBOX; indica tus carpetas de archivo o de enviados para ampliarlo. Gmail y Outlook buscan en todas las carpetas salvo la papelera (Elementos eliminados en Outlook; Gmail también omite Spam); indícala para incluirla.
limitintegeropcionalNúmero máximo de coincidencias que se mueven. Por defecto 500, máx. 500. Cuando la búsqueda llena el límite, has_more en el resultado dice si quedaron mensajes coincidentes sin tocar.
idempotency_keystringopcionalClave opaca opcional (1–200 caracteres) para un único barrido lógico. Reutilízala solo para reintentar exactamente la misma llamada en un plazo de 24 horas; una reutilización con argumentos distintos se rechaza.
email_deletedelete:email

Elimina mensajes. Es su propia herramienta, separada de email_organize, porque eliminar es destructivo. Define action: 'delete'/'delete_batch' (Papelera por defecto, o permanente), o 'search_and_delete' (elimina cada mensaje que coincida con una búsqueda estructurada, evita IDs de mensaje obsoletos). Las eliminaciones van a la Papelera salvo que pases permanent: true, que es irreversible. Cada acción necesita el permiso delete:email, y toda la herramienta se marca como destructiva ante tu cliente MCP, que gestiona la confirmación del usuario antes de eliminar nada.

ParámetroTipoObligatorioDescripción
actionenumobligatorioQué operación realizar: "delete", "delete_batch" o "search_and_delete". Determina qué otros argumentos se aplican.
inbox_idstring (uuid)opcionalUUID de la bandeja que contiene los mensajes. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
message_idstringopcionalID de mensaje del proveedor para una eliminación individual (action 'delete'), de un list, read o search previo.
message_idsarray[string]opcionalIDs de mensaje del proveedor para una eliminación por lotes (action 'delete_batch'). Máx. 500 por llamada.
permanentbooleanopcionalSi es true, elimina de forma definitiva (omite la Papelera; puede ser irreversible); si es false u omitido, mueve a la Papelera. La eliminación permanente está disponible en IMAP, Fastmail y Outlook; la API de Gmail solo admite papelera. Por defecto false.
fromstringopcionalRemitente a coincidir (search_and_delete): dirección de correo, nombre visible o fragmento.
tostringopcionalDestinatario principal (To) a coincidir (search_and_delete): dirección de correo, nombre visible o fragmento.
ccstringopcionalDestinatario en copia (Cc) a coincidir (search_and_delete): dirección de correo, nombre visible o fragmento.
subjectstringopcionalTexto a coincidir en el asunto (search_and_delete).
bodystringopcionalTexto libre a encontrar en el cuerpo del mensaje (search_and_delete). (En Gmail esto coincide con todo el mensaje.)
textstringopcionalTexto libre a coincidir en cualquier parte del mensaje: cabeceras y cuerpo (search_and_delete).
unreadbooleanopcionalAcción de búsqueda: true = solo no leídos; false = solo leídos; omítelo para ambos.
has_attachmentbooleanopcionalAcción de búsqueda: true = solo mensajes con adjunto. No admitido en IMAP genérico (se ignora ahí).
flaggedbooleanopcionalAcción de búsqueda: true = solo mensajes marcados/destacados.
sincestring (ISO date)opcionalFecha o fecha-hora ISO 8601 (acción de búsqueda); coincide con mensajes recibidos en/después de (>=) este instante.
beforestring (ISO date)opcionalFecha o fecha-hora ISO 8601 (acción de búsqueda); coincide con mensajes recibidos estrictamente antes de (<) este instante.
querystringopcionalCadena de consulta nativa del proveedor (acción de búsqueda, recurso de emergencia). Prefiere los campos estructurados de arriba. Se ignora en Fastmail.
include_foldersarrayopcionalRestringe la búsqueda a estos nombres de carpeta (acción de búsqueda). En IMAP genérico, omitirlo busca solo en INBOX; indica tus carpetas de archivo o de enviados para ampliarlo. Gmail y Outlook buscan en todas las carpetas salvo la papelera (Elementos eliminados en Outlook; Gmail también omite Spam); indícala para incluirla.
limitintegeropcionalPara search_and_delete: número máximo de coincidencias sobre las que actuar. Por defecto 500, máx. 500.
email_composesend:email

Envía correo nuevo o responde a mensajes existentes. Define action: 'send' para un correo nuevo (to/subject/body, opcionalmente cc/bcc/html_body/reply_to/attachments), 'reply' para responder a un message_id (las cabeceras de hilo se establecen automáticamente; opcionalmente reply_all), o 'forward' para reenviar un message_id a nuevos destinatarios, retransmitiendo el original byte a byte (HTML, imágenes en línea y adjuntos intactos). La firma de la bandeja se añade automáticamente: en respuestas y reenvíos va después de tu texto y antes del bloque citado, regida por el modo de respuesta de la firma; pasa include_signature: false para suprimirla en un único mensaje escueto. Las tres son irreversibles una vez enviadas. 'forward' también acepta message_ids para hasta 50 mensajes en una llamada, informados uno a uno. Para adjuntar un archivo que ya está en esta bandeja, refiérelo como { source_message_id, attachment_index } en lugar de leerlo y volver a codificarlo.

ParámetroTipoObligatorioDescripción
actionenumobligatorioQué operación realizar: "send", "reply" o "forward". Determina qué otros argumentos se aplican.
inbox_idstring (uuid)opcionalUUID de la bandeja desde la que enviar. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
message_idstringopcionalID de mensaje del proveedor del mensaje original (action 'reply' o 'forward'), de un list, read o search previo.
message_idsarray[string]opcionalHasta 50 ID de mensaje para reenviar a los mismos destinatarios en una sola llamada (action 'forward'), en lugar de message_id. Se reenvían de uno en uno y el resultado informa de cada uno por separado, de modo que un fallo a mitad de camino sigue indicando cuáles se enviaron. Los duplicados se eliminan.
toarray[string]opcionalDirecciones de correo de los destinatarios (obligatorio para 'send' y 'forward'). Máx. 50.
subjectstringopcionalAsunto del correo (action 'send'). Máx. 998 caracteres. En reply/forward se deriva del original.
bodystringopcionalCuerpo de texto. Para 'reply' es tu respuesta; para 'forward' una nota opcional antepuesta al mensaje reenviado.
ccarray[string]opcionalDestinatarios en copia (send, forward). Por defecto [].
bccarray[string]opcionalDestinatarios en copia oculta (send, forward). Por defecto [].
html_bodystringopcionalVersión HTML del cuerpo (multipart/alternative). Quien llama es responsable de un HTML seguro.
reply_tostringopcionalDirección de la cabecera Reply-To (action 'send').
reply_allbooleanopcionalResponder a todos los destinatarios originales, To + Cc (action 'reply'). Por defecto false.
include_attachmentsbooleanopcionalConservar los adjuntos del mensaje original (action 'forward'). Por defecto true; ponlo en false para dejar fuera los archivos adjuntos. Las imágenes incrustadas en el cuerpo siempre se conservan.
as_attachmentbooleanopcionalReenviar el mensaje original completo como una única parte message/rfc822 (.eml), cabeceras incluidas, en lugar de retransmitir su cuerpo en línea (action 'forward'). Por defecto false.
include_signaturebooleanopcionalSi añadir la firma configurada de la bandeja a este mensaje. Por defecto true; ponlo en false para enviar este único mensaje sin la firma.
attachmentsarrayopcionalArchivos adjuntos. Cada elemento es o bien bytes en línea { filename, mime_type, data (base64) } o una referencia a un archivo que ya está en esta bandeja { source_message_id, attachment_index }, que el servidor copia sin que los bytes pasen por el modelo. Máx. 20 elementos, 10 MB en total.
idempotency_keystringopcionalClave opaca opcional (1–200 caracteres) para una única solicitud saliente lógica. Reutilízala solo para reintentar exactamente la misma acción con los mismos argumentos en un plazo de 24 horas; una reutilización con argumentos distintos se rechaza.
folder_listread:email

Lista todas las carpetas de una bandeja, o todas las etiquetas en Gmail. Cada entrada incluye su ID nativo del proveedor, nombre visible, tipo ('folder' en los proveedores jerárquicos, 'label' en Gmail) y los recuentos de mensajes, totales y sin leer. Usa los IDs devueltos como argumento folder al listar correo con email_read y como destino de los movimientos de email_organize. Solo lectura, sin argumento action: lo único que hay que indicar es qué bandeja consultar. Necesita read:email.

ParámetroTipoObligatorioDescripción
inbox_idstring (uuid)opcionalUUID de la bandeja cuyas carpetas se listan. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
foldermanage:folders

Crea, renombra y elimina carpetas del buzón o etiquetas de Gmail. Los parámetros usan 'folder' por compatibilidad entre proveedores, pero Gmail gestiona etiquetas (type: 'label'), no carpetas. Define action: 'create' (name), 'rename' (folder_id, new_name) o 'delete' (folder_id, irreversible; en Gmail quita la etiqueta de todos los mensajes que la lleven, y en otros proveedores los mensajes que contenga pueden perderse). Leer las carpetas que existen es la herramienta aparte de solo lectura folder_list, que además es de donde salen los folder_id que toman estas acciones. Todas las acciones necesitan manage:folders, y la herramienta se marca como destructiva ante tu cliente MCP.

ParámetroTipoObligatorioDescripción
actionenumobligatorioQué operación realizar: "create", "rename" o "delete". Determina qué otros argumentos se aplican. Listar carpetas es la herramienta aparte folder_list.
inbox_idstring (uuid)opcionalUUID de la bandeja cuyas carpetas se gestionan. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
namestringopcionalNombre de la nueva carpeta o etiqueta (action 'create'). 1–255 caracteres.
folder_idstringopcionalID de carpeta/etiqueta nativo del proveedor (action 'rename' o 'delete'), obtenido de folder_list.
new_namestringopcionalNuevo nombre visible (action 'rename'). 1–255 caracteres.
draft_listmanage:drafts

Devuelve los borradores guardados en la carpeta Drafts de la bandeja, cada uno con su draft_id, asunto, destinatarios y fecha de creación. Pasa el draft_id a la herramienta draft para actualizar, enviar o eliminar uno. Solo lectura, sin argumento action. Necesita manage:drafts.

ParámetroTipoObligatorioDescripción
inbox_idstring (uuid)opcionalUUID de la bandeja que contiene los borradores. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
limitintegeropcionalNúmero máximo de borradores a devolver. Por defecto 20, máx. 50.
draftmanage:draftsread:emailsend:email

Crea, actualiza, envía y elimina borradores sin enviar en la carpeta Drafts de la bandeja. Define action: 'create' (subject/body obligatorios, opcionalmente to/cc/bcc/html_body), 'reply' (message_id/body obligatorios, opcionalmente reply_all; crea una respuesta sin enviar en la conversación de origen), 'update' (draft_id más los campos a sobrescribir), 'send' (draft_id, elimina el borrador y lo envía, irreversible) o 'delete' (draft_id). Leer los borradores que existen es la herramienta aparte de solo lectura draft_list. La firma de la bandeja se incrusta cuando el borrador se crea o se actualiza, así que ya está presente en la carpeta Drafts y no se vuelve a añadir al enviar; pasa include_signature: false para crear un borrador sin ella. En bandejas basadas en IMAP un draft_id cambia en cada actualización, así que usa siempre el más reciente; Gmail y Outlook mantienen un draft_id estable. 'reply' necesita además read:email y nunca envía correo, 'send' necesita send:email para que una clave limitada a borradores no pueda usar un borrador para saltarse el consentimiento de envío, y el resto necesitan manage:drafts. Los borradores admiten adjuntos igual que email_compose: en base64, o un archivo que ya está en esta bandeja mediante source_message_id. 'update' añade archivos y conserva los que el borrador ya tiene.

ParámetroTipoObligatorioDescripción
actionenumobligatorioQué operación realizar: "create", "reply", "update", "send" o "delete". Determina qué otros argumentos se aplican. Listar borradores es la herramienta aparte draft_list.
inbox_idstring (uuid)opcionalUUID de la bandeja que contiene los borradores. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
draft_idstringopcionalID de borrador del proveedor (action 'update' o 'send'), de la acción create o update más reciente, o de draft_list. En bandejas IMAP cambia tras cada actualización, así que usa siempre el más reciente.
message_idstringopcionalID del mensaje de origen para la acción 'reply', obtenido de una acción list, read o search previa.
reply_allbooleanopcionalPara la acción 'reply': false por defecto, respondiendo solo al remitente. Ponlo en true para incluir los destinatarios originales de To y Cc.
subjectstringopcionalAsunto del borrador (action 'create'/'update').
bodystringopcionalCuerpo de texto del borrador (action 'create'/'update').
toarray[string]opcionalDirecciones de destinatarios (action 'create'/'update'). Por defecto [].
ccarray[string]opcionalDestinatarios en copia (action 'create'/'update'). Por defecto [].
bccarray[string]opcionalDestinatarios en copia oculta (action 'create'/'update'). Por defecto [].
html_bodystringopcionalCuerpo HTML opcional (action 'create'/'update').
include_signaturebooleanopcionalSi incrustar la firma configurada de la bandeja en el borrador (action 'create'/'update'). Por defecto true; ponlo en false para guardar un borrador sin la firma.
idempotency_keystringopcionalClave opaca opcional (1–200 caracteres) para un único envío de borrador. Reutilízala solo para reintentar exactamente el mismo envío en un plazo de 24 horas; una reutilización con argumentos distintos se rechaza.
schedule_listschedule:email

Lista los envíos programados pendientes del espacio de trabajo, los más próximos primero, opcionalmente filtrados por una bandeja. Se devuelve todo lo que esté en estado 'pending' o 'sending'. Pasa el id devuelto a la herramienta schedule (action 'cancel') para detener un envío antes de que se despache. Solo lectura, sin argumento action. Necesita schedule:email.

ParámetroTipoObligatorioDescripción
inbox_idstring (uuid)opcionalUUID de la bandeja por la que filtrar. Opcional; omítelo para listar los envíos programados de todas las bandejas de la clave.
limitintegeropcionalNúmero máximo de resultados. Por defecto 20, máx. 100.
scheduleschedule:email

Programa correo para entrega futura mediante una cola en el servidor, o cancela un envío ya encolado. Define action: 'create' (to/subject/body más una marca de tiempo send_at en ISO 8601 con zona horaria; los destinatarios y el cuerpo se validan de inmediato, y los envíos inválidos no se encolan) o 'cancel' (id, solo se pueden cancelar los envíos que sigan 'pending'). Leer lo que hay en cola es la herramienta aparte de solo lectura schedule_list, que además es de donde sale el id que toma 'cancel'. Usa email_compose para enviar ahora, y esta solo cuando se indique una hora posterior. El despachador se ejecuta cada minuto, por lo que la entrega puede ocurrir hasta 60 segundos después de send_at. Todas las acciones necesitan schedule:email.

ParámetroTipoObligatorioDescripción
actionenumobligatorioQué operación realizar: "create" o "cancel". Determina qué otros argumentos se aplican. Listar los envíos en cola es la herramienta aparte schedule_list.
inbox_idstring (uuid)opcionalUUID de la bandeja desde la que enviar (action 'create'). Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
toarray[string]opcionalDirecciones de correo de los destinatarios (action 'create'). Máx. 50.
subjectstringopcionalAsunto del correo (action 'create'). Máx. 998 caracteres.
bodystringopcionalCuerpo de texto del correo (action 'create').
send_atstring (ISO 8601)opcionalFecha-hora ISO 8601 con zona horaria a la que enviar (action 'create'). Debe estar en el futuro, p. ej. "2026-06-02T09:00:00Z".
ccarray[string]opcionalDestinatarios en copia (action 'create'). Por defecto [].
bccarray[string]opcionalDestinatarios en copia oculta (action 'create'). Por defecto [].
html_bodystringopcionalVersión HTML opcional del cuerpo (action 'create').
reply_tostringopcionalDirección opcional de la cabecera Reply-To (action 'create').
attachmentsarrayopcionalArchivos adjuntos (action 'create'). Solo bytes en línea: { filename, mime_type, data (base64) }. La forma por referencia source_message_id está en email_compose, no aquí. Máx. 20 elementos, 10 MB en total.
idstring (uuid)opcionalUUID del envío programado a cancelar (action 'cancel'), tal como lo devolvió 'create' o schedule_list.
idempotency_keystringopcionalClave opaca opcional para la creación de un único envío programado. Reutilízala solo para reintentar exactamente la misma solicitud de creación en un plazo de 24 horas.
signature_getread:email

Lee la firma configurada de una bandeja: su texto plano y su HTML, si está habilitada, el modo de respuesta/reenvío, su origen ('manual', 'gmail_import' o null cuando no hay ninguna) y sender_name, el nombre que los destinatarios ven en la cabecera From. La firma se añade del lado del servidor en cada envío, respuesta, reenvío, borrador y mensaje programado. Solo lectura, sin argumento action. Necesita read:email.

ParámetroTipoObligatorioDescripción
inbox_idstring (uuid)opcionalUUID de la bandeja cuya firma se va a leer. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
signature_setsend:email

Escribe la firma de una bandeja, que se añade del lado del servidor en cada envío, respuesta, reenvío, borrador y mensaje programado. Pasa signature_text, signature_html o ambos, y opcionalmente signature_enabled, signature_reply_mode y sender_name; pasa una cadena vacía en ambos cuerpos para borrarla. Las firmas admiten HTML enriquecido: negrita, cursiva, encabezados, listas, colores, alineación, enlaces e imágenes/logotipos alojados referenciados como URLs https, de modo que un agente puede establecer una firma con formato completo pasando signature_html. El mismo editor enriquecido está disponible en el panel. Establecer una firma marca su origen como 'manual', lo que anula de forma permanente la importación automática de Gmail para esa bandeja. sender_name define el nombre que los destinatarios ven en la cabecera From, p. ej. "Acme Support", mostrado antes de la dirección misma, y puede establecerse por sí solo sin tocar la firma. Leer la firma actual es la herramienta aparte signature_get. No hay argumento action. Necesita send:email.

ParámetroTipoObligatorioDescripción
inbox_idstring (uuid)opcionalUUID de la bandeja cuya firma se va a establecer. Opcional: se resuelve automáticamente cuando la clave tiene exactamente una bandeja; si no, pasa este o inbox. Llama a inbox_list para obtener los IDs de bandeja disponibles.
inboxstringopcionalDirección de correo de la bandeja a usar, como alternativa práctica a inbox_id. Opcional; se ignora si se indica inbox_id.
signature_textstringopcionalCuerpo de la firma en texto plano. Omítelo para dejarlo sin cambios; pasa una cadena vacía para borrarlo. Si solo se indica el texto, al enviar se deriva automáticamente una versión HTML.
signature_htmlstringopcionalCuerpo opcional de la firma en HTML enriquecido. Admite formato (negrita, cursiva, subrayado, encabezados, listas, colores, alineación, enlaces) e imágenes alojadas mediante etiquetas HTML img cuyo src sea una URL https (sin base64 ni CID); se sanea al guardar. Omítelo para dejarlo sin cambios; pasa una cadena vacía para borrarlo.
signature_enabledbooleanopcionalSi la firma se añade al correo saliente. Por defecto true; ponlo en false para dejar de añadirla sin borrar el texto.
signature_reply_modeenumopcionalCuándo incluir la firma en respuestas y reenvíos: "always" (cada respuesta/reenvío), "first_only" (por defecto, solo el primer mensaje de un hilo, evitando firmar por duplicado) o "never".
sender_namestringopcionalNombre que los destinatarios ven en la cabecera From, p. ej. 'Acme Support', que aparece antes de la dirección misma. Omítelo para dejarlo sin cambios; pasa una cadena vacía para borrarlo. Los espacios se compactan, los caracteres de control y los corchetes angulares se eliminan, y el resultado puede tener como máximo 100 caracteres. Establecer solo sender_name no cambia la firma ni su origen.
automation_readmanage:automations

Inspecciona las reglas de triaje programadas y desatendidas y lo que han estado haciendo. Una regla es una búsqueda guardada más una acción fija, reevaluada con una cadencia fija y sin ningún modelo de por medio: el correo se compara, nunca se interpreta. Define action: 'list' (todas las reglas), 'get' (automation_id, una regla completa), 'runs' (contadores de las ejecuciones recientes de una regla) o 'preview' (una simulación que informa de lo que coincide con el filtro ahora mismo, no aplica nada, no envía nada y no reclama nada en el registro de deduplicación). Nada de esto cambia una regla ni toca el buzón; crear y modificar reglas es la herramienta aparte automation. Todas las acciones requieren manage:automations.

ParámetroTipoObligatorioDescripción
actionenumobligatorioOperación a realizar: «list», «get», «runs» o «preview». Determina qué otros argumentos se aplican. Las cuatro son de solo lectura.
automation_idstring (uuid)opcionalUUID de la regla a leer, tal como lo devuelven la acción 'create' de automation o 'list'. Obligatorio para get y runs. Opcional en preview: pásalo para simular una regla guardada en lugar de un filtro improvisado.
inbox_idstring (uuid)opcionalUUID del buzón sobre el que previsualizar. Opcional cuando la clave tiene exactamente un buzón; si no, pasa este o inbox.
inboxstringopcionalDirección de correo del buzón, como alternativa cómoda a inbox_id. Opcional; se ignora si se indica inbox_id.
filterobjectopcionalLa búsqueda a simular (action 'preview'), con los mismos criterios estructurados que acepta la acción 'search' de email_read: from, to, cc, subject, body, text, unread, has_attachment, flagged, since, before. Se exige al menos un criterio, porque un filtro vacío coincidiría con todo tu buzón.
max_messages_per_runintegeropcionalCuántas coincidencias informa una previsualización: de 1 a 200, 25 por defecto. Refleja el límite que aplicaría una ejecución real, así que la previsualización muestra el mismo radio de impacto que tendría la regla.
limitintegeropcionalPara la acción 'runs': cuántas ejecuciones devolver, de la más reciente a la más antigua. Por defecto 20, máximo 100.
automationmanage:automations

Crea, modifica, activa, desactiva y elimina reglas de triaje programadas y desatendidas. Una regla es una búsqueda guardada más una acción fija, reevaluada con una cadencia fija y sin ningún modelo de por medio: el correo se compara, nunca se interpreta. Define action: 'create' (name, filter, rule_action e interval_minutes; la regla siempre se crea desactivada), 'update' (automation_id más los campos a cambiar), 'enable', 'disable' o 'delete' (automation_id; se conserva el historial de ejecuciones). Listar reglas, leer una completa, ver el historial de ejecuciones y simular un filtro es la herramienta aparte de solo lectura automation_read. Las acciones de regla disponibles son move, label (una etiqueta de Gmail, una categoría de Outlook o una palabra clave IMAP), mark_read, forward y draft_reply. Eliminar correo no está disponible para una automatización. Un reenvío siempre queda retenido para su aprobación humana, diga lo que diga el ajuste de aprobación del buzón, y draft_reply solo escribe un borrador. Haz una previsualización antes de activarla. Todas las acciones requieren manage:automations.

ParámetroTipoObligatorioDescripción
actionenumobligatorioOperación a realizar: «create», «update», «enable», «disable» o «delete». Determina qué otros argumentos se aplican. Leer reglas y previsualizar filtros es la herramienta aparte automation_read.
automation_idstring (uuid)opcionalUUID de la regla sobre la que actuar, tal como lo devuelven 'create' o la acción 'list' de automation_read. Obligatorio para update, enable, disable y delete.
inbox_idstring (uuid)opcionalUUID del buzón que vigila la regla (action 'create'). Opcional cuando la clave tiene exactamente un buzón; si no, pasa este o inbox.
inboxstringopcionalDirección de correo del buzón, como alternativa cómoda a inbox_id. Opcional; se ignora si se indica inbox_id.
namestringopcionalNombre legible de la regla, de 1 a 80 caracteres. Obligatorio en 'create'.
filterobjectopcionalLa búsqueda guardada, con los mismos criterios estructurados que acepta la acción 'search' de email_read: from, to, cc, subject, body, text, unread, has_attachment, flagged, since, before. Se exige al menos un criterio, porque un filtro vacío coincidiría con todo tu buzón. Aquí no se aceptan consultas nativas del proveedor en texto libre: una regla se reejecuta sin supervisión durante meses, y una cadena en bruto es un dialecto que nadie valida.
rule_actionobjectopcionalLa única acción fija que se aplica a cada coincidencia, como objeto etiquetado con un type de move (más folder), label (más label; se escribe como etiqueta de Gmail, categoría de Outlook o palabra clave IMAP), mark_read, forward (más to y un note opcional) o draft_reply (más template). Se llama rule_action porque action ya selecciona la operación. No existe ninguna acción de borrado, y si se pide se rechaza en lugar de ignorarse. Un reenvío siempre queda retenido para su aprobación, y draft_reply solo escribe un borrador. Una plantilla sustituye únicamente {{sender_name}}, {{sender_email}}, {{subject}} y {{date}}, con escapado HTML; todo lo demás es texto literal y el cuerpo de los mensajes nunca se interpola.
interval_minutesenumopcionalMinutos entre ejecuciones, dentro de la escala fija 15, 30, 60, 180, 360, 720 o 1440. Obligatorio en 'create'. Una escala en vez de un entero libre, para que una regla de un minuto no machaque al proveedor hasta provocar límites de tasa.
max_messages_per_runintegeropcionalCuántos mensajes coincidentes puede tratar una ejecución: de 1 a 200, 25 por defecto. Es el radio de impacto: limita cuánto correo puede tocar un filtro equivocado antes de que una persona lea el registro de la ejecución.
Modelo de seguridad de las automatizaciones

Lo que una regla programada puede y no puede hacer.

Una automatización toca tu buzón de forma programada y sin nadie mirando. Esa es una categoría de riesgo distinta a la de un agente con el que estás conversando, así que las garantías siguientes las impone el servidor en lugar de dejarlas en manos de la regla que escribas.

Ningún modelo se ejecuta sin supervisión.

Una regla es una consulta guardada más una acción fija. Al ejecutarse, el servidor lanza esa consulta contra tu buzón y aplica esa acción a las coincidencias. Nada lee tu correo y luego decide qué hacer con él. El contenido del correo se compara, nunca se interpreta como una instrucción, de modo que la inyección de prompts está estructuralmente ausente de la vía desatendida, no simplemente filtrada, puntuada o mitigada. No hay nada en el circuito con lo que un texto inyectado pueda hablar.

Conviene decirlo con claridad, porque la forma peligrosa en esta categoría es un agente que lee correo entrante no confiable y luego actúa sobre él sin ninguna persona presente. Incidentes públicos como EchoLeak y el servidor MCP de Postmark con puerta trasera han dejado a los compradores razonablemente recelosos de justo eso. En una sesión interactiva sí hay un modelo que lee tu correo, que es la razón de ser del producto, y allí hay una persona presente y el contenido va marcado como dato no confiable. La vía programada es la que se ejecuta a solas, y en ella no hay ningún modelo.

Las automatizaciones nunca eliminan correo.

Eliminar no es una acción disponible, por diseño. Mover, etiquetar, marcar como leído, reenviar y redactar un borrador de respuesta son el conjunto completo. La eliminación es la única acción que una regla fallida vuelve irreversible, así que queda excluida en la capa de validación, donde una acción que apenas menciona el borrado se rechaza en lugar de ignorarse en silencio.

Los reenvíos siempre esperan a una persona.

Un reenvío de una automatización se encola en la cola de aprobación y solo sale de tu buzón cuando un miembro del espacio de trabajo lo aprueba, con independencia del ajuste de aprobación de envíos de cada buzón. El número de destinatarios está limitado por regla. Una regla desatendida no puede sacar correo de tu organización por su cuenta.

Los borradores de respuesta solo se quedan en borrador.

Una regla draft_reply escribe un borrador sin enviar dentro de la conversación original y ahí se detiene. Nada se envía sin supervisión, en ningún proveedor y bajo ninguna configuración.

Las plantillas sustituyen cuatro campos, y nada más.

Una plantilla de respuesta se guarda literalmente y nunca se evalúa. Solo se sustituyen {{sender_name}}, {{sender_email}}, {{subject}} y {{date}}, cada uno con escapado HTML. El cuerpo del mensaje nunca se interpola, y no hay ninguna sintaxis de expresiones que evaluar, así que nada de lo que llegue a tu buzón puede convertir una plantilla en un cálculo.

Cada ejecución queda registrada.

Cada ejecución registra qué coincidió con el filtro, qué le ocurrió a cada mensaje y qué quedó encolado para aprobación, junto con los contadores de coincidencias, procesados, correctos, fallidos y omitidos. Las acciones reversibles guardan el estado necesario para deshacerlas. El historial de ejecuciones sobrevive a la regla a la que pertenece, porque es el registro de lo que se hizo con tu buzón. Léelo con la acción 'runs' o en el panel.

Una regla tiene exactamente la autoridad de una clave.

Cada regla se ejecuta como la clave de API que la creó. Nunca puede superar los ámbitos ni el acceso a buzones que esa clave ya tiene, cada acción que realiza se contabiliza, se limita por tasa y se escribe en el registro de auditoría igual que una llamada interactiva, y revocar la clave detiene la regla.

Los fallos repetidos la apagan.

Tras 5 ejecuciones fallidas consecutivas, la regla se desactiva automáticamente y se registra el motivo. Una regla apuntada a un buzón que ha dejado de responder se detiene, en lugar de reintentarlo cada 15 minutos para siempre.

Un radio de impacto limitado por ejecución.

Cada regla lleva un número máximo de mensajes sobre los que puede actuar una sola ejecución, de 1 a 200 y 25 por defecto, de modo que un filtro más amplio de lo que pretendías toca como mucho esa cantidad de mensajes antes de que veas el registro. Además, toda regla se crea desactivada, y la previsualización es una simulación que muestra lo que coincide con el filtro ahora mismo sin aplicar nada.

Códigos de error

Códigos de error y guía de reintentos.

Los fallos de autenticación, alcance y límite de tasa devuelven un objeto error JSON-RPC con un código numérico. Los fallos de ejecución de herramientas (bandeja no encontrada, error del proveedor, asignación mensual de acciones de correo agotada, etc.) devuelven un result normal con isError: true y un mensaje legible en content[0].text.

CódigoTipoCuándo ocurreReintentable
-32001JSON-RPC errorClave de API ausente, malformada, revocada o caducada (HTTP 401).No
-32004JSON-RPC errorLa clave es válida pero carece de un alcance que la acción de la herramienta requiere (HTTP 403). data.error_code es "insufficient_scope" y data.required_scopes enumera lo que autorizaría la llamada; la cabecera WWW-Authenticate lo repite para que los clientes OAuth puedan ampliar el acceso.No
-32601JSON-RPC errorMétodo JSON-RPC desconocido (p. ej. llamar a un método distinto de initialize, tools/list, tools/call)No
-32602JSON-RPC errorNombre de herramienta desconocido, o parámetro ausente / inválido en tools/callNo
-32003JSON-RPC errorLímite de tasa por clave o por espacio de trabajo superado (HTTP 429). data.error_code es siempre "rate_limit_exceeded". Espera data.retry_after segundos, o consulta la cabecera Retry-After, antes de reintentar.
isError: trueTool resultLa herramienta se ejecutó pero encontró un error (bandeja no encontrada, mensaje no encontrado, fallo de autenticación del proveedor, destinatario inválido, adjunto demasiado grande, 5xx del proveedor). La descripción del error está en content[0].text.No
isError: trueTool resultEl espacio de trabajo ha agotado su asignación mensual de acciones de correo: 150 por mes natural en Free, sin contar los primeros 7 días tras el registro; Personal, Pro y Team no tienen tope mensual, sujeto a uso justo. Se devuelve como un resultado de herramienta normal con isError: true, no como un error JSON-RPC. content[0].text empieza con el recuento y la fecha de reinicio (el día 1 del mes siguiente, UTC), y _meta["com.mcpemails/usage_limit"] lleva error_code "usage_limit_reached" y reset_at. inbox_list sigue funcionando. Reintentar no puede funcionar antes de reset_at.No
Ejemplos de respuestas de error
json
// Tool execution error: inbox not found
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [{ "type": "text", "text": "Inbox not found or not accessible." }],
    "isError": true
  }
}

// Rate limit: JSON-RPC error object with data (HTTP 429). Safe to retry
// after retry_after seconds.
{
  "jsonrpc": "2.0",
  "id": 3,
  "error": {
    "code": -32003,
    "message": "Rate limit exceeded",
    "data": {
      "error_code": "rate_limit_exceeded",
      "window": "per_minute",
      "limit": 100,
      "used": 100,
      "retry_after": 34
    }
  }
}

// Monthly allowance reached (Free: 150 email actions a month): a normal tool
// result (HTTP 200) with isError: true. NOT a JSON-RPC error, and NOT
// retryable until reset_at. The text opens with the numbers and the reset date.
{
  "jsonrpc": "2.0",
  "id": 4,
  "result": {
    "content": [{
      "type": "text",
      "text": "150 of 150 email actions used this month on the Free plan. The counter resets on 2026-10-01. Until then every email action in this workspace will be refused, so retrying will not help. ..."
    }],
    "isError": true,
    "_meta": {
      "com.mcpemails/usage_limit": {
        "error_code": "usage_limit_reached",
        "allowance": 150,
        "reset_at": "2026-10-01T00:00:00.000Z",
        "dashboard_url": "https://mcpemails.com/dashboard/usage",
        "upgrade_url": "https://mcpemails.com/pricing?from=usage_cap"
      }
    }
  }
}
Límites de tasa

Límites de tasa y uso justo.

Ventanas móviles por clave

100 pet / min · 1.000 / h · 10.000 / día

Aplicados por clave de API independientemente del plan. Cuando se superan, el servidor devuelve HTTP 429 con el código de error JSON-RPC -32003, data.error_code: "rate_limit_exceeded" y un campo data.retry_after (segundos). Respeta ese valor antes de reintentar: es una pausa breve y reintentable.

Tope por minuto del plan

Gratis 60 / min · Personal 120 / min · Pro 300 / min · Team 1.000 / min

Un límite de ráfaga de uso justo por espacio de trabajo, agregado entre todas tus claves de API. Cuando se supera, las llamadas devuelven el código de error -32003 con data.error_code: "rate_limit_exceeded", data.window: "per_minute" y una cuenta atrás data.retry_after (segundos). Personal, Pro y Team elevan el tope.

Asignación mensual

Free 150 acciones de correo / mes · Personal, Pro y Team sin tope mensual

Un espacio de trabajo Free dispone de 150 acciones de correo por mes natural (UTC). Durante los primeros 7 días tras el registro no se cuenta nada, y inbox_list y el panel no cuentan nunca. Personal, Pro y Team no tienen tope mensual, sujeto a uso justo. Alcanzar la asignación no es un error JSON-RPC: la llamada devuelve HTTP 200 con un resultado de herramienta normal que lleva isError: true. El texto de content[0].text empieza con el recuento y la fecha de reinicio, el día 1 del mes siguiente, e indica que reintentar no sirve; _meta["com.mcpemails/usage_limit"] lleva error_code: "usage_limit_reached" y reset_at. No hay retry_after. Cualquier otra acción de correo se rechaza hasta el reinicio, las automatizaciones desatendidas se pausan y se reanudan solas el día 1, y el propietario del espacio de trabajo recibe un correo al 80% y al 100%. Trátalo como una parada, no como un retroceso.

Reintentar de forma segura

Respeta siempre retry_after; nunca reintentes envíos a ciegas

Para errores rate_limit_exceeded, espera data.retry_after segundos antes de reintentar. Usa retroceso exponencial para provider_error. No reintentes automáticamente los envíos de email_compose ante provider_error, ya que el mensaje puede haber sido aceptado por el proveedor. Nunca reintentes usage_limit_reached: solo se libera en reset_at.

¿Listo para conectar tu bandeja de entrada?

Empieza en el plan Gratis: una bandeja conectada, para siempre y sin tarjeta. Personal conecta tres buzones, Pro conecta todos los que lleva tu negocio, y Team añade miembros, roles y un espacio de trabajo por cliente.