CLI & MCP

Waymaker email

Manage email in Commander. Send, receive, search, and organize emails across connected accounts. Includes alias management for multi-domain email routing.

EmailMailboxes
Last updated: January 22, 2026

Overview

Manage email in Commander. Send, receive, search, and organize emails across connected accounts. Includes alias management for multi-domain email routing.

Usage

waymaker email <subcommand> [options]

Subcommands

SubcommandDescription
listList emails
getGet email content
sendSend an email
replyReply to an email
forwardForward an email
moveMove email to folder
searchSearch emails
aliasesManage email aliases across domains

List Emails

waymaker email list

Output:

Inbox (156 unread)

id           from                     subject                      date
-----------------------------------------------------------------------
email_abc123 john@company.com         Q1 Budget Approval           2 hours ago
email_def456 support@vendor.com       Re: Integration Question     4 hours ago
email_ghi789 newsletter@service.com   Weekly Digest                Yesterday

Filter by Folder

waymaker email list --folder inbox
waymaker email list --folder sent
waymaker email list --folder drafts
waymaker email list --folder archive

Filter by Status

waymaker email list --unread
waymaker email list --starred

Filter by Account

waymaker email list --account work@company.com

JSON Output

waymaker email list --json
[
  {
    "id": "email_abc123",
    "from": {"email": "john@company.com", "name": "John Smith"},
    "to": [{"email": "me@company.com", "name": "Me"}],
    "subject": "Q1 Budget Approval",
    "snippet": "Please review the attached budget proposal...",
    "date": "2026-01-21T10:00:00Z",
    "unread": true,
    "starred": false,
    "has_attachments": true
  }
]

Get Email Content

waymaker email get <email-id>

Output:

Q1 Budget Approval

From: John Smith <john@company.com>
To: me@company.com
Date: January 21, 2026 10:00 AM

Please review the attached budget proposal for Q1 2026.

Key highlights:
- Total budget: $500,000
- Marketing: $150,000
- Engineering: $250,000
- Operations: $100,000

Let me know if you have any questions.

Best,
John

Attachments:
  - Q1_Budget_2026.xlsx (45KB)

Get Raw Content

waymaker email get <email-id> --raw

Get as JSON

waymaker email get <email-id> --json

Download Attachments

waymaker email get <email-id> --attachments ./downloads/

Send Email

waymaker email send \
  --to "recipient@company.com" \
  --subject "Meeting Follow-up" \
  --body "Thanks for the meeting today..."

Output:

✓ Email sent
To: recipient@company.com
Subject: Meeting Follow-up

Send with CC/BCC

waymaker email send \
  --to "primary@company.com" \
  --cc "manager@company.com" \
  --bcc "archive@company.com" \
  --subject "Project Update" \
  --body "Here's the weekly update..."

Send with Attachments

waymaker email send \
  --to "recipient@company.com" \
  --subject "Report Attached" \
  --body "Please find the report attached." \
  --attach ./report.pdf \
  --attach ./data.xlsx

Send from Specific Account

waymaker email send \
  --from "support@company.com" \
  --to "customer@example.com" \
  --subject "Support Response" \
  --body "Thank you for contacting support..."

Send HTML Email

waymaker email send \
  --to "recipient@company.com" \
  --subject "Newsletter" \
  --html "<h1>Welcome</h1><p>Content here...</p>"

Reply to Email

waymaker email reply <email-id> \
  --body "Thanks for the update. I'll review and get back to you."

Reply All

waymaker email reply <email-id> --all \
  --body "Adding my thoughts to this thread..."

Forward Email

waymaker email forward <email-id> \
  --to "colleague@company.com" \
  --body "FYI - please review this."

Move Email

waymaker email move <email-id> --folder archive

Move Multiple

waymaker email move email_abc123,email_def456 --folder "Projects/Q1"

Search Emails

waymaker email search "budget proposal"

Output:

Search Results (12)

id           from                 subject                        date
---------------------------------------------------------------------
email_abc123 john@company.com     Q1 Budget Approval             Jan 21
email_xyz789 finance@company.com  Budget Proposal Review         Jan 15
waymaker email search \
  --from "john@company.com" \
  --subject "budget" \
  --has-attachment \
  --after "2026-01-01"

Search as JSON

waymaker email search "quarterly report" --json

Manage Aliases

Email aliases allow a single mailbox to receive email at multiple addresses across different domains. This is essential for domain migrations, brand consolidation, or supporting multiple email identities.

List Aliases for a Mailbox

waymaker email aliases list --mailbox <mailbox-id>

Output:

Aliases for: john@newcompany.com (mailbox_abc123)

address                      domain              status     created
-------------------------------------------------------------------
john@oldcompany.com          oldcompany.com      active     Jan 2026
j.smith@oldcompany.com       oldcompany.com      active     Jan 2026
john@legacy.io               legacy.io           active     Dec 2025

Total: 3 aliases

JSON Output

waymaker email aliases list --mailbox mailbox_abc123 --json
{
  "mailbox_id": "mailbox_abc123",
  "primary_address": "john@newcompany.com",
  "aliases": [
    {
      "address": "john@oldcompany.com",
      "domain_id": "domain_old123",
      "domain": "oldcompany.com",
      "status": "active",
      "created_at": "2026-01-15T10:00:00Z"
    },
    {
      "address": "j.smith@oldcompany.com",
      "domain_id": "domain_old123",
      "domain": "oldcompany.com",
      "status": "active",
      "created_at": "2026-01-15T10:00:00Z"
    }
  ]
}

Bulk Add Aliases (Domain Migration)

When migrating from an old domain to a new domain, bulk add aliases to ensure all mailboxes continue receiving email at their old addresses.

Preview Mode (Dry Run)

waymaker email aliases bulk-add \
  --domain <new-domain-id> \
  --dry-run

Output:

Bulk Add Aliases Preview (DRY RUN)

Target Domain: newcompany.com (domain_new123)
Source Domain: oldcompany.com (domain_old123)

Aliases to be created: 25

mailbox                      new alias
-----------------------------------------------
john@newcompany.com          john@oldcompany.com
jane@newcompany.com          jane@oldcompany.com
support@newcompany.com       support@oldcompany.com
...

No changes made. Use --confirm to execute.

Execute Bulk Add

waymaker email aliases bulk-add \
  --domain <new-domain-id> \
  --source-domain <old-domain-id> \
  --confirm

Output:

Bulk Add Aliases

Target Domain: newcompany.com
Source Domain: oldcompany.com

Creating aliases...
  ✓ john@oldcompany.com → john@newcompany.com
  ✓ jane@oldcompany.com → jane@newcompany.com
  ✓ support@oldcompany.com → support@newcompany.com
  ...

Summary:
  Created: 25
  Skipped: 2 (already exist)
  Failed: 0

All mailboxes on newcompany.com now receive email at their oldcompany.com addresses.

Bulk Remove Aliases

Remove all aliases from a specific domain. Useful when decommissioning an old domain after migration.

Preview Mode (Dry Run)

waymaker email aliases bulk-remove \
  --domain <domain-id> \
  --dry-run

Output:

Bulk Remove Aliases Preview (DRY RUN)

Domain: oldcompany.com (domain_old123)

Aliases to be removed: 25

alias                        mailbox
-----------------------------------------------
john@oldcompany.com          john@newcompany.com
jane@oldcompany.com          jane@newcompany.com
support@oldcompany.com       support@newcompany.com
...

⚠ Warning: After removal, emails to these addresses will bounce.

No changes made. Use --confirm to execute.

Execute Bulk Remove

waymaker email aliases bulk-remove \
  --domain <domain-id> \
  --confirm

Output:

Bulk Remove Aliases

Domain: oldcompany.com

Removing aliases...
  ✓ john@oldcompany.com removed
  ✓ jane@oldcompany.com removed
  ✓ support@oldcompany.com removed
  ...

Summary:
  Removed: 25
  Failed: 0

All aliases for oldcompany.com have been removed.

Options Reference

list

OptionTypeDescription
--folderstringFolder name (inbox, sent, drafts, archive)
--accountstringFilter by email account
--unreadflagShow only unread
--starredflagShow only starred
--limitnumberMaximum results (default: 50)
--jsonflagOutput as JSON

get

OptionTypeDescription
--rawflagGet raw email content
--attachmentsstringDownload attachments to directory
--jsonflagOutput as JSON

send

OptionTypeDescription
--tostringRequired. Recipient(s), comma-separated
--ccstringCC recipients
--bccstringBCC recipients
--fromstringSender account
--subjectstringRequired. Email subject
--bodystringPlain text body
--htmlstringHTML body
--attachstringFile path to attach (repeatable)

reply/forward

OptionTypeDescription
--bodystringRequired. Reply/forward message
--allflagReply to all recipients
--tostringForward recipient (forward only)

move

OptionTypeDescription
--folderstringRequired. Destination folder
OptionTypeDescription
--fromstringFilter by sender
--tostringFilter by recipient
--subjectstringFilter by subject
--has-attachmentflagHas attachments
--afterstringAfter date (YYYY-MM-DD)
--beforestringBefore date (YYYY-MM-DD)
--limitnumberMaximum results
--jsonflagOutput as JSON

aliases list

OptionTypeDescription
--mailboxstringRequired. Mailbox ID to list aliases for
--jsonflagOutput as JSON

aliases bulk-add

OptionTypeDescription
--domainstringRequired. Target domain ID (new domain)
--source-domainstringSource domain ID (old domain) for alias creation
--dry-runflagPreview changes without executing
--confirmflagExecute the bulk operation
--jsonflagOutput as JSON

aliases bulk-remove

OptionTypeDescription
--domainstringRequired. Domain ID to remove aliases from
--dry-runflagPreview changes without executing
--confirmflagExecute the bulk operation
--jsonflagOutput as JSON

AI Agent Workflow

# Get unread emails
UNREAD=$(waymaker email list --unread --json)

# Summarize inbox
echo "You have $(echo $UNREAD | jq 'length') unread emails"

# Search for specific emails
IMPORTANT=$(waymaker email search --from "ceo@company.com" --json)

# Auto-reply pattern
EMAIL_ID="email_abc123"
EMAIL=$(waymaker email get $EMAIL_ID --json)
RESPONSE="Generated response based on: $(echo $EMAIL | jq -r '.body')"
waymaker email reply $EMAIL_ID --body "$RESPONSE"

# Send programmatic email
waymaker email send \
  --to "$RECIPIENT" \
  --subject "Automated Report - $(date +%Y-%m-%d)" \
  --body "$REPORT_CONTENT" \
  --attach ./report.pdf

# Archive processed emails
waymaker email move $EMAIL_ID --folder archive

# === Alias Management ===

# List aliases for a mailbox
ALIASES=$(waymaker email aliases list --mailbox mailbox_abc123 --json)
echo "Mailbox has $(echo $ALIASES | jq '.aliases | length') aliases"

# Domain migration: preview alias creation
waymaker email aliases bulk-add \
  --domain $NEW_DOMAIN_ID \
  --dry-run

# Domain migration: execute alias creation
waymaker email aliases bulk-add \
  --domain $NEW_DOMAIN_ID \
  --source-domain $OLD_DOMAIN_ID \
  --confirm

# Decommission old domain: preview removal
waymaker email aliases bulk-remove \
  --domain $OLD_DOMAIN_ID \
  --dry-run

# Decommission old domain: execute removal
waymaker email aliases bulk-remove \
  --domain $OLD_DOMAIN_ID \
  --confirm