Search the docs

Find a page, a section, or an endpoint.

Let your agent draft, approve and send yourself

A key that writes drafts and can never send, and you press Send.

Your agent reads the mail and writes the replies. You read each reply and send it. The agent holds a key that can never send, so nothing reaches a customer that you did not see first — however the agent is prompted, and whatever a stranger's email tells it to do.

1. Give the agent a read-and-draft key

In the dashboard, API keys → New key, choose the address, and under What it can do choose Read and draft. Or from a key you already hold:

curl https://pidgeon.ai/api/v1/api-keys \
-H "Authorization: Bearer $PIDGEON_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "name": "Support agent",
  "identity_ids": ["0c939bd7-2d69-4150-a2ac-de994f0e4887"],
  "access": "draft"
}'

Connecting over MCP by signing in? Choose Read and draft on the consent screen. The agent keeps everything it needs to run the inbox: reading, searching, labels, archive, trash, and handing a conversation to you. Sending, replying, forwarding, scheduling and calendar invitations all answer 403, with a message that tells the agent to write a draft instead.

2. The agent writes drafts

Over MCP the tool is create_draft. Over the API it is POST /v1/drafts. To answer a message, pass its id as in_reply_to and its sender as to, and the draft is sent as a reply in the same conversation:

sh
curl https://pidgeon.ai/api/v1/drafts \
-H "Authorization: Bearer $PIDGEON_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "identity_id": "0c939bd7-2d69-4150-a2ac-de994f0e4887",
  "in_reply_to": "48532ec7-db7a-4437-ada6-c55132a3d735",
  "to": "priya@example.com",
  "text": "Reissued, thank you."
}'

The agent can change or delete its drafts until you send them.

3. You read it and send it

In the dashboard. Open the conversation: under the last message a card says the agent wrote a reply, with its first lines. Press Review and send and it opens ready to go — recipients, subject and text, all editable, with the message it answers folded underneath. Change what you want and press Send. Every draft is also under Drafts. On a phone it is the same two taps.

Sent from the dashboard, the reply is still the agent's: the conversation stays with it, and its next message is answered by it, not you. Signing off a draft is not taking over.

In Apple Mail, or any mail app. Add the address over IMAP with an app password you make for yourself in the dashboard. The agent's drafts are in the Drafts mailbox. Open one, edit it, press Send.

Sent from a mail app, the reply is yours: the conversation moves to you, the same as any reply you write yourself, and the agent sees a hand-off. To give it back, set the thread's owner to agent.

What the key cannot do

  • Send, reply, reply all or forward.
  • Send or schedule a draft, or change a draft you have scheduled.
  • Invite people to a calendar event, or answer an invitation.
  • Make an app password, which is the only credential SMTP accepts.
  • Create a key that can do more than it can.

Each of those answers 403. The full list of access levels is in Authentication.