Send a pending draft after the person approves
send_draftSends a draft once the person approves it. The model saying they approved in chat does not send anything.
Sends a previously created draft. Requires pendingSendId + approvalCode from create_draft. Show the human the full To/Subject/body first. Not available for demo drafts. In apps that can prompt the person directly (MCP elicitation; create_draft then returns confirmInApp:true), the person sees To, Subject, and body in a prompt and picks Send, Edit, or Cancel there; nothing is sent unless they pick Send. If they pick Edit, the result has their requested changes: make a new draft with create_draft and call send_draft for it. Otherwise, or if the prompt is declined or cannot be shown, the result has approvalUrl: give it to the person, who checks the email (and can change recipients or wording) and clicks Send there. Never say it was sent until the result says sent:true. If the result has scheduled:true, it goes out at sendAt under the person's send rules; say it is scheduled, not sent, and give them approvalUrl to cancel or edit. The Send button on the show_draft card also works.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"pendingSendId": "<pendingSendId>",
"approvalCode": "<approvalCode>"
},
"name": "send_draft"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| confirmTo | No | If provided, must match the pending send To | |
| waitSeconds | No | When the person approves on the approval page, wait up to this many seconds (default 0) for their click and return sent:true as soon as it lands. | |
| approvalCode | Yes | approvalCode returned by create_draft for this pending send | |
| pendingSendId | Yes | pendingSendId returned by create_draft when sendAvailable is true | |
| confirmSubject | No | If provided, must match the pending send subject | |
| confirmVersion | No | Only after a result said the draft changed in the mailbox: the version value that result gave, passed once the person has seen that version and said yes. | |
| humanApprovedInChat | No | Ignored. Approval happens in the in-app prompt or on the approval page. |