VaEmail

Почтовая инфраструктура для AI-агентов. 13 инструментов для отправки транзакционных писем, проверки перед отправкой (сухой прогон), отслеживания статуса доставки, аутентификации доменов отправителя (SPF, DKIM, DMARC), диагностики доставляемости и чтения журнала аудита. Node-пакет без зависимостей, ограниченные и лимитированные API-ключи, серверы в Германии.

Документация

VaEmail — email infrastructure for AI agents

Listed on mcpservers.org

MCP server and CLI for VaEmail. Give an agent the ability to send email, authenticate a sending domain, track delivery and diagnose deliverability — without a human reading a dashboard in between.

European infrastructure: servers in Germany, sending through Amazon SES Europe.

Install

# Claude Code
claude mcp add vaemail --env VAEMAIL_API_KEY=swm_your_key -- npx -y vaemail mcp

# Any MCP client
npx -y vaemail mcp

Or as a config block:

{
  "mcpServers": {
    "vaemail": {
      "command": "npx",
      "args": ["-y", "vaemail", "mcp"],
      "env": { "VAEMAIL_API_KEY": "swm_your_key" }
    }
  }
}

Check everything is wired up:

npx vaemail init

Tools

ToolWhat it does
vaemail_capabilitiesWhat the service supports. No API key needed.
vaemail_send_emailQueue a transactional email, return its id.
vaemail_validate_emailDry run: would this send go out, and what would block it.
vaemail_get_messageDelivery status and every event for one message.
vaemail_list_messagesRecent messages, filtered by status, tag or recipient.
vaemail_list_domainsSending domains with live SPF, DKIM and DMARC state.
vaemail_create_domainDeclare a domain, return the DNS records to publish.
vaemail_verify_domainRe-read the DNS and report what is authenticated.
vaemail_dns_requirementsThe records a declared domain still needs.
vaemail_diagnose_deliverabilityWhy mail is landing badly, with the actions that fix it.
vaemail_list_bouncesAddresses excluded from sending, and why.
vaemail_get_usageQuota, daily cap on the key, what is left.
vaemail_get_audit_logWhat this key has done, to report it accurately.

What this is built to prevent

An agent fails differently from a person. It retries, it does not read a dashboard, and it reports success from a 200. The API is shaped around that:

  • A send is accepted, not delivered. vaemail_send_email returns 202 and an id. Only vaemail_get_message says what became of it. The tool descriptions say so, so an agent does not announce a delivery it cannot know about.
  • Retries do not duplicate. Pass idempotency_key and a repeat call replays the first response for 24 hours instead of sending twice.
  • Errors say what to do. Every failure carries a stable code, whether it is retryable, and the corrective action with the endpoint that performs it.
  • Keys are bounded. Scopes, a daily send cap, a cap on recipients per email and an allow-list of sender domains. An agent cannot spend more than the key allows.
  • Every call is logged. Which key, which operation, which parameters, which result — message bodies excluded. Autonomous, but accountable.
  • Human steps are named as such. Publishing DNS records is one. A record whose value still contains a placeholder is flagged publishable: false, because publishing it would break the domain's authentication.

CLI

vaemail init                          # check config, print the MCP snippet
vaemail capabilities                  # what the service can do (no key needed)
vaemail send --to a@b.fr --subject Hi --html '<p>Hello</p>'
vaemail status 42                     # delivery status of a message
vaemail domains:add exemple.fr        # declare a domain, print DNS records
vaemail doctor                        # why is my email not arriving?
vaemail usage                         # quota and remaining allowance
vaemail mcp                           # run the MCP server on stdio

Add --json to any command for machine-readable output.

Environment

VariableMeaning
VAEMAIL_API_KEYAccount API key. Created from the dashboard, under « Clés API ».
VAEMAIL_BASE_URLAPI base URL. Defaults to https://app.vaemail.fr.

Also available

Skill and examples

Dependencies

None. Node 18+ for the built-in fetch, and nothing else — a package an agent installs on its own should not pull a dependency tree behind it.

License

MIT