crewai-multimail
⚠️ DEPRECATED (2026-08-08). This package is retired and will receive no further updates. MultiMail's supported integration surfaces are the MCP server at
https://mcp.multimail.dev(LangChain, CrewAI, LlamaIndex, Claude, and all MCP-capable frameworks connect natively) and the REST API (https://multimail.dev/docs). This final release only adds this deprecation notice.
CrewAI tools for MultiMail — give your CrewAI agents email capabilities with graduated human oversight.
Installation
pip install crewai-multimail
Quick Start
from crewai import Agent, Task, Crew
from crewai_multimail import MultiMailToolkit
# Create tools from your API key
toolkit = MultiMailToolkit(api_key="mm_live_your_api_key")
tools = toolkit.get_tools()
# Create an agent with email capabilities
email_agent = Agent(
role="Email Assistant",
goal="Help the user manage their email inbox",
backstory="You are a helpful email assistant that reads, triages, and drafts replies.",
tools=tools,
verbose=True,
)
# Define a task
task = Task(
description="Check mailbox YOUR_MAILBOX_ID for new emails and summarize them.",
expected_output="A summary of recent emails with sender, subject, and urgency.",
agent=email_agent,
)
# Run the crew
crew = Crew(agents=[email_agent], tasks=[task], verbose=True)
result = crew.kickoff()
print(result)
Available Tools
| Tool | Description |
|---|---|
check_inbox |
List recent emails in a mailbox |
read_email |
Read the full content of an email |
send_email |
Send an email (held for approval if gated) |
reply_email |
Reply to an existing email thread |
search_contacts |
Search contacts by name or email |
list_pending |
List emails awaiting human approval |
decide_email |
Approve or reject a pending email |
get_thread |
Get all emails in a conversation |
tag_email |
Add key-value tags to an email |
Oversight Modes
MultiMail supports graduated oversight so your agent doesn't send unsupervised email:
gated_all— Agent drafts, human approves everythinggated_send— Agent reads freely, human approves outbound (default)monitored— Agent sends, human can review afterautonomous— Full agent control
When a mailbox uses gated oversight, send_email returns pending_send_approval and the email waits for human review. The agent can check status with list_pending.
Using Individual Tools
from multimail import MultiMail
from crewai_multimail import CheckInboxTool, SendEmailTool
client = MultiMail("mm_live_your_api_key")
inbox_tool = CheckInboxTool(client=client)
send_tool = SendEmailTool(client=client)
# Use directly
result = inbox_tool.run(mailbox_id="your_mailbox_id", limit=5)
print(result)
Multi-Agent Crew Example
See examples/support_crew.py for a full example with a triage agent and a responder agent working together as a crew.
Links
- MultiMail — Homepage & docs
- multimail — Base Python SDK
- MCP Server — For Claude, Cursor, and other MCP clients
Release files for crewai-multimail 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| crewai_multimail-0.1.1.tar.gz | 35.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| crewai_multimail-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.4 kB
Release files / crewai_multimail-0.1.1.tar.gz
| Download URL | crewai_multimail-0.1.1.tar.gz |
|---|---|
| Size | 35.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
935de4e0785316efceb8e55b143fa204f36b8da4041ee59ec59dd04e4b6bd90c
|
|
BLAKE2b-256 checksum How to use checksums |
8152a809fee90ce4d34d79849a3c5bc7e3cfe240d9231d9ae5d31ef314e2f5cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / crewai_multimail-0.1.1-py3-none-any.whl
| Download URL | crewai_multimail-0.1.1-py3-none-any.whl |
|---|---|
| Size | 6.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a3e3e3df2af2fe628e8e010e9cd13339a46fd4927a619baac5434808ab7ffb04
|
|
BLAKE2b-256 checksum How to use checksums |
c2686cf7c1b4155cb2f5f4828cedb52717fbe95f3b61abf839c5670676952d8f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|