MOLTED EMAIL
CLI Reference

molted humanizer

Manage email humanizer configuration

CommandDescription
molted humanizer previewPreview how the humanizer would rewrite an email, without sending it
molted humanizer getGet current humanizer configuration
molted humanizer updateUpdate humanizer configuration

Agent context

The humanizer uses AI to make agent-generated emails sound more natural and human-written. When enabled, outbound emails pass through AI processing before delivery to improve tone, readability, and engagement. Molted picks the model (Claude Sonnet 5.5) -- you only turn the humanizer on or off and pick the style.

View current config

molted humanizer get
# → { "enabled": true, "provider": "anthropic", "style": "professional" }
# "provider" is always "anthropic" now and not configurable.

Update config (partial update -- unspecified fields are preserved)

molted humanizer update --config '{
  "enabled": true,
  "style": "friendly"
}'

molted humanizer update --config '{"enabled": false}'

Preview a rewrite before sending (nothing is sent)

molted humanizer preview --template welcome --payload '{"firstName": "Ada"}'
molted humanizer preview --subject "Quick question" --body "Hi Ada, ..." --diff
molted humanizer preview --template welcome --payload @vars.json --style casual

Shows the setting that applies (agent, then workspace; --mailbox picks the mailbox whose style applies), the original and the rewritten text, the checks (every link, address and number must survive the rewrite) and why a rewrite would be skipped. --diff prints a line diff instead of both texts; --json prints the raw response. A preview is a real rewrite: each preview that reaches the model uses one humanizer credit, whether or not the rewrite passes the checks. With the humanizer off it shows the original and makes no model call, and costs nothing.

Send exactly what you previewed

molted humanizer preview --template welcome --payload '{"firstName": "Ada"}'
# -> an applied rewrite comes with a previewId, valid for 24 hours
molted send --to ada@example.com --template welcome --dedupe-key welcome-ada \
  --payload '{"firstName": "Ada"}' --humanize-preview <previewId>
molted threads reply <threadId> --body "Hi Ada, ..." --humanize-preview <previewId>

The send delivers that stored rewrite (with its own real unsubscribe link) and is never rewritten again, not after an approval either, so a held send shows the approver exactly the rewrite. No second humanizer credit. The content must be the one previewed: preview with the same --body/--html or --template/--payload you send with (409 humanize_preview_mismatch otherwise; the subject is never compared or rewritten). An unknown or expired id, or one previewed with --mailbox for another mailbox, is a 404 (humanize_preview_not_found). If the humanizer was turned off since the preview, the original goes out with the warning
humanize_preview_ignored_humanizer_off. Not with --no-humanize, nor with a --humanize-style other than the preview's (400
humanize_preview_conflict: a send by id delivers the preview's style).

A preview id sends once: a second send with it is a 409 (humanize_preview_used), so preview again for each send, and give each recipient of a batch its own preview.

Field reference:
enabled - boolean; when true, outbound emails are rewritten (an agent's
own setting, molted agents update-config, overrides this one, and a send can opt out with --no-humanize)
provider - accepted for backward compatibility, but no longer a choice:
Molted always rewrites with Claude Sonnet 5.5; a
provider sent on update ("anthropic" or "openai"; any other value is a 400) is ignored with a warning, and a
provider read back is always "anthropic"
style - "casual" | "professional" | "friendly" (default: "professional")

Plan allowance (rewrites per month):
Free 0 (not included) | Solo 50 | Team 300 | paid trial 5 in total Solo and Team can go past the allowance with credits at $0.02 each, up to twice the allowance a month (billed on the next renewal invoice; a plan set by Molted support gets the allowance but no credits).

Key behaviors

  • When enabled, outbound emails are rewritten after the send is accepted (adds slight latency); a send can opt out with --no-humanize, and mail a human approved or wrote is never rewritten
  • Every rewrite must keep each link, address and number; one that doesn't (or is cut short) is dropped and the original goes out
  • Past the monthly cap the email still sends, just not rewritten; the send response carries a warning (e.g. "humanizer_credit_cap_reached")
  • On Free, enabling returns 403 humanizer_not_in_plan (disabling always works)
  • Agents may turn it off at any time; turning it on, or changing the style while it stays on, is a human decision (human gate)
  • Usage: molted billing status (the "humanizer" block)
  • Unknown fields are rejected with a 400 error -- use the exact names above
  • Requires API key auth -- use molted auth init or molted adopt claim

Related: molted send, molted safety, molted templates, molted trace

Commands

molted humanizer preview

Preview how the humanizer would rewrite an email, without sending it

molted humanizer preview [options]
OptionDescriptionDefault
--template <slug>Template to render (with --payload)
--payload <json>Template variables as JSON, or @path/to/file.json
--subject <subject>Subject for raw content (the humanizer never changes it)
--body <text>Body for raw content, built exactly like molted send --body (the html part from it unless --html is given)
--html <html>HTML body for raw content; without --text, the text part is derived like molted send --html
--text <text>The text part exactly as given, for content not sent with molted send --body/--html
--mailbox <id>Mailbox to preview for (its style applies); default: the one a send would use
--style <style>Rewrite in this style instead of the configured one: casual, professional, friendly. A send with --humanize-preview delivers it in this style
--diffPrint a line diff of the rewrite instead of both texts
--jsonPrint the raw JSON response

molted humanizer get

Get current humanizer configuration

molted humanizer get

molted humanizer update

Update humanizer configuration

molted humanizer update [options]
OptionDescriptionDefault
--config <json>Humanizer config as JSON (required) (required)

See CLI overview for global options, credentials and output format.