Fastmail
Fastmail email-organization pipeline over JMAP — scan every sender (flagging bulk/newsletter mail via RFC 2369/8058 List-* headers), generate ready-to-paste Sieve scripts that sort senders into nested folders, and plan/apply message moves — with audit, rule-coverage, apply-plan, and inbox-analysis reports.
Global Arguments
| Argument | Type | Description |
|---|---|---|
| apiToken? | string | Read-only Fastmail JMAP API token (Bearer). Preferred for all read methods. Optional if writeToken is set — a write token also has read scope. At least one of apiToken/writeToken is required. |
| writeToken? | string | Write-scoped Fastmail token. Required by email_move (execute:true), and used as the read token when apiToken is unset. Leave unset (with apiToken set) to keep the model read-only. |
| sessionUrl | string | JMAP session discovery URL (defaults to Fastmail) |
| Argument | Type | Description |
|---|---|---|
| scopes | array | One or more scopes to scan; each writes a 'senders' resource. |
| Argument | Type | Description |
|---|---|---|
| setups | array | |
| output | object | Assembles all fastmail setups into one custom-sieve resource (two paste-slots). |
| Argument | Type | Description |
|---|---|---|
| setups | array | Same setups as sieve_generate — the plan applies the identical rules. |
| mailboxRole | string | Mailbox to apply the sieve to (default 'inbox'; 'archive' to fix old |
| inMailbox? | string | Explicit mailbox id (overrides role). |
| after? | string | ISO date; only plan mail received after this. |
| before? | string | ISO date; only plan mail received before this. |
| maxMessages? | number | Cap of newest messages to plan (default: all). |
| name | string | Plan resource instance name. |
| Argument | Type | Description |
|---|---|---|
| setups | array | Same setups as sieve_generate — analysis applies the identical rules to see what's covered vs left behind. |
| mailboxRole | string | Mailbox to analyze (default 'inbox'). |
| inMailbox? | string | Explicit mailbox id (overrides role). |
| maxMessages? | number | Cap of newest messages to analyze (default: all). |
| name | string | Analysis resource instance name. |
| scopes? | any | Ignored; present so the shared config file is accepted by strict input validation. |
| Argument | Type | Description |
|---|---|---|
| from | string | Sender substring to sample (JMAP from filter). |
| inMailbox? | string | Restrict to a mailbox id. |
| limit | number | |
| name | string | Resource instance name. |
| Argument | Type | Description |
|---|---|---|
| source | string | Plan resource name to execute (from email_plan). |
| execute | boolean | false = dry-run (moves nothing, just reports). true = perform the moves — REQUIRES a write-scoped token. |
| forceMove | boolean | Remove the source mailbox even for keep (skipInbox:false) rules. Use when |
| labelOnly | boolean | Only ADD the target label; never remove any mailbox. Use for an all-mail |
| batchSize | number |
Resources
Analyze a mailbox against the current rules: composition, the senders that would still be left in the inbox split into rule candidates vs kept-by-design, and what's already covered.
Summarize an email_senders scan: sender volume, bulk-ness, unsubscribe availability, and volume concentration.
Per-setup rule coverage from sieve_generate: senders filed vs. uncategorized (fell to the bulk fallback), with a ranked list of uncategorized senders to write rules for.
Review an apply-sieve plan: destinations, counts, and sample messages that email_move would relocate. Read this before approving/executing a move.
Modified 1 models. Added 1 reports
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License declared1/1earned
- Verified public repository2/2earned