# Mermoz: full site text Source: https://mermoz.xyz/llms.txt. Each section below is one page of https://mermoz.xyz. --- # Mermoz: fast, agent-first email for Mac (Gmail) **The mail must go through.** Mermoz is a light, fast email app for macOS, named after the Aéropostale pilot Jean Mermoz. New mail is sorted before you read it. One key handles a thread. Your whole mailbox lives on your Mac, quiet and instant. Private beta · free and open source · macOS 26 or later · Gmail · version 0.1.0 - Join the private beta: [mermoz.xyz/#beta](https://mermoz.xyz/#beta) (leave the Gmail address you'll use). - Already invited? [Download Mermoz for Mac](https://github.com/ClementWalter/mermoz/releases/latest/download/Mermoz.dmg). - Source: [https://github.com/ClementWalter/mermoz](https://github.com/ClementWalter/mermoz). ## Built for a lighter workflow An inbox that behaves like a flight plan: everything has a status, a destination, and a key to get it there. - **Sorted before you read it.** Each new email arrives with a suggested status and project. Read it and the suggestion applies, or press `y`. - **One key, done.** `e` done, `a` archive, `⌫` delete, `⌘Z` undo. Select several with `⇧` and move them together. - **Flows, not folders.** Unread, To do, Waiting, Done. A list or a board, grouped and ordered your way. Your Gmail labels are your projects. - **Read what matters.** Original, exactly as sent. Or Optimized: the same words without signatures, disclaimers and quoted history. Made once, kept. - **Your whole mailbox, instant.** Every message lives on your Mac. Search, read and sort offline, with `⌘K` for anything else. - **Agent first.** A first-class command line and MCP server. Your agents search, sort and draft; you approve what leaves. ## Your agents fly Mermoz too Everything the app does, the command line does: search, read, sort, draft. Every command speaks `--json`, and an MCP server plugs Mermoz into Claude, Codex and any agent you run. - One command per action, scriptable end to end. - MCP server built in: `mermoz mcp` (stdio). See the [MCP docs](https://mermoz.xyz/docs/mcp/). - Agents can draft anything. Nothing is sent until you approve it in Mermoz. There is no `--yes`. - Agents report friction with `mermoz feedback`, so the tool keeps improving. ```text $ mermoz list --status todo --json { "threads": [{ "number": "M-1287", "subject": "Q4 audit — sign by Friday?" }], "total": 1 } $ mermoz draft reply M-1287 --file reply.md dft_42 [draft] $ mermoz send dft_42 error: approval_required: draft dft_42 is waiting for the user to approve it in Mermoz. # exit 3 ``` ## The spirit of Mermoz In 1930, Jean Mermoz flew the Aéropostale mail across the South Atlantic, from Senegal to Brazil, in a little over twenty hours. The Aéropostale pilots had a motto: « Le courrier doit passer », the mail must go through. Mermoz keeps that spirit: mail that moves, light and fast, without the heavy machinery around it. ## More - [Developer docs](https://mermoz.xyz/docs/) · [CLI](https://mermoz.xyz/docs/cli/) · [MCP server](https://mermoz.xyz/docs/mcp/) · [Protocol](https://mermoz.xyz/docs/protocol/) - [About](https://mermoz.xyz/about/) · [Contact](https://mermoz.xyz/contact/) · [Privacy](https://mermoz.xyz/privacy/) - [llms.txt](https://mermoz.xyz/llms.txt) --- # Mermoz developer docs Mermoz keeps your Gmail mailbox on your Mac and lets your own scripts and AI agents work with it. Everything the app does, the command line does, and an MCP server gives agents the same mailbox as native tools. Search and reading are instant and offline. **Agents never send mail on their own**: a send waits in the Review lane until you approve it in Mermoz. ## How the pieces fit - **`mermozd`**, the daemon inside Mermoz.app, is the only process that touches the network and the mailbox database. - **`mermoz`**, the command-line tool, and **`mermoz mcp`**, the MCP server, are clients of the daemon over a local Unix socket. Mermoz.app must be running. - The CLI ships inside the app at `/Applications/Mermoz.app/Contents/Resources/mermoz`. In Mermoz, open **Settings › Developer › Command line tool › Install in PATH** to link it as `mermoz` (into `/usr/local/bin` or `~/.local/bin`). ## Pages - [Mermoz CLI reference](/docs/cli/): every `mermoz` command, with its `--help` text and exit codes. - [Mermoz MCP server](/docs/mcp/): add Mermoz to Claude Code, Claude Desktop or Codex; the 29 tools and their parameters. - [Mermoz JSON-RPC protocol](/docs/protocol/): the `mermozd` socket protocol, for building your own client. ## Quick start for agents ```sh mermoz list --status todo --json # threads waiting on the user mermoz search "from:marc audit" --json # instant, offline full-text search mermoz thread M-1287 --json # read a whole thread mermoz draft reply M-1287 --file r.txt # draft a reply (never sends) mermoz send dft_8f2c # exit 3: waits for the user's approval claude mcp add mermoz -- mermoz mcp # or plug the MCP server into Claude Code ``` Machine-readable summaries: [llms.txt](/llms.txt), [llms-full.txt](/llms-full.txt), [server.json](/server.json) (MCP registry format) and [/.well-known/mcp.json](/.well-known/mcp.json). --- # Mermoz CLI reference `mermoz` is the command line of Mermoz: the same mailbox as the app, instant and offline, for people and agents. Every command is non-interactive and takes `--json` for machine-readable output. Mermoz.app must be running (the CLI talks to its daemon); otherwise commands exit with code 5. **Install:** the CLI ships inside the app at `/Applications/Mermoz.app/Contents/Resources/mermoz`. In Mermoz, **Settings › Developer › Command line tool › Install in PATH** links it as `mermoz`. **Sending:** `mermoz send` never sends by itself. Unless the user turned on agent sending, the draft moves to the Review lane and the command exits with code 3 (`approval_required`): tell the user, do not retry. There is no `--yes`. ## Exit codes | code | meaning | | --- | --- | | 0 | ok | | 1 | error | | 2 | usage | | 3 | approval required: tell the user | | 4 | not found | | 5 | Mermoz is not running | ## Overview ```text Your Mermoz mailbox from the terminal. Instant, offline, agent-friendly. Usage: mermoz [OPTIONS] Commands: accounts List connected accounts and their sync state add-account Connect a Gmail account (opens the browser). reconnect Sign an account in to Google again, keeping its mail (opens the browser). Needed when `mermoz accounts` says "sign in again" list List threads, newest first labels List your Gmail labels ("mailboxes") with thread counts contacts Search the directory built from email signatures (name, email or company) contact Show one person's card and recent threads search Full-text search: every word must match, as a whole word, accents and case aside; from:, to:, subject: restrict to a field. Best matches first thread Show a thread with all messages conversation Split or join conversations (Gmail threads read as one chat) files Files shared in any conversation, newest first, optionally matching a name attachments List a thread's attachments, or save them with --out status Set the status of one or more threads priority Set priority: none, urgent, high, normal, low project Add a thread to a project (a Gmail label, created if missing); "none" clears all accept Accept the AI's suggested status and projects for threads (marks them read), or for a whole column with --column (optionally only one --to/--to-project group) reject Turn down the AI's suggestion for threads: they stay where they are and are not suggested again until new mail arrives resort Stop a whole-mailbox sort and clear the suggestions it left that nobody reviewed. Accepted and turned-down suggestions are kept suggestions The AI's pending suggestions in a status column, grouped by where they go, and how far background sorting of that column has got; with --to/--to-project, the threads of that one group (accept them with `mermoz accept`) due Set a follow-up date (YYYY-MM-DD); "none" clears read Mark a thread read or unread draft Create and manage drafts drive Google Drive files of a thread, their text, search, saving attachments. Connecting Drive and sharing files happen in the app only send Ask to send a draft. Unless enabled by the user, it waits for approval in Mermoz (exit 3) statuses Workflow statuses projects Projects feedback Report friction with this CLI so it can improve chat Ask the account's AI about a thread (kept with the thread, like in the app). Without a question, shows the conversation so far. Proposals are listed, never applied feed The Feed: open mail as cards, one thing to do each, in order (now, today, this week, waiting on others, can wait) later Put a thread off until a time said in plain words ("vendredi soir", "friday 7pm", "dans 3 jours", "15 nov"; default tomorrow morning). It leaves its column and comes back Unread then, or when new mail arrives. "none" brings it back now do Ask Mermoz to do something to many threads in plain words ("archive all messages past 5 months not in done"). The account's AI turns it into a plan; Mermoz shows what it would change and how many threads. Dry run unless --yes. Nothing here can send, reply to or forward mail. mermoz do "archive everything from news.example older than a month" mermoz do "archive everything from news.example older than a month" --yes mermoz do "delete the promos from shop.example" --yes --confirm 37 mermoz do --plan plan.json A plan written by hand (see docs/protocol.md) mermoz do --undo bop_8f2c Put every thread of a run back router Instant sorting: the provider in use, whether it has a key, and today's calls. Keys and the provider are changed in the app (Settings › Developer) sync Trigger an immediate sync mcp Run an MCP server on stdio help Print this message or the help of the given subcommand(s) Options: --json Machine-readable JSON output -h, --help Print help -V, --version Print version Examples: mermoz list --status todo Threads waiting on you mermoz search "from:marc audit" --json Full-text search, JSON output mermoz thread M-1287 Read a whole thread mermoz thread M-1287 --conversation Read every thread of its conversation mermoz list --conversations --status todo One row per conversation mermoz conversation split M-1290 Take a thread out of its conversation mermoz files invoice Files shared anywhere, by name mermoz attachments M-1287 --out /tmp/a Save a thread's attachments mermoz status M-1287 waiting Change a thread's status mermoz draft reply M-1287 --file r.txt Draft a reply (never sends) mermoz draft new --to a@x.com --body hi --attach plan.pdf --attach photo.jpg Draft with files (25 MB in total at most) mermoz send dft_8f2c Ask to send; the user approves in Mermoz mermoz chat M-1287 "should I accept?" Ask the AI about a thread (proposals only) mermoz do "archive mail older than 5 months not in done" Plan a bulk change and show it (--yes runs it) Exit codes: 0 ok · 1 error · 2 usage · 3 approval required (tell the user) · 4 not found · 5 Mermoz not running ``` ## Commands ### mermoz accounts List connected accounts and their sync state ```text List connected accounts and their sync state Usage: mermoz accounts [OPTIONS] Options: --json Machine-readable JSON output -h, --help Print help ``` ### mermoz add-account Connect a Gmail account (opens the browser). ```text Connect a Gmail account (opens the browser). A company Google Workspace that blocks Mermoz can sign in through its own Google Cloud OAuth client (Desktop app) instead: mermoz add-account --client-json ~/Downloads/client_secret_….json mermoz add-account --client-id ID --client-secret SECRET That client is stored with the account and used for its Drive too. Usage: mermoz add-account [OPTIONS] Options: --client-json The client_secret_*.json downloaded from Google Cloud --json Machine-readable JSON output --client-id OAuth client ID (with --client-secret) --client-secret OAuth client secret (with --client-id) --wait Wait for the browser sign-in to finish and say how it went -h, --help Print help (see a summary with '-h') ``` ### mermoz reconnect Sign an account in to Google again, keeping its mail (opens the browser). Needed when `mermoz accounts` says "sign in again" ```text Sign an account in to Google again, keeping its mail (opens the browser). Needed when `mermoz accounts` says "sign in again" Usage: mermoz reconnect [OPTIONS] Arguments: Account id or email Options: --json Machine-readable JSON output -h, --help Print help ``` ### mermoz list List threads, newest first ```text List threads, newest first Usage: mermoz list [OPTIONS] Options: --json Machine-readable JSON output --status Status key(s), comma separated (unread, todo, waiting, archive, ...) --project Project, i.e. Gmail label name (e.g. "Clients/Acme") --account Account email or id --label