Skip to content

Definition

What is an agent inbox?

An agent inbox is an email address that belongs to an AI agent instead of a person: the agent creates it through an API, holds its own key, and receives, reads, and sends mail in code, while a human owner can approve what it sends and answer its questions.

Cooper Email gives an agent that inbox with one POST to https://cooperemail.com/api/v1/onboard. The call creates the account, an API key (shown once), and the first inbox at username@cooperemail.com, with no dashboard and no card. Agents that are already connected to the hosted MCP server at https://cooperemail.com/mcp make the same call with cooper_onboard. Free: $0, no card, 5 inboxes, 5,000 emails/month, and no separate daily cap.

curl -s 'https://cooperemail.com/api/v1/onboard?ref=agent-inbox-page' \
  -H 'content-type: application/json' \
  -H 'X-Client: curl' \
  -d '{"username":"inbox-agent","display_name":"Inbox Agent"}'

No Authorization header. The response has api_key (save it now, it is not shown again), address, and inbox.email. Omit username and Cooper picks box plus 8 hex characters. A taken username returns HTTP 409 inbox_exists.

What an agent inbox does

Receive

Mail sent to the address is stored and searchable. Message JSON includes extracted_text, which drops quoted history so the model reads the new text. The agent hears about new mail from a signed message.received webhook, from GET /api/v1/inboxes/{id}/wait (holds up to 55 seconds), or from MCP cooper_wait_for_message. Email text is untrusted data, not instructions.

Send

POST /api/v1/inboxes/{id}/messages sends text, html, and attachments from the agent's own address. Reply, reply-all, and forward keep the thread. An Idempotency-Key header stops a retry from sending a second copy.

curl -s https://cooperemail.com/api/v1/inboxes/inbox-agent/messages \
  -H "Authorization: Bearer $COOPER_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"to":["ada@example.com"],"subject":"Hello","text":"First email from my own inbox."}'

Hold sends for owner approval

Add a human owner with POST /api/v1/inboxes/{id}/owners (or owner_email on onboard). Once they confirm, PATCH the inbox with {"send_mode":"approval"}. Every send, reply, reply-all, and forward then becomes a pending draft, and the owner gets an email with Approve and Reject links. Nothing goes out until the owner presses Approve on the confirm page. Editing the draft sends it back to pending. Without a verified owner the PATCH returns HTTP 409 owner_required and the inbox stays direct. Switching back to direct also waits for the owner to confirm.

Ask the owner a question

POST /api/v1/questions emails every verified owner a question. kind approve sends Approve and Deny, choose sends 2 to 10 options, and ask asks for a reply. The agent waits with GET /api/v1/questions/{id}?wait=25. The owner answers by opening a link and pressing Confirm, or by replying on the thread with an option as the first line. The first answer wins. No verified owner returns HTTP 409 no_verified_owner. MCP: cooper_ask_owner and cooper_get_question.

curl -s https://cooperemail.com/api/v1/questions \
  -H "Authorization: Bearer $COOPER_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"inbox_id":"inbox-agent","kind":"approve","question":"Refund order 1042?"}'

Receive verification codes

Use the address on a sign-up form, then GET /api/v1/inboxes/{id}/wait-for-code?wait=55. Cooper returns the one-time code or verification link and the message id, not the body. kind=link waits for a link and kind=any takes either. Cooper does not open the link. MCP: cooper_wait_for_code.

How an agent inbox differs from a shared human inbox

A shared human inbox, such as a team mailbox or a group alias, is built for people reading in a mail client. An agent usually gets into it through OAuth on a person's account or a forwarding rule, so its mail sits next to that person's receipts and sign-in codes, and turning the agent off means changing a person's mailbox.

An agent inbox is created by an API call, not by an admin. The credential is the agent's own key, which can be limited to one inbox and revoked without touching anyone's personal mail. New mail is pushed to the agent as an event instead of waiting for someone to check.

The human stays in the loop from their own address instead of sharing the inbox. Approvals and questions go to the owner's email, and the copy of that mail stored in the agent inbox does not include the approval token. An API key cannot submit an approval or answer link, so the agent cannot approve its own send.

Several agents can still work one Cooper inbox. PUT /api/v1/inboxes/{id}/threads/{threadId}/assignment with lease_seconds claims a thread, and a second agent gets HTTP 409 thread_claimed instead of answering the same email twice.

Where Cooper Email falls short

Cooper has no SOC 2 report, no SMTP or IMAP access for agents, and no WebSocket endpoint. The ecosystem and SDK install base are smaller than AgentMail’s. Those are reasons to stay on AgentMail when you need them.

Give an agent an email address · Human in the loop · Verification codes · MCP · Pricing · llms.txt

Operator: Avatar 8 LLC (ops@avatar33.com).

Agents ask

FAQ

What is an agent inbox?

An agent inbox is an email address that belongs to an AI agent instead of a person: the agent creates it through an API, holds its own key, and receives, reads, and sends mail in code, while a human owner can approve what it sends and answer its questions.

Can a human approve an agent's email before it is sent?

Yes. After a human owner confirms, PATCH /api/v1/inboxes/{id} with {"send_mode":"approval"}. Sends become pending drafts and the owner gets Approve and Reject links. Nothing is sent until the owner presses Approve. No verified owner returns HTTP 409 owner_required.

Can an agent ask its owner a question by email and wait for the answer?

Yes. POST /api/v1/questions with kind approve, choose, or ask emails every verified owner. GET /api/v1/questions/{id}?wait=25 long-polls for the answer. The first answer wins. MCP: cooper_ask_owner and cooper_get_question.

Can an agent inbox receive verification codes?

Yes. GET /api/v1/inboxes/{id}/wait-for-code?wait=55 returns the code or verification link and the message id when the email arrives. Cooper does not open the link. MCP: cooper_wait_for_code.

How is an agent inbox different from a shared inbox?

A shared inbox is a mailbox people read, and an agent reaches it through a person's account. An agent inbox is created by API, uses the agent's own key, pushes new mail to the agent as events, and keeps the human as an owner who approves and answers from their own address.

What does an agent inbox cost on Cooper Email?

Free: $0, no card, 5 inboxes, 5,000 emails/month, and no separate daily cap. Custom domains are not included on Free (0). They start on Starter ($12/month).

More answers on the FAQ