# Build the agent, not the inbox

You write the part that thinks. We give you the email pieces it reads and answers with.

[Get started](/signup)
[Documentation](https://docs.aiinbx.com/integrations/agents)

Mail coming in passes through Categories, Threading, Reply text, Attachments. Your agent is your code: Prompts, tools, judgement. Mail going out passes through Mailboxes, Sending hours, Pacing.

Categories

## Only wake up for people

Every email arrives labelled. Newsletters, bounces and out-of-office replies never cost you a model call.

[Categories](https://docs.aiinbx.com/guides/receiving#categories)

Threading

## Hand it the whole conversation

Replies, forwards and renamed subjects land in one thread. One call gets your agent everything that was said.

[Threading](/features/threading)

Reply text

## Read what they wrote, not the quote

Each message comes with just its new words. Your agent doesn't reread the conversation in every quote.

[Reply text](https://docs.aiinbx.com/guides/receiving#what-was-written)

Attachments

## Read the PDF too

PDFs, sheets and scans arrive as Markdown next to the email. Your agent reads the quote, not a file name.

[Attachments](/features/attachments)

Example: Quote-4471.pdf, a supplier's quote, arrives as Markdown: sender and recipient addresses, the quote heading and date, the line items as a Markdown table (item, quantity, price), the net, VAT and total, and the delivery and payment terms.

Mailboxes

## Answer from your user's own inbox

One click at Google or Microsoft, and your agent reads and replies as them. Same API as your own domain.

[Mailboxes](/features/mailboxes)

Sending hours

## Never email at 3am

Your agent runs all night. Anything it sends outside your working hours waits, and goes out when the day starts.

[Sending hours](/features/sending-hours)

Pacing

## A runaway loop can't flood anyone

Cap what one person can receive. If your agent misfires, the extra replies wait instead of landing.

[Pacing](/features/pacing)

Example: a rule of 3 per hour per recipient. Your agent misfires 8 replies to marco@lindmetall.de in one hour: 3 are delivered and the other 5 are held for later.

Put together

## Your agent, in two calls

Step 1, your webhook: only people wake the agent.

```
export async function POST(request: Request) {
  const event = await verifyWebhookRequest(request, secret)

  if (event.type === "email.received" && event.data.category === "human")
    await queue.push(event)
  return ok()
}
```

Step 2, your worker: read the conversation, answer it.

```
const thread = await aiinbx.threads.retrieve(event.data.thread_id)

const answer = await agent.run(thread.messages)

await aiinbx.threads.reply(thread.id, { text: answer })
```

Or hand it to Claude Code, Cursor or Codex. It reads our docs and writes this for you.

## Give your product an inbox. The hard parts are already handled.

[Get started](/signup)
