Atomic Mail
Products
↓
Atomic VPN
Private VPN service
Atomic Mail
Secure encrypted email
Atomic Bot
One-click AI agent runner
Atomic Chat
Local & open-source AI super chat
Atomic Wallet
Secure, anonymous crypto wallet
Sigma Browser
Private AI browser
Atomic Agent
Local-first AI agent
How it worksUse casesCompareFAQBlog
Docs
Login
Blog
/
What Is JMAP? The JSON Email Protocol, Explained (vs IMAP)

What Is JMAP? The JSON Email Protocol, Explained (vs IMAP)

Engineering
7 min read
Mary Atomic
CMO
September 28, 2026
What Is JMAP? The JSON Email Protocol, Explained (vs IMAP)
Share this post
Copied!

What Is JMAP? The JSON Email Protocol, Explained (vs IMAP)

JMAP (JSON Meta Application Protocol) is a modern protocol for syncing email, calendars, and contacts between a client and a server, using plain JSON over HTTPS instead of the older IMAP and POP3 protocols. It was standardized by the IETF (RFC 8620 for the core protocol, RFC 8621 for mail) specifically to fix what made IMAP slow and unreliable on mobile connections – fewer round trips, no ambiguous state, and a wire format any web developer can read without a protocol-specific library.

TL;DR
  • JMAP is an IETF-standardized protocol (RFC 8620/8621) that syncs mail, calendars, and contacts as plain JSON over HTTPS, instead of IMAP's stateful, text-based connections.
  • Its core advantage is batching: a client can chain several method calls into one HTTP request – fetch a list of message ids, then fetch their full content – in a single round trip, using back-references between calls.
  • JMAP doesn't touch how mail moves between servers; that's still SMTP. JMAP replaces the client-facing side (previously IMAP for reading, SMTP for submission) with one unified API, including its own EmailSubmission method for sending.
  • Real implementations exist on both ends: servers like Cyrus, Stalwart, Apache James, and Twake; clients including Fastmail's own webmail, Thunderbird (via an add-on), and the Rust-based Ltt.rs.
  • An AI agent's mail tool benefits from JMAP the same way any client does: structured JSON in, structured JSON out, no MIME parsing required.

JMAP vs. IMAP vs. POP3

POP3 IMAP JMAP
Data format Raw text Raw text JSON
Sending mail Not supported (separate SMTP client needed) Not supported (separate SMTP client needed) Built in (EmailSubmission)
Multiple devices in sync No (downloads and often deletes) Yes Yes
Detecting what changed since last sync Not applicable CONDSTORE extension – not supported by Gmail, Yahoo, or Microsoft 365 Built-in state strings, supported universally by design
Conversation threading No Client-side guesswork (References/In-Reply-To headers) Server-side Thread objects, queried directly
Typical round trips for "list + read 5 emails" Several (one per message) Several (stateful SELECT/FETCH sequence) 1 (batched method calls in one HTTP request)
Push updates No Extension (IDLE), connection must stay open Built-in event push over HTTP
Easy to call from a web or agent app No No – needs a stateful mail library Yes – plain JSON over HTTPS

The sync-state and threading rows matter more than they look. Gmail, Yahoo, and Microsoft 365 – the three largest mailbox providers – don't support IMAP's CONDSTORE extension, so an IMAP client has no reliable way to ask "what changed since I last checked" and often ends up re-scanning whole folders. JMAP's state string is part of the core protocol, not an optional extension, so every compliant server has to support it.

A JMAP Request, in Practice

JMAP's actual advantage shows up when you chain calls. Fetching a mailbox's five most recent emails takes two method calls – first find which messages match, then fetch their content – back-referenced in a single HTTP POST:

json
{
  "using": ["urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail"],
  "methodCalls": [
    ["Email/query", {
      "accountId": "a1",
      "filter": { "inMailbox": "MB123" },
      "sort": [{ "property": "receivedAt", "isAscending": false }],
      "limit": 5
    }, "0"],
    ["Email/get", {
      "accountId": "a1",
      "#ids": {
        "resultOf": "0",
        "name": "Email/query",
        "path": "/ids"
      },
      "properties": ["subject", "from", "receivedAt", "preview"]
    }, "1"]
  ]
}

Email/query on its own only returns a list of message ids matching the filter – inMailbox takes the mailbox's actual id (fetched separately via Mailbox/get), not a literal string like "inbox". To get the actual emails, the second call, Email/get, references the first call's result directly through #ids instead of the client re-sending the id list itself. That back-reference – chaining a query and a fetch in one round trip – is JMAP's central design win over IMAP's multi-step SELECT/FETCHsequence, and it's the reason the whole request above still counts as a single HTTP call.

Who Actually Uses JMAP

JMAP isn't a paper standard – it runs in production on both ends of the connection:

  • Mail servers: Cyrus IMAP (which added native JMAP support), Stalwart Mail Server (JMAP-first by design), Apache James, and Twake Mail all implement the protocol.
  • Mail clients: Fastmail's own webmail runs on JMAP (Fastmail co-authored the spec), Thunderbird supports it through an add-on, and Ltt.rs is a terminal mail client built specifically around JMAP.
  • Migration and interop tooling: because JMAP's data model maps directly to JSON, tools syncing mail between providers often prefer it over screen-scraping IMAP folders.
  • AI email agents: an agent operating its own inbox needs mail data as clean, structured JSON rather than a raw protocol stream – the same shape of problem JMAP was built to solve for human-facing clients.

Why This Matters for AI Agent Email

An agent reading and sending mail through code benefits from JMAP for the same reason a human-facing client does: structured JSON in, structured JSON out, with the query-then-fetch batching shown above replacing several stateful IMAP round trips with one HTTP call. Atomic Mail Agentic runs on JMAP for exactly this reason – an agent's inbox operations are native JSON calls, not a REST wrapper stacked on an IMAP connection underneath.

Give your agent a real inbox
Native JMAP, not a REST wrapper over IMAP. Free while in open alpha.
Get started →

FAQ

Does JMAP replace SMTP? No – JMAP replaces the client-facing protocols (IMAP for reading, and the client's own SMTP submission for sending) with one API, including an EmailSubmission method that handles the "send" step. Mail transport between mail servers still runs over SMTP; JMAP only changes how a client talks to its own mail server.

Is JMAP replacing IMAP? Not universally – most consumer mail clients still speak IMAP – but for anything built API-first (web apps, AI agents, mobile clients written from scratch), JMAP is usually the simpler choice today, and it's what Fastmail, Cyrus, and Stalwart all support natively.

What is JMAP used for? Syncing email, calendars, and contacts between a client and server – concretely, it's what powers Fastmail's webmail, Thunderbird's JMAP add-on, and the mail sync layer for AI agents that need to read and send mail as structured data.

Do I need a special library to use JMAP? No – any HTTP client that can send JSON works. That's the point: no protocol-specific SDK required, unlike IMAP's stateful connection handling.

Is JMAP more secure than IMAP? It runs over HTTPS by default and has no legacy plaintext mode to misconfigure, which removes a class of mistakes IMAP setups are prone to – but security still depends on how the server implements auth and permissions.

Does an AI agent need to know JMAP to use an agent inbox? No – the agent calls tools (through an MCP server or a simple API), and JMAP is what those tools speak to the mail server underneath. The agent never has to see the protocol directly.

‍

‍

Posts you might have missed

Best Email APIs 2026
Comparisons
9 min read

Best Email APIs 2026

Every email API sends well. Almost none let your agent receive. Here's what breaks, and how the free tiers actually compare in August 2026.
Read more
Best MCP Servers in 2026
Comparisons
11 min read

Best MCP Servers in 2026

Most lists are somebody's taste. This one ranks 20 MCP servers by measured search demand and says how many you should actually run.
Read more
Build an AI Email Agent With Its Own Inbox in 30 Seconds (No Gmail, No OAuth, No Domain)
Guides
9 min read

Build an AI Email Agent With Its Own Inbox in 30 Seconds (No Gmail, No OAuth, No Domain)

Give an autonomous AI agent its own email inbox in about 30 seconds, with no Gmail, no OAuth, and no domain. A runnable guide: register, send, receive, and reply over JMAP.
Read more
Go through all posts

Product

How it worksUse casesCompareFAQDocumentationBlogEmail for humans

Compare to

AgentMailResendSendGridOpenMailHostingerNylas Mailtrap

Policies

Terms of UsePrivacy Policy
support@atomicmail.ai
Atomic Mail Agentic - Let your agents read, send, and react to email autonomously | Product Hunt

ATOMICMAIL SYSTEMS OÜ.
HARJU MAAKOND, TALLINN, KESKLINNA LINNAOSA, HARJU TN 3 // VANA-POSTI TN 2, 10146

© 2026 ATOMIC MAIL