Skip to main content

apple-mail

Use Apple Mail from Codex through the local Apple Mail MCP plugin. Trigger for mailbox discovery, message search/read/context retrieval, newest email, drafting or sending mail, and mail archive/delete/move/junk workflows.

Source facts

Repository
Sageder/codex-apple-plugin
Last source activity
May 22, 2026 at 01:31
Detected SKILL.md language
English
Stars
4
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
apple-mail
description
Use Apple Mail from Codex through the local Apple Mail MCP plugin. Trigger for mailbox discovery, message search/read/context retrieval, newest email, drafting or sending mail, and mail archive/delete/move/junk workflows.
# Apple Mail Use this skill when a task should access local Apple Mail. ## Fast routing - First use, a new Mac, or permission failures: `mail_request_permissions`. - Exact lookup or newest/latest email: `mail_search`, then `mail_read` only if the user needs body/details. - Broad mail context such as "what matters about X": `mail_retrieve_context`. - Writes: call the mutating tool with `dryRun: true` for a preview, then repeat with `confirm: true` only after the user clearly confirms. ## First-run setup behavior - If the user asks to set up the plugin, mentions a fresh clone/new Mac, or hits an access error, call `mail_request_permissions` before any mail search/read/write tool. - Treat permission output as an onboarding checklist: summarize the next step in plain language, ask the user to approve macOS prompts or System Settings toggles when needed, then retry only after they say it is done. - Do not use real mail content to test permissions. The setup tool is the privacy-light probe. ## Workflow - Prefer `mail_retrieve_context` for broad or fuzzy requests like "find what matters about X" or "use my email as context". - Use `mail_search` when the user needs message candidates or handles. Use explicit scopes for `sent`, `archive`, `trash`, and `junk` when the request names those areas. - For sent-mail questions like "what did I send to X", use `scope: "sent"` plus `recipient`. - Use `subject` for exact known-subject lookups; broad `query` is for metadata terms. - Use `mail_read` only for selected messages and keep body limits tight. - Use `mail_compose` for drafts. - Use `mail_send`, `mail_archive`, `mail_delete`, `mail_junk`, `mail_move`, and `mail_undo_move` only when the configured write guard allows it. - Treat delete as moving messages to Trash/Deleted Items, not permanent deletion. - Keep undo tokens returned by move/archive/delete/junk actions if the user may want to reverse the move. ## Examples Newest email metadata, then a tight body read only if needed: ```text mail_search({"scope":"inbox","limit":1}) mail_read({"handles":["<handle-from-search>"],"maxBodyChars":1200}) ``` Find messages the user sent to someone: ```text mail_search({"scope":"sent","recipient":"person@example.com","limit":10}) ``` Retrieve broad context for a topic without dumping full threads: ```text mail_retrieve_context({"scope":"all","query":"Princeton exchange","topK":5,"maxBodyChars":2000}) ``` Create a visible draft: ```text mail_compose({"to":["person@example.com"],"subject":"Follow up","body":"Hi ...","visible":true}) ``` Preview, then send only after confirmation: ```text mail_send({"to":["person@example.com"],"subject":"Follow up","body":"Hi ...","dryRun":true}) mail_send({"to":["person@example.com"],"subject":"Follow up","body":"Hi ...","confirm":true}) ``` Guarded archive/delete/move pattern: ```text mail_archive({"handles":["<handle>"],"dryRun":true}) mail_archive({"handles":["<handle>"],"confirm":true}) mail_undo_move({"undoTokens":["<undo-token>"],"confirm":true}) ``` ## Access mode - `APPLE_MAIL_WRITE_MODE=ask` is the default. Mutating tools return a preview or target summary unless the call includes `confirm: true`. - `APPLE_MAIL_WRITE_MODE=direct` means full local write access. ## Privacy Do not paste large private email bodies unless the user explicitly asks. Prefer concise summaries and cite handles, subjects, senders, and dates.
View on GitHub