MailFlat
Real email inboxes for AI agents: open an address, read the one-time code, send mail.
Connector by MailFlat · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying MailFlat?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/mailflat-mailflat-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 26, 2026.
- Tools
- 6 read · 10 write · 3 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 19
Read from the source code; the running server may list different tools.
Read 6 · Look things up without changing anything.
get_calendar_feedlist_calendar_eventslist_inboxesread_messageswait_for_otpwait_until_sent
Write 10 · Create, change, send or run things.
cancel_calendar_eventcreate_calendar_eventcreate_inboxmark_readreplyrotate_calendar_feedrsvp_to_invitesend_emailupdate_calendar_eventwait_for_message
Delete 3 · Delete, drop, revoke or wipe things.
burn_inboxdelete_inboxdelete_message
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
MAILFLAT_API_KEY
Other settings (environment variables or headers).
MAILFLAT_API_URL
Network hosts it talks to 4
errors.pydantic.dev· found in codegithub.com· found in codeglama.ai· found in codemailflat.net· found in code
Files it touches
/tmp/invoice.pdf- Any path the agent passes to its tools
Tools (19)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
burn_inboxDelete every message in an inbox but KEEP the address. Use between scenarios: the address stays registered wherever you already used it.
cancel_calendar_eventCancel a meeting this inbox organized; it disappears from every attendee's calendar.
create_calendar_eventSchedule a meeting from this inbox and email the invitations (you are the organizer). Attendees get a normal invitation with Yes / No / Maybe buttons in Gmail, Outlook or Apple Calendar. Their answers show up in list_calendar_events under `attendees[].status`. `start`: ISO 8601 with an offset ("2026-10-06T14:00:00-04:00"), or without one plus `timezone` ("America/New_York"). Set `end` or `duration_minutes` (default 30 minutes). For an all-day event set all_day=true and use dates ("2026-10-06"); `end` is exclusive. `message` is a short note at the top of the invitation email. `in_reply_to` (a …
create_inboxOpen an email inbox and return its address. Use this when you need an address to sign up for a service or to receive a one-time code. The address is permanent and stays until you delete it, so a test suite can reuse one address across runs instead of opening a new inbox each time. Only the messages inside expire, on the retention window you choose. `label` needs a paid plan; on free it is reported back in `ignored_fields`. `retention_hours` is optional (0 = your plan's max); requests above your plan are capped. `subdomain` picks the part after the @ on mailflat.net (`prefix@subdomain.mailfla…
delete_inboxDelete an inbox and all its messages by address. Irreversible.
delete_messageDelete a single message in an inbox by its id (the inbox itself stays).
get_calendar_feedRead-only subscribe link for this inbox's calendar, to give to a human. They add it in Google Calendar, Apple Calendar or Outlook and see this inbox's meetings there, with attendees and their answers. Calling again returns the SAME link, so sharing it twice never breaks a subscription. `subscribe_links` holds one-click add links per app. Google refreshes subscribed calendars every 8 to 24 hours; for live state use list_calendar_events.
list_calendar_eventsList the meetings on an inbox's calendar, soonest first. Events come from calendar invitations this inbox received (Google Calendar, Outlook, ...). Each has an `id`, `title`, `start`/`end` in UTC, `organizer`, `attendees`, `status` ("confirmed" or "cancelled") and `my_status` (this inbox's answer: "needs-action", "accepted", "declined" or "tentative"). If the organizer moves a meeting, the event is updated in place and `my_status` goes back to "needs-action". Messages that carry an invitation also show it under `calendar_event` in read_messages.
list_inboxesList all inboxes available to this API key.
mark_readMark one message as read so later polls can skip it.
read_messagesRead messages in the given inbox address (newest first). `direction` is "in" for received mail (default), "out" for mail sent from this address, or "all" for both. Received mail is the default so that a reply you are waiting for is not confused with a message you just sent.
replyReply to a message so it stays in the SAME conversation. Prefer this over send_email when answering: it fills in the recipient, an `Re:` subject and the threading headers. A plain send_email starts a new conversation in the recipient's client, which does not look like a reply.
rotate_calendar_feedReplace this inbox's calendar subscribe link; the old link stops working at once. Use only when the link leaked. Everyone subscribed has to add the new link.
rsvp_to_inviteAnswer a calendar invitation: response is "accepted", "declined" or "tentative". Sends a standard calendar reply email to the organizer, so their Google or Outlook calendar shows your answer. `event_id` comes from list_calendar_events (or `calendar_event.event_id` on a message). Call it ONCE per answer: the reply is queued like any email; use wait_until_sent with the returned `message_id` to confirm delivery.
send_emailSend an email FROM the given inbox address (DKIM-signed via MailFlat's MTA). Use for replies or outbound automation. `html` is optional. Returns once the mail is ACCEPTED for delivery, not once it is delivered: delivery runs on a queue and the result arrives via webhook or by reading the message back. `cc` addresses appear in the mail's headers; `bcc` addresses never do — not even in their own copy. Attachments are not available here; send those from the SDK.
Show 4 more tools
update_calendar_eventChange a meeting this inbox organized; attendees get the updated invitation. Pass only what changes (empty = unchanged). Moving `start` keeps the duration. A new time resets every attendee's answer to "needs-action" (they are asked again). The same event is updated in their calendars, no duplicate. Invitations you RECEIVED cannot be changed here; answer those with rsvp_to_invite.
wait_for_messagePoll the inbox until a new message ARRIVES (or timeout). Returns {email}. Only received mail counts, so you can send to a peer and then wait for their reply without matching your own outgoing message.
wait_for_otpPoll the inbox until an OTP code arrives (or timeout). Returns {otp_code, email}.
wait_until_sentFind out whether a mail you sent was actually delivered. send_email only means "accepted for delivery"; the mail goes out later on a queue. Call this with the message_id send_email returned to learn the outcome. Returns `delivered: true` once it went out. If it is still queued when the timeout elapses you get `timed_out: true` with `delivered: false` — that is NOT a failure and you must NOT send the mail again; the queue is still retrying. `status` tells you whether it has been attempted yet (`queued`) or attempted and rescheduled (`retrying`), and `error` carries what the last attempt repor…
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 89
- Last commit
- Oct 5, 2026 (26 days ago)
- Last release
- Sep 29, 2026 (1 month ago)
- Last package publish
- Oct 2, 2026 (29 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.MailFlat/mailflat-mcp- Version
- 0.9.2
- Auth
- API key
- Packages
- pypi mailflat-mcp
- License
- MIT
- Repository
- github.com/MailFlat/mailflat-sdks
- Website
- mailflat.net/docs/ai/mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get MailFlat running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
MailFlat MCP server. Agent Mart. https://agentmart.dev/connectors/mailflat-mailflat-mcp (last updated 2026-10-24)