apple-mail
rbouschery/marketplace
Control Apple Mail on macOS—read, send, search, and manage emails via AppleScript.
What is apple-mail?
This skill provides command-line access to Apple Mail on macOS through AppleScript. Use it to automate email workflows: retrieve and search messages, send and draft emails, and manage mailbox operations like archiving and marking read/unread.
- List email accounts and mailboxes, check unread counts
- Retrieve recent emails or search by query with optional content
- Send emails directly or create drafts for manual review
- Reply to emails with reply-all support
- Archive, delete, and mark emails as read or unread
How to install apple-mail
npx skills add https://github.com/rbouschery/marketplace --skill apple-mail- macOS with Apple Mail installed and configured
- At least one email account set up in Apple Mail
- macOS automation permissions granted to the agent (may prompt on first run)
How to use apple-mail
- 1.Install the skill via the provided npx command
- 2.Run list-accounts.sh to verify your email accounts are accessible
- 3.Use get-emails.sh to retrieve messages from a mailbox, optionally filtering by unread status
- 4.Search emails with search-emails.sh using keywords or sender names
- 5.Send emails with send-email.sh or create drafts with create-draft.sh for review
- 6.Manage messages using mark-read.sh, archive-email.sh, or delete-email.sh as needed
Use cases
- Automatically fetch and process incoming emails from specific mailboxes
- Search email history for messages matching keywords or senders
- Send templated or programmatic emails without manual composition
- Create draft replies for review before sending
- Maintain inbox hygiene by archiving or deleting messages in bulk
- macOS users automating email workflows
- Developers building email-integrated agents or bots
- Teams managing high-volume email processing
- Anyone seeking to script Apple Mail operations
apple-mail FAQ
No. The skill uses AppleScript to control Apple Mail directly, so it accesses accounts already configured in the Mail app without requiring credentials.
Yes, as long as the account is set up in Apple Mail (Gmail, Outlook, custom IMAP, etc. all work).
Pass empty strings "" for optional arguments you don't need. The skill will use defaults like the first account or INBOX mailbox.
Yes, pass comma-separated email addresses for the to, cc, or bcc fields in send-email.sh.
No, this skill requires macOS and Apple Mail. It uses AppleScript which is macOS-specific.
Full instructions (SKILL.md)
Source of truth, from rbouschery/marketplace.
name: apple-mail description: Interact with Apple Mail on macOS. Use for reading, sending, searching, and managing emails. allowed-tools: Bash, Read
Apple Mail Skill
This skill provides commands to interact with Apple Mail on macOS via AppleScript.
Available Scripts
All scripts are in the ../../scripts/ directory (relative to this file). Execute them via bash from the plugin root.
Account & Mailbox Management
| Script | Purpose | Arguments |
|---|---|---|
list-accounts.sh | List all email accounts | none |
list-mailboxes.sh | List mailboxes/folders | [account] (optional) |
get-unread-count.sh | Get unread email count | [account] [mailbox] (optional) |
Reading Emails
| Script | Purpose | Arguments |
|---|---|---|
get-emails.sh | Get recent emails | [account] [mailbox] [limit] [include_content] [unread_only] |
get-email-by-id.sh | Get specific email by ID | <id> [account] [mailbox] [include_content] |
search-emails.sh | Search emails | <query> [account] [mailbox] [limit] |
Sending & Composing
| Script | Purpose | Arguments |
|---|---|---|
send-email.sh | Send an email | <to> <subject> <body> [cc] [bcc] [from] |
create-draft.sh | Create a draft email | <subject> <body> [to] [cc] [bcc] [from] |
create-reply-draft.sh | Create reply to email | <message_id> <body> [reply_all] [account] [mailbox] |
send-draft.sh | Send front-most draft | none |
Email Management
| Script | Purpose | Arguments |
|---|---|---|
archive-email.sh | Archive an email | <message_id> [account] [mailbox] [archive_mailbox] |
delete-email.sh | Delete an email | <message_id> [account] [mailbox] |
mark-read.sh | Mark email as read | <message_id> [account] [mailbox] |
mark-unread.sh | Mark email as unread | <message_id> [account] [mailbox] |
Output Format
Scripts use delimiters for structured output:
<<>>separates fields within a record|||separates multiple recordsERROR:prefix indicates an error message
Email Record Format
id<<>>subject<<>>sender<<>>to<<>>cc<<>>bcc<<>>dateSent<<>>isRead<<>>content|||
Usage Examples
List accounts
./scripts/list-accounts.sh
Get recent emails from INBOX
./scripts/get-emails.sh "" "INBOX" 10 false false
Get recent unread emails with content
./scripts/get-emails.sh "" "INBOX" 10 true true
Get specific email by ID
./scripts/get-email-by-id.sh 12345 "iCloud" "INBOX" true
Search emails
./scripts/search-emails.sh "meeting notes" "" "" 20
Send an email
./scripts/send-email.sh "recipient@example.com" "Subject" "Body text"
Send with CC and BCC
./scripts/send-email.sh "to@example.com" "Subject" "Body" "cc@example.com" "bcc@example.com"
Create a draft
./scripts/create-draft.sh "Draft Subject" "Draft body" "recipient@example.com"
Reply to an email
./scripts/create-reply-draft.sh 12345 "Thanks for your message!" false "iCloud" "INBOX"
Send the front-most draft
./scripts/send-draft.sh
Archive an email
./scripts/archive-email.sh 12345 "iCloud" "INBOX"
Mark as read/unread
./scripts/mark-read.sh 12345 "iCloud" "INBOX"
./scripts/mark-unread.sh 12345 "iCloud" "INBOX"
Parsing Output
When receiving email records, parse them like this:
- Split by
|||to get individual records - Split each record by
<<>>to get fields - Fields are: id, subject, sender, to, cc, bcc, dateSent, isRead, content
Example parsing in bash:
IFS='|||' read -ra emails <<< "$output"
for email in "${emails[@]}"; do
IFS='<<>>' read -ra fields <<< "$email"
id="${fields[0]}"
subject="${fields[1]}"
sender="${fields[2]}"
# ... etc
done
Notes
- Scripts require macOS with Apple Mail configured
- Apple Mail must have at least one account set up
- First run may trigger macOS permission prompts for automation
- Empty optional arguments should be passed as empty strings ""
- For scripts that need arrays (multiple recipients), pass comma-separated values
Reference
For advanced AppleScript patterns and customization, see ./reference/applescript-patterns.md.
Related skills
More from rbouschery/marketplace and the wider catalog.
react-aria
Test utilities for React Aria Components with simulated user interactions.

upgrade-react-native
>
react-spectrum-s2
Build UIs with React Spectrum S2 (Spectrum 2), Adobe's component library for React. Use when developers are using `@react-spectrum/s2` or need Adobe design system components. Includes React Aria Components docs as a reference for building custom components on top of unstyled primitives.

extract-errors
Extract and manage error codes in React development.

fix
Fix lint errors and formatting issues before committing code.

react-expert
Authoritative React API research using source code, tests, and git history—not training data.