Skip to main content
Glama

Cherami

Send saved draft

send_draft
DestructiveIdempotent

Send a saved draft when the human or the assignment authorizes it. A send that returns a status, whether accepted, rejected or unknown, freezes the draft; to try again after a rejection, save a new draft.

Input Schema

NameRequiredDescriptionDefault
draft_idYesOnce a send has returned a status, repeating the call with the same draft_id returns that attempt and never sends a second copy.
idempotency_keyNoOptional and not needed for a safe retry.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / draft_id / description
      Added value: +"Once a send has returned a status, repeating the call with the same draft_id returns that attempt and never sends a second copy."
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Optional sending key, separate from creation. The draft ID itself prevents another submission even after key expiry. Keep original arguments when recovering."New value: +"Optional and not needed for a safe retry."
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "idempotency_expires_at": {
      -        "description": "End of optional sending-key protection. The draft ID still prevents another submission after this time.",
      -        "type": "string"
      -      },
      -      "limited": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "message": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "created_at": {
      -                "description": "Absolute ISO 8601 service timestamp in UTC (Z), with millisecond precision.",
      -                "type": "string"
      -              },
      -              "error_code": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "id": {
      -                "type": "string"
      -              },
      -              "in_reply_to": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "inbox_id": {
      -                "type": "string"
      -              },
      -              "labels": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "recipient_count": {
      -                "maximum": 9007199254740991,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "status": {
      -                "const": "accepted",
      -                "description": "Accepted by the email provider, not confirmation of delivery.",
      -                "type": "string"
      -              },
      -              "thread_id": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "id",
      -              "inbox_id",
      -              "thread_id",
      -              "created_at",
      -              "recipient_count",
      -              "error_code",
      -              "in_reply_to",
      -              "labels",
      -              "status"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "created_at": {
      -                "description": "Absolute ISO 8601 service timestamp in UTC (Z), with millisecond precision.",
      -                "type": "string"
      -              },
      -              "error_code": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "guidance": {
      -                "type": "string"
      -              },
      -              "id": {
      -                "type": "string"
      -              },
      -              "in_reply_to": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "inbox_id": {
      -                "type": "string"
      -              },
      -              "labels": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "recipient_count": {
      -                "maximum": 9007199254740991,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "status": {
      -                "enum": [
      -                  "rejected",
      -                  "unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "thread_id": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "id",
      -              "inbox_id",
      -              "thread_id",
      -              "created_at",
      -              "recipient_count",
      -              "error_code",
      -              "in_reply_to",
      -              "labels",
      -              "status",
      -              "guidance"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "outcome_persisted": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "replayed": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "limited",
      -      "message",
      -      "outcome_persisted"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "guidance": {
      -        "type": "string"
      -      },
      -      "idempotency_expires_at": {
      -        "description": "End of optional sending-key protection. The draft ID still prevents another submission after this time.",
      -        "type": "string"
      -      },
      -      "limited": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "message": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "created_at": {
      -                "description": "Absolute ISO 8601 service timestamp in UTC (Z), with millisecond precision.",
      -                "type": "string"
      -              },
      -              "error_code": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "id": {
      -                "type": "string"
      -              },
      -              "in_reply_to": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "inbox_id": {
      -                "type": "string"
      -              },
      -              "labels": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "recipient_count": {
      -                "maximum": 9007199254740991,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "status": {
      -                "const": "accepted",
      -                "description": "Accepted by the email provider, not confirmation of delivery.",
      -                "type": "string"
      -              },
      -              "thread_id": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "id",
      -              "inbox_id",
      -              "thread_id",
      -              "created_at",
      -              "recipient_count",
      -              "error_code",
      -              "in_reply_to",
      -              "labels",
      -              "status"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "created_at": {
      -                "description": "Absolute ISO 8601 service timestamp in UTC (Z), with millisecond precision.",
      -                "type": "string"
      -              },
      -              "error_code": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "guidance": {
      -                "type": "string"
      -              },
      -              "id": {
      -                "type": "string"
      -              },
      -              "in_reply_to": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "inbox_id": {
      -                "type": "string"
      -              },
      -              "labels": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "recipient_count": {
      -                "maximum": 9007199254740991,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "status": {
      -                "enum": [
      -                  "rejected",
      -                  "unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "thread_id": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "id",
      -              "inbox_id",
      -              "thread_id",
      -              "created_at",
      -              "recipient_count",
      -              "error_code",
      -              "in_reply_to",
      -              "labels",
      -              "status",
      -              "guidance"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "outcome_persisted": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "replayed": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "limited",
      -      "message",
      -      "outcome_persisted",
      -      "guidance"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "idempotency_expires_at": {
      +        "description": "Expiry of the optional idempotency_key; the draft_id protection does not expire.",
      +        "type": "string"
      +      },
      +      "limited": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "message": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "created_at": {
      +                "description": "Absolute ISO 8601 service timestamp in UTC (Z), with millisecond precision.",
      +                "type": "string"
      +              },
      +              "error_code": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "in_reply_to": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "inbox_id": {
      +                "type": "string"
      +              },
      +              "labels": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "recipient_count": {
      +                "maximum": 9007199254740991,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "status": {
      +                "const": "accepted",
      +                "description": "Accepted by the email provider, not confirmation of delivery.",
      +                "type": "string"
      +              },
      +              "thread_id": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "inbox_id",
      +              "thread_id",
      +              "created_at",
      +              "recipient_count",
      +              "error_code",
      +              "in_reply_to",
      +              "labels",
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "created_at": {
      +                "description": "Absolute ISO 8601 service timestamp in UTC (Z), with millisecond precision.",
      +                "type": "string"
      +              },
      +              "error_code": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "guidance": {
      +                "type": "string"
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "in_reply_to": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "inbox_id": {
      +                "type": "string"
      +              },
      +              "labels": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "recipient_count": {
      +                "maximum": 9007199254740991,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "status": {
      +                "enum": [
      +                  "rejected",
      +                  "unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "thread_id": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "inbox_id",
      +              "thread_id",
      +              "created_at",
      +              "recipient_count",
      +              "error_code",
      +              "in_reply_to",
      +              "labels",
      +              "status",
      +              "guidance"
      +            ],
      +            "type": "object"
      +          }
      +        ],
      +        "description": "The saved send. Check status: a successful call can still return rejected or unknown."
      +      },
      +      "outcome_persisted": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "replayed": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "limited",
      +      "message",
      +      "outcome_persisted"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "guidance": {
      +        "type": "string"
      +      },
      +      "idempotency_expires_at": {
      +        "description": "Expiry of the optional idempotency_key; the draft_id protection does not expire.",
      +        "type": "string"
      +      },
      +      "limited": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "message": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "created_at": {
      +                "description": "Absolute ISO 8601 service timestamp in UTC (Z), with millisecond precision.",
      +                "type": "string"
      +              },
      +              "error_code": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "in_reply_to": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "inbox_id": {
      +                "type": "string"
      +              },
      +              "labels": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "recipient_count": {
      +                "maximum": 9007199254740991,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "status": {
      +                "const": "accepted",
      +                "description": "Accepted by the email provider, not confirmation of delivery.",
      +                "type": "string"
      +              },
      +              "thread_id": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "inbox_id",
      +              "thread_id",
      +              "created_at",
      +              "recipient_count",
      +              "error_code",
      +              "in_reply_to",
      +              "labels",
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "created_at": {
      +                "description": "Absolute ISO 8601 service timestamp in UTC (Z), with millisecond precision.",
      +                "type": "string"
      +              },
      +              "error_code": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "guidance": {
      +                "type": "string"
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "in_reply_to": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "inbox_id": {
      +                "type": "string"
      +              },
      +              "labels": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "recipient_count": {
      +                "maximum": 9007199254740991,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "status": {
      +                "enum": [
      +                  "rejected",
      +                  "unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "thread_id": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "inbox_id",
      +              "thread_id",
      +              "created_at",
      +              "recipient_count",
      +              "error_code",
      +              "in_reply_to",
      +              "labels",
      +              "status",
      +              "guidance"
      +            ],
      +            "type": "object"
      +          }
      +        ],
      +        "description": "The saved send. Check status: a successful call can still return rejected or unknown."
      +      },
      +      "outcome_persisted": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "replayed": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "limited",
      +      "message",
      +      "outcome_persisted",
      +      "guidance"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observed

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation/safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=true, openWorldHint=true), so the bar is lower, yet the description adds meaningful behavioral context: a returned status (accepted/rejected/unknown) freezes the draft and rejection requires saving a new draft. This 'freeze' semantics is real value beyond the annotations, though it doesn't explain what freezing entails operationally or auth details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, front-loaded with the action and its authorization gate. The retry/freeze rule follows immediately, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be explained, and annotations cover the safety profile. The description complements these by explaining the freeze/retry lifecycle consequence of a send, making it largely complete; minor gaps are the lack of an explicit sibling comparison and edge-case behavior for 'unknown' status.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both draft_id (idempotent-retry semantics) and idempotency_key are already fully documented in the schema. The description adds no parameter-level meaning beyond this, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('send a saved draft'), which is clear and distinct from create_draft/update_draft siblings. However, it does not explicitly differentiate itself from send_message, the most likely alternative for outbound sending, leaving the agent to infer the distinction from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear precondition ('when the human or the assignment authorizes it') and specific retry guidance ('to try again after a rejection, save a new draft'). This is actionable context, but it never names an alternative tool (e.g., send_message) or states an explicit when-not condition beyond the authorization gate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources