Search / co.lumman/mail
Multi Mail
R2· OAuth, onceGmail, Outlook, Hotmail, iCloud and Fastmail at once: search, read, draft, send and organise mail.
v1.1.2 · active · repository · website · descriptor JSON · versions
Search / co.lumman/mail
R2· OAuth, onceGmail, Outlook, Hotmail, iCloud and Fastmail at once: search, read, draft, send and organise mail.
v1.1.2 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"mail": {
"type": "http",
"url": "https://mail.lumman.co/mcp"
}
}
}claude mcp add --transport http mail https://mail.lumman.co/mcp[mcp_servers.mail]
url = "https://mail.lumman.co/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mail": {
"type": "remote",
"url": "https://mail.lumman.co/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"mail": {
"type": "http",
"url": "https://mail.lumman.co/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=mail&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWFpbC5sdW1tYW4uY28vbWNwIn0%3D"
}{
"servers": {
"mail": {
"type": "http",
"url": "https://mail.lumman.co/mcp"
}
}
}{
"mcpServers": {
"mail": {
"httpUrl": "https://mail.lumman.co/mcp"
}
}
}extensions:
"mail":
enabled: true
name: "mail"
type: streamable_http
uri: "https://mail.lumman.co/mcp"
timeout: 300
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prmProtected Resource Metadata (RFC 9728) publishedauth.as_metadataauthorization server metadata reachableauth.cimdonly Dynamic Client Registration, deprecated in 2026-07-28 in favour of CIMDauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations30 of 30 tools declare readOnlyHint or destructiveHinttools.directory_hints6 of 30 tools declare all four hints; missing: drafts_update (idempotentHint); drafts_reply (idempotentHint); drafts_delete (idempotentHint); …tools.token_costabout 9,732 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes83 tool changes in 30 daysstability.rug_pull3 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagethreads_untrashchangeddescriptionBring one thread, or one message of it, back out of the trash. A mailbox whose provider is imap puts a draft back in its drafts, the owner's own mail in sent mail and the rest in the inbox, each under a new id the answer names.
Bring one thread, or one message of it, back out of the trash. An Outlook mailbox and a mailbox whose provider is imap put a draft back in its drafts, the owner's own mail in sent mail and the rest in the inbox - a Gmail one with every label it carried, each message keeping its id, any other imap one each under a new id the answer names.
threads_trashchangeddescriptionMove one thread, or one message of it, to the trash - Gmail's bin, an Outlook mailbox's Deleted Items, the trash folder of a mailbox whose provider is imap - where it stays until threads_untrash brings it back or the provider's own retention ends it. In a mailbox whose provider is imap each moved message takes a new id, which the answer names.
Move one thread, or one message of it, to the trash - Gmail's bin, an Outlook mailbox's Deleted Items, the trash folder of a mailbox whose provider is imap - where it stays until threads_untrash brings it back or the provider's own retention ends it. A Gmail mailbox whose provider is imap keeps every label but the inbox on it and each message its id; in any other mailbox whose provider is imap each moved message takes a new id, which the answer names.
threads_archivechangeddescriptionTake one thread out of the inbox. It stays in the mailbox and in search. A mailbox whose provider is imap moves its inbox messages into its archive folder, made as Archive where it has none, each under a new id the answer names.
Take one thread out of the inbox: a Gmail mailbox, whatever its provider, takes its inbox label off, and an Outlook one moves it into its archive folder. It stays in the mailbox and in search. Any other mailbox whose provider is imap moves its inbox messages into its archive folder, made as Archive where it has none, each under a new id the answer names.
threads_modifychangeddescriptionApply and remove labels on one thread, or one message of it - an Outlook mailbox's categories are its labels. The ids come from labels_list. Adding SPAM junks it, and taking SPAM off brings it back to the inbox. In a Gmail mailbox adding TRASH bins it too; an Outlook mailbox takes UNREAD and STARRED beside its categories and SPAM, and no other id; a mailbox whose provider is imap takes only UNREAD, STARRED, SPAM and its folders' labels, one folder a call: adding a folder's label moves the inbox messages into it and removing it moves its messages back to the inbox, each message moved taking a new id, which the answer names.
Apply and remove labels on one thread, or one message of it - an Outlook mailbox's categories are its labels. The ids come from labels_list. Adding SPAM junks it, and taking SPAM off brings it back to the inbox. In a Gmail mailbox adding TRASH bins it too; an Outlook mailbox takes UNREAD and STARRED beside its categories and SPAM, and no other id; a Gmail mailbox whose provider is imap takes only UNREAD, STARRED, SPAM and its own labels, several a call, as Gmail does, each message keeping its id; any other mailbox whose provider is imap takes only UNREAD, STARRED, SPAM and its folders' labels, one folder a call: adding a folder's label moves the inbox messages into it and removing it moves its messages back to the inbox, each message moved taking a new id, which the answer names.
labels_deletechangeddescriptionDelete one label, by its id from labels_list. No message is deleted: in a Gmail mailbox the label comes off every message; an Outlook mailbox's category leaves its list, and the messages that carried it keep its name. A mailbox whose provider is imap deletes only a folder holding no mail and no folder.
Delete one label, by its id from labels_list. No message is deleted: in a Gmail mailbox whose provider is google the label comes off every message; an Outlook mailbox's category leaves its list, and the messages that carried it keep its name. A mailbox whose provider is imap, a Gmail one included, deletes only a folder holding no mail and no folder.
messages_list_all_mailboxeschangedinput schemamessages_listchangedinput schemathreads_modifychangeddescriptionApply and remove labels on one thread, or one message of it - an Outlook mailbox's categories are its labels. The ids come from labels_list. Adding SPAM junks it, and taking SPAM off brings it back to the inbox. In a Gmail mailbox adding TRASH bins it too; an Outlook mailbox takes no other id; a mailbox whose provider is imap takes only UNREAD, STARRED, SPAM and its folders' labels, one folder a call: adding a folder's label moves the inbox messages into it and removing it moves its messages back to the inbox, each message moved taking a new id, which the answer names.
Apply and remove labels on one thread, or one message of it - an Outlook mailbox's categories are its labels. The ids come from labels_list. Adding SPAM junks it, and taking SPAM off brings it back to the inbox. In a Gmail mailbox adding TRASH bins it too; an Outlook mailbox takes UNREAD and STARRED beside its categories and SPAM, and no other id; a mailbox whose provider is imap takes only UNREAD, STARRED, SPAM and its folders' labels, one folder a call: adding a folder's label moves the inbox messages into it and removing it moves its messages back to the inbox, each message moved taking a new id, which the answer names.
drafts_forwardchangedoutput schemadrafts_replychangedoutput schemaShowing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +dns-namespace +website +reachable +uptime-100% +updated-1d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://mail.lumman.co/mcp streamable-http | oauth2 AS: https://gwvrgdrmewwgkjovauzm.supabase.co/auth/v1 | yes | 100% | 1152 ms | – | 2026-10-19 |
drafts_create | Compose a message in a connected mailbox and keep it there as a draft. |
drafts_deletedestructive | Throw away a draft. Nothing already sent is touched. Gmail mailboxes only: an Outlook draft keeps its identifier once sent, so discarding one could delete sent mail. |
drafts_forward | Compose a forward of a message as a draft, with the files it carries and inside the thread it already sits in. Nothing leaves the mailbox until the draft is sent. |
drafts_reply | Compose a reply to a message as a draft, inside the thread it answers and quoting it below the reply: to whoever wrote it, or with replyAll to everyone on it. Nothing leaves the mailbox until the draft is sent. |
drafts_senddestructive | Send a draft. It leaves the mailbox and consumes the draft. Only a draft is sent: a message already sent or received is refused, and nothing leaves. Call this only when the person asked for this message to go; when they asked to prepare one, draft it instead. A request id already spent sends nothing again: the answer says whether that send went or may have gone. |
drafts_updatedestructive | Change a draft in a connected mailbox. A field the call leaves out stays as the draft has it. A mailbox whose provider is imap keeps the edited draft under a new id the answer names, and the old id then reads nothing; an old version its server did not remove stays in Drafts, named as previousVersionId. |
labels_create | Create a label in a connected mailbox and answer the id it is applied by. In a Gmail mailbox, and as a folder in one whose provider is imap, a / nests it under the label before it, made first where missing; in an Outlook mailbox a / is just a character. |
labels_deletedestructive | Delete one label, by its id from labels_list. No message is deleted: in a Gmail mailbox whose provider is google the label comes off every message; an Outlook mailbox's category leaves its list, and the messages that carried it keep its name. A mailbox whose provider is imap, a Gmail one included, deletes only a folder holding no mail and no folder. |
labels_listread-only | List the labels a connected mailbox holds, by the id each is applied by. A mailbox whose provider is imap holds its folders as labels, nested by /, beside UNREAD, STARRED and SPAM. |
labels_updatedestructive | Rename a label, recolour it, or both. The id comes from labels_list. An Outlook mailbox's categories are its labels, and Microsoft lets one take only a new colour. A mailbox whose provider is imap renames its folder, which takes no colour, and answers the label's new id. |
mailboxes_listread-only | List the connected mailboxes that answer, each by the name a tool's mailbox input takes, and the tools its provider does not offer. The mail of every mailbox mailboxes_list names is read and written with Multi Mail's tools. |
messages_attachments_getread-only | Read one attachment of a message. The answer is what it says, as plain text; with as original it is the file itself, base64. messages_get and threads_get name a message's attachments and their sizes. Either answer names the address the original is served at whole, to a GET carrying this same credential. |
messages_forwarddestructive | Forward one message to the addresses you name, with the files it carries, inside the thread it already sits in. Only the provider's own limit applies to what it carries. Call this only when the person asked for this message to go; when they asked to prepare one, draft it instead. A request id already spent sends nothing again: the answer says whether that send went or may have gone. |
messages_getread-only | Read one message in a connected mailbox, with its headers and its body. |
messages_listread-only | Search one connected mailbox in its own provider's query language, Gmail's or Outlook's. The mail of every mailbox mailboxes_list names is read and written with Multi Mail's tools. |
messages_list_all_mailboxesread-only | Search every mailbox you have connected in one call. The answer names the mailbox each result came from, names any mailbox it could not search, and is merged newest first by when each message arrived, a thread by its newest. The mail of every mailbox mailboxes_list names is read and written with Multi Mail's tools. |
messages_replydestructive | Reply to a message, inside its own thread and quoting it below the reply: to whoever wrote it, or with replyAll to everyone on it. Call this only when the person asked for this message to go; when they asked to prepare one, draft it instead. A request id already spent sends nothing again: the answer says whether that send went or may have gone. |
messages_senddestructive | Compose a new message in a connected mailbox and send it in one call. Call this only when the person asked for this message to go; when they asked to prepare one, draft it instead. A request id already spent sends nothing again: the answer says whether that send went or may have gone. |
settings_filters_createdestructive | Create a rule that files incoming mail in a connected mailbox. A rule that carries mail out of the mailbox, or that bins or junks what it matches, is refused, whether or not the provider would take it. An Outlook mailbox's rule files only under labels or out of the inbox (removeLabelIds INBOX). |
settings_filters_deletedestructive | Delete one rule by its id. Mail it already filed stays where it is. |
settings_filters_listread-only | List the rules a connected mailbox files incoming mail by. |
settings_get_vacationread-only | Read whether a connected mailbox answers mail automatically, what it says, and any schedule or restriction it carries. |
settings_send_as_getread-only | Read the signature on the mailbox's own send-as identity, as HTML. A mailbox with no signature answers without one. Gmail mailboxes only: an Outlook mailbox exposes no signature to read. |
settings_send_as_patchdestructive | Replace the signature on the mailbox's own send-as identity. Nothing of the old one is kept, so read it first with settings_send_as_get. An empty signature clears it. Gmail mailboxes only: an Outlook mailbox exposes no signature to write. |
settings_update_vacationdestructive | Turn the vacation responder on or off. A Gmail mailbox replaces the whole responder, so a schedule or a restriction it already held is not kept; an Outlook mailbox keeps what this call does not name, and holds no subject. |
threads_archive | Take one thread out of the inbox: a Gmail mailbox, whatever its provider, takes its inbox label off, and an Outlook one moves it into its archive folder. It stays in the mailbox and in search. Any other mailbox whose provider is imap moves its inbox messages into its archive folder, made as Archive where it has none, each under a new id the answer names. |
threads_getread-only | Read every message of one thread in a connected mailbox, oldest first. |
threads_modifydestructive | Apply and remove labels on one thread, or one message of it - an Outlook mailbox's categories are its labels. The ids come from labels_list. Adding SPAM junks it, and taking SPAM off brings it back to the inbox. In a Gmail mailbox adding TRASH bins it too; an Outlook mailbox takes UNREAD and STARRED beside its categories and SPAM, and no other id; a Gmail mailbox whose provider is imap takes only UNREAD, STARRED, SPAM and its own labels, several a call, as Gmail does, each message keeping its id; any other mailbox whose provider is imap takes only UNREAD, STARRED, SPAM and its folders' labels, one folder a call: adding a folder's label moves the inbox messages into it and removing it moves its messages back to the inbox, each message moved taking a new id, which the answer names. |
threads_trashdestructive | Move one thread, or one message of it, to the trash - Gmail's bin, an Outlook mailbox's Deleted Items, the trash folder of a mailbox whose provider is imap - where it stays until threads_untrash brings it back or the provider's own retention ends it. A Gmail mailbox whose provider is imap keeps every label but the inbox on it and each message its id; in any other mailbox whose provider is imap each moved message takes a new id, which the answer names. |
threads_untrash | Bring one thread, or one message of it, back out of the trash. An Outlook mailbox and a mailbox whose provider is imap put a draft back in its drafts, the owner's own mail in sent mail and the rest in the inbox - a Gmail one with every label it carried, each message keeping its id, any other imap one each under a new id the answer names. |
Schemas: list_tools.
{
"name": "co.lumman/mail",
"icons": [
{
"src": "https://lumman.co/icon-512.png",
"sizes": [
"512x512"
],
"mimeType": "image/png"
}
],
"title": "Multi Mail",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://mail.lumman.co/mcp",
"type": "streamable-http"
}
],
"version": "1.1.2",
"repository": {
"url": "https://github.com/lumman-lab/multi-mail",
"source": "github"
},
"websiteUrl": "https://lumman.co/mcp",
"description": "Gmail, Outlook, Hotmail, iCloud and Fastmail at once: search, read, draft, send and organise mail."
}