Skip to main content
Glama
secure-telegram-mcp

secure-telegram-mcp

Save a draft

save_draft

Stores a plain-text draft in an allow-listed Telegram chat without sending it, so users can prepare a message and leave it unsent.

Instructions

Store a plain-text draft on a single in-scope chat WITHOUT sending it. The chat must be inside this endpoint’s allow-list; out-of-scope targets are rejected. Requires the draft permission (distinct from send), is subject to the per-endpoint anti-ban quota and, when enabled, human confirmation. Saving an empty draft is not supported here; clearing a draft is out of scope for v1.

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": {
      "peer": "<peer>",
      "text": "<text>"
    },
    "name": "save_draft"
  }
}

Input Schema

NameRequiredDescriptionDefault
peerYesChat reference: { kind:'id', value:'<decimal id>' } | { kind:'username', value:'@name' } | { kind:'me' }.
textYesMessage body, 1..4096 characters.
topicIdNoAddress the draft to this forum topic of a forum supergroup.
replyToMessageIdNoOptional id of a message this draft replies to (same chat).

Output Schema

NameRequiredDescriptionDefault
savedYesWhether the draft was stored.
chat_idYesChat the draft was stored on.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the supplied annotations, the description discloses the authorization model (a `draft` permission distinct from `send`), an allow-list scoping rule that causes rejection, the per-endpoint anti-ban quota, and an optional human-confirmation gate. These are operationally decisive facts an agent cannot obtain from readOnlyHint=false / destructiveHint=false alone.

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?

Four tight sentences, zero filler, with the core action and its 'WITHOUT sending it' qualifier front-loaded before constraints, permissions, and exclusions. Each sentence carries distinct information the agent needs.

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

Completeness5/5

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

For a 4-parameter mutation tool with full annotations and an existing output schema, the description covers the remaining gaps: permission scope, quota behavior, confirmation gating, and the explicit exclusion of empty-draft saving and draft clearing. Nothing needed for correct invocation is missing.

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

Parameters5/5

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

With schema description coverage at 100%, the schema already documents peer shapes, text bounds, and the topic/reply ids. The description still adds meaning beyond it: that the body is plain text, that the target must be in the endpoint allow-list, and that all addressing applies to a single chat.

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

Purpose5/5

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

The description opens with a specific verb and resource, 'Store a plain-text draft on a single in-scope chat WITHOUT sending it', and explicitly draws the boundary against the send path ('distinct from `send`'). An agent can immediately separate this from send_message or edit_message without opening the schema.

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 clear when-to-use context (drafting without delivery) and firm when-not cases: empty drafts unsupported, clearing a draft out of scope for v1, out-of-scope chats rejected by the allow-list. It does not name a sibling alternative to reach for when the agent actually wants delivery (send_message) or clearing, leaving that inference to the agent.

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