{
  "data": {
    "a": {
      "slug": "email-agent-mcp",
      "name": "email-agent-mcp",
      "vendor": "UseJunior",
      "vendorUrl": "https://github.com/UseJunior/email-agent-mcp",
      "kind": "mcp",
      "category": "mailbox-access",
      "summary": "email-agent-mcp is an open-source local MCP server from UseJunior that lets an agent read, search, draft, send and file mail in a person's own Microsoft 365 or Gmail mailbox, with allowlists and delete disabled by default.",
      "url": "https://www.anchorterminal.com/tools/email-agent-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/email-agent-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/email-agent-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/email-agent-mcp.json",
      "dns": "email-agent-mcp.grade.anchorterminal.com",
      "repo": "https://github.com/UseJunior/email-agent-mcp",
      "license": "Apache-2.0",
      "transports": [
        "stdio"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "email-agent-mcp"
        }
      ],
      "auth": "oauth",
      "authNotes": "Signs in to the person's own mailbox with OAuth: Microsoft delegated scopes through MSAL, or Gmail `gmail.readonly` and `gmail.compose`. Tokens are kept in the OS keychain and local files under `~/.email-agent-mcp/`. For Gmail, a UseJunior-run broker on Vercel holds the OAuth client secret and relays code exchange and token refresh; mail itself goes straight to Google.",
      "pricing": "free",
      "pricingNotes": "Free, Apache-2.0 software run locally with npx. It uses the person's existing Microsoft 365 or Gmail account; there is nothing to buy from UseJunior.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the repository or README (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": 27,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 394,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://github.com/UseJunior/email-agent-mcp#readme",
      "registryName": "io.github.UseJunior/email-agent-mcp",
      "capabilities": [
        "mailbox.read",
        "mailbox.search",
        "mailbox.send",
        "mailbox.drafts"
      ],
      "tags": [
        "open-source",
        "local",
        "mcp",
        "mcp-registry",
        "oauth",
        "microsoft-graph",
        "gmail",
        "typescript",
        "approvals",
        "pre-1.0"
      ],
      "lastRelease": "2026-11-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65.9,
        "grade": "B",
        "agentReady": false,
        "rank": 397,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 4,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 79,
          "maintenance": 84,
          "payments": 60,
          "reliability": 50,
          "schema": 79,
          "security": 67,
          "transparency": 42
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "A person who wants an agent working in their own Outlook mailbox, or reading and drafting in Gmail, with guardrails.",
        "strengths": [
          "The `observe` profile requests read-only Microsoft scopes and drops every write tool",
          "Send allowlists, delete disabled by default and sanitised errors that strip keys and paths",
          "Tools carry readOnlyHint and destructiveHint annotations and are typed",
          "Apache-2.0, CI with tests and coverage, semgrep and semver tags with GitHub Releases",
          "Listed in the official MCP registry as io.github.UseJunior/email-agent-mcp, current at 0.5.0"
        ],
        "weaknesses": [
          "Pre-1.0, and every commit is by one maintainer",
          "On Gmail, labelling, flagging, marking read and moving return NOT_SUPPORTED",
          "Gmail sign-in and token refresh pass through a UseJunior-hosted broker that holds the client secret",
          "No audit log of what the agent did beyond the mailbox's own history",
          "Changing from `full` to `observe` on an existing mailbox doesn't shrink the OAuth token's scopes"
        ],
        "agentNotes": [
          "Start with `get_mailbox_status`, then `list_emails` or `search_emails` before reading whole threads",
          "Ask the person to set the send allowlist before planning any `send_email` or `reply_to_email`",
          "Prefer `create_draft` and 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.modify` to work around it",
          "Don't plan deletes; they need an operator environment variable and a caller flag"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 65.9
          }
        ],
        "editorialScores": {
          "ergonomics": 79,
          "maintenance": 84,
          "payments": 60,
          "reliability": 50,
          "schema": 79,
          "security": 67,
          "transparency": 62
        },
        "provenanceScore": 22,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npx -y email-agent-mcp",
        "claudeCode": "claude mcp add email-agent-mcp -- npx -y email-agent-mcp",
        "config": {
          "mcpServers": {
            "email-agent-mcp": {
              "args": [
                "-y",
                "email-agent-mcp"
              ],
              "command": "npx",
              "type": "stdio"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/mailbox.read",
        "tool": "https://letme.dev/email-agent-mcp"
      },
      "area": "communication",
      "provenance": {
        "legalEntity": "",
        "domain": "usejunior.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/UseJunior/email-agent-mcp/releases",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "Published by UseJunior; the README links usejunior.com, and SECURITY.md asks for reports to the maintainer's usejunior.com address with acknowledgement within 3 business days.",
          "No terms or privacy policy apply to the local server; the Gmail OAuth broker is a UseJunior-hosted service whose own terms weren't found.",
          "The repository's CHANGELOG.md points to GitHub Releases as the canonical changelog.",
          "GitHub's API refused our requests for its rate limit on 6 November 2026, so stars, issues and release pages weren't read; history and tags come from a shallow clone."
        ],
        "score": 22
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/email-agent-mcp.json",
      "live": {
        "slug": "email-agent-mcp",
        "versions": [
          {
            "registry": "github",
            "name": "UseJunior/email-agent-mcp",
            "version": "v0.5.0",
            "released": "2026-11-05",
            "seenAt": "2026-11-06T23:23:57.05382018Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.UseJunior/email-agent-mcp",
            "version": "0.5.0",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "email-agent-mcp",
            "version": "0.5.0",
            "seenAt": "2026-11-06T23:23:56.286985184Z"
          }
        ],
        "githubStars": 7,
        "npmWeekly": 394,
        "securityTxt": {
          "url": "https://usejunior.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:16.157898877Z"
        },
        "updatedAt": "2026-11-07T18:16:28.95801333Z"
      }
    },
    "answer": "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 \u0026 trust.",
    "b": {
      "slug": "himalaya",
      "name": "Himalaya",
      "vendor": "Pimalaya",
      "vendorUrl": "https://pimalaya.org",
      "kind": "sdk",
      "category": "mailbox-access",
      "summary": "Himalaya is an open-source command-line email client from the Pimalaya project. It lists, searches, reads, composes and sends mail over IMAP, SMTP, JMAP, the Gmail API, Microsoft Graph and local stores, with JSON output for scripts and agents.",
      "url": "https://www.anchorterminal.com/tools/himalaya",
      "markdownUrl": "https://www.anchorterminal.com/tools/himalaya.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/himalaya.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/himalaya.json",
      "dns": "himalaya.grade.anchorterminal.com",
      "repo": "https://github.com/pimalaya/himalaya",
      "license": "MIT OR Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "cargo",
          "name": "himalaya"
        }
      ],
      "auth": "mixed",
      "authNotes": "Himalaya issues no credential of its own. It signs in to the mailbox with what the provider accepts, which is an app password or account password over SASL for IMAP and SMTP, a bearer token or basic auth for JMAP, and one OAuth 2.0 bearer token for the Gmail API or Microsoft Graph. Each secret is read from a shell command such as a password manager, or from a raw value in the config file. Version 2 ships no OAuth flow, so tokens come from an external broker such as `ortie` and an OAuth app the owner registers with Google or Microsoft.",
      "pricing": "free",
      "pricingNotes": "Free software with nothing to buy, and the sponsor page states there is no paid tier. An agent can start with the binary and a mailbox credential. Pimalaya sells optional partnerships, from EUR 3,000 a year for email providers and EUR 5,000 for integrators, and describes a EUR 12 a year sign-in service for Gmail and Microsoft 365 as planned and not built (checked 2026-10-09).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, the source or pimalaya.org (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 7412,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://github.com/pimalaya/himalaya",
      "capabilities": [
        "mailbox.read",
        "mailbox.search",
        "mailbox.send",
        "mailbox.drafts"
      ],
      "tags": [
        "open-source",
        "local",
        "cli",
        "rust",
        "free",
        "no-card",
        "imap",
        "smtp",
        "jmap",
        "gmail",
        "microsoft-graph",
        "json-output"
      ],
      "lastRelease": "2026-10-02",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 57.9,
        "grade": "C",
        "agentReady": false,
        "rank": 774,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 6,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 65,
          "maintenance": 78,
          "payments": 60,
          "reliability": 84,
          "schema": 70,
          "security": 43,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-02"
        },
        "negative": -9,
        "negativeNotes": [
          "2 October 2026. Until 2.2.1, `message send` passed the `Bcc:` header through SMTP unchanged, so every recipient could see the blind recipients. Issue #747 reported it against 2.1.0 on 12 September 2026, the fix was committed on 26 September and released on 2 October, and the changelog documents it. No security advisory was published. Fixed and documented, so the smaller deduction applies (https://github.com/pimalaya/himalaya/issues/747)",
          "2 October 2026. Version 2.2.0 and 2.2.1, a minor step from 2.1.0 tagged the same day, carry two changes the changelog marks BREAKING (a `pimdir` store written before io-pimdir 0.4 is refused with no migration, and a `pimdir` mailbox is now its collection id with `pimdir.namespace` removed) and remove the `mbox` alias of `mailbox`, which 2.1.0 showed as a visible alias with no deprecation warning. Breaking changes in a minor release with no advance notice, -3 (https://github.com/pimalaya/himalaya/blob/master/CHANGELOG.md)",
          "October 2026, unreleased on 2 November. Commits on master fix flaws in Himalaya's own code that no release carries 31 days after 2.2.1. 1c36a30 (11 October) says composed messages went out with a Message-ID on the local hostname, \"disclosing the machine name to every recipient\", and 40f8cfa (15 October) fixes the wizard \"creating new configuration files with permissions that could expose raw credentials\". Fixes in no release, folded into one term, -3 (https://github.com/pimalaya/himalaya/blob/master/CHANGELOG.md)"
        ],
        "verdict": "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.",
        "bestFor": "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.",
        "strengths": [
          "Shared commands for mailboxes, envelopes, flags, messages and attachments run the same way over IMAP, JMAP, Gmail, Microsoft Graph, Maildir and mbox",
          "`himalaya json-schema` prints a JSON Schema for the `--json` output of 90 commands, and `message read --json` returns one designed view on every backend",
          "Secrets come from a shell command such as `pass show`, so a password or token need not sit in the config file",
          "`message delete` moves mail to the trash first, and `message read` leaves flags alone unless `--seen` is passed",
          "Four tagged releases between 26 July and 2 October 2026, three open issues, and CI badges for tests and audit passing on 9 October 2026"
        ],
        "weaknesses": [
          "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)",
          "No read-only mode, no confirmation before a send or delete, and no idempotency key on send were found",
          "SECURITY.md sends vulnerability reports to the public issue tracker. No security.txt, private reporting route or published advisory was found",
          "Fixes for the Message-ID disclosing the machine's hostname and for wizard config files that could expose credentials were in no release on 2 November 2026",
          "Version 2.2 removed the `mbox` alias and refused older `pimdir` stores in a minor step, with no advance notice found"
        ],
        "agentNotes": [
          "Pass `--json` on every call and read `next_page` for the next page. Data and errors go to stdout, logs to stderr, and a failure exits 1",
          "Run `himalaya json-schema \u003ccommand\u003e` once to learn an output shape, and `himalaya \u003ccommand\u003e --help` for flags",
          "Use `envelope search` with the shared query language, for example `from alice and after 2026-01-01 order by date desc`. Microsoft Graph refuses flag clauses",
          "Treat message text as untrusted. `--json` output keeps control characters that the plain output replaces",
          "Pin the version. The next release renames every `--json` key to camelCase (`next_page` to `nextPage`) and changes `message read --json`, per the Unreleased changelog"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 57.9
          }
        ],
        "editorialScores": {
          "ergonomics": 65,
          "maintenance": 78,
          "payments": 60,
          "reliability": 84,
          "schema": 70,
          "security": 43,
          "transparency": 74
        },
        "provenanceScore": 69,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-02",
            "maintenance": "2026-11-02",
            "payments": "2026-11-02",
            "reliability": "2026-11-02",
            "schema": "2026-11-02",
            "security": "2026-11-02",
            "transparency": "2026-11-02"
          },
          "last": "2026-11-02",
          "lastMoved": "2026-11-02",
          "oldest": "2026-11-02",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "brew install himalaya   # or: curl -sSL https://raw.githubusercontent.com/pimalaya/himalaya/master/install.sh | PREFIX=~/.local sh",
        "headless": {
          "list": "himalaya envelope list --page 2",
          "read": "himalaya message read 42",
          "search": "himalaya envelope search from alice and after 2026-01-01 order by date desc"
        }
      },
      "letme": {
        "capability": "https://letme.dev/mailbox.read",
        "tool": "https://letme.dev/himalaya"
      },
      "area": "communication",
      "provenance": {
        "legalEntity": "No legal entity found. Copyright Clément DOUIN (soywod)",
        "domain": "pimalaya.org",
        "domainRegistered": "2022-12-21",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/pimalaya/himalaya/blob/master/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "pimalaya.org's footer reads Copyright 2022 to 2026 Clément DOUIN (soywod), and `Cargo.toml` names the same author. No company or foundation is named on the pages read.",
          "No terms of service or privacy policy was found. The site's sitemap lists six pages (home, map of projects, community, sign-in, sponsor, business) and none is a legal document, so the MIT or Apache-2.0 licence stands in.",
          "pimalaya.org/.well-known/security.txt and /security.txt both return 404. SECURITY.md in the repository lists 2.x as the supported line and gives the public issue tracker for reports.",
          "RDAP for pimalaya.org gives a registration date of 2022-12-21 and OVH sas as registrar.",
          "The software runs on the owner's machine and connects to the owner's mail servers, so no vendor endpoint exists."
        ],
        "score": 69
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/himalaya.json",
      "live": {
        "slug": "himalaya",
        "versions": [
          {
            "registry": "github",
            "name": "pimalaya/himalaya",
            "version": "v2.2.1",
            "released": "2026-10-02",
            "seenAt": "2026-11-06T23:32:51.002856109Z"
          }
        ],
        "githubStars": 7599,
        "securityTxt": {
          "url": "https://pimalaya.org/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:51.051696499Z"
        },
        "domain": {
          "domain": "pimalaya.org",
          "registered": "2022-12-21",
          "source": "https://rdap.publicinterestregistry.org/rdap/domain/pimalaya.org",
          "checkedAt": "2026-11-01T14:25:17.014636126Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/pimalaya/himalaya/master/CHANGELOG.md",
            "kind": "deprecations",
            "status": 304,
            "checkedAt": "2026-11-07T14:22:53.214616222Z",
            "changedAt": "2026-11-06T13:43:53.217020346Z",
            "fingerprint": "ffb2c3c9d5a4"
          }
        ],
        "github": {
          "repo": "pimalaya/himalaya",
          "checkedAt": "2026-11-02T09:16:16.877101733Z",
          "stars": 7574,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-02T07:10:29Z",
          "openIssues": 6,
          "openPRs": 0,
          "issuesOpened90d": 39,
          "issuesClosed90d": 44,
          "prsMerged90d": 24,
          "ci": {
            "branch": "master",
            "runs": 50,
            "success": 37,
            "failure": 13,
            "other": 0,
            "latest": "failure",
            "latestAt": "2026-11-02T07:14:34Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 0,
            "medianDays": 1.9
          }
        },
        "updatedAt": "2026-11-07T16:01:51.051696499Z"
      }
    },
    "edges": [
      {
        "by": 34,
        "category": "reliability",
        "leads": "himalaya",
        "name": "Reliability",
        "reasons": {
          "a": "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.",
          "b": "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)."
        },
        "scores": {
          "a": 50,
          "b": 84
        }
      },
      {
        "by": 30,
        "category": "transparency",
        "leads": "himalaya",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 42,
          "b": 72
        }
      },
      {
        "by": 24,
        "category": "security",
        "leads": "email-agent-mcp",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "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.",
          "b": "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)."
        },
        "scores": {
          "a": 67,
          "b": 43
        }
      },
      {
        "by": 14,
        "category": "ergonomics",
        "leads": "email-agent-mcp",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "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.",
          "b": "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)."
        },
        "scores": {
          "a": 79,
          "b": 65
        }
      },
      {
        "by": 9,
        "category": "schema",
        "leads": "email-agent-mcp",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "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.",
          "b": "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)."
        },
        "scores": {
          "a": 79,
          "b": 70
        }
      },
      {
        "by": 6,
        "category": "maintenance",
        "leads": "email-agent-mcp",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 84,
          "b": 78
        }
      }
    ],
    "facts": [
      {
        "a": "MCP server",
        "b": "SDK + MCP",
        "name": "Kind"
      },
      {
        "a": "UseJunior",
        "b": "Pimalaya",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "stdio",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "MIT OR Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "27",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "io.github.UseJunior/email-agent-mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-11-05",
        "b": "2026-10-02",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Privacy policy last updated"
      },
      {
        "a": "394 npm/wk",
        "b": "7.4k stars",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.3/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "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 \u0026 trust.",
        "question": "Which is better for AI agents, email-agent-mcp or Himalaya?"
      },
      {
        "answer": "email-agent-mcp runs on your own machine, with no hosted endpoint listed. No hosted endpoint is listed for Himalaya.",
        "question": "Can an agent call email-agent-mcp and Himalaya without installing anything?"
      },
      {
        "answer": "Yes. email-agent-mcp is open source (Apache-2.0). Himalaya is open source (MIT OR Apache-2.0).",
        "question": "Are email-agent-mcp and Himalaya open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 79 against 70",
          "Agent ergonomics, 79 against 65",
          "Security \u0026 auth, 67 against 43",
          "Maintenance \u0026 community, 84 against 78"
        ],
        "also": [
          "Runs on your own machine",
          "No incidents deducted, where Himalaya loses 9 points for them"
        ],
        "goodFor": "A person who wants an agent working in their own Outlook mailbox, or reading and drafting in Gmail, with guardrails.",
        "slug": "email-agent-mcp",
        "watchFor": "Pre-1.0, and every commit is by one maintainer"
      },
      {
        "aheadOn": [
          "Reliability, 84 against 50",
          "Transparency \u0026 trust, 72 against 42"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "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.",
        "slug": "himalaya",
        "watchFor": "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)"
      }
    ],
    "history": {
      "email-agent-mcp": null,
      "himalaya": [
        {
          "causes": [
            "event",
            "time"
          ],
          "date": "2026-11-02",
          "delta": -6.9,
          "from": 64.8,
          "fromGrade": "B",
          "to": 57.9,
          "toGrade": "C"
        },
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-10-28",
          "delta": 0.2,
          "from": 64.6,
          "fromGrade": "B",
          "to": 64.8,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 64.5,
          "fromGrade": "B",
          "to": 64.6,
          "toGrade": "B"
        }
      ]
    },
    "job": {
      "capability": "mailbox.read",
      "name": "Mailbox access"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-email-vs-email-agent-mcp.json",
        "title": "Aurinko Email API vs email-agent-mcp",
        "url": "https://www.anchorterminal.com/compare/aurinko-email-vs-email-agent-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-email-vs-himalaya.json",
        "title": "Aurinko Email API vs Himalaya",
        "url": "https://www.anchorterminal.com/compare/aurinko-email-vs-himalaya"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudpost-vs-email-agent-mcp.json",
        "title": "CloudPost vs email-agent-mcp",
        "url": "https://www.anchorterminal.com/compare/cloudpost-vs-email-agent-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudpost-vs-himalaya.json",
        "title": "CloudPost vs Himalaya",
        "url": "https://www.anchorterminal.com/compare/cloudpost-vs-himalaya"
      },
      {
        "json": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-emailengine.json",
        "title": "email-agent-mcp vs EmailEngine",
        "url": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-emailengine"
      },
      {
        "json": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-fastmail.json",
        "title": "email-agent-mcp vs Fastmail API (JMAP)",
        "url": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-fastmail"
      },
      {
        "json": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-gmail-api.json",
        "title": "email-agent-mcp vs Gmail API",
        "url": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-gmail-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-nylas-email.json",
        "title": "email-agent-mcp vs Nylas Email API",
        "url": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-nylas-email"
      },
      {
        "json": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-outlook-mail-graph.json",
        "title": "email-agent-mcp vs Outlook Mail (Microsoft Graph)",
        "url": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-outlook-mail-graph"
      },
      {
        "json": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-unipile.json",
        "title": "email-agent-mcp vs Unipile",
        "url": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-unipile"
      },
      {
        "json": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-zoho-mail.json",
        "title": "email-agent-mcp vs Zoho Mail API",
        "url": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-zoho-mail"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emailengine-vs-himalaya.json",
        "title": "EmailEngine vs Himalaya",
        "url": "https://www.anchorterminal.com/compare/emailengine-vs-himalaya"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fastmail-vs-himalaya.json",
        "title": "Fastmail API (JMAP) vs Himalaya",
        "url": "https://www.anchorterminal.com/compare/fastmail-vs-himalaya"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gmail-api-vs-himalaya.json",
        "title": "Gmail API vs Himalaya",
        "url": "https://www.anchorterminal.com/compare/gmail-api-vs-himalaya"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalaya-vs-nylas-email.json",
        "title": "Himalaya vs Nylas Email API",
        "url": "https://www.anchorterminal.com/compare/himalaya-vs-nylas-email"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalaya-vs-outlook-mail-graph.json",
        "title": "Himalaya vs Outlook Mail (Microsoft Graph)",
        "url": "https://www.anchorterminal.com/compare/himalaya-vs-outlook-mail-graph"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalaya-vs-unipile.json",
        "title": "Himalaya vs Unipile",
        "url": "https://www.anchorterminal.com/compare/himalaya-vs-unipile"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalaya-vs-zoho-mail.json",
        "title": "Himalaya vs Zoho Mail API",
        "url": "https://www.anchorterminal.com/compare/himalaya-vs-zoho-mail"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 34,
        "edge": "himalaya",
        "email-agent-mcp": 50,
        "himalaya": 84,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 9,
        "edge": "email-agent-mcp",
        "email-agent-mcp": 79,
        "himalaya": 70,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 14,
        "edge": "email-agent-mcp",
        "email-agent-mcp": 79,
        "himalaya": 65,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 24,
        "edge": "email-agent-mcp",
        "email-agent-mcp": 67,
        "himalaya": 43,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "email-agent-mcp": 60,
        "himalaya": 60,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 6,
        "edge": "email-agent-mcp",
        "email-agent-mcp": 84,
        "himalaya": 78,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 30,
        "edge": "himalaya",
        "email-agent-mcp": 42,
        "himalaya": 72,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "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 \u0026 trust. Both do mailbox access.",
    "tasks": null,
    "tutorials": [],
    "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-himalaya",
    "json": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-himalaya.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-himalaya.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-himalaya.min.md"
  },
  "markdown": "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 \u0026 trust. Both do mailbox access.\n\n- email-agent-mcp: grade B, 65.9/100, rank #397 of 1510. Markdown https://www.anchorterminal.com/tools/email-agent-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/email-agent-mcp.json\n- Himalaya: grade C, 57.9/100, rank #774 of 1510. Markdown https://www.anchorterminal.com/tools/himalaya.md · JSON https://www.anchorterminal.com/api/v1/tools/himalaya.json\n- Best mailbox access APIs for AI agents: https://www.anchorterminal.com/best/mailbox-access/index.md\n- All 55 mailboxes comparisons: https://www.anchorterminal.com/compare/mailbox-access/index.md\n\n## Which one, for what\n\n### email-agent-mcp (B)\n\nGood for: A person who wants an agent working in their own Outlook mailbox, or reading and drafting in Gmail, with guardrails.\n\nAhead on:\n- Schema \u0026 documentation, 79 against 70\n- Agent ergonomics, 79 against 65\n- Security \u0026 auth, 67 against 43\n- Maintenance \u0026 community, 84 against 78\n\nAlso in its favour:\n- Runs on your own machine\n- No incidents deducted, where Himalaya loses 9 points for them\n\nWatch for: Pre-1.0, and every commit is by one maintainer\n\n### Himalaya (C)\n\nGood 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.\n\nAhead on:\n- Reliability, 84 against 50\n- Transparency \u0026 trust, 72 against 42\n\nAlso in its favour:\n- Free to start without a card\n\nWatch 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)\n\n\n## Why the edge\n\n### Reliability: Himalaya +34\n\n- 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.\n- 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).\n\n### Transparency \u0026 trust: Himalaya +30\n\n- 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.\n- 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.\n\n### Security \u0026 auth: email-agent-mcp +24\n\n- 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.\n- 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).\n\n### Agent ergonomics: email-agent-mcp +14\n\n- 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.\n- 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).\n\n### Schema \u0026 documentation: email-agent-mcp +9\n\n- 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.\n- 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).\n\n### Maintenance \u0026 community: email-agent-mcp +6\n\n- 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.\n- 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.\n\n## Score by category\n\n| Category | Weight | email-agent-mcp | Himalaya | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 50 | 84 | Himalaya +34 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 79 | 70 | email-agent-mcp +9 |\n| Agent ergonomics | 13% (16.2 this run) | 79 | 65 | email-agent-mcp +14 |\n| Security \u0026 auth | 14% (17.5 this run) | 67 | 43 | email-agent-mcp +24 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 60 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 84 | 78 | email-agent-mcp +6 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 42 | 72 | Himalaya +30 |\n| Negative events | ≤15 | 0 | -9 | |\n| **Total** | | **65.9 · B** | **57.9 · C** | |\n\n## Facts side by side\n\n| Fact | email-agent-mcp | Himalaya |\n| --- | --- | --- |\n| Kind | MCP server | SDK + MCP |\n| Vendor | UseJunior | Pimalaya |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports | stdio |  |\n| Auth | OAuth | OAuth or key |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Apache-2.0 | MIT OR Apache-2.0 |\n| Tools exposed | 27 | none |\n| Read-only variant documented | yes | no |\n| llms.txt | no | no |\n| MCP registry | `io.github.UseJunior/email-agent-mcp` | not listed |\n| Last release | 2026-11-05 | 2026-10-02 |\n| Terms last updated | no document linked | no document linked |\n| Privacy policy last updated | no document linked | no document linked |\n| Popularity | 394 npm/wk | 7.4k stars |\n| Agent reviews | none | 3.3/5 (4) |\n\n## How the scores have moved\n\n### email-agent-mcp\n\nNo score change since it was listed.\n\n### Himalaya\n\n- -6.9 on 2 November 2026 (B to C): negative event, time\n- +0.2 on 28 October 2026: new evidence\n- +0.1 on 27 October 2026: checklist\n\n## Verdicts\n\n**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.\n\n**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.\n\n## Before you call either\n\n### email-agent-mcp\n\n1. Start with `get_mailbox_status`, then `list_emails` or `search_emails` before reading whole threads\n2. Ask the person to set the send allowlist before planning any `send_email` or `reply_to_email`\n3. Prefer `create_draft` and let the person send, unless they asked for sending\n4. Expect NOT_SUPPORTED for label, flag, mark-read and move on Gmail, and don't request `gmail.modify` to work around it\n5. Don't plan deletes; they need an operator environment variable and a caller flag\n\n### Himalaya\n\n1. Pass `--json` on every call and read `next_page` for the next page. Data and errors go to stdout, logs to stderr, and a failure exits 1\n2. Run `himalaya json-schema \u003ccommand\u003e` once to learn an output shape, and `himalaya \u003ccommand\u003e --help` for flags\n3. Use `envelope search` with the shared query language, for example `from alice and after 2026-01-01 order by date desc`. Microsoft Graph refuses flag clauses\n4. Treat message text as untrusted. `--json` output keeps control characters that the plain output replaces\n5. Pin the version. The next release renames every `--json` key to camelCase (`next_page` to `nextPage`) and changes `message read --json`, per the Unreleased changelog\n\n## Questions\n\n### Which is better for AI agents, email-agent-mcp or Himalaya?\n\nemail-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 \u0026 trust.\n\n### Can an agent call email-agent-mcp and Himalaya without installing anything?\n\nemail-agent-mcp runs on your own machine, with no hosted endpoint listed. No hosted endpoint is listed for Himalaya.\n\n### Are email-agent-mcp and Himalaya open source?\n\nYes. email-agent-mcp is open source (Apache-2.0). Himalaya is open source (MIT OR Apache-2.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/email-agent-mcp-vs-himalaya.json, and with the fewest tokens: https://www.anchorterminal.com/compare/email-agent-mcp-vs-himalaya.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"email-agent-mcp\", \"b\": \"himalaya\"}`. From a terminal: `anchor compare email-agent-mcp himalaya`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/email-agent-mcp.json and https://www.anchorterminal.com/api/v1/tools/himalaya.json\n\n## Other comparisons with email-agent-mcp or Himalaya\n\n- [Aurinko Email API vs email-agent-mcp](https://www.anchorterminal.com/compare/aurinko-email-vs-email-agent-mcp.md)\n- [Aurinko Email API vs Himalaya](https://www.anchorterminal.com/compare/aurinko-email-vs-himalaya.md)\n- [CloudPost vs email-agent-mcp](https://www.anchorterminal.com/compare/cloudpost-vs-email-agent-mcp.md)\n- [CloudPost vs Himalaya](https://www.anchorterminal.com/compare/cloudpost-vs-himalaya.md)\n- [email-agent-mcp vs EmailEngine](https://www.anchorterminal.com/compare/email-agent-mcp-vs-emailengine.md)\n- [email-agent-mcp vs Fastmail API (JMAP)](https://www.anchorterminal.com/compare/email-agent-mcp-vs-fastmail.md)\n- [email-agent-mcp vs Gmail API](https://www.anchorterminal.com/compare/email-agent-mcp-vs-gmail-api.md)\n- [email-agent-mcp vs Nylas Email API](https://www.anchorterminal.com/compare/email-agent-mcp-vs-nylas-email.md)\n- [email-agent-mcp vs Outlook Mail (Microsoft Graph)](https://www.anchorterminal.com/compare/email-agent-mcp-vs-outlook-mail-graph.md)\n- [email-agent-mcp vs Unipile](https://www.anchorterminal.com/compare/email-agent-mcp-vs-unipile.md)\n- [email-agent-mcp vs Zoho Mail API](https://www.anchorterminal.com/compare/email-agent-mcp-vs-zoho-mail.md)\n- [EmailEngine vs Himalaya](https://www.anchorterminal.com/compare/emailengine-vs-himalaya.md)\n- [Fastmail API (JMAP) vs Himalaya](https://www.anchorterminal.com/compare/fastmail-vs-himalaya.md)\n- [Gmail API vs Himalaya](https://www.anchorterminal.com/compare/gmail-api-vs-himalaya.md)\n- [Himalaya vs Nylas Email API](https://www.anchorterminal.com/compare/himalaya-vs-nylas-email.md)\n- [Himalaya vs Outlook Mail (Microsoft Graph)](https://www.anchorterminal.com/compare/himalaya-vs-outlook-mail-graph.md)\n- [Himalaya vs Unipile](https://www.anchorterminal.com/compare/himalaya-vs-unipile.md)\n- [Himalaya vs Zoho Mail API](https://www.anchorterminal.com/compare/himalaya-vs-zoho-mail.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "email-agent-mcp vs Himalaya",
        "url": ""
      }
    ],
    "description": "email-agent-mcp scores 65.9 (B) to Himalaya's 57.9 (C) for mailbox access. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "email-agent-mcp B 65.9",
      "Himalaya C 57.9",
      "scores"
    ],
    "h1": "email-agent-mcp vs Himalaya",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/email-agent-mcp-vs-himalaya",
    "published": "2026-10-01",
    "section": "tools",
    "title": "email-agent-mcp vs Himalaya for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/email-agent-mcp-vs-himalaya"
  },
  "tokens": {
    "markdown": 4650,
    "slim": 2880
  },
  "version": 1
}
