rbouschery/marketplace16 files

Apple Mail

Interact with Apple Mail on macOS. Use for reading, sending, searching, and managing emails.

Specification
Skill ID
rbouschery/marketplace/apple-mail
Publisher
rbouschery
Repository
marketplace
Installs
0
Files
16
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

rbouschery/marketplace/apple-mailInstalls these files
  • SKILL.md
  • reference/applescript-patterns.md
  • scripts/archive-email.sh
  • scripts/create-draft.sh
  • scripts/create-reply-draft.sh
  • scripts/delete-email.sh
  • scripts/get-email-by-id.sh
  • scripts/get-emails.sh
  • scripts/get-unread-count.sh
  • scripts/list-accounts.sh
  • scripts/list-mailboxes.sh
  • scripts/mark-read.sh
  • scripts/mark-unread.sh
  • scripts/search-emails.sh
  • scripts/send-draft.sh
  • scripts/send-email.sh

What this skill tells the agent

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

ScriptPurposeArguments
list-accounts.shList all email accountsnone
list-mailboxes.shList mailboxes/folders[account] (optional)
get-unread-count.shGet unread email count[account] [mailbox] (optional)

Reading Emails

ScriptPurposeArguments
get-emails.shGet recent emails[account] [mailbox] [limit] [include_content] [unread_only]
get-email-by-id.shGet specific email by ID<id> [account] [mailbox] [include_content]
search-emails.shSearch emails<query> [account] [mailbox] [limit]

Sending & Composing

ScriptPurposeArguments
send-email.shSend an email<to> <subject> <body> [cc] [bcc] [from]
create-draft.shCreate a draft email<subject> <body> [to] [cc] [bcc] [from]
create-reply-draft.shCreate reply to email<message_id> <body> [reply_all] [account] [mailbox]
send-draft.shSend front-most draftnone

Email Management

ScriptPurposeArguments
archive-email.shArchive an email<message_id> [account] [mailbox] [archive_mailbox]
delete-email.shDelete an email<message_id> [account] [mailbox]
mark-read.shMark email as read<message_id> [account] [mailbox]
mark-unread.shMark email as unread<message_id> [account] [mailbox]

Output Format

Scripts use delimiters for structured output:

  • <<>> separates fields within a record
  • ||| separates multiple records
  • ERROR: 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:

  1. Split by ||| to get individual records
  2. Split each record by <<>> to get fields
  3. 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.

Use this skill in a project

Open any RiverX project, search the Skills panel for rbouschery/marketplace/apple-mail, and install it in one click.

Use this skill