Give your ADK agents a supervised email channel — send, read, and approve messages through MultiMail's REST API with graduated oversight that fits ADK's tool-calling model.
Google ADK structures agents as tool-calling systems: each capability is a typed Python function the agent can invoke during a session. Email is a natural fit — your agent can check an inbox, read a thread, draft a reply, or send a new message as first-class tool calls, not raw SMTP calls embedded in the prompt.
MultiMail is designed for exactly this pattern. Its REST API exposes each email operation as a discrete endpoint — send (POST /v1/mailboxes/{mailbox_id}/send), list inbox, read one email, reply in thread, and approve or reject pending mail (POST /v1/oversight/decide) — that maps cleanly to an ADK tool definition. Each call carries your API key, and each mailbox has an oversight mode that governs how much the agent can do without human approval.
The combination is particularly useful for long-running ADK workflows that end in outbound communication. Rather than giving the agent direct SMTP access, you route email through MultiMail and choose an oversight mode: gated_send holds every outbound message for human approval before delivery, while monitored lets the agent act freely and notifies a human on every send.
Every MultiMail operation maps to one ADK tool definition. Sending (POST /v1/mailboxes/{mailbox_id}/send), listing the inbox, reading an email, and approving pending mail (POST /v1/oversight/decide) are individual REST endpoints, not a general-purpose SMTP wrapper. ADK's type-annotated function tools translate directly — no adapter layer needed.
ADK sessions can span many steps before producing outbound communication. MultiMail's gated_send mode holds the final send for approval without blocking the session — the agent keeps working while a human reviews the draft in a separate flow.
Each ADK agent can be assigned its own MultiMail mailbox ([email protected], [email protected]). Recipients see a distinct sender address per agent, and you can apply different oversight modes to each mailbox independently.
When a message is held for approval in gated_send mode, MultiMail fires a webhook. Wire this to an ADK evaluation step or a human callback without polling list_pending on a timer.
ADK evaluation workflows use MultiMail test keys (mm_test_...) that record sends without delivering them. Switch to mm_live_... for production. Tool function signatures are identical in both modes — just swap the environment variable.
No code, no dashboard. Paste this to your AI agent — it connects MultiMail, creates an inbox, and builds the flow for you.
Install the ADK package with pip and sign up at multimail.dev to get your API key and provision a mailbox. Use a test key (mm_test_...) during development.
Define Python functions with type annotations and docstrings for each MultiMail operation your agent needs. ADK builds the tool schema from the signatures automatically — no additional registration is required.
Pass the tool functions to the Agent constructor. Choose an oversight mode in the MultiMail dashboard for your mailbox — gated_send holds every outbound message for human review before delivery.
Use ADK's Runner and InMemorySessionService to execute the agent. Test keys ensure no real emails are sent during development. Swap to mm_live_... when ready for production.
Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a hosted MCP server. Formally verified in Lean 4.