agentmail
agentmail-to/agentmail-skills
Asigna a los agentes de IA sus propias bandejas de entrada mediante la API de AgentMail. Úsala para crear agentes de correo electrónico, enviar y recibir correos de forma programada, gestionar bandejas de entrada, manejar archivos adjuntos, organizar con etiquetas, crear borradores para su aprobación por parte de personas o configurar notificaciones en tiempo real a través de webhooks o websockets. Admite el aislamiento multitenant mediante pods.
...Expandir todoAcerca de agentmail
AgentMail es una plataforma de correo electrónico centrada en las API, diseñada específicamente para agentes de IA, que ofrece capacidades de correo electrónico programáticas a través de un SDK fácil de usar para los desarrolladores. Resuelve el reto de dotar a los agentes de IA de sus propias identidades de correo electrónico y de la capacidad de enviar, recibir y gestionar de forma autónoma las comunicaciones por correo electrónico. En lugar de crear desde cero una infraestructura de correo electrónico compleja, los desarrolladores pueden habilitar rápidamente buzones de correo para sus agentes de IA e integrar la funcionalidad de correo electrónico en sus aplicaciones con tan solo unas pocas líneas de código.
La plataforma ofrece funciones completas de gestión del correo electrónico, incluida la creación escalable de buzones bajo demanda con direcciones de correo electrónico generadas automáticamente o personalizadas, la gestión completa del ciclo de vida de los mensajes con capacidades de envío y respuesta, la agrupación de conversaciones por hilos, la organización mediante etiquetas y la gestión de archivos adjuntos. Admite formatos de correo electrónico tanto de texto sin formato como HTML para garantizar una entrega óptima, e incluye capacidades de notificación en tiempo real a través de webhooks y websockets. El SDK está disponible tanto para entornos TypeScript/Node.js como para Python, ofreciendo API coherentes en ambos lenguajes.
AgentMail Es ideal para desarrolladores que crean agentes de correo electrónico impulsados por IA, sistemas de automatización de atención al cliente, herramientas de divulgación y comunicación, o cualquier aplicación que requiera capacidades de correo electrónico programáticas. Admite arquitecturas multitenant con aislamiento basado en pods, lo que lo hace adecuado para aplicaciones SaaS en las que varios agentes o clientes necesitan entornos de correo electrónico independientes. Tanto si estás desarrollando un asistente de IA que necesita supervisar una bandeja de entrada, un sistema de seguimiento automatizado o un flujo de trabajo de aprobación de borradores en el que la IA prepara correos electrónicos para su revisión humana, AgentMail proporciona la infraestructura y las API necesarias para gestionar estos casos de uso de manera eficiente.
Preguntas frecuentes
¿Qué lenguajes de programación admite AgentMail?
AgentMail Ofrece compatibilidad oficial con los SDK de TypeScript/Node.js y Python. Ambos SDK ofrecen la misma funcionalidad básica para gestionar bandejas de entrada, enviar y recibir mensajes, organizar con etiquetas y gestionar hilos de conversación.
¿Puedo utilizar dominios de correo electrónico personalizados con AgentMail?
Sí, puedes crear bandejas de entrada con nombres de usuario y dominios personalizados al crear una bandeja de entrada. Si no especificas parámetros personalizados, AgentMail generará automáticamente una dirección de correo electrónico utilizando el dominio predeterminado agentmail.to.
¿Cómo organiza AgentMail las conversaciones de correo electrónico?
AgentMail Utiliza hilos para agrupar los mensajes relacionados en una conversación, de forma similar a como funcionan los clientes de correo electrónico modernos. Puedes ver una lista de hilos, filtrarlos por etiquetas y recuperar todos los mensajes de un hilo. Además, puedes organizar los mensajes utilizando etiquetas personalizadas para una categorización flexible.
¿Tengo que enviar tanto la versión en texto sin formato como la versión HTML de los correos electrónicos?
Sí, AgentMail recomienda enviar siempre versiones tanto en texto como en HTML de tus mensajes para garantizar la mejor capacidad de entrega. Esto asegura la compatibilidad con diferentes clientes de correo electrónico y mejora las posibilidades de que tus correos se entreguen correctamente.
¿Admite AgentMail las notificaciones en tiempo real?
Sí, AgentMail admite notificaciones en tiempo real a través de webhooks y websockets, lo que permite que tu aplicación reciba una notificación inmediata cuando lleguen nuevos mensajes o se produzcan otros eventos en la bandeja de entrada de tu agente.
AgentMail SDK
AgentMail is an API-first email platform for AI agents. Install the SDK and initialize the client.
Installation
# TypeScript/Nodenpm install agentmail# Pythonpip install agentmail
Setup
import { AgentMailClient } from "agentmail";const client = new AgentMailClient({ apiKey: "YOUR_API_KEY" });
from agentmail import AgentMailclient = AgentMail(api_key="YOUR_API_KEY")
Inboxes
Create scalable inboxes on-demand. Each inbox has a unique email address.
// Create inbox (auto-generated address)const autoInbox = await client.inboxes.create();// Create with custom username and domainconst customInbox = await client.inboxes.create({ username: "support", domain: "yourdomain.com",});// List, get, deleteconst inboxes = await client.inboxes.list();const fetchedInbox = await client.inboxes.get("[email protected]");await client.inboxes.delete("[email protected]");
# Create inbox (auto-generated address)inbox = client.inboxes.create()# Create with custom username and domainfrom agentmail.inboxes.types import CreateInboxRequestinbox = client.inboxes.create( request=CreateInboxRequest(username="support", domain="yourdomain.com"),)# List, get, deleteinboxes = client.inboxes.list()inbox = client.inboxes.get(inbox_id="[email protected]")client.inboxes.delete(inbox_id="[email protected]")
Messages
Always send both text and html for best deliverability.
// Send messageawait client.inboxes.messages.send("[email protected]", { to: "[email protected]", subject: "Hello", text: "Plain text version", html: "<p>HTML version</p>", labels: ["outreach"],});// Reply to messageawait client.inboxes.messages.reply("[email protected]", "msg_123", { text: "Thanks for your email!",});// List and get messagesconst messages = await client.inboxes.messages.list("[email protected]");const message = await client.inboxes.messages.get("[email protected]", "msg_123");// Update labelsawait client.inboxes.messages.update("[email protected]", "msg_123", { addLabels: ["replied"], removeLabels: ["unreplied"],});
# Send messageclient.inboxes.messages.send( inbox_id="[email protected]", to="[email protected]", subject="Hello", text="Plain text version", html="<p>HTML version</p>", labels=["outreach"])# Reply to messageclient.inboxes.messages.reply( inbox_id="[email protected]", message_id="msg_123", text="Thanks for your email!")# List and get messagesmessages = client.inboxes.messages.list(inbox_id="[email protected]")message = client.inboxes.messages.get(inbox_id="[email protected]", message_id="msg_123")# Update labelsclient.inboxes.messages.update( inbox_id="[email protected]", message_id="msg_123", add_labels=["replied"], remove_labels=["unreplied"])
Threads
Threads group related messages in a conversation.
// List threads (with optional label filter)const threads = await client.inboxes.threads.list("[email protected]", { labels: ["unreplied"],});// Get thread detailsconst thread = await client.inboxes.threads.get("[email protected]", "thd_123");// Org-wide thread listingconst allThreads = await client.threads.list();
# List threads (with optional label filter)threads = client.inboxes.threads.list(inbox_id="[email protected]", labels=["unreplied"])# Get thread detailsthread = client.inboxes.threads.get(inbox_id="[email protected]", thread_id="thd_123")# Org-wide thread listingall_threads = client.threads.list()
Attachments
Send attachments with Base64 encoding. Retrieve from messages or threads.
// Send with attachmentconst content = Buffer.from(fileBytes).toString("base64");await client.inboxes.messages.send("[email protected]", { to: "[email protected]", subject: "Report", text: "See attached.", attachments: [ { content, filename: "report.pdf", contentType: "application/pdf" }, ],});// Get attachmentconst fileData = await client.inboxes.messages.getAttachment( "[email protected]", "msg_123", "att_456",);
import base64# Send with attachmentcontent = base64.b64encode(file_bytes).decode()client.inboxes.messages.send( inbox_id="[email protected]", to="[email protected]", subject="Report", text="See attached.", attachments=[{"content": content, "filename": "report.pdf", "content_type": "application/pdf"}])# Get attachmentfile_data = client.inboxes.messages.get_attachment( inbox_id="[email protected]", message_id="msg_123", attachment_id="att_456")
Drafts
Create drafts for human-in-the-loop approval before sending.
// Create draftconst draft = await client.inboxes.drafts.create("[email protected]", { to: "[email protected]", subject: "Pending approval", text: "Draft content",});// Send draft (converts to message)await client.inboxes.drafts.send("[email protected]", draft.draftId, {});
# Create draftdraft = client.inboxes.drafts.create( inbox_id="[email protected]", to="[email protected]", subject="Pending approval", text="Draft content")# Send draft (converts to message)client.inboxes.drafts.send(inbox_id="[email protected]", draft_id=draft.draft_id)
Pods
Multi-tenant isolation for SaaS platforms. Each customer gets isolated inboxes.
// Create pod for a customerconst pod = await client.pods.create({ clientId: "customer_123" });// Create inbox within podconst inbox = await client.pods.inboxes.create(pod.podId, {});// List inboxes scoped to podconst inboxes = await client.pods.inboxes.list(pod.podId);
# Create pod for a customerpod = client.pods.create(client_id="customer_123")# Create inbox within pod (pods.inboxes.create accepts flat kwargs)inbox = client.pods.inboxes.create(pod_id=pod.pod_id)# List inboxes scoped to podinboxes = client.pods.inboxes.list(pod_id=pod.pod_id)
Idempotency
Use clientId for safe retries on create operations.
const inbox = await client.inboxes.create({ clientId: "unique-idempotency-key",});// Retrying with same clientId returns the original inbox, not a duplicate
from agentmail.inboxes.types import CreateInboxRequestinbox = client.inboxes.create( request=CreateInboxRequest(client_id="unique-idempotency-key"),)# Retrying with same client_id returns the original inbox, not a duplicate
Real-Time Events
For real-time notifications, see the reference files:
- webhooks.md - HTTP-based notifications (requires public URL)
- websockets.md - Persistent connection (no public URL needed)
Todos los archivos
3 archivosInstalar agentmail
Descarga y descomprime los archivos de habilidades en tu directorio .claude/skills/.
Descargar ZIPClona el repositorio y copia los archivos de la habilidad a tu proyecto.
git clone https://github.com/agentmail-to/agentmail-skills/blob/main/agentmail/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Copiar





Hogar
