ComparisonUpdated October 28, 2026

Spark vs Command Mail: two ways to give your agent email

Spark and Command Mail both let your own AI agent work in your email, with levels that run from reading to sending. Spark does it locally with Spark CLI: your agent talks to the Spark Desktop app on your computer, which is signed in to your Gmail, Outlook or IMAP accounts.[2][5] Command Mail is a hosted inbox that receives your addresses by forwarding, and you connect Claude, ChatGPT or Codex to it through an MCP server on the web.[9]

If Spark is already your email client and your agent runs on the same computer, Spark Pro gives you a well-designed agent connection on top. If your agent should work without a desktop app running, or you want to approve each outgoing message, Command Mail is the better fit.[2][9]

Command Mail is our product. Everything about Spark comes from Readdle's pricing page, help center, blog and GitHub repository, retrieved on 2026-10-28. We have not tested Spark CLI ourselves.[1][2][6]

As of: 2026-10-28

Updated: Fact-checked: About 10 min readAs Markdown

Contents
  1. What this comparison covers
  2. Spark and Command Mail at a glance
  3. What Spark does well
  4. Where Spark CLI reaches its limits
  5. How Command Mail draws the line
  6. Example: a morning pass across work and personal mail
  7. When Spark is the better choice
  8. When Command Mail fits
  9. Who Command Mail is not for
  10. Switching and setup
  11. Further reading
  12. Frequently asked questions
  13. Sources

01What this comparison covers

Spark by Readdle is an email client for Mac, Windows, iPhone and Android, with built-in AI, a calendar, meeting notes and team features.[1] In May 2026 Readdle added Spark CLI, a command-line interface that gives outside agents access to your mail, contacts, calendar and meeting notes.[12][2] That turns Spark into an access point for Claude Code, Cursor, Codex or OpenClaw as well.[3]

Command Mail was built for that job from the start. Your addresses forward into it, and your agent connects through a hosted MCP server, an official ChatGPT plugin, a listing in the Claude directory, or Command Mail's own CLI.[9]

So both products answer the same question: how does my agent get to my email without doing damage? They differ in where the connection runs, which copy of your mail the agent changes, and where the line before sending sits.

02Spark and Command Mail at a glance

QuestionSpark with Spark CLICommand Mail
Price (retrieved 2026-10-28)Free €0; Plus €10/month or €99/year; Pro €22/month or €229/year, per user[1]Free €0 (one mailbox, last 90 days, no sending); Pro €19/month for the first 100 paying Pro accounts while the subscription runs, otherwise €29/month (yearly €190 or €290); Team €39 per person per month[9]
Agent connectionlocal CLI, needs Spark Desktop running on Mac or Windows[2]hosted MCP server with OAuth, ChatGPT plugin, Claude directory, plus CLI and local MCP[9]
LevelsOff, Read, Triage, Send per account and per shared inbox[3][6]permissions per connection plus autonomy read, suggest, rules, auto per mailbox[9]
Agent sendingfrom Pro with the Send level, as a separate command after the draft[5][6]from Pro; approved drafts with mail:send-approved, direct sending only with mail:send on auto[9]
Brakes on sendinglevel per account, confirmation pop-ups per the help center; no daily limit described[4]for direct agent sending a daily limit, at most 20 recipients and a unique send key per email; approved drafts go out exactly as approved[9]
Mailboxesdirect connection to Gmail, Outlook, Exchange, iCloud, Yahoo, IMAP and EWS[2]any address by forwarding, up to ten mailboxes on Pro[9]
LogAgent Activity, on device, 30 days, undo for many actions[4]activity log for agents and rules, with suggestions[10]
Calendar and meeting notesyes[1]not described in the documentation[10]

03What Spark does well

Spark hands your agent the structure you have already built. Besides the messages, the CLI exposes Spark's categories, pins, priority marks, Gatekeeper status for new senders and assignments in shared inboxes.[2][12] Semantic search runs on Spark's local index and covers one month of history on Free, one year on Plus and everything on Pro; plain keyword search has no history limit on any plan.[2]

The levels are cleanly cut. Off hides an account, Read allows reading and searching, Triage adds drafts, archiving, labels, comments and assignments, and Send adds sending mail and calendar invitations.[3][6] You set them per account and per shared inbox, so a personal account can stay on Read while a work account gets Send. Readdle says the limits live in Spark's core, not in the agent: if an account is on Triage and the agent tries to send, Spark refuses, however it was prompted.[5] The command reference confirms that a command above the account's level returns an error.[6]

Getting started costs nothing. Read access through the CLI is included on every plan, Free too.[1][2] If your agent uses a local model from Ollama or LM Studio, the help center says its processing stays on your device; with a cloud model, content goes straight to that provider and not through Spark's servers.[2] Separately, Spark processes data on its own servers for features such as notifications, team features and Send Later.[8]

Spark also records what agents do. Agent Activity lists every action in plain language with the agent's name, the access level and the outcome, keeps 30 days and offers undo for many triage actions such as archiving, moving and labeling.[4] There is a skills library under the MIT license with recipes like Morning Standup and Inbox Zero, and plugins for Cursor and Codex.[13][3] If you prefer rules inside the email client, Pro also includes Autopilot, which builds sorting rules from a plain description and previews them on mail you already have.[7]

04Where Spark CLI reaches its limits

Spark CLI needs a computer that is switched on. Spark Desktop has to be open on your Mac or Windows PC, and the agent has to run commands there or connect through a local MCP connection.[2][3] For agents in the cloud, such as a scheduled job on a server or ChatGPT in the browser, Spark documents no direct connection; the access it describes needs the running desktop session on the same computer.[3][6] It does not list Linux, iPhone or Android for the CLI.

The line before sending is one level per account. With Send, the agent can send drafts, reschedule queued mail and create, change or cancel calendar events.[5][6] Neither the help center nor the command reference describes a daily limit, a recipient cap or a block on replying to automated senders. Sent mail and calendar changes that have reached attendees cannot be undone; the help center says confirmation pop-ups handle those instead, without spelling out when one appears.[4]

Triage acts on your real mailbox. When the agent archives or moves a message, it is archived or moved in Gmail or Outlook, because Spark works directly on those accounts.[2] That is convenient while the agent gets it right, and undo only works as long as nobody has changed the message again since.[4]

Spark itself is part of the data path too. Readdle's privacy article says Spark stores an access token for Gmail, Outlook and Yahoo, and the login and password for Exchange and custom IMAP accounts, encrypted on Google Cloud servers in the US; the article dates from 2020 and was updated in 2023.[8] That concerns the email client rather than the CLI, but it belongs in the decision.

05How Command Mail draws the line

Command Mail splits control into two layers. When you connect an agent, you choose its permissions: mail:read reads and sorts, mail:draft writes drafts and never sends, mail:send-approved sends exactly the draft revision a person approved, and mail:send sends without asking.[9] Sending without approval starts switched off, and you would have to turn it on yourself. On top of that, each mailbox has an autonomy level: read, suggest, rules or auto.[9]

An agent sends directly only from a mailbox on auto and only with mail:send. Each email then needs a unique send key, a daily limit applies, and a message can have at most 20 recipients.[9] On suggest and rules, agent actions become suggestions and mail leaves only through approved drafts; on read, the agent changes no mail and sends nothing.[9] It does not write on its own to detected automated senders, mailing lists or no-reply addresses; detection relies on message signals and can miss individual cases.[9][10]

What agents and rules do appears in the activity log, where suggestions wait for your decision. Supported sorting actions can be reversed; sent mail and permanently deleted mail cannot.[10]

Command Mail has limits as well. Mail arrives by forwarding, so whatever the agent archives stays unchanged in the original mailbox; forwarding is not sync.[10] The documentation does not describe a calendar or meeting notes; it mentions an installable web app with web push, and desktop apps for Mac and Windows are planned.[10] The read permission covers every mailbox in the account; the per-mailbox level does not separate read access. The operator is FYN Labs LLC in the US, the app and database run on Cloudflare, and attachments are stored in Cloudflare's EU region.[11]

06Example: a morning pass across work and personal mail

Say you want your agent to go through a work account and a personal account every morning, file the noise and prepare replies to the three people waiting longest. With Spark, you set the work account to Triage and the personal account to Read, keep Spark Desktop open, and run the Inbox Zero recipe from Claude Code or Cursor.[14] It archives handled mail in your work account directly, and where a message needs an answer it creates a draft with spark draft; the agent hands you a link to open each draft in Spark, and you read and send.[14][6] In the personal account it can only read, and on Triage it cannot send.[5]

In Command Mail, the same pass uses mail:read and mail:draft; two mailboxes need Pro.[9] With the work mailbox on suggest, archiving and moving become suggestions you accept in one go; on auto the agent carries them out and logs them.[10] You approve the drafts in the app, and if the connection has mail:send-approved, the agent then sends exactly the version you approved. Command Mail stays reachable without your computer: if your agent runs as a scheduled task with a cloud provider, it handles the pass while your laptop is closed. You set up the schedule in the agent itself.[9][10]

The levels look alike. The real difference is location: Spark is strong when agent and email client live on the same machine, Command Mail when the agent runs elsewhere or you want a separate approval between draft and send.[2][9]

07When Spark is the better choice

Choose Spark if you want one email client across all your devices and your agent runs on your Mac or Windows PC. The agent then works directly in your real accounts, with Spark's categories, priorities and Gatekeeper, and you need no forwarding.[2] You also get a calendar, meeting notes, shared inboxes with assignments and native apps for Mac, Windows, iPhone and Android.[1]

Spark also suits you if you only want your agent to read for now. CLI read access is part of the Free plan, and with a local model the help center says the agent's processing stays on your device.[2] When you need Triage and Send later, you upgrade to Pro and keep the same setup.[5]

08When Command Mail fits

Choose Command Mail if your agent should not depend on a desktop app being open. You connect it by URL, through the official plugin in ChatGPT or the directory listing in Claude.[9] Command Mail stays reachable when your computer is off; if your agent runs with a cloud provider or on a server, it keeps working there. You set up schedules in that agent environment.[10]

It also fits if you want a hard approval step between draft and send. With mail:send-approved only the version you approved in the app goes out, and direct sending carries a daily limit, a recipient cap and the block on detected automated senders.[9] If you want to try it first, you can start free with reading and drafts.[9]

09Who Command Mail is not for

If you want a full email client with a calendar, meeting notes and apps on every device, Spark is the right choice.[1] Command Mail does not replace your existing account, and changes do not flow back to the original mailbox.[10]

Sending starts on Pro.[9] If you want to run your agent on a local model so its processing stays on your own device, Spark is the closer match; Command Mail is hosted on Cloudflare.[2][11]

10Switching and setup

To Spark: install Spark Desktop, open Settings, then AI Agents, and choose Setup CLI under Connect AI Agents. Set the level for each account and pick your agent; the help center gives a setup prompt for Claude Code and a plugin each for Cursor and Codex.[2][3] Keep Spark Desktop open while the agent works.

To Command Mail: connect each address in the app and set up forwarding at your current provider to the private intake address Command Mail shows you.[10] Then connect your agent, in Claude Code with claude mcp add --transport http commandmail https://commandmail.app/mcp, or in ChatGPT through the plugin.[9] Start it with mail:read and mail:draft only.

Running both gives you two places where work happens. Decide up front where your agent sorts, so archives and drafts do not drift apart.

11Further reading

You can start Command Mail for free and let your agent read and draft before it sends anything.

Frequently asked questions

Does Spark have an MCP server for AI agents?

Spark has Spark CLI, a local command-line tool that connects agents to Spark Desktop through shell commands or a local MCP connection. Spark Desktop has to be running on your Mac or Windows PC. Spark's help center does not describe a hosted MCP server you connect by URL.

Can an agent send email through Spark?

Yes, if the account is set to the Send level, which comes with Spark Pro. The agent first creates a draft and then sends it with a separate command, spark action send. On Read and Triage, Readdle says Spark refuses to send.

How much does Spark cost compared with Command Mail?

Spark Free costs nothing and lets agents read. Triage and Send come with Pro at €22 a month or €229 a year, as listed on the pricing page we retrieved in euros. Command Mail Free covers one mailbox and the last 90 days, reads and drafts but does not send; Pro is €19 a month for the first 100 paying Pro accounts while the subscription runs, then €29.

Does Spark CLI work with ChatGPT?

Spark's help names platforms that run local commands or local MCP connections: Claude Desktop, Claude Code, Cursor, Codex, OpenClaw, Hermes Agent and Google Antigravity. It does not name ChatGPT on the web. Command Mail is listed as an official plugin in the ChatGPT plugin directory; whether you can use it depends on your ChatGPT plan, workspace, role and region, according to OpenAI.

Can I use Spark and Command Mail together?

Yes. Keep reading mail in Spark and also forward one address to Command Mail. You then have two separate states: whatever an agent archives in Command Mail stays where it was in Gmail, and so in Spark.

Sources

  1. Spark: Pricing (plans and feature comparison) sparkmailapp.com, accessed
  2. Spark Help: Getting Started with Spark CLI sparkmailapp.com, accessed
  3. Spark Help: Set up Spark CLI with your AI Agents sparkmailapp.com, accessed
  4. Spark Help: Agent Activity in Spark CLI sparkmailapp.com, accessed
  5. Spark blog: Now in Spark: Agents that follow through (2026-07-24) sparkmailapp.com, accessed
  6. Readdle: use-spark, Spark CLI command reference (GitHub, MIT) github.com, accessed
  7. Spark Help: Autopilot in Spark sparkmailapp.com, accessed
  8. Spark blog: Spark Email Privacy (2020, updated 2023) sparkmailapp.com, accessed
  9. Command Mail: llms.txt (pricing, permissions, connection) commandmail.app, accessed
  10. Command Mail: documentation commandmail.app, accessed
  11. Command Mail: privacy, operator and hosting commandmail.app, accessed
  12. Spark blog: Introducing Spark CLI (2026-05-13) sparkmailapp.com, accessed
  13. Readdle: spark-cli-skills, README (GitHub, MIT) github.com, accessed
  14. Readdle: recipe-inbox-zero (GitHub) github.com, accessed
EN