Skip to main content
POST
A draft is a message that has been written but not sent. Drafts are how an agent composes in stages (“subject now, recipients once I know who is responsible”) or prepares something for human review before it goes out. Drafts never consume quota and never leave the mailbox. Nothing is billed and no mail is dispatched until you send the draft.

Create

string
required
The inbox the draft belongs to.
string[]
Recipients. Optional — a draft may start with only a subject.
string[]
CC recipients.
string[]
BCC recipients.
string
Subject line. Max 500 characters.
string
Plain-text body.
string
HTML body.
string
Message id this draft answers, so the sent message threads correctly.

Sending a draft

POST /v1/drafts/{id}/send runs the normal send pipeline — suppression list, bulk tripwire, spend cap, daily cap, provider dispatch, usage ledger and webhooks. A draft is not a way around any guardrail.
  • Sending a draft twice is safe: the second call returns the message the first one produced (the draft is keyed by draft:<id>).
  • A draft with no recipients is rejected with draft_incomplete.
  • A discarded draft can never be sent (draft_discarded).
  • Sent and discarded drafts cannot be edited (draft_not_editable).

From an agent (MCP)

gork_create_draft, gork_list_drafts, gork_update_draft, gork_send_draft and gork_discard_draft cover the whole lifecycle, so an agent can prepare a message, wait for approval, then send it in one call.