Give your agent an email
Give an AI agent a real address on your domain, so it can be contacted, register for services, follow up with people, draft replies, and work in the world under your review.
An agent gets much more useful when it has an address.
Without email, an agent is trapped inside a chat box. It can think, draft, and answer questions, but the outside world has nowhere to reach it. Give it a real mailbox on your domain and it becomes a working identity: people can reply to it, services can send it confirmations, venues can answer its pitch, forms can send receipts, and every thread becomes context it can pick up later.
That is the shift: not "AI writes email," but your agent can be reached.
support-bot@yourdomain.com can triage customer mail. press@yourdomain.com
can collect inbound media requests. bookings@yourdomain.com can contact
venues, track replies, and draft next steps. rights@yourdomain.com can submit
your book to agents, publishers, newsletters, and festivals, then keep the entire
conversation in one owned archive.
Tinbox makes that identity useful without making it reckless. The agent reads and drafts through the same inbox state humans see. It gets a scoped token, not a master key. It monitors with a live freshness probe. It drafts before it sends. And the send ledger makes retries safe when you do grant authority.
This is the agent identity layer in Tinbox.
Tinbox already has the assistant, MCP, skills, autopilot, and dedicated agents.
This guide is about something more basic and more powerful: giving the agent a
reachable address it can use outside Tinbox. The address is not a generic vendor
handle. It is @yourdomain.com, backed by your inbox, your archive, your
permissions, and your sending domain.
What this unlocks
A mailbox gives the agent a place in the world. Once it has one, it can:
- Represent a role.
support-bot@,sales-research@,bookings@,licensing@,studio-assistant@,founder-office@. - Receive replies. A venue, customer, journalist, agent, or partner can answer the agent directly, and the thread stays attached to the work.
- Register for services. The agent can sign up for tools, directories, portals, trials, newsletters, and marketplaces that verify by email.
- Submit forms. Contact forms, demo requests, partnership forms, grant applications, festival submissions, supplier portals, job boards.
- Run outbound work. Draft pitches, follow-ups, reminders, status checks, quote requests, booking requests, invoice nudges, and intro emails.
- Keep memory in the inbox. Confirmations, receipts, rejections, warm replies, attachments, and decisions become searchable context.
- Escalate cleanly. When the agent is uncertain, it asks the operator or leaves a draft for review instead of improvising.
For artists, that might be an agent that contacts venues, tracks availability,
follows up with promoters, and drafts replies for the human to approve. For an
author, it might submit a book to literary agents, newsletters, festivals, and
podcasts, then summarize who replied and what each person needs next. For a small
business, it might own vendors@, register for supplier portals, collect quotes,
and keep procurement conversations moving.
The address is the handle. The inbox is the memory. The token is the boundary.
Why owned identity matters
An agent identity product can give your agent a mailbox, a handle, and a place to receive confirmations. Tinbox's version does that inside the infrastructure you own:
| Generic hosted identity | Tinbox agent email |
|---|---|
| The agent gets a vendor-hosted address | The agent gets an address on your domain |
| Mail history lives in a shared service | Mail lives in your tenant D1/R2 and optional git archive |
| Permissions are product settings in someone else's app | Permissions are Tinbox grants and scoped tokens |
| Sending authority depends on the provider | Sending uses your sending domain and Tinbox's ledger |
| Custom workflow means another integration | Custom workflow can run as a Tinbox skill, action, or plugin |
That matters when the agent is doing real work. If bookings@studio.com is
negotiating with venues, those threads should become part of the studio's owned
record. If rights@author.com is corresponding with literary agents, the author
should keep the archive and credentials. If vendors@shop.com is registering for
portals and collecting quotes, those confirmations should land in the company's
mail stack, not a separate agent vendor account.
The goal is not to make agents feel magical. It is to make them legible, reachable, accountable, and useful.
Agent identity patterns
Use the mailbox as the stable identity, then attach the behavior you want:
| Pattern | The agent does |
|---|---|
| Artist booking agent | Finds venue contacts, drafts booking pitches, tracks availability, prepares follow-ups |
| Author submissions agent | Contacts literary agents, podcasts, newsletters, festivals, and rights desks |
| Sales research agent | Registers for directories, requests demos, follows up with prospects, summarizes replies |
| Vendor desk agent | Registers for supplier portals, collects quotes, tracks invoices and onboarding forms |
| Press assistant | Receives media requests, drafts responses, collects assets, tracks deadlines |
| Founder office agent | Handles intros, scheduling threads, investor follow-ups, and relationship notes |
Each pattern can start read-only. Then it can draft. Then, for narrow cases, it can send. The identity stays stable while the authority grows carefully.
The safe shape
The setup has three pieces:
- Create a real inbox address for the agent.
- Mint the smallest useful scoped token.
- Teach the agent the mail-check loop.
- Keep sends, campaigns, imports, and routing changes human-gated until you deliberately grant more authority.
Choose the identity
Pick the address based on how the outside world should understand the agent:
| Address | Good for |
|---|---|
support-bot@acme.com | A visible support assistant that can receive customer replies |
founder-office@acme.com | A founder's research, scheduling, and follow-up helper |
bookings@studio.com | Venue outreach, event pitches, availability, and confirmations |
rights@author.com | Literary agents, publishers, festivals, podcasts, permissions |
vendors@shop.com | Supplier quotes, portal registrations, invoices, procurement |
research@acme.com | Market research, directory signups, analyst requests, sourcing |
Use a dedicated agent address when people should know the agent is a reachable
identity. Use a shared human address like support@ when the agent is helping
behind the scenes.
1. Create the mailbox address
Create the address on your own domain:
tinbox create-inbox --local-part support-bot --type shared --json
You can also ask the in-app assistant:
Create a shared inbox called Support Bot at support-bot@acme.com.
Inbox creation is an org-admin action. In chat, Tinbox shows an approval card with the exact address and type before creating it. In the app, the same concept lives under Settings -> Inboxes.
2. Mint the smallest useful token
Give the agent an inbox-scoped token, not an org-wide key:
tinbox tokens create --inbox support-bot --role viewer --ttl 30d --json
Start with viewer when the agent should only read and summarize. Move to
agent when it should draft replies:
tinbox tokens create --inbox support-bot --role agent --ttl 30d --json
The token is shown once. Store it in the agent runtime as TINBOX_TOKEN, with
the deployment URL as TINBOX_API_URL:
export TINBOX_API_URL=https://mail.acme.com
export TINBOX_TOKEN=tbx_...
tinbox whoami --json
whoami should return the inboxes the token can access. If it exits 2, the
token is missing, invalid, or expired.
The token is the difference between identity and overreach. A literary-submission agent does not need admin rights. A bookings agent does not need campaign send. A support draft agent may not need send rights at all. Start narrow, watch how the work behaves, then widen only where the workflow earns it.
3. Teach the agent the mail loop
Paste this into the agent's project instructions:
You are the mailbox agent for support-bot@acme.com.
Your job is to operate this address as a real working identity. You may receive
mail, search prior conversations, draft replies, and keep track of follow-ups.
You represent the operator, but you do not pretend to be human.
Use the tinbox CLI with --json. Parse stdout as JSON and branch on exit codes.
You may read threads and draft replies. Do not send unless the operator
explicitly asks you to send.
Start every session with:
tinbox whoami --json
Find work with:
tinbox threads --unanswered --inbox support-bot --json
Before drafting, read the full conversation:
tinbox thread <threadId> --json
Draft replies instead of sending:
tinbox draft create --thread <threadId> --text "..." --json
Before editing a draft, probe its version:
tinbox draft version <draftId> --json
tinbox draft update <draftId> --base-version <version> --text "..." --json
That prompt is deliberately small. The agent does not need to understand all of Tinbox to be useful; it needs the check, read, draft, and probe habits.
For a more ambitious agent, add a one-paragraph brief:
You help book shows for an independent artist. Use bookings@studio.com. Find
venue contacts, send or draft short booking pitches when asked, track every
reply, summarize availability, and prepare follow-ups. If a venue asks for a
commitment, price, contract term, or date confirmation, draft the reply and ask
the operator before sending.
Or:
You help submit a nonfiction book proposal. Use rights@author.com. Contact
literary agents, newsletters, festivals, podcasts, and rights departments when
asked. Keep a table of who was contacted, what they requested, and the next
follow-up date. Draft every outbound email for review unless the operator says
you may send this specific message.
Monitor new mail
For a long-running agent, keep a watermark and ask what changed since that watermark:
tinbox threads --changed-since 2026-07-08T00:00:00Z --inbox support-bot --json
The response includes a server now. Store that as the next watermark:
{
"since": "2026-07-08T00:00:00Z",
"now": 1783531200000,
"threads": [
{
"id": "thr_...",
"inboxId": "ibx_...",
"lastMessageAt": 1783531180000,
"updatedAt": 1783531180000,
"state": "open",
"status": "active"
}
]
}
If threads.length reaches the command limit, poll again soon. For most agent
mailboxes, a 30-60 second loop is enough:
1. Run threads --changed-since with the last server watermark.
2. For each changed thread, read tinbox thread <id>.
3. Draft if action is obvious.
4. Ask the operator when uncertain.
5. Store the returned now as the next watermark.
The rule is: breadth can come from the git archive, but the present comes from the API. Before the agent acts, it probes live state.
Safe reply workflow
The safe reply workflow is:
tinbox threads --unanswered --inbox support-bot --json
tinbox thread thr_... --json
tinbox draft create --thread thr_... --text "Thanks, I am looking into this." --json
tinbox draft version drf_... --json
tinbox draft update drf_... --base-version 1 --text "Thanks — I found the issue and..." --json
A stale --base-version fails with a conflict instead of overwriting another
human or agent. Re-read the draft, rebuild the edit on the current version, and
retry.
Only grant send authority when the agent is allowed to send from that address without another human click. Even then, sending is ledgered and idempotent:
tinbox draft send drf_... --json
For review-first teams, leave the draft in Tinbox for a human to approve, or export it into the outbox PR lane:
tinbox draft export drf_... --json
Merging an outbox reply makes the draft ready. It does not send by itself.
Connect over MCP instead
If the agent runtime supports MCP, connect it to the deployment's /mcp endpoint
instead of giving it only shell commands. The same tools are exposed there, with
the same inbox token and the same authorize() checks.
Use MCP when the agent should call tools natively. Use the CLI when the agent is working in a terminal or CI-style loop. Both surfaces are backed by the same tool manifest.
See Connect an MCP client for the setup steps.
Recommended defaults
For a first agent mailbox:
| Setting | Start with |
|---|---|
| Inbox type | shared |
| Token role | viewer for read-only, agent for drafting |
| Send permission | off until you trust the workflow |
| Monitor loop | threads --changed-since every 30-60 seconds |
| Work selection | threads --unanswered plus full thread reads |
| Human review | required for sends, campaigns, imports, and routing changes |
This is the product boundary Tinbox is built around: the agent gets a real email address and useful hands, but irreversible actions stay human-gated unless a human deliberately grants that authority.
Next steps
- Connect Claude and agents for chat, MCP, and CLI setup side by side.
- Automation & agents for the assistant, autopilot, dedicated agents, and agentic skills model.
- Core concepts for inboxes, capability tokens, and the send ledger.