Skip to main content
Glama

Apple Mail MCP Server

common-workflows.md16.6 kB
# Common Email Workflows - Quick Reference This document provides ready-to-use workflow templates for common email management tasks. Copy and adapt these patterns to your specific needs. ## Quick Triage Workflows ### Morning Inbox Check (10 minutes) ``` # 1. Get overview get_inbox_overview() # 2. Check urgent items search_emails(subject_keyword="urgent", read_status="unread") search_emails(subject_keyword="ASAP", read_status="unread") # 3. Check VIP senders search_emails(sender="boss@company.com", read_status="unread") search_emails(sender="key-client@example.com", read_status="unread") # 4. Flag action items update_email_status(action="flag", subject_keyword="action required", max_updates=5) # 5. Quick cleanup manage_trash(action="move_to_trash", sender="newsletter@", mailbox="INBOX", max_deletes=10) ``` ### End of Day Cleanup (5 minutes) ``` # 1. Check unread count get_unread_count() # 2. Quick scan recent get_recent_emails(count=20, include_content=False) # 3. Mark read non-essential update_email_status(action="mark_read", sender="automated@", mailbox="INBOX", max_updates=10) # 4. Archive processed emails move_email(to_mailbox="Archive", from_mailbox="INBOX", max_moves=20) # 5. Review flagged items for tomorrow search_emails(mailbox="All") # Check flags ``` ## Search & Find Workflows ### Find Specific Email Thread ``` # Option 1: Search by subject get_email_with_content( account="Work", subject_keyword="Project Alpha", max_results=5, max_content_length=300 ) # Option 2: Get full thread get_email_thread( account="Work", subject_keyword="Project Alpha", mailbox="All", max_messages=20 ) # Option 3: Advanced search search_emails( account="Work", mailbox="All", subject_keyword="Project Alpha", sender="client@example.com", include_content=True, max_results=10 ) ``` ### Find Emails from Specific Person ``` # All emails from sender search_emails( account="Work", sender="colleague@company.com", mailbox="All", max_results=50 ) # Unread emails from sender search_emails( account="Work", sender="colleague@company.com", read_status="unread", mailbox="INBOX" ) # Emails with attachments from sender search_emails( account="Work", sender="colleague@company.com", has_attachments=True, mailbox="All", max_results=20 ) ``` ### Find Emails by Date Range ``` # Emails from last month search_emails( account="Work", date_from="2025-01-01", date_to="2025-01-31", mailbox="All", max_results=100 ) # Recent emails with keyword search_emails( account="Work", subject_keyword="invoice", date_from="2025-01-15", mailbox="All", max_results=20 ) ``` ### Find Emails with Attachments ``` # All emails with attachments search_emails( account="Work", has_attachments=True, mailbox="INBOX", max_results=50 ) # Specific sender with attachments search_emails( account="Work", sender="supplier@example.com", has_attachments=True, mailbox="All", max_results=20 ) # Then list attachments list_email_attachments( account="Work", subject_keyword="Invoice", max_results=1 ) # Save specific attachment save_email_attachment( account="Work", subject_keyword="Invoice", attachment_name="invoice.pdf", save_path="~/Desktop/invoice.pdf" ) ``` ## Organization Workflows ### Daily Filing Routine ``` # 1. File project emails search_emails( account="Work", subject_keyword="Project Alpha", mailbox="INBOX", read_status="all" ) move_email( account="Work", subject_keyword="Project Alpha", to_mailbox="Projects/Alpha", from_mailbox="INBOX", max_moves=10 ) # 2. File client emails search_emails( account="Work", sender="client@example.com", mailbox="INBOX" ) move_email( account="Work", sender="client@example.com", # Need to use subject_keyword with search result to_mailbox="Clients/ClientName", from_mailbox="INBOX", max_moves=10 ) # 3. Archive everything else move_email( account="Work", subject_keyword="", # Match all to_mailbox="Archive", from_mailbox="INBOX", max_moves=20 ) ``` ### Bulk Folder Organization ``` # 1. Review current structure list_mailboxes(account="Work", include_counts=True) # 2. Identify emails to organize get_statistics( account="Work", scope="account_overview", days_back=30 ) # 3. Batch move by pattern # Example: Move all emails from a client search_emails( account="Work", sender="bigclient@example.com", mailbox="All", max_results=50 ) # Then move them (repeat with batches if >10) move_email( account="Work", subject_keyword="[pattern from search]", to_mailbox="Clients/BigClient", from_mailbox="INBOX", max_moves=10 ) ``` ### Archive Old Emails ``` # 1. Find old read emails search_emails( account="Work", date_to="2024-12-31", read_status="read", mailbox="INBOX", max_results=50 ) # 2. Review what you found # (Check if any need to be kept in current folders) # 3. Export if important export_emails( account="Work", scope="single_email", subject_keyword="Important Old Email", mailbox="INBOX", save_directory="~/Documents/Email-Archives", format="txt" ) # 4. Move to archive move_email( account="Work", subject_keyword="[pattern]", to_mailbox="Archive/2024", from_mailbox="INBOX", max_moves=20 ) ``` ## Response Workflows ### Quick Reply ``` # 1. Find the email get_email_with_content( account="Work", subject_keyword="Quick Question", max_results=1, max_content_length=300 ) # 2. Reply immediately reply_to_email( account="Work", subject_keyword="Quick Question", reply_body="Yes, that works for me. Thanks!", reply_to_all=False ) # 3. Archive the thread move_email( account="Work", subject_keyword="Quick Question", to_mailbox="Archive", from_mailbox="INBOX", max_moves=1 ) ``` ### Deferred Response (Draft) ``` # 1. Review email content get_email_with_content( account="Work", subject_keyword="Complex Request", max_results=1, max_content_length=500 ) # 2. Create draft for later manage_drafts( account="Work", action="create", subject="Re: Complex Request", to="sender@example.com", body="Thank you for your email. I'm reviewing your request and will provide a detailed response by [date].\n\n[Draft notes: Need to check with team, review budget, etc.]" ) # 3. Flag original email update_email_status( account="Work", action="flag", subject_keyword="Complex Request", mailbox="INBOX", max_updates=1 ) ``` ### Reply to All in Thread ``` # 1. View full thread context get_email_thread( account="Work", subject_keyword="Team Discussion", mailbox="All", max_messages=20 ) # 2. Reply to all reply_to_email( account="Work", subject_keyword="Team Discussion", reply_body="Based on the discussion, I agree with the proposal. Let's move forward.", reply_to_all=True ) ``` ### Forward with Context ``` # 1. Find the email get_email_with_content( account="Work", subject_keyword="Customer Issue", max_results=1, max_content_length=500 ) # 2. Forward to colleague forward_email( account="Work", subject_keyword="Customer Issue", to="colleague@company.com", message="Hi [Name],\n\nCan you please help with this customer issue? It seems related to your area.\n\nThanks!", mailbox="INBOX" ) # 3. Update status and move update_email_status( account="Work", action="mark_read", subject_keyword="Customer Issue", mailbox="INBOX", max_updates=1 ) move_email( account="Work", subject_keyword="Customer Issue", to_mailbox="Waiting For", from_mailbox="INBOX", max_moves=1 ) ``` ## Cleanup Workflows ### Delete Spam and Newsletters ``` # 1. Identify unwanted senders get_statistics( account="Personal", scope="account_overview", days_back=30 ) # Look for frequent senders you don't read # 2. Search for their emails search_emails( account="Personal", sender="newsletter@unwanted.com", mailbox="INBOX", max_results=50 ) # 3. Bulk delete (move to trash first - reversible) manage_trash( account="Personal", action="move_to_trash", sender="newsletter@unwanted.com", mailbox="INBOX", max_deletes=20 ) # 4. Verify trash search_emails( account="Personal", sender="newsletter@unwanted.com", mailbox="Trash" ) # 5. Permanently delete if confirmed (optional) manage_trash( account="Personal", action="delete_permanent", sender="newsletter@unwanted.com", max_deletes=20 ) ``` ### Clean Up Old Emails ``` # 1. Find emails older than 90 days search_emails( account="Work", date_to="2024-10-01", read_status="read", mailbox="INBOX", max_results=50 ) # 2. Export important ones first (if needed) export_emails( account="Work", scope="entire_mailbox", mailbox="INBOX", save_directory="~/Documents/Email-Backup", format="txt" ) # 3. Move to archive or delete move_email( account="Work", subject_keyword="[pattern]", to_mailbox="Archive/2024", from_mailbox="INBOX", max_moves=20 ) ``` ### Empty Trash ``` # 1. Review what's in trash first search_emails( account="Work", mailbox="Trash", max_results=20 ) # 2. Export if anything important export_emails( account="Work", scope="entire_mailbox", mailbox="Trash", save_directory="~/Desktop/Trash-Backup" ) # 3. Empty trash (CAREFUL - irreversible) manage_trash( account="Work", action="empty_trash" ) ``` ## Draft Management Workflows ### Weekly Draft Review ``` # 1. List all drafts manage_drafts( account="Work", action="list" ) # 2. Send completed drafts manage_drafts( account="Work", action="send", draft_subject="Ready to Send Draft" ) # 3. Delete outdated drafts manage_drafts( account="Work", action="delete", draft_subject="Old Draft from Last Month" ) # 4. Edit others (do in Mail app) ``` ### Create Draft for Complex Email ``` # 1. Review context get_email_thread( account="Work", subject_keyword="Complex Topic", mailbox="All" ) # 2. Create draft with initial thoughts manage_drafts( account="Work", action="create", subject="Re: Complex Topic - My Analysis", to="stakeholder@company.com", cc="team@company.com", body="[Draft - Need to expand]\n\n1. Summary of situation\n2. Analysis\n3. Recommendation\n\n[Notes to self: Check data, consult with team]" ) # 3. Schedule time to complete # (Set calendar reminder to finish draft) ``` ## Analysis Workflows ### Weekly Email Analytics ``` # 1. Get account overview get_statistics( account="Work", scope="account_overview", days_back=7 ) # 2. Analyze top senders # (Use sender names from overview) get_statistics( account="Work", scope="sender_stats", sender="frequent-sender@example.com", days_back=30 ) # 3. Check mailbox distribution list_mailboxes( account="Work", include_counts=True ) # 4. Review unread counts get_unread_count() # 5. Identify actions: # - Unsubscribe from high-volume, low-value senders # - Create folders for frequent senders # - Archive/delete old emails in cluttered folders ``` ### Sender Analysis and Action ``` # 1. Get sender statistics get_statistics( account="Work", scope="sender_stats", sender="automated-reports@company.com", days_back=90 ) # 2. If too many emails, decide action: # Option A: Create filter (in Mail app) # Option B: Move to dedicated folder # Option C: Unsubscribe # 3. Organize existing emails search_emails( account="Work", sender="automated-reports@company.com", mailbox="All", max_results=50 ) move_email( account="Work", subject_keyword="[pattern]", to_mailbox="Automated Reports", from_mailbox="INBOX", max_moves=20 ) ``` ## Batch Operation Workflows ### Flag Multiple Emails for Review ``` # 1. Search for pattern search_emails( account="Work", subject_keyword="Q4 Review", mailbox="All", max_results=20 ) # 2. Batch flag update_email_status( account="Work", action="flag", subject_keyword="Q4 Review", mailbox="All", max_updates=10 ) ``` ### Mark Multiple Emails as Read ``` # 1. Identify emails to mark read search_emails( account="Work", sender="automated-notifications@", read_status="unread", mailbox="INBOX", max_results=20 ) # 2. Batch mark as read update_email_status( account="Work", action="mark_read", sender="automated-notifications@", mailbox="INBOX", max_updates=20 ) ``` ### Bulk Move by Sender ``` # 1. Find all emails from sender search_emails( account="Work", sender="project-team@company.com", mailbox="INBOX", max_results=50 ) # 2. Move in batches (max_moves=10 is safe) move_email( account="Work", subject_keyword="", # Use pattern from search to_mailbox="Projects/Team Project", from_mailbox="INBOX", max_moves=10 ) # 3. Repeat if more than 10 emails # (Run the move_email command again) ``` ## Backup and Export Workflows ### Export Important Mailbox ``` # 1. Check mailbox contents search_emails( account="Work", mailbox="Important Project", max_results=20 ) # 2. Export entire mailbox export_emails( account="Work", scope="entire_mailbox", mailbox="Important Project", save_directory="~/Documents/Email-Backups/Important-Project", format="txt" ) # 3. Verify export # (Check ~/Documents/Email-Backups/Important-Project directory) ``` ### Export Single Important Email ``` # 1. Find the email get_email_with_content( account="Work", subject_keyword="Contract Agreement", max_results=1, max_content_length=0 # Full content ) # 2. Export with attachments list_email_attachments( account="Work", subject_keyword="Contract Agreement" ) save_email_attachment( account="Work", subject_keyword="Contract Agreement", attachment_name="contract.pdf", save_path="~/Documents/Contracts/contract.pdf" ) # 3. Export email text export_emails( account="Work", scope="single_email", subject_keyword="Contract Agreement", save_directory="~/Documents/Contracts", format="html" ) ``` ## Weekly Maintenance Workflow ``` # Monday Morning (30 min) # 1. Review weekend emails get_inbox_overview() # 2. Triage urgent items search_emails(subject_keyword="urgent", read_status="unread") search_emails(subject_keyword="action required", read_status="unread") # 3. Process inbox to zero # (Use inbox zero workflow) # 4. Review weekly tasks search_emails(mailbox="All") # Check flags # 5. Set up for the week manage_drafts(action="list") ``` ``` # Friday Afternoon (30 min) # 1. Complete pending replies manage_drafts(action="list") # Send or delete drafts # 2. Clean up flagged items search_emails(mailbox="All") # Review flags update_email_status(action="unflag", ...) # Clear completed # 3. Archive week's emails move_email(to_mailbox="Archive", from_mailbox="INBOX", max_moves=50) # 4. Review statistics get_statistics(scope="account_overview", days_back=7) # 5. Plan for next week # Note patterns, senders to filter, folders to create ``` ## Tips for Using These Workflows 1. **Copy and adapt**: These are templates - adjust parameters for your needs 2. **Chain commands**: Run multiple commands in sequence for complex workflows 3. **Use max limits**: Always respect max_moves, max_deletes safety limits 4. **Review before deleting**: Always search first, then delete 5. **Export before cleanup**: Backup important emails before bulk operations 6. **Start small**: Test with small max values (5-10) before increasing ## Quick Reference: Most Common Commands ``` # Daily essentials get_inbox_overview() get_recent_emails(count=20) search_emails(subject_keyword="...", mailbox="All") reply_to_email(subject_keyword="...", reply_body="...") move_email(to_mailbox="Archive", from_mailbox="INBOX", max_moves=10) # Weekly maintenance list_mailboxes(include_counts=True) manage_drafts(action="list") get_statistics(scope="account_overview", days_back=7) update_email_status(action="flag" or "mark_read", ...) # Cleanup operations manage_trash(action="move_to_trash", ...) export_emails(scope="entire_mailbox", mailbox="...", ...) ``` --- **Remember**: These workflows are starting points. Adapt them to your specific email patterns and work style.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/patrickfreyer/apple-mail-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server