Product overview

An inbox your agent owns.

Give every agent a real address, a thread store, and an event stream that starts the next run.

Address
name@doorman.fyi
Ready in one call
Context
Threads & PDF text
Stored across runs
Delivery
Webhooks & stream
Replay from last id
Control
Scoped API keys
Per-account or per-inbox

Inside the inbox

Five parts that understand the context.

An agent inbox is not a raw mail pipe. It joins messages, threads, attachments, events and permissions into one working whole.

Active agent inbox

support@doorman.fyi

5 primitives connected

01

Messages

Every email arrives with clean text, sender names, a category, and a safety verdict. Outbound sends and replies carry a key so retries never duplicate mail.

Your agent never parses raw mail headers or answers a bounce by mistake.

{
  "id": "msg_01j9x8k2m4",
  "direction": "inbound",
  "from": "dana@example.net",
  "subject": "Invoice 2847",
  "category": "personal",
  "verdict": "clean",
  "auto_replyable": true
}

Persistent conversations

Conversations outlive the agent run.

An agent run lasts seconds, while a real email conversation takes days. The inbox holds the thread and files until your agent returns.

  1. Monday, 09:14Run 1

    Agent asks for a quote.

    Your procurement agent sends an inquiry from buyer@doorman.fyi and starts a thread.

    thr_01j9m1 created

  2. Monday, 09:15Compute

    The agent run ends.

    The worker finishes and shuts down. Nothing stays running in memory to watch for an answer.

    0 idle processes

  3. Thursday, 14:42Counterparty

    Vendor replies with a file.

    Three days later, the supplier answers with a revised quote attached as a document.

    quote-rev2.pdf read

  4. Thursday, 14:42Event

    Doorman wakes your app.

    The inbox files the reply into Monday's thread, reads the document text, and fires an event.

    evt_01j9t4 pushed

  5. Thursday, 14:42Run 2

    A fresh run reads the thread.

    A new agent process starts, pulls the full thread in one call, and sees Monday's context.

    2 messages in context

  6. Thursday, 14:43Run 2

    Agent replies in line.

    The agent approves the revised quote in the same thread, quoting the vendor's message cleanly.

    Re: Quote confirmed

Why this is better

Human webmail was built for people, not agents.

Browser mailboxes and send-only pipes break the moment someone writes back to your agent.

  • Shared inbox & screen scraping

    Human webmail

    • Borrows a person's address and exposes private mail.
    • Breaks when login screens or layouts change.
    • One bad send hurts your personal domain reputation.
    • No clean way to tell which agent sent which reply.
  • Stateless outbound pipes

    Send-only mail APIs

    • Built for one-way receipts and password resets.
    • Replies hit a raw webhook with no mailbox behind it.
    • You must build your own storage, threading and parsing.
    • No inbox address for an agent to receive 2FA codes.

Scale in two dimensions

Grow across inboxes, or deeper inside each one.

Human mail breaks when one account sends too much or mixes ten jobs together. Doorman scales horizontally and vertically at once.

Up to 100 active inboxes per account out of the box

Dimension 1: Horizontal fleet scale

One inbox per agent, role, or customer.

Spin up dedicated addresses on demand. Give support, billing, intake, and each customer tenant its own door, key, and history.

  • support@doorman.fyiScoped key

    Support agent

    Answers product questions

  • billing@doorman.fyiScoped key

    Finance agent

    Reads PDF invoices

  • intake@doorman.fyiScoped key

    Onboarding agent

    Collects documents

  • ops-482@doorman.fyiScoped key

    Tenant worker

    Receives 2FA codes

Digital passport

An agent can operate as its own entity online.

To sign up, connect, and work across the internet, an agent needs an identity it owns. Its inbox receives the codes and links that let it in.

Event-driven runs

An email becomes the next agent run.

Do not run a loop that asks every minute if mail has arrived. Subscribe once, and let an incoming email start your agent.

  1. Mail lands at SMTP

    A customer or service writes to support@doorman.fyi.

  2. Threaded and read

    Doorman links the thread, checks authenticity, and reads PDFs into text.

  3. Webhook or stream fires

    Your server gets a signed delivery or a live frame over the socket.

  4. Agent acts and replies

    Your agent wakes with full context and replies in the same thread.

See it work

Watch a message arrive.

A customer writes to your agent's address. Here is what your agent receives, and what it sends back.

The message

From
Dana Ortiz <dana@example.net>
To
support@doorman.fyi
Subject
Invoice 2847

Hi, the invoice total does not match the quote. Can you check it? The PDF is attached.

Attachment: invoice-2847.pdf

What your agent receives

{
  "event": "message.received",
  "from": "dana@example.net",
  "subject": "Invoice 2847",
  "category": "personal",
  "auto_replyable": true,
  "attachments": [{
    "filename": "invoice-2847.pdf",
    "parsedText": "Invoice 2847. Line 3: Setup fee, billed twice. Total 1,480."
  }]
}

The reply

To
dana@example.net
Subject
Re: Invoice 2847

Thanks, Dana. You are right: the setup fee was billed twice. A corrected invoice for 1,240 is attached.

Sent

For builders

Three calls and you are reading mail.

Sign up, create a key in the console, and use it. The API answers on api.doorman.fyi.

Base URL
https://api.doorman.fyi
Limits
Ten messages a minute and two hundred a day per inbox. Messages up to 25 MB with up to 32 attachments.
Events
Events arrive by signed webhook (Standard Webhooks headers, five attempts) or over a WebSocket that replays from the last event id.

Open the console

API=https://api.doorman.fyi

# 1. Create an inbox
curl -X POST $API/v1/inboxes \
  -H "Authorization: Bearer dm_..." \
  -H "Content-Type: application/json" \
  -d '{"mailboxName": "support"}'

# 2. Read what arrived
curl $API/v1/inboxes/inb_.../threads \
  -H "Authorization: Bearer dm_..."

# 3. Reply in the same thread
curl -X POST $API/v1/inboxes/inb_.../send \
  -H "Authorization: Bearer dm_..." \
  -H "Content-Type: application/json" \
  -d '{"threadId": "thr_...", "text": "Thanks, on it."}'

Get started

Open the door.

Create an account with an address you own. The console gives you your first key, and your agent is reading mail.

The miniature street at golden hour. As night falls the lamps come on, the windows light up one by one, the sky turns to a starry navy and a doorman closes his door.

Already have an account? Open the console