Replace generic email tools with MultiMail's purpose-built agent email — adding graduated trust and oversight to Composio's 250+ integration ecosystem.
Composio provides 250+ pre-built tool integrations for AI agents, handling authentication, rate limiting, and schema management. While Composio offers generic email tools, MultiMail provides purpose-built email infrastructure with agent-specific features like graduated oversight modes that generic integrations lack.
By using MultiMail through Composio's custom tool system, your agents get email capabilities designed for the trust ladder: start in gated_send mode where every email requires human approval, and progress to autonomous as trust builds. This is a fundamentally different approach from generic SMTP or Gmail integrations.
Integration uses Composio's custom action system. Define MultiMail API calls as custom actions, and any framework connected to Composio (LangChain, CrewAI, OpenAI) can use them.
Composio's standard email integrations send immediately. MultiMail adds graduated oversight (read_only, gated_all, gated_send, monitored, autonomous) that generic email tools simply don't provide.
Define MultiMail tools once in Composio, and they work with every framework Composio supports — LangChain, CrewAI, OpenAI, and more. One integration, universal access.
MultiMail's API is designed for programmatic access by agents, not human users clicking buttons. Every action has structured inputs and outputs that agents can reason about.
Use Composio's 250+ integrations alongside MultiMail email. Your agent can check a CRM via Composio, then send a follow-up email via MultiMail with full oversight controls.
from composio import ComposioToolSet, Action
import requests
MULTIMAIL_API = "https://api.multimail.dev/v1"
API_KEY = "mm_live_your_api_key"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
toolset = ComposioToolSet()
"cm"># Define custom MultiMail actions
@toolset.register_action("multimail_send_email")
def send_email(to: str, subject: str, body: str, mailbox_id: str) -> dict:
"""Send an email via MultiMail with agent oversight.
In gated_send mode, emails are queued for human approval."""
resp = requests.post(f"{MULTIMAIL_API}/send", headers=HEADERS, json={
"mailbox_id": mailbox_id,
"to": to,
"subject": subject,
"body": body
})
return resp.json()
@toolset.register_action("multimail_check_inbox")
def check_inbox(mailbox_id: str, limit: int = 10) -> dict:
"""Check inbox for recent messages via MultiMail."""
resp = requests.get(
f"{MULTIMAIL_API}/mailboxes/{mailbox_id}/inbox",
headers=HEADERS, params={"limit": limit}
)
return resp.json()
@toolset.register_action("multimail_reply_email")
def reply_email(message_id: str, body: str) -> dict:
"""Reply to an email within its thread via MultiMail."""
resp = requests.post(f"{MULTIMAIL_API}/reply", headers=HEADERS, json={
"message_id": message_id,
"body": body
})
return resp.json()Define MultiMail API calls as custom actions in Composio's tool set.
from composio_langchain import ComposioToolSet
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
toolset = ComposioToolSet()
"cm"># Get MultiMail tools alongside other Composio integrations
tools = toolset.get_tools(
actions=[
"multimail_send_email",
"multimail_check_inbox",
"multimail_reply_email"
]
)
llm = ChatOpenAI(model="gpt-4o")
prompt = ChatPromptTemplate.from_messages([
("system", "You are an email assistant using MultiMail. "
"All outbound emails use gated_send mode — they are queued "
"for human approval before delivery."),
("human", "{input}"),
("placeholder", "{agent_scratchpad}")
])
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools)
result = executor.invoke({"input": "Check my inbox and summarize"})Access MultiMail tools through Composio's LangChain integration.
from composio_crewai import ComposioToolSet
from crewai import Agent, Task, Crew
toolset = ComposioToolSet()
tools = toolset.get_tools(
actions=[
"multimail_send_email",
"multimail_check_inbox",
"multimail_reply_email"
]
)
email_agent = Agent(
role="Email Manager",
goal="Handle email communications with oversight",
backstory="You manage email via MultiMail. All outbound emails "
"use gated_send mode and require human approval.",
tools=tools
)
email_task = Task(
description="Check the inbox and draft replies to any "
"unanswered customer inquiries.",
agent=email_agent,
expected_output="Summary of inbox and drafted replies"
)
crew = Crew(agents=[email_agent], tasks=[email_task])
result = crew.kickoff()
print(result)Access MultiMail email tools through Composio's CrewAI integration.
Sign up at multimail.dev, create a mailbox, and generate an API key from your dashboard. Your key will start with mm_live_.
Install the Composio SDK and the adapter for your preferred framework.
pip install composio-core composio-langchain requestsDefine custom actions in Composio that wrap MultiMail API calls for send, inbox, reply, and contact management.
Use Composio's framework adapter (composio-langchain, composio-crewai, etc.) to make MultiMail tools available to your agents.
Review emails queued by your agents in the MultiMail dashboard. All emails from gated_send mode require approval before delivery.
Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a 38-tool MCP server. Formally verified in Lean 4.