# mailmcp (mcpb · mailmcp.mcpb)

Your mailboxes in ChatGPT and Claude: Gmail, iCloud, Fastmail, any IMAP. Passwords stay yours.

- Trust score: 40/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- remote · `mailmcp.ai`: 39/100, [markdown](https://verifymcp.io/servers/ai-mailmcp-mailmcp/mailmcp.md), [page](https://verifymcp.io/servers/ai-mailmcp-mailmcp/mailmcp)
- mcpb · `mailmcp.mcpb`: 40/100 (this document), [markdown](https://verifymcp.io/servers/ai-mailmcp-mailmcp/https-github-com-kojott-mailmcp-dist-releases-download-v0-7-8-mailmcp-mcpb.md), [page](https://verifymcp.io/servers/ai-mailmcp-mailmcp/https-github-com-kojott-mailmcp-dist-releases-download-v0-7-8-mailmcp-mcpb)

## Channel facts

- Registry: `mcpb`
- Package: `https://github.com/kojott/mailmcp-dist/releases/download/v0.7.8/mailmcp.mcpb`
- Version: `0.7.8`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 13/100
  - Malware scan not yet available for this package.
  - Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
  - No install/post-install scripts declared.
  - Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (Proprietary (see LICENSE)) isn't a recognized OSI-approved license.
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 69/100
  - 67% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3098 tokens (~140/item across 22 items; 21 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 92/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 75% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

- Download bundle: `https://github.com/kojott/mailmcp-dist/releases/download/v0.7.8/mailmcp.mcpb`

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-19 (score 40)

First indexed and scored.

## MCP tools (21)

### `list_accounts` (~45 tokens)

List mail accounts

Lists configured mailboxes with their ids, addresses and what operations are permitted on each.

Input parameters:

- `check_connection` (boolean): Also test the IMAP login of every account (slower).

### `list_folders` (~37 tokens)

List folders / labels

Lists folders (labels on Gmail) of one account with message and unseen counts.

Input parameters:

- `account` (string, required): Account id from list_accounts

### `search_messages` (~235 tokens)

Search messages

Searches one account (or all accounts with account="all"). On Gmail, `query` accepts full Gmail search syntax (from:, newer_than:7d, has:attachment, label:, "exact phrase"). Elsewhere `query` is full-text and the structured filters do the rest. Returns newest first with uid + folder needed by other tools.

Input parameters:

- `account` (string, required): Account id, or "all" to search every readable account
- `before` (string): ISO date
- `flagged` (boolean): Only starred/flagged
- `folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `from` (string)
- `has_attachment` (boolean)
- `limit` (integer): Default 20, max 50
- `offset` (integer)
- `query` (string): Gmail search syntax on Gmail; plain text elsewhere
- `since` (string): ISO date, e.g. 2026-09-01
- `subject` (string)
- `to` (string)
- `unseen` (boolean): Only unread

### `get_message` (~98 tokens)

Read a message

Returns headers, sanitized text body and the attachment list of one message. Body is truncated to the configured limit.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `include_quoted` (boolean): Keep quoted replies (default false)
- `max_chars` (integer)
- `uid` (integer, required): uid from search_messages

### `get_thread` (~72 tokens)

Get conversation thread

Lists all messages belonging to the same conversation as the given message (Gmail thread id, or References headers elsewhere).

Input parameters:

- `account` (string, required): Account id from list_accounts
- `folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `uid` (integer, required)

### `get_attachment` (~104 tokens)

Get attachment

Downloads one attachment (max 2097152 bytes). Text-like types are returned as text, others as embedded binary.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `inline` (boolean): Embed the binary content in the result instead of returning a link
- `part` (string, required): part id from get_message
- `uid` (integer, required)

### `create_draft` (~263 tokens)

Create draft

Saves a draft into the Drafts folder of the account. Nothing is sent; the owner reviews and sends it from their mail client (or asks you to send_draft). Attachments: existing mailbox attachments, files from upload_attachment/request_upload, or inline content. This is the preferred way to prepare replies.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `attachments` (array): Files to attach: existing mailbox attachments, uploaded files (folder "mailmcp-uploads"), inline content, or local paths
- `bcc` (array)
- `cc` (array)
- `html` (string): Optional HTML body (scripts are stripped); when absent it is rendered from text
- `in_reply_to_folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `in_reply_to_uid` (integer): uid of the message being answered: sets In-Reply-To/References, keeps the Re: subject and quotes the original. Prefer reply_draft / reply_send.
- `quote` (boolean): Quote the original under the reply (default true when replying)
- `subject` (string, required)
- `text` (string, required): Plain-text body
- `to` (array, required): Recipient addresses

### `get_signature` (~66 tokens)

Show the mailbox signature

Returns the signature mailmcp appends under replies: the newest message in the mailbox folder "mailmcp-signature" (HTML with inline images) when the account uses it, otherwise the plain-text signature from the token.

Input parameters:

- `account` (string, required): Account id from list_accounts

### `set_signature` (~136 tokens)

Set the mailbox signature

Stores the signature as a message in the mailbox folder "mailmcp-signature" (HTML and/or text). Use it when the owner pastes or dictates their signature. For a signature with a photo or logo the owner instead sends themselves an e-mail from their usual mail client and moves it into that folder; images are then embedded from there. Requires the account to use the mailbox signature (setup page) and the draft capability.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `html` (string): HTML signature (scripts are stripped)
- `text` (string): Plain-text signature; derived from html when omitted

### `reply_draft` (~251 tokens)

Reply as a draft

Saves a reply to a specific message into Drafts, in the same thread: In-Reply-To/References, "Re:" subject, recipients (sender, or everyone with reply_all) and the quoted original are set by the server. Use this whenever the owner says "reply / answer / write a draft" ("odpověz", "napiš koncept"). Nothing is sent.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `attachments` (array)
- `folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `html` (string): Optional HTML version of the reply body
- `lang` (string): Language of the "On … wrote:" line (default: guessed from the reply)
- `quote` (boolean): Quote the original under the reply (default true)
- `reply_all` (boolean): Reply to every recipient of the original (default: sender only)
- `text` (string, required): The reply itself, plain text, without greeting-to-quote artefacts; the original is quoted automatically
- `uid` (integer, required): uid of the message being answered (from search_messages / get_message / get_thread)

### `reply_send` (~245 tokens)

Reply and send

Sends a reply to a specific message in the same thread (threading headers, "Re:" subject, recipients and the quoted original are set by the server). Only when the owner enabled sending for the account AND every recipient matches send_allowlist; otherwise use reply_draft. Use this only when the owner says "send" ("pošli", "odešli").

Input parameters:

- `account` (string, required): Account id from list_accounts
- `attachments` (array)
- `folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `html` (string): Optional HTML version of the reply body
- `lang` (string): Language of the "On … wrote:" line (default: guessed from the reply)
- `quote` (boolean): Quote the original under the reply (default true)
- `reply_all` (boolean): Reply to every recipient of the original (default: sender only)
- `text` (string, required): The reply itself, plain text, without greeting-to-quote artefacts; the original is quoted automatically
- `uid` (integer, required): uid of the message being answered (from search_messages / get_message / get_thread)

### `send_message` (~244 tokens)

Send email

Sends an email via SMTP, optionally with attachments (existing mailbox attachments, uploaded files, inline content). Only allowed when the owner enabled sending for the account AND every recipient matches send_allowlist. Otherwise use create_draft.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `attachments` (array): Files to attach: existing mailbox attachments, uploaded files (folder "mailmcp-uploads"), inline content, or local paths
- `bcc` (array)
- `cc` (array)
- `html` (string): Optional HTML body (scripts are stripped); when absent it is rendered from text
- `in_reply_to_folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `in_reply_to_uid` (integer): uid of the message being answered: sets In-Reply-To/References, keeps the Re: subject and quotes the original. Prefer reply_draft / reply_send.
- `quote` (boolean): Quote the original under the reply (default true when replying)
- `subject` (string, required)
- `text` (string, required): Plain-text body
- `to` (array, required): Recipient addresses

### `send_draft` (~97 tokens)

Send a saved draft

Sends a draft exactly as stored in the Drafts folder (including its attachments) and removes it from Drafts. Recipients are taken from the draft and must match send_allowlist.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `folder` (string): Drafts folder path if not the default
- `uid` (integer, required): uid of the draft (from create_draft or search_messages in the Drafts folder)

### `forward_message` (~174 tokens)

Forward a message

Forwards a message including all its attachments, without the files passing through the chat. Optional comment goes above the forwarded text. Recipients must match send_allowlist; with as_draft the forward is saved to Drafts instead.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `as_draft` (boolean): Save to Drafts instead of sending
- `bcc` (array)
- `cc` (array)
- `comment` (string): Text to put above the forwarded message
- `folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `include_attachments` (boolean): Default true
- `subject` (string): Defaults to "Fwd: <original subject>"
- `to` (array, required)
- `uid` (integer, required)

### `upload_attachment` (~136 tokens)

Hand a file to mailmcp

Stores a file you have (text, or base64 for binary, up to policy.max_upload_bytes) in the mailbox folder "mailmcp-uploads" so it can be attached to a draft or a sent message. Returns {folder, uid, part} to use in the attachments parameter. The file is removed once attached. For large files or files on the user's disk use request_upload.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `content` (string, required): UTF-8 text or base64
- `content_type` (string)
- `encoding` (string)
- `filename` (string, required)

### `request_upload` (~115 tokens)

Get an upload link

Returns a one-hour HTTPS upload link for an account. Anyone with the link can PUT/POST a file to it (curl -T file <url>, or open it in a browser and drop the file); the file lands in "mailmcp-uploads" and appears in list_uploads. Use it for files on the user's disk or files too big for upload_attachment. If you can run commands, upload the file yourself; otherwise give the link to the user.

Input parameters:

- `account` (string, required): Account id from list_accounts

### `list_uploads` (~60 tokens)

List uploaded files

Files waiting in "mailmcp-uploads" of an account (from upload_attachment or an upload link), newest first, with the {folder, uid, part} needed to attach them.

Input parameters:

- `account` (string, required): Account id from list_accounts

### `modify_message` (~133 tokens)

Modify message

Mark read/unread, star/unstar, add/remove Gmail labels, move to a folder or archive.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `add_labels` (array): Gmail only
- `archive` (boolean): Remove from inbox (Gmail) or move to Archive
- `flagged` (boolean)
- `folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `move_to` (string): Destination folder path
- `remove_labels` (array): Gmail only
- `seen` (boolean)
- `uid` (integer, required)

### `trash_message` (~61 tokens)

Move to trash

Moves a message to the Trash folder. Never deletes permanently.

Input parameters:

- `account` (string, required): Account id from list_accounts
- `folder` (string): Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere.
- `uid` (integer, required)

### `search` (~75 tokens)

Search (ChatGPT-compatible)

Searches all readable mailboxes with one query string and returns documents with ids for `fetch`. Use Gmail search syntax for Gmail accounts (from:, newer_than:7d, has:attachment); plain words elsewhere. Prefix the query with "account:<id> " to limit it to one mailbox.

Input parameters:

- `query` (string, required): Search query

### `fetch` (~34 tokens)

Fetch document (ChatGPT-compatible)

Returns the full sanitized text of one email by the id returned from `search`.

Input parameters:

- `id` (string, required): Document id from search

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/ai-mailmcp-mailmcp/https-github-com-kojott-mailmcp-dist-releases-download-v0-7-8-mailmcp-mcpb#diagnostics

## Score history

- 2026-09-20: 40
- 2026-09-19: 40

## Common questions

### What is the mailmcp MCP server?

mailmcp is an MCP server listed in the public MCP registry as ai.mailmcp/mailmcp. Your mailboxes in ChatGPT and Claude: Gmail, iCloud, Fastmail, any IMAP. Passwords stay yours. This page covers its MCPB bundle (https://github.com/kojott/mailmcp-dist/releases/download/v0.7.8/mailmcp.mcpb).

### Is the mailmcp MCP server safe to use?

mailmcp scores 40 out of 100 on VerifyMCP. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the mailmcp MCP server expose?

mailmcp exposes 21 tools: list_accounts, list_folders, search_messages, get_message, get_thread, and 16 more. Their descriptions and schemas cost roughly 2,681 tokens of context every time the server is loaded.

## Links

- Repository: https://github.com/kojott/mailmcp-dist
- Website: https://mailmcp.ai/
- Changelog RSS feed: https://verifymcp.io/servers/ai-mailmcp-mailmcp/https-github-com-kojott-mailmcp-dist-releases-download-v0-7-8-mailmcp-mcpb.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-mailmcp-mailmcp/https-github-com-kojott-mailmcp-dist-releases-download-v0-7-8-mailmcp-mcpb.json
- HTML version of this page: https://verifymcp.io/servers/ai-mailmcp-mailmcp/https-github-com-kojott-mailmcp-dist-releases-download-v0-7-8-mailmcp-mcpb
