protogrid

Search / co.lumman/mail

Multi Mail

R2· OAuth, once

Gmail, Outlook, Hotmail, iCloud and Fastmail at once: search, read, draft, send and organise mail.

v1.1.2 · active · repository · website · descriptor JSON · versions

An agent can connect after a one-time OAuth consent by a human.Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.
Quality70needs work
Trust96of 100
Uptime, 30 days100%
Latency p501152 ms

Connect

8 clients · secrets stay placeholders
{
  "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

Quality 70 / 100needs work

protocoln/a · weight 25
  • n/a
    protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)
authorization83 · weight 15
  • pass
    auth.prmProtected Resource Metadata (RFC 9728) published
  • pass
    auth.as_metadataauthorization server metadata reachable
  • warn
    auth.cimdonly Dynamic Client Registration, deprecated in 2026-07-28 in favour of CIMD
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations30 of 30 tools declare readOnlyHint or destructiveHint
  • warn
    tools.directory_hints6 of 30 tools declare all four hints; missing: drafts_update (idempotentHint); drafts_reply (idempotentHint); drafts_delete (idempotentHint); …
  • warn
    tools.token_costabout 9,732 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes83 tool changes in 30 days
  • fail
    stability.rug_pull3 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

30 tools, about 9,732 tokens to load them all · tool set c9d8978b55c4 · tools last changed 2026-10-15 · checked 2026-10-19 11:27 UTC

Tool changes

  • threads_untrashchangeddescription
    before

    Bring 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.

    after · 75% of words in common

    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_trashchangeddescription
    before

    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. In a mailbox whose provider is imap each moved message takes a new id, which the answer names.

    after · 81% of words in common

    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_archivechangeddescription
    before

    Take 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.

    after · 80% of words in common

    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_modifychangeddescription
    before

    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.

    after · 91% of words in common

    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_deletechangeddescription
    before

    Delete 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.

    after · 95% of words in common

    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 schema
  • messages_listchangedinput schema
  • threads_modifychangeddescription
    before

    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 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.

    after · 98% of words in common

    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 schema
  • drafts_replychangedoutput schema

Showing 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.

Trust 96 / 100

provenance85
liveness100
freshness100
hygiene100

+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.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mail.lumman.co/mcp streamable-httpoauth2 AS: https://gwvrgdrmewwgkjovauzm.supabase.co/auth/v1yes100%1152 ms–2026-10-19

Tools (30)

drafts_createCompose a message in a connected mailbox and keep it there as a draft.
drafts_deletedestructiveThrow 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_forwardCompose 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_replyCompose 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_senddestructiveSend 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_updatedestructiveChange 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_createCreate 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_deletedestructiveDelete 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-onlyList 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_updatedestructiveRename 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-onlyList 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-onlyRead 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_forwarddestructiveForward 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-onlyRead one message in a connected mailbox, with its headers and its body.
messages_listread-onlySearch 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-onlySearch 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_replydestructiveReply 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_senddestructiveCompose 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_createdestructiveCreate 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_deletedestructiveDelete one rule by its id. Mail it already filed stays where it is.
settings_filters_listread-onlyList the rules a connected mailbox files incoming mail by.
settings_get_vacationread-onlyRead whether a connected mailbox answers mail automatically, what it says, and any schedule or restriction it carries.
settings_send_as_getread-onlyRead 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_patchdestructiveReplace 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_vacationdestructiveTurn 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_archiveTake 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-onlyRead every message of one thread in a connected mailbox, oldest first.
threads_modifydestructiveApply 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_trashdestructiveMove 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_untrashBring 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.

Similar MCP servers

More from co.lumman

Official server.json
{
  "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."
}