Skip to main content
Glama
secure-telegram-mcp

secure-telegram-mcp

Forward message(s)

forward_message

Forward one or more Telegram messages between chats only when both are in the same endpoint allow-list, preventing cross-group forwarding.

Instructions

Forward one or more messages from one in-scope chat to another. BOTH the source and destination chats must be inside this endpoint’s allow-list (the same virtual group); cross-group forwarding is not possible. Subject to the per-endpoint anti-ban quota and, when enabled, human confirmation. The batch of message ids is capped per request.

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": {
      "fromPeer": "<fromPeer>",
      "toPeer": "<toPeer>",
      "messageIds": "<messageIds>"
    },
    "name": "forward_message"
  }
}

Input Schema

NameRequiredDescriptionDefault
toPeerYesDestination chat to forward TO. Must be inside this endpoint’s allow-list (same virtual group as the source); send access is required.
fromPeerYesSource chat to forward FROM. Must be inside this endpoint’s allow-list (same virtual group as the destination); read access is required.
messageIdsYesBetween 1 and 100 message ids.

Output Schema

NameRequiredDescriptionDefault
to_chat_idYesDestination chat forwarded to.
from_chat_idYesSource chat forwarded from.
forwarded_message_idsYesIds of the newly created messages in the destination chat.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing the allow-list/virtual-group constraint, per-endpoint anti-ban quota, optional human confirmation, and a per-request cap on message ids. It does not explain partial-failure behavior or ordering of the forwarded batch, and annotations already cover the safety profile (non-readonly, open-world, non-idempotent, non-destructive), so a 4 is fair.

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

Conciseness4/5

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

Front-loads the core action in one sentence, then stacks constraints in a logical order (scope, quota/confirmation, batch size). Each sentence carries a distinct constraint, though the closing note about the batch cap is largely redundant with the schema.

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?

A mutation tool with three required params, full schema coverage, and an output schema, so return values need no explanation. The description supplies the environmental constraints an agent needs before calling it; only edge-case behavior such as partial batch failures is unaddressed.

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 fromPeer, toPeer, and messageIds are fully documented in the schema itself. The description only adds the soft notion that the id batch is capped per request, which the schema already enforces via maxItems 100. Baseline 3 applies.

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?

Uses a specific verb (forward) plus resource (one or more messages) and scopes it precisely between an in-scope source and destination chat. The sibling set contains send_message and get_messages, and this description makes clear forwarding moves existing messages rather than sending new ones.

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?

States explicit preconditions and exclusions: both chats must be in the allow-list, cross-group forwarding is impossible, quota and human confirmation may apply. It stops short of naming sibling alternatives (e.g., send_message for new content), so routing is implied rather than directed.

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