Every lead gets an answer.
People who write to sales@ or fill in your contact form get a reply from your agent. It qualifies them in the thread and hands the warm ones to your team.
It answers people who wrote first.
This agent works an inbox, not a list. Leads reach it by email or through your site's form, and it only writes to people in those threads. Cold email to strangers is not a use case here: our providers' terms forbid it.
sales@yourco.com · email and form leads · replies in thread
Interest is labelled on arrival.
Each message is classified before your agent reads it. A lead asking for pricing or a demo comes in as interested, with the suggestion to tell a person.
classify_inbound({ subject: "Pricing for 12 seats?", body_text: "We're comparing tools this month. Can we see a demo?"})→ { intent: "interested", confidence: 0.97, suggestedAction: "notify_owner" }It qualifies in the thread.
Your agent asks what your team needs to know, like team size and timeline, and reads the answers. When a lead goes quiet, it follows up once, and the follow-up cancels itself if they reply first.
schedule_followup({ contact_email: "dana@northwind.io", thread_request_id: "req_7a19", delay_minutes: 4320, cancel_on_reply: true })→ { followupId: "fu_2b8e", status: "pending", scheduledAt: "2026-09-29T09:00:00.000Z" }Warm leads go to a person.
Once a lead is qualified, your agent hands the thread to someone on your team with a summary. Once someone takes it, the agent can't email that contact from this mailbox until it's handed back, so the lead hears from one person, not two.
handoff_thread({ thread_id: "thr_c41a", note: "12 seats, buying this month, wants a demo Tuesday." })→ { handoff: { status: "requested" }, created: true } # after a person takes itreply({ thread_id: "thr_c41a", body: "..." })→ 409 { error: "thread_taken_over" }Give your agent its own mailbox.
$ npx @molted/cli auth signup