← All use cases

Someone reads the replies to your newsletter.

People answer your product updates. Your agent handles what comes back: questions get answers, and unsubscribes take effect, inside your suppression rules.

Replies land in a mailbox.

Send your updates to people who opted in, from a mailbox like updates@. When someone replies, the reply joins a thread with them there, and your agent reads it.

updates@yourco.com · each reply threads to its contact

One click unsubscribes.

Put the unsubscribe placeholder in your email, and each recipient gets their own signed link, plus the one-click header mail apps show. A click adds them to your suppressions.

{{molted:unsubscribe_url}} · RFC 8058 one-click List-Unsubscribe

Asking to be removed works too.

Some people reply "take me off this list" instead. Molted classifies that as an unsubscribe and adds the sender to your suppressions. When the classifier isn't sure, a person confirms first. After that, sends to them are blocked.

get_thread, then send_email · updates@yourco.com
get_thread({ thread_id: "thr_61be" })→ messages[1]  { direction: "inbound", subject: "Re: September update",    intent: "unsubscribe", routingAction: "trigger_unsubscribe" }# Molted suppressed the sender when the reply arrived send_email({ to: "kim@example.org",  template_id: "october-update", ... })→ { requestId: "req_0c3e", status: "blocked",    reason: "suppressed" }
blocked · suppressed

Consent stays on record.

When someone opts in, your agent records where and how. Before it writes, it can check the record, and a withdrawal is recorded the same way.

check_consent · updates@yourco.com
check_consent({ recipient_email: "kim@example.org" })→ { hasConsent: true, basis: "explicit_opt_in",    source: "signup_form", grantedAt: "2026-06-02T10:14:00.000Z" }

Give your agent its own mailbox.

Start free

$ npx @molted/cli auth signup