@mgcrea/mcp-apple-mail

MCPattested
v1.9.0io.github.mgcreaMITUpdated 2d agonpmGitHub

Search, read and act on Apple Mail — threads, attachments, body search, writes off by default

Works in
ClaudeCursorCopilotGemini

Inferred from the transports this listing declares (stdio). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Attested build
A verified provenance attestation binds this artifact to the listed repository. Nobody has claimed the listing yet — this proves where the code was built, not who stands behind it.
366Downloads/wk
2d agoLast update
Package
Authorio.github.mgcrea
LicenseMIT
Version1.9.0
Sourcenpm+mcp-registry
Trust Status
A
85/100Trusted
Listed in Forge index+10/10
Identity verified · attested build+20/20
Ed25519 publish signature+0/5
Included automatically when the publisher runs `forge publish`
Domain verification+0/5
Publisher: host /.well-known/forge.json on the package homepage with { "publisher": "<github-login>" }
npm Trusted Publishing (Sigstore)+5/5
npm maintainer match+0/5
Publisher: add the verified GitHub login to the npm package's maintainers (npm owner add <login>)
CVE scan · clean+30/30
Static analysis · clean+20/20
Paste into Claude Code, Cursor, or any AI assistant to fix all gaps
StatusIdentity verified
PublisherUnverified
SignatureUnsigned
Domain
Provenance✓ Sigstore-verified · 938b31f
Dependencies✓ 60 resolved+ · none vulnerable
Tool surface23 tools · 2 privileged
Security scan✓ Cleanv1.9.0 · 1d agoHow well does this scan work?
EvalsNone
IndexedSep 2, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

23 tools · 2 privileged
Statically extracted from the published packagev1.9.0 · 1d ago

Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.

apple_mail_triageWork through what arrived and report what needs a human: who is waiting, what is committed to, what can be ignored. Read-only — it proposes, it does not file or reply.

Work through what arrived and report what needs a human: who is waiting, what is committed to, what can be ignored. Read-only — it proposes, it does not file or reply.

No input schema was published for this tool.

apple_mail_find_threadTrack down a conversation from a vague description — a project name, a person, something half-remembered — spending the cheap search lanes before the expensive body lane.

Track down a conversation from a vague description — a project name, a person, something half-remembered — spending the cheap search lanes before the expensive body lane.

No input schema was published for this tool.

apple_mail_draft_replyRead a thread properly, then leave a written draft in Mail for review. Never sends: the draft waits for a human. Requires writes to be enabled.

Read a thread properly, then leave a written draft in Mail for review. Never sends: the draft waits for a human. Requires writes to be enabled.

No input schema was published for this tool.

apple_mail_diagnosticsReport what this server can currently do and why. Shows whether Mail is running, whether Automation and Full Disk Access are granted, where Mail's data lives, whether the search index is readable and how stale it is, whether the message file lane actually resolves and reads a real message per accou…

Report what this server can currently do and why. Shows whether Mail is running, whether Automation and Full Disk Access are granted, where Mail's data lives, whether the search index is readable and how stale it is, whether the message file lane actually resolves and reads a real message per accou…

No input schema was published for this tool.

apple_mail_list_accountsList the mail accounts configured in Apple Mail: display name, UUID, type, addresses and mailbox names. Start here — the account name or UUID is what every other tool takes, and the mailbox names come back exactly as Mail spells them.

List the mail accounts configured in Apple Mail: display name, UUID, type, addresses and mailbox names. Start here — the account name or UUID is what every other tool takes, and the mailbox names come back exactly as Mail spells them.

No input schema was published for this tool.

apple_mail_list_mailboxesList mailboxes, optionally with message counts. Counts cost one round-trip per mailbox (~0.3s each), so `withCounts` is off by default — turn it on for one account, not for all of them. Note that `unread` here is Mail's cached badge value and can be wrong; apple_mail_count_messages reports both sou…

List mailboxes, optionally with message counts. Counts cost one round-trip per mailbox (~0.3s each), so `withCounts` is off by default — turn it on for one account, not for all of them. Note that `unread` here is Mail's cached badge value and can be wrong; apple_mail_count_messages reports both sou…

No input schema was published for this tool.

apple_mail_set_message_flagsSet read / flagged / junk state on one or more messages. Pass only the fields you want to change; the rest are left alone. This is one tool rather than four because the four are one Apple Event when batched, and because refs in the same mailbox are grouped into a single round-trip. The response rep…

Set read / flagged / junk state on one or more messages. Pass only the fields you want to change; the rest are left alone. This is one tool rather than four because the four are one Apple Event when batched, and because refs in the same mailbox are grouped into a single round-trip. The response rep…

No input schema was published for this tool.

apple_mail_create_mailboxNo description published

This tool published no description. Forge does not invent one.

apple_mail_move_messagesprivilegedMove messages to another mailbox, optionally in another account. The refs you passed in are DEAD afterwards: a moved message gets a new row id, so the response returns fresh refs and reports any message it could not re-locate. Requires confirm: true.

Move messages to another mailbox, optionally in another account. The refs you passed in are DEAD afterwards: a moved message gets a new row id, so the response returns fresh refs and reports any message it could not re-locate. Requires confirm: true.

No input schema was published for this tool.

apple_mail_delete_messagesprivilegedDelete messages. This follows the account's own 'move deleted messages to Trash' setting, which this server does not control — for an account with that setting off, deletion is immediate and NOT recoverable from here. The response reports which behaviour applied. Requires confirm: true.

Delete messages. This follows the account's own 'move deleted messages to Trash' setting, which this server does not control — for an account with that setting off, deletion is immediate and NOT recoverable from here. The response reports which behaviour applied. Requires confirm: true.

No input schema was published for this tool.

apple_mail_check_for_new_mailAsk Mail to sync now, for one account or all of them. Unlike the read tools this will launch Mail if it is not running, and it causes real network activity against the mail servers, which is why it is a write-gated tool.

Ask Mail to sync now, for one account or all of them. Unlike the read tools this will launch Mail if it is not running, and it causes real network activity against the mail servers, which is why it is a write-gated tool.

No input schema was published for this tool.

apple_mail_send_messageCompose a new message. By DEFAULT this does not send: it opens a draft in Mail for the user to review, which is almost always what you want. Only pass sendNow: true (with confirm: true) when the user has explicitly asked for the mail to go out now.

Compose a new message. By DEFAULT this does not send: it opens a draft in Mail for the user to review, which is almost always what you want. Only pass sendNow: true (with confirm: true) when the user has explicitly asked for the mail to go out now.

No input schema was published for this tool.

apple_mail_reply_to_messageReply to a message. By default it opens a draft in Mail with the original quoted beneath your text, for the user to review. Pass replyToAll to include every original recipient. Only pass sendNow: true (with confirm: true) when explicitly asked to send now. Success means the body was read back out o…

Reply to a message. By default it opens a draft in Mail with the original quoted beneath your text, for the user to review. Pass replyToAll to include every original recipient. Only pass sendNow: true (with confirm: true) when explicitly asked to send now. Success means the body was read back out o…

No input schema was published for this tool.

apple_mail_forward_messageForward a message to new recipients. By default it opens a draft in Mail for review. Only pass sendNow: true (with confirm: true) when explicitly asked to send now. When a note is given, success means it was read back out of the composer window and matched. Filling the composer brings Mail to the f…

Forward a message to new recipients. By default it opens a draft in Mail for review. Only pass sendNow: true (with confirm: true) when explicitly asked to send now. When a note is given, success means it was read back out of the composer window and matched. Filling the composer brings Mail to the f…

No input schema was published for this tool.

apple_mail_update_draftNo description published

This tool published no description. Forge does not invent one.

apple_mail_get_messageRead one message: decoded headers, the plain-text body, and a list of its attachments. HTML-only mail is converted to text. Long bodies are truncated with an explicit marker rather than silently cut. Reads the message file directly when Full Disk Access allows, and otherwise asks Mail, which is slo…

Read one message: decoded headers, the plain-text body, and a list of its attachments. HTML-only mail is converted to text. Long bodies are truncated with an explicit marker rather than silently cut. Reads the message file directly when Full Disk Access allows, and otherwise asks Mail, which is slo…

No input schema was published for this tool.

apple_mail_get_message_sourceGet the raw RFC 5322 source of a message — every header and the undecoded body. Use this for header forensics (Received chains, SPF/DKIM/DMARC results, List-Unsubscribe), not for reading mail: apple_mail_get_message gives you the readable version without the noise. Capped and pageable via offset.

Get the raw RFC 5322 source of a message — every header and the undecoded body. Use this for header forensics (Received chains, SPF/DKIM/DMARC results, List-Unsubscribe), not for reading mail: apple_mail_get_message gives you the readable version without the noise. Capped and pageable via offset.

No input schema was published for this tool.

apple_mail_list_attachmentsList a message's attachments: filename, MIME type, size and whether the bytes are present locally. Metadata only — it never returns file contents. A size of 0 with a filename means Mail stored the attachment outside the message file, which is normal.

List a message's attachments: filename, MIME type, size and whether the bytes are present locally. Metadata only — it never returns file contents. A size of 0 with a filename means Mail stored the attachment outside the message file, which is normal.

No input schema was published for this tool.

apple_mail_save_attachmentSave one attachment to disk. It can only write into APPLE_MAIL_ATTACHMENT_DIR (default ~/Downloads) and will not overwrite an existing file unless you ask it to. Write-gated because it puts a file on the user's disk, even though it changes nothing in Mail.

Save one attachment to disk. It can only write into APPLE_MAIL_ATTACHMENT_DIR (default ~/Downloads) and will not overwrite an existing file unless you ask it to. Write-gated because it puts a file on the user's disk, even though it changes nothing in Mail.

No input schema was published for this tool.

apple_mail_search_messagesSearch mail by any combination of text, body text, sender, recipient, subject, mailbox, account, read/flagged state, attachments and date range. This is the tool to reach for whenever a filter is involved — it reads Mail's own search index, so it is fast even across a six-figure archive. Returns a…

Search mail by any combination of text, body text, sender, recipient, subject, mailbox, account, read/flagged state, attachments and date range. This is the tool to reach for whenever a filter is involved — it reads Mail's own search index, so it is fast even across a six-figure archive. Returns a…

No input schema was published for this tool.

apple_mail_get_threadGet every message in the conversation containing a given message, oldest first, across mailboxes and accounts. Metadata only — use apple_mail_get_message for bodies. Requires Full Disk Access.

Get every message in the conversation containing a given message, oldest first, across mailboxes and accounts. Metadata only — use apple_mail_get_message for bodies. Requires Full Disk Access.

No input schema was published for this tool.

apple_mail_list_messagesList the newest messages in one mailbox, most recent first. Returns a `ref` per message that the read and action tools take. Without the search index this runs over Apple Events and is capped (default 50) because each additional message costs about 40ms per field — ask for 20 unless you have a reas…

List the newest messages in one mailbox, most recent first. Returns a `ref` per message that the read and action tools take. Without the search index this runs over Apple Events and is capped (default 50) because each additional message costs about 40ms per field — ask for 20 unless you have a reas…

No input schema was published for this tool.

apple_mail_count_messagesCount messages in a mailbox. Cheap in both lanes, so this works with no extra permissions. The `unread` figure is reported per source: Mail's own cached count is fast but can be flatly wrong (observed reporting 0 for a mailbox holding 1618 unread messages), so treat the index figure as authoritativ…

Count messages in a mailbox. Cheap in both lanes, so this works with no extra permissions. The `unread` figure is reported per source: Mail's own cached count is fast but can be flatly wrong (observed reporting 0 for a mailbox holding 1618 unread messages), so treat the index figure as authoritativ…

No input schema was published for this tool.

21 of 23 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

Search, read and act on Apple Mail — threads, attachments, body search, writes off by default

Keywords
mcp
Alternatives
Comparing tool surfaces…

Dependency tree

What one Forge scan resolved from npm metadata on 2026-09-02 — observed resolution, not a publisher declaration.

60 packages resolved · 3 direct · none carrying advisories Resolution stops at depth 4 and 60 packages.

The crawl stopped at the depth-4 limit. Anything below that level was never resolved.

The crawl stopped at the 60-package limit. The rest of the tree was never resolved.

36 more resolved packages are not drawn here (display cap: 24). Every dependency carrying an advisory is drawn regardless of the cap. Full inventory (CycloneDX SBOM)

Declared but not resolved

54 declared dependencies never landed in the tree. They are missing from Forge's resolution, not from the package.

+42 more not listed. The counts by reason above cover all of them.

Not followed: peerDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.