mailkit is multi-account. Each account has one provider. Unsupported verbs error. They never silently succeed.
Verbgmailoutlookfastmailprotonmail
auth *, read, search, showyesyesyesyes
draft, reply, drafts, sendyesyesnoyes
archive, mark-read, mark-unread, trashyesyesnoyes
thread, label, labels, labels-createyesnonono
untrashyesnonono
filter *, reconcile, file-inboxyesnonono

Gmail

Full surface. Message ids and thread ids are Gmail ids. Search is Gmail search syntax.

Outlook

Read plus send, draft, reply, and the four organize verbs, over Microsoft Graph. Covers personal outlook.com / hotmail.com / live.com and Microsoft 365 work accounts. Setup is one browser consent — see Setup. Message ids are long opaque immutable Graph ids. An id keeps working after the message moves folder. labels in JSON output is the message’s folder name, one entry. Search uses the same small from: / in: subset as Fastmail and Proton. Gmail labels, filters, reconcile, file-inbox, untrash, and thread are refused. Graph has folders and categories, not Gmail labels, so mailkit errors rather than doing something else under the same verb name.

Fastmail

Read path only. Credential is a static API token. Search compiles only:
  • from:x
  • from:(a.com OR b.com)
  • -from:x
  • in:inbox
Anything else raises rather than matching a silent subset.

Proton Mail

Read plus send/draft through Bridge on this Mac. Message ids are mailbox:uid, for example INBOX:12. Use that same string with show, reply, archive, trash. Search uses the same small from: / in: subset as Fastmail. Bridge must stay running. See Setup.

If you guess wrong

error: 'send' is not supported on fastmail accounts (you@fastmail.com).
Check mailkit auth list and pick a Gmail, Outlook, or Proton Mail account for write verbs.