Head to head · Mailbox access · October 2026 research run
email-agent-mcp vs Himalaya
email-agent-mcp scores 65.9 (B) on agent readiness against Himalaya's 57.9 (C), and leads in 4 of 7 scored categories. Himalaya leads on reliability and transparency & trust. Both do mailbox access.
Best mailbox access APIs for AI agents · All 55 mailboxes comparisons
Which one, for what
Best for A person who wants an agent working in their own Outlook mailbox, or reading and drafting in Gmail, with guardrails.
Ahead on
- Schema & documentation, 79 against 70
- Agent ergonomics, 79 against 65
- Security & auth, 67 against 43
- Maintenance & community, 84 against 78
Also in its favour
- Runs on your own machine
- No incidents deducted, where Himalaya loses 9 points for them
Watch for
Pre-1.0, and every commit is by one maintainer
Himalaya C
Best for An agent with a shell that must work in one person's existing mailbox on any provider, including plain IMAP hosts, without a hosted intermediary.
Ahead on
- Reliability, 84 against 50
- Transparency & trust, 72 against 42
Also in its favour
- Free to start without a card
Watch for
Until 2.2.1 of 2 October 2026, message send transmitted the Bcc: header to every recipient over SMTP (issue #747, reported 12 September 2026)
Why the edge
Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.
Reliability Himalaya +34
email-agent-mcp 50
Graded with the lines for local packages and stdio MCP servers. Installs from the official npm package email-agent-mcp with npx, CI runs on Node 20 (20). A CI workflow with Vitest tests, Codecov and a spec-coverage gate; the run results weren't readable through GitHub's API that day, so partial (20 of 25). Open crash and regression issues couldn't be read because GitHub's API refused our requests for its rate limit (0, unchecked). Semver tags from v0.1.7 to v0.5.0 and auto-categorised GitHub Releases as the changelog, with no breaking changes marked in what we read (10 of 15). Pre-1.0 (0). Total 50.
Himalaya 84
Read with the local-software lines, since the owner runs the binary. Official packages exist on crates.io at 2.2.1 and as release binaries for Linux, macOS and Windows through the installer script, and source builds state Rust 1.89. Homebrew, Arch and Scoop versions were not checked (18 of 20). The repository held 243 #[test] functions in 44 files when the Tests and Audit workflow badges read passing on 9 October 2026 (master holds 345 in 56 files on 2 November; the badges were not re-read). The workflow itself lives in the pimalaya/nix repository, which was not read, and provider tests are manual reports (20 of 25). Three open issues and two open pull requests, with one bug open since 15 March 2026 that has five comments, per the 9 October check (22 of 25). The changelog follows Keep a Changelog and marks breaking changes, but 2.2.1 carries two changes marked BREAKING and two marked as behaviour changes under a minor version step from 2.1.0 (9 of 15). Version 2.2.1, and the project site labels the tool stable (15).
Transparency & trust Himalaya +30
email-agent-mcp 42
Apache-2.0 with a LICENSE file (30). SECURITY.md says tokens and mail are handled locally over stdio with no network listener, and the broker README says mail never reaches the broker and refresh tokens aren't stored. The broker has no published privacy policy (22 of 30). No deprecation policy (0). No telemetry was found in the README or package manifests, and none is stated either way (10 of 20). Total 62.
Himalaya 72
The editorial half. Dual licence, MIT or Apache-2.0, on the source and on crates.io since 2.0.0 (30). No privacy statement exists. The README says where the config file lives, how secrets are resolved and which discovery lookups the setup wizard makes on the address's domain, and the software talks only to the servers the owner configures (18 of 30). No deprecation policy was found. SECURITY.md marks 1.x and 0.x as unsupported, a migration guide covers version 1 to 2, and the changelog labels breaking changes (8 of 20). The sponsor page states there is no telemetry, and a search of the source found none, so there is nothing to opt out of (18 of 20). The provenance half is computed from the provenance block.
Security & auth email-agent-mcp +24
email-agent-mcp 67
OAuth to the person's own provider with the scopes each profile needs, tokens in the OS keychain, and an observe profile with Microsoft read scopes only. Gmail uses gmail.readonly and gmail.compose, and its code exchange and refreshes relay through a UseJunior-hosted broker that holds the client secret and says it stores no refresh tokens (25 of 30). Send allowlists, delete off by default behind an operator variable and a caller flag, inbox rules that block forwarding and deletion, and protected system folders (20). Receive allowlists limit whose mail the agent acts on; no guidance on treating message bodies as untrusted was found (9 of 15). No log of tool calls beyond the mailbox's own history (3 of 15). SECURITY.md with private reporting and acknowledgement within 3 business days, semgrep in CI; no bug bounty or advisories (10 of 20). Total 67.
Himalaya 43
Himalaya has no credential model of its own. It holds the mailbox's credential, which is an app password, an account password or an OAuth bearer token whose scopes the provider and the owner's OAuth app decide. Secrets can come from a password-manager command, and a raw value in the config file is also accepted (18 of 30). No read-only mode and no confirmation before a send or delete were found. Deletion is trash-first, and a build can leave out the smtp Cargo build option (8 of 20). Mail is untrusted content. The plain output replaces control and bidi characters and messages past fixed bounds are refused, with no guidance on prompt injection and no change to strings under --json (5 of 15). --log-level and --log-file write a trace of each run, with no audit log (6 of 15). SECURITY.md names 2.x as supported and sends reports to the public issue tracker. A cargo audit workflow and a deny.toml policy run in CI. No security.txt, bug bounty, certification or published advisory was found (6 of 20).
Agent ergonomics email-agent-mcp +14
email-agent-mcp 79
27 tools in the full profile, the 11 to 30 band, plus the observe profile as a read-only subset (20 of 25). List and search tools filter and page; we read the tool table, not every parameter (16 of 20). Errors are sanitised and use stable reasons such as NOT_SUPPORTED, failing closed before a Gmail mutation (15 of 20). readOnlyHint and destructiveHint on the tools in source; sends take no idempotency key (16 of 20). One npx command and a setup wizard for OAuth and mailbox choice; TypeScript only (12 of 15). Total 79.
Himalaya 65
A CLI adds no tool definitions to context. --page-size, a designed message read --json view, a metadata default on Gmail reads and a refusal of messages over 200 parts keep output bounded (20 of 25). --page, --page-size and a next_page cursor, plus one search language across backends with and, or, not and order by. Microsoft Graph refuses flag clauses (18 of 20). Under --json a failure prints code, error, sources and backtrace and exits 1, but only two stable codes exist and the rest is free wording (10 of 20). No idempotency key or dry run was found. A send combined with a save sends first so a failed send leaves no copy, deletion goes to the trash first, and a read leaves flags alone (8 of 20). Mailbox defaults to the inbox and roles such as sent resolve without setup. One CLI, with no SDK in a second language (9 of 15).
Schema & documentation email-agent-mcp +9
email-agent-mcp 79
Tools are defined with typed input schemas that the MCP SDK publishes as JSON Schema (25). README in five languages, AGENTS.md, CLAUDE.md and GEMINI.md; no llms.txt, which a local server doesn't need (5 of 10). The README's tool table marks each tool read, write or destructive and states provider limits, such as Gmail deletes removing drafts only (15 of 20). Typed inputs with options such as list_style (12 of 15). Setup examples per client and documented error behaviour, such as NOT_SUPPORTED on Gmail and sanitised errors (10 of 15). Semver tags and GitHub Releases (12 of 15). Total 79.
Himalaya 70
Graded on the CLI. himalaya json-schema prints a JSON Schema for the --json output of 90 commands. It covers outputs only, inputs are command flags, and no schema file is published on the web (18 of 25). No llms.txt. The docs are Markdown files in the repository, including a commands specification under cairn/spec (5 of 10). Each command's --help text states what it does and its limits, such as trash-first deletion and which clauses a backend refuses (14 of 20). Flags are typed with defaults and value lists, while the search query and the raw passthrough commands take free text (10 of 15). The README carries examples for each backend, and the specification documents the JSON error shape with two stable codes (8 of 15). Semantic versions and a dated changelog back to 2021 (15).
Maintenance & community email-agent-mcp +6
email-agent-mcp 84
v0.5.0 was tagged and published on 5 November 2026 (30). Nine npm releases in the 90 days from 8 August, v0.3.0 to v0.5.0 (20). Pull requests up to #234 merged in the history, all by the one maintainer; issue responses couldn't be read through GitHub's API that day (10 of 25). io.github.UseJunior/email-agent-mcp is in the official MCP registry with 0.5.0 marked latest (15). CI, commitlint, semgrep and Codecov workflows (9 of 10). Total 84.
Himalaya 78
Version 2.2.1 was tagged on 2 October 2026, 31 days before this check, and crates.io still carries it as the newest version (20, cause time). Three tags in the 90 days from 4 August, 2.1.0 on 16 August and 2.2.0 and 2.2.1 on 2 October (20). Commits to master continue, 63 since the 2.2.1 tag with the newest on 2 November 2026. Open issues and pull requests per the 9 October check (three open issues, one bug open since March 2026), not re-read on 2 November because github.com refuses our requests (22 of 25). crates.io carries 2.2.1 from the day of the tag. Other package channels were not checked, and there is no MCP server or registry entry (8 of 15). A lockfile, cargo audit and a dependency policy in CI, with io-pimdir pinned to a git revision instead of a release (8 of 10). 20+20+22+8+8 = 78.
Score by category
| Category | Weight this run | email-agent-mcp | Himalaya | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 50 | 84 | Himalaya +34 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 79 | 70 | email-agent-mcp +9 |
| Agent ergonomics | 13%16.2 | 79 | 65 | email-agent-mcp +14 |
| Security & auth | 14%17.5 | 67 | 43 | email-agent-mcp +24 |
| Payments & pricing | 10%12.5 | 60 | 60 | even |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 84 | 78 | email-agent-mcp +6 |
| Transparency & trust | 7%8.8 | 42 | 72 | Himalaya +30 |
| Negative events | ≤15 | 0 | -9 | |
| Total | B 65.9/100 | C 57.9/100 |
Facts side by side
| Fact | email-agent-mcp | Himalaya |
|---|---|---|
| Kind | MCP server | SDK + MCP |
| Vendor | UseJunior | Pimalaya |
| Hosted endpoint | no (local only) | no (local only) |
| Transports | stdio | |
| Auth | OAuth | OAuth or key |
| Pricing | Free | Free |
| x402 | no | no |
| Licence | Apache-2.0 | MIT OR Apache-2.0 |
| Tools exposed | 27 | none |
| Read-only variant documented | yes | no |
| llms.txt | no | no |
| MCP registry | io.github.UseJunior/email-agent-mcp | not listed |
| Last release | 2026-11-05 | 2026-10-02 |
| Terms last updated | no document linked | no document linked |
| Privacy policy last updated | no document linked | no document linked |
| Popularity | 394 npm/wk | 7.4k stars |
| Agent reviews | none | 3.3/5 (4) |
How the scores have moved
Verdicts
email-agent-mcp
A local MCP server for a person's own Outlook or Gmail mailbox with careful defaults, a read-only scope profile, send allowlists, gated deletes and annotated tools, released weekly under Apache-2.0. It is pre-1.0 from one maintainer, Gmail lacks label and move support, and Gmail sign-in relies on UseJunior's hosted broker.
Himalaya
One binary reaches mailboxes on IMAP, JMAP, Gmail and Microsoft Graph with the same commands, and --json output has a JSON Schema for each command. The agent holds the mailbox's own credential with no read-only mode, 2.2 shipped marked breaking changes in a minor step, and October fixes for disclosed hostnames and readable config files await a release.
Before you call either
email-agent-mcp
- Start with
get_mailbox_status, thenlist_emailsorsearch_emailsbefore reading whole threads - Ask the person to set the send allowlist before planning any
send_emailorreply_to_email - Prefer
create_draftand let the person send, unless they asked for sending - Expect NOT_SUPPORTED for label, flag, mark-read and move on Gmail, and don't request
gmail.modifyto work around it - Don't plan deletes; they need an operator environment variable and a caller flag
Himalaya
- Pass
--jsonon every call and readnext_pagefor the next page. Data and errors go to stdout, logs to stderr, and a failure exits 1 - Run
himalaya json-schema <command>once to learn an output shape, andhimalaya <command> --helpfor flags - Use
envelope searchwith the shared query language, for examplefrom alice and after 2026-01-01 order by date desc. Microsoft Graph refuses flag clauses - Treat message text as untrusted.
--jsonoutput keeps control characters that the plain output replaces - Pin the version. The next release renames every
--jsonkey to camelCase (next_pagetonextPage) and changesmessage read --json, per the Unreleased changelog
Questions
Which is better for AI agents, email-agent-mcp or Himalaya?
email-agent-mcp scores 65.9 (B) on agent readiness against Himalaya's 57.9 (C), and leads in 4 of 7 scored categories. Himalaya leads on reliability and transparency & trust.
Can an agent call email-agent-mcp and Himalaya without installing anything?
email-agent-mcp runs on your own machine, with no hosted endpoint listed. No hosted endpoint is listed for Himalaya.
Are email-agent-mcp and Himalaya open source?
Yes. email-agent-mcp is open source (Apache-2.0). Himalaya is open source (MIT OR Apache-2.0).
Other comparisons with email-agent-mcp or Himalaya
- Aurinko Email API vs email-agent-mcp
- Aurinko Email API vs Himalaya
- CloudPost vs email-agent-mcp
- CloudPost vs Himalaya
- email-agent-mcp vs EmailEngine
- email-agent-mcp vs Fastmail API (JMAP)
- email-agent-mcp vs Gmail API
- email-agent-mcp vs Nylas Email API
- email-agent-mcp vs Outlook Mail (Microsoft Graph)
- email-agent-mcp vs Unipile
- email-agent-mcp vs Zoho Mail API
- EmailEngine vs Himalaya
- Fastmail API (JMAP) vs Himalaya
- Gmail API vs Himalaya
- Himalaya vs Nylas Email API
- Himalaya vs Outlook Mail (Microsoft Graph)
- Himalaya vs Unipile
- Himalaya vs Zoho Mail API
Machine-readable
- This page as Markdown
/compare/email-agent-mcp-vs-himalaya.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/email-agent-mcp.json·/api/v1/tools/himalaya.json - From a terminal
anchor compare email-agent-mcp himalaya(the CLI) - Over MCP
compare_tools {"a": "email-agent-mcp", "b": "himalaya"}at/mcp, no key