Install
openclaw skills install fastmail-suiteSecure, safe-by-default Fastmail integration (email, contacts, calendar) via JMAP + CalDAV. Use when you want to verify Fastmail setup, triage/search email,...
openclaw skills install fastmail-suiteUse the bundled scripts (stdlib-only) to interact with Fastmail safely.
Set credentials/tokens:
# JMAP token (Mail + Contacts scopes)
export FASTMAIL_TOKEN='…'
# CalDAV app password (calendar)
export FASTMAIL_CALDAV_USER='you@yourdomain'
export FASTMAIL_CALDAV_PASS='app-password'
# Optional: redact output (default is 1)
export FASTMAIL_REDACT=1
Verify setup:
python3 skills/fastmail-suite/scripts/suite.py status
python3 skills/fastmail-suite/scripts/suite.py status
Expected style:
Mail (JMAP): OK / MISSING TOKEN / AUTH FAILEDCalendar (CalDAV): OK / MISSING APP PASSWORD / AUTH FAILEDContacts (JMAP): OK / MISSING TOKEN / AUTH FAILEDpython3 skills/fastmail-suite/scripts/suite.py triage today
python3 skills/fastmail-suite/scripts/suite.py triage last-7d
Triage summarizes:
invoice, bill, payment, due, confirm, action required, reminder, ...),friends.tas.edu.au and bill/payment-like items.python3 skills/fastmail-suite/scripts/suite.py search "from:billing@ subject:invoice last:7d"
python3 skills/fastmail-suite/scripts/suite.py search "has:attachment before:2026-02-01 tax"
python3 skills/fastmail-suite/scripts/suite.py search "after:2026-02-01 reminder"
Supported query tokens:
from:foosubject:barhas:attachmentlast:7d (and other Nd forms)before:YYYY-MM-DDafter:YYYY-MM-DDpython3 skills/fastmail-suite/scripts/suite.py thread <email-id>
python3 skills/fastmail-suite/scripts/suite.py thread <thread-id>
python3 skills/fastmail-suite/scripts/suite.py thread "school invoice"
Shows concise thread summary:
python3 skills/fastmail-suite/scripts/fastmail.py mail inbox --limit 20
python3 skills/fastmail-suite/scripts/fastmail.py mail search "invoice" --limit 10
python3 skills/fastmail-suite/scripts/fastmail.py mail read <email-id>
python3 skills/fastmail-suite/scripts/fastmail.py contacts list --limit 20
python3 skills/fastmail-suite/scripts/fastmail.py contacts search "alice" --limit 5
python3 skills/fastmail-suite/scripts/fastmail.py contacts get <contact-id>
python3 skills/fastmail-suite/scripts/fastmail.py calendar calendars
python3 skills/fastmail-suite/scripts/fastmail.py calendar upcoming --days 7
Fastmail Suite works with real Fastmail credentials, so the design is intentionally conservative.
FASTMAIL_TOKEN — Fastmail JMAP API token (Mail + Contacts scopes). Best practice is to use a read-only token for normal usage.FASTMAIL_TOKEN_SEND — separate JMAP token with Email Submission scope for sending mail. Only used if you explicitly enable writes.FASTMAIL_CALDAV_USER / FASTMAIL_CALDAV_PASS — Fastmail app password for calendar (CalDAV).FASTMAIL_REDACT — controls redaction of output (default 1 = redacted).FASTMAIL_ENABLE_WRITES — when set to 1, enables write operations (send/move/update). Omit or set to 0 to keep read-only.Redaction is ON by default
Output is redacted unless you pass --raw where supported. FASTMAIL_REDACT=1 is the default.
Writes are OFF by default
The skill will not send/move/update anything unless FASTMAIL_ENABLE_WRITES=1 and you have provided appropriate tokens (for example FASTMAIL_TOKEN_SEND for sending mail).
Separation of roles
You can keep a strict separation:
FASTMAIL_TOKENFASTMAIL_TOKEN_SEND (optional, only when writes are enabled)FASTMAIL_CALDAV_USER + FASTMAIL_CALDAV_PASS (Fastmail app password)Read-only mode is fully supported
You can run the entire suite (status, triage, search, thread, contacts, calendar read) with a read-only JMAP token + calendar app password, without ever enabling writes.
list, search, get) tested against real Fastmail accounts.suite.py status now probes Contacts via JMAP and reports Contacts (JMAP) health.scripts/suite.py with onboarding status checks for JMAP + CalDAV.triage todaytriage last-7dsearch <query> with token parser (from:, subject:, has:attachment, last:, before:, after:)thread <id-or-snippet> conversation summaryscripts/fastmail.py for suite ....