MultiMail
E-mail para agentes de IA. Envie e receba como markdown com supervisão humana.
Documentação
@multimail/mcp-server
Seu agente ainda não tem e-mail porque ninguém confia nele para usar e-mail. O MultiMail resolve isso. Um endereço de e-mail real com uma escada de confiança que vai de somente leitura até totalmente autônomo, identidade criptográfica em cada mensagem e controles de envio por destinatário.
Início rápido
{
"mcpServers": {
"multimail": {
"type": "url",
"url": "https://mcp.multimail.dev/mcp"
}
}
}
Servidor remoto. Sem instalação. Autentica via OAuth na primeira conexão.
Funciona com Claude.ai, Claude Desktop, Claude Code, Cursor, Windsurf, Copilot (VS Code), ChatGPT Desktop e qualquer cliente MCP que suporte 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..."
}
}
}
}
Obtenha uma chave em multimail.dev. Ou execute sem uma para criar uma conta interativamente.
Locais dos arquivos de configuração
| Cliente | Arquivo de configuração |
|---|---|
| Claude Code | ~/.claude/.mcp.json |
| Claude Desktop | claude_desktop_config.json |
| Cursor | .cursor/mcp.json no seu projeto |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Copilot (VS Code) | .vscode/mcp.json no seu projeto |
| OpenCode | mcp.json no seu projeto |
| ChatGPT Desktop | Configurações > Servidores MCP |
Escada de confiança
Toda caixa de entrada tem um modo de supervisão. Comece restritivo e evolua conforme o agente ganha confiança.
| Modo | Comportamento |
|---|---|
read_only | O agente lê e-mails. Todos os envios são bloqueados. |
gated_all | Toda ação exige aprovação humana. |
gated_send | Envios retidos para aprovação. Recebimentos imediatos. (padrão) |
monitored | O agente envia livremente. Cópias vão para o endereço de supervisão. |
autonomous | Envio/recebimento completo. Sem barreiras. |
Os agentes solicitam upgrades via API. O operador aprova com um código de uso único. Rebaixamentos não precisam de aprovação. O agente sempre pode se restringir.
O fluxo de aprovação com barreiras é formalmente verificado em Lean 4. Nenhum e-mail chega à entrega sem passar pela aprovação do operador, para todos os caminhos de código possíveis.
Lista de permissões por destinatário
No modo gated_send, destinatários na lista de permissões ignoram a fila de aprovação. Adicione endereços exatos (vendor@example.com) ou curingas de domínio (*@example.com). Toda adição exige aprovação por e-mail do operador. O agente não pode autoaprovar alterações na lista de permissões.
O meio-termo prático: correspondência rotineira com contatos conhecidos vai imediatamente; novos destinatários ainda exigem supervisão.
Identidade criptográfica
Todo e-mail enviado carrega um cabeçalho X-MultiMail-Identity assinado (ECDSA P-256). O payload inclui nome do operador, modo de supervisão, capacidades e status de verificação. Os destinatários verificam contra a chave pública em GET /.well-known/multimail-signing-key.
Um cabeçalho X-MultiMail-Reputation separado vincula a dados de reputação que preservam privacidade: taxas de rejeição, taxas de reclamação, idade da conta. Nenhum endereço bruto é exposto.
Sem identidade verificada, os destinatários não conseguem distinguir seu agente de um spammer. Com ela, eles podem verificar o operador, o nível de supervisão e o histórico de envios antes de ler uma palavra.
Relay DID do agente (opcional). Se seu agente vinculou um did:key à conta MultiMail, passe um parâmetro opcional ucan para send_email / reply_email. O MultiMail retransmite o UCAN autoassinado do seu agente literalmente em um cabeçalho X-Agent-Identity separado (did="…"; ucan="…") — ele não assina nem garante o conteúdo; as ferramentas do destinatário verificam a delegação de forma independente. Inerte a menos que um DID esteja vinculado.
Autorregistro do agente (auth.md)
Os agentes podem se registrar sem navegador. O protocolo usa verificação de identidade por e-mail confirmado, seguindo a convenção auth.md inspirada no WorkOS AuthKit:
POST /agent/auth -> claim_token + OTP sent to operator email
POST /agent/auth/claim/complete -> API key + tenant_id + granted scopes
A descoberta segue o RFC 9728:
GET /.well-known/oauth-protected-resource(metadados do recurso)GET /.well-known/oauth-authorization-server(metadados de autorização com extensãoagent_auth)GET /auth.md(guia de registro legível por humanos/agentes)
O cabeçalho WWW-Authenticate em respostas 401 aponta os agentes para esses endpoints automaticamente. Um agente que recebe um 401 pode seguir o link, ler o protocolo de registro e se integrar sozinho.
Verificação de conteúdo
Todo e-mail enviado é verificado antes da entrega. Os e-mails entram no status pending_scan e depois passam para entrega ou pending_send_approval (em modos com barreiras). E-mails recebidos passam pelo mesmo pipeline. Padrões de phishing, malware e injeção de prompt são sinalizados antes de chegar à caixa de entrada do agente.
Como funciona
- Os corpos dos e-mails são markdown na entrada, HTML formatado na saída. HTML recebido chega como markdown limpo (15x menos tokens que MIME bruto).
- O encadeamento é automático. Responda a um e-mail e os cabeçalhos são definidos corretamente.
- Os envios retornam
pending_scanenquanto são verificados. Caixas de entrada com barreiras passam então parapending_send_approvalpara revisão humana. Não tente novamente. - Todo e-mail enviado carrega um cabeçalho
X-MultiMail-Identitycriptograficamente assinado. - Dados de reputação via cabeçalho
X-MultiMail-Reputation: taxas de rejeição, taxas de reclamação, idade da conta. Preservam privacidade, atualizados diariamente.
Ferramentas (50)
| Ferramenta | Descrição |
|---|---|
| E-mail principal | |
send_email | Envia e-mail como markdown. Suporta anexos, idempotency_key, entrega agendada via send_at. |
check_inbox | Lista e-mails com filtros: status, remetente, assunto, intervalo de datas, direção, anexos, paginação. |
read_email | Conteúdo completo do e-mail. Metadados confiáveis e corpo não confiável retornados como blocos de conteúdo separados. |
reply_email | Responde no mesmo encadeamento. Cabeçalhos de encadeamento definidos automaticamente. |
get_thread | Todos os e-mails em uma conversa com participantes e metadados. |
download_attachment | Baixa anexo como base64 com tipo de conteúdo. |
cancel_message | Cancela um e-mail pendente ou agendado. |
edit_scheduled_email | Edita e-mail agendado antes do envio. |
wait_for_email | Bloqueia até chegar um e-mail correspondente ou expirar o tempo limite (máx. 120s). |
get_tags | Obtém todas as tags de um e-mail. Memória persistente de chave-valor do agente entre sessões. |
set_tags | Define tags em um e-mail. Mescla com tags existentes. |
delete_tag | Exclui uma chave de tag específica de um e-mail. |
| Supervisão | |
list_pending | E-mails aguardando decisão de supervisão (exige escopo de supervisão). |
decide_email | Aprova ou rejeita um e-mail pendente (exige escopo de supervisão). |
manage_upgrade | Solicita ou aplica upgrade de modo de supervisão (ação: solicitar|aplicar). |
| Lista de permissões de envio | |
list_allowlist | Lista entradas da lista de permissões de envio. |
add_allowlist_entry | Adiciona um destinatário à lista de permissões de envio. Aprovação do operador exigida. |
remove_allowlist_entry | Remove uma entrada da lista de permissões. |
| Gerenciamento de caixa de entrada | |
list_mailboxes | Todas as caixas de entrada com ID, endereço, modo de supervisão, nome de exibição. |
configure_mailbox | Configuração inicial: modo de supervisão, nome de exibição, CC/CCO, agendamento, assinatura. |
update_mailbox | Atualiza configurações (nome de exibição, modo de supervisão, assinatura, webhooks). |
create_mailbox | Cria caixa de entrada (escopo de administrador + aprovação do operador). |
delete_mailbox | Exclui permanentemente uma caixa de entrada (escopo de administrador). |
| Conta e cobrança | |
get_account | Status da conta, plano, cota, envio habilitado, nível de aplicação. |
update_account | Atualiza nome da organização, e-mail de supervisão, endereço físico. |
delete_account | Exclui permanentemente a conta e todos os dados (escopo de administrador). |
get_usage | Estatísticas de cota e uso do período de cobrança. |
upgrade_plan | Upgrade para plano pago (Builder $9/mês, Pro $29/mês, Scale $99/mês). |
cancel_subscription | Cancela assinatura paga, volta ao plano inicial no fim do período. |
get_billing_portal | URL do portal Stripe para cobrança self-service. |
| Cadastro (sem necessidade de chave de API) | |
request_challenge | Desafio de prova de trabalho ALTCHA para criação de conta. |
create_account | Cria conta com desafio PoW resolvido. |
resend_confirmation | Reenvia e-mail de ativação com novo código. |
activate_account | Ativa conta usando código de confirmação. |
setup_multimail | Onboarding guiado no endpoint público /onboard. |
| Chaves de API e auditoria | |
list_api_keys | Lista todas as chaves de API (escopo de administrador). |
create_api_key | Cria chave de API com escopos (administrador + aprovação do operador). send+oversight rejeitados para evitar autoaprovação. |
revoke_api_key | Revoga uma chave de API (escopo de administrador). |
get_audit_log | Log de auditoria da conta (escopo de administrador). |
| Contatos e spam | |
search_contacts | Busca contatos por nome ou e-mail. |
add_contact | Adiciona um contato. |
delete_contact | Exclui um contato. |
manage_spam_status | Reporta spam ou limpa status de spam (ação: reportar|limpar). |
list_spam | E-mails sinalizados como spam e em quarentena. |
list_suppression | Lista destinatários suprimidos com paginação. |
remove_suppression | Remove um destinatário da lista de supressão. |
| Webhooks | |
create_webhook | Cria webhook para notificações de eventos de e-mail em tempo real. |
list_webhooks | Lista todos os webhooks. |
delete_webhook | Exclui um webhook. |
| Meta | |
report_issue | Reporta um bug, problema no site ou solicitação de recurso. |
Exemplos 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.
Variáveis de ambiente
| Variável | Obrigatória | Descrição |
|---|---|---|
MULTIMAIL_API_KEY | Para modo stdio | Sua chave de API (mm_live_...). Não é necessária para servidor remoto (usa OAuth). |
MULTIMAIL_MAILBOX_ID | Não | ID padrão da caixa de entrada. Se não definido, passe mailbox_id por ferramenta ou chame list_mailboxes. |
MULTIMAIL_API_URL | Não | URL base da API. Padrão: https://api.multimail.dev. |
Também disponível
- API REST:
https://api.multimail.dev(especificação OpenAPI) - CLI:
npx -y @mvanhorn/printing-press install multimail(todo endpoint da API como comando de shell) - SDKs: Python, Vercel AI SDK, LangChain, LlamaIndex, CrewAI, AutoGen
Desenvolvimento
npm install
npm run dev # Run with tsx
npm run build # Compile TypeScript
npm start # Run compiled version
Licença
MIT
Ao usar o MultiMail, você concorda com os Termos de Serviço e a Política de Uso Aceitável.