Gmail Send Draft
Immutable Catalog Entry
This descriptor comes from the active versioned Portal catalog.
- Contract tier:
agent_ready - Risk:
destructive - Catalog version:
google-2026.07.12.2 - Descriptor hash:
eec80d2f8f98e3659605d870be5339f2bb5cefbbf9cb8ce12f60aaa49803a51c
Use this Gmail irreversible send tool only after explicit approval to send an existing draft. It can overwrite, send, move, remove, or permanently delete Google data. Use it only after preview and the manifest-defined confirmation; it requires per-request Google OAuth.
Request Body
{
"jsonrpc": "2.0",
"id": "google-gmail-send-draft-example",
"method": "tools/call",
"params": {
"name": "google.gmail_send_draft",
"arguments": {
"draft_id": "draft_id_123"
}
}
}
Arguments Schema
{
"type": "object",
"title": "gmail_send_draftArguments",
"required": [
"draft_id"
],
"properties": {
"draft_id": {
"type": "string",
"title": "Draft Id",
"description": "Gmail draft ID."
}
},
"additionalProperties": false
}
Output Schema
{
"type": "object",
"required": [
"ok",
"data",
"error",
"meta"
],
"properties": {
"ok": {
"type": "boolean",
"description": "Whether the local or Google provider operation completed successfully."
},
"data": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "array",
"items": {}
},
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Bounded local navigation or Google provider result when ok is true."
},
"meta": {
"type": "object",
"description": "Safe timing, pagination, cache, request, and truncation metadata.",
"additionalProperties": true
},
"error": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Safe structured error when ok is false."
}
},
"description": "Google MCP normalized operation envelope.",
"additionalProperties": false
}
Code Examples
- cURL
- Node.js
- Python
curl -X POST 'https://portal.madpanda3d.com/api/mcp' \
-H 'Authorization: Bearer mad_live_***' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "google-gmail-send-draft-example",
"method": "tools/call",
"params": {
"name": "google.gmail_send_draft",
"arguments": {
"draft_id": "draft_id_123"
}
}
}'
const response = await fetch('https://portal.madpanda3d.com/api/mcp', {
method: 'POST',
headers: {
Authorization: 'Bearer mad_live_***',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": "google-gmail-send-draft-example",
"method": "tools/call",
"params": {
"name": "google.gmail_send_draft",
"arguments": {
"draft_id": "draft_id_123"
}
}
}),
});
const data = await response.json();
console.log(data);
import requests
url = 'https://portal.madpanda3d.com/api/mcp'
headers = {
'Authorization': 'Bearer mad_live_***',
'Content-Type': 'application/json',
}
payload = {
"jsonrpc": "2.0",
"id": "google-gmail-send-draft-example",
"method": "tools/call",
"params": {
"name": "google.gmail_send_draft",
"arguments": {
"draft_id": "draft_id_123"
}
}
}
response = requests.post(url, headers=headers, json=payload, timeout=60)
print(response.json())
Example Responses
- 200 Success
- 502 Upstream Error
{
"ok": true,
"message": "Tool google.gmail_send_draft executed successfully.",
"note": "Response shape varies by MCP tool. Inspect live responses for exact fields."
}
{
"ok": false,
"classification": "upstream_http_error",
"message": "Upstream MCP returned a non-success status."
}