What's new
email.get --fetch-all-body-values (#11)
Exposes JMAP's fetchAllBodyValues: true (RFC 8621) as a CLI flag. Without this, bodyValues always returned {} even when included in --properties.
email.read convenience command (#11)
New command that returns subject, from, to, plain text body, and attachment metadata in a single call — the most common "read an email" use case.
blob.download command (#12)
Downloads a blob to a local file using the JMAP downloadUrl template (RFC 8620 §6.2). Returns a JSON envelope with bytesWritten, sha256, and output path. URI template variables are properly percent-encoded per RFC 6570.
Agent workflow: read email + download attachments
# Step 1: Read email, discover attachments
fastmail-cli email.read --id M123
# → data.attachments[0] = {blobId: "G...", name: "invoice.pdf", ...}
# Step 2: Download
fastmail-cli blob.download --blob-id "G..." --name "invoice.pdf" \
--type "application/pdf" --output "./invoice.pdf"Bug fixes
pipeline.runno longer crashes when--jsonis omitted (#11)- Proper percent-encoding of
downloadUrltemplate variables (#12)
Full changelog: v0.2.2...v0.2.3