Your agent hears about it as it happens.

Deliveries, bounces, replies and approvals arrive as events, over a stream your agent holds open or as webhooks to your own server.

One command, a live loop.

molted listen holds a Server-Sent Events connection, filters by event type and pipes each event to your handler as a line of JSON. If the connection drops, it reconnects and replays what it missed.

molted listen
$ molted listen --events "inbound.*" \    --pipe "node agent.js" # each line on the handler's stdin{  "event": "inbound.classified",  "id": "e41d…",  "data": { "intent": "interested", … },  "timestamp": "2026-09-26T14:02:11Z"}

Webhooks, signed.

Register a URL and choose the events it gets. By default each delivery carries an HMAC-SHA256 signature of the body, made with that endpoint's secret, and a failed one is tried again with a growing delay, up to five attempts in all.

POST to your endpoint
POST https://you.example/hooksContent-Type: application/jsonX-Molted-Event: delivery.bouncedX-Molted-Delivery: 7d0c…X-Molted-Signature: sha256=9f2c…

What each one carries.

The stream carries every event, including approvals, handoffs and leases. Webhooks carry the ones a server usually wants: inbound mail, deliveries, bounces, complaints and new suppressions.

inbound.classified · delivery.delivered · delivery.bounced · suppression.created

Hand it to your agent.

It sets up its own inbox. You decide how much it does on its own.