Summary
There is no way to read Fastmail Notes through the CLI. Notes hold reference material worth
querying from a terminal or from an agent via the mcp server, and today they are invisible.
Current behaviour (v2.0.1)
No notes subcommand exists — the surface is mail (list/get/thread/search/send/move/
spam/mark-read/download/reply/forward), plus masked, contacts (CardDAV), calendars
and events (CalDAV), completions, and mcp.
The mail path can't reach them either. Per Fastmail's own docs, notes are
stored as messages in a special Notes IMAP folder,
so list mailboxes looks like it ought to surface them — but it doesn't:
$ fastmail-cli list mailboxes | grep -i note
$ fastmail-cli list mailboxes | grep -c '"name"'
15
All 15 mailboxes come back (Inbox, Archive, 2025, Drafts, Other, DMARC, caiios, Receipts,
Scheduled, Sent, Spam, Trash, VoteHatcher, pending, unimportant) and none is Notes. This isn't
client-side filtering: JmapClient::list_mailboxes (src/jmap/mod.rs:371) issues a plain
Mailbox/get with no role or name filter and returns whatever the server sends. With no mailbox
id, search and list emails have nothing to target.
Open question — worth resolving before designing anything
Two explanations fit the evidence above, and they lead to different implementations:
- Fastmail excludes the
Notes folder from JMAP Mailbox/get while still exposing it over
IMAP. If so, notes need a separate transport (IMAP), similar to how contacts and calendars
already reach outside JMAP to CardDAV/CalDAV.
- The test account has no
Notes folder at all because the Notes feature was never used, and
the folder is created lazily on first note. If so, JMAP may work fine and this is only a
discovery/documentation gap.
Checking an account with existing notes — via IMAP LIST and via Mailbox/get side by side —
settles it. I haven't done that, so treat the mechanism as unconfirmed.
Proposed scope
Read-only first, matching how contacts started:
notes list — enumerate notes (title, id, last modified)
notes get <id> — full note body
notes search -t <text> — full-text search over note bodies
Write support (create/update/delete) can follow if the transport turns out to be sane. Note
that Fastmail warns moving or renaming the Notes folder from an external client breaks note sync
on the web UI and iOS, so any write path should avoid touching the folder itself.
Exposing these through the mcp server matters as much as the CLI — notes are reference material,
which is exactly what an agent wants to read.
References
Summary
There is no way to read Fastmail Notes through the CLI. Notes hold reference material worth
querying from a terminal or from an agent via the
mcpserver, and today they are invisible.Current behaviour (v2.0.1)
No
notessubcommand exists — the surface is mail (list/get/thread/search/send/move/spam/mark-read/download/reply/forward), plusmasked,contacts(CardDAV),calendarsand
events(CalDAV),completions, andmcp.The mail path can't reach them either. Per Fastmail's own docs, notes are
stored as messages in a special
NotesIMAP folder,so
list mailboxeslooks like it ought to surface them — but it doesn't:All 15 mailboxes come back (Inbox, Archive, 2025, Drafts, Other, DMARC, caiios, Receipts,
Scheduled, Sent, Spam, Trash, VoteHatcher, pending, unimportant) and none is
Notes. This isn'tclient-side filtering:
JmapClient::list_mailboxes(src/jmap/mod.rs:371) issues a plainMailbox/getwith no role or name filter and returns whatever the server sends. With no mailboxid,
searchandlist emailshave nothing to target.Open question — worth resolving before designing anything
Two explanations fit the evidence above, and they lead to different implementations:
Notesfolder from JMAPMailbox/getwhile still exposing it overIMAP. If so, notes need a separate transport (IMAP), similar to how
contactsandcalendarsalready reach outside JMAP to CardDAV/CalDAV.
Notesfolder at all because the Notes feature was never used, andthe folder is created lazily on first note. If so, JMAP may work fine and this is only a
discovery/documentation gap.
Checking an account with existing notes — via IMAP
LISTand viaMailbox/getside by side —settles it. I haven't done that, so treat the mechanism as unconfirmed.
Proposed scope
Read-only first, matching how
contactsstarted:notes list— enumerate notes (title, id, last modified)notes get <id>— full note bodynotes search -t <text>— full-text search over note bodiesWrite support (
create/update/delete) can follow if the transport turns out to be sane. Notethat Fastmail warns moving or renaming the
Notesfolder from an external client breaks note syncon the web UI and iOS, so any write path should avoid touching the folder itself.
Exposing these through the
mcpserver matters as much as the CLI — notes are reference material,which is exactly what an agent wants to read.
References