Skip to main content
Glama
Telegram MCP

Telegram MCP

by ericmcfall

Send Telegram photo

send_photo

Sends a photo through a Telegram bot from an absolute local path or HTTP(S) URL to a specified chat, with an optional caption.

Instructions

Send a photo through the Telegram bot from an absolute local path (.jpg, .jpeg, .png, .webp, up to 10 MB) or an http(s) URL.

Input Schema

NameRequiredDescriptionDefault
photoYesAbsolute local file path or http(s) URL
formatNo'plain' sends text as is. 'html' uses Telegram HTML (<b>, <i>, <u>, <s>, <code>, <pre>, <a href>, <blockquote>); escape <, > and & in text as &lt; &gt; &amp;.plain
captionNoOptional caption, up to 1024 characters
chat_idYesDestination chat: a numeric ID, or @channelname for a public channel. Never guess this; ask the user if it is unknown.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true and non-idempotence, so the safety profile is covered by structured data. The description adds genuine behavioral constraints beyond that: a 10 MB size ceiling and a whitelist of supported formats (.jpg, .jpeg, .png, .webp), which affects whether an agent should even attempt the call. It does not cover failure modes or re-send behavior, but the file constraints are substantive added context.

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?

A single sentence, front-loaded with the action and resource, then the input forms and limits. No filler, no repetition of the title, and every clause carries constraint information an agent needs before calling.

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 only four parameters, full schema coverage, and annotations covering the safety profile, the definition supplies what is needed to invoke the tool correctly, including input constraints. There is no output schema, so no return format is described either, leaving the agent unaware of what the call yields (e.g., a message identifier) or what an error looks like, which is a minor but real gap for a network-side-effect operation.

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 coverage is 100%, so both required parameters and the optional caption/format fields are already documented in the schema, including the 'never guess chat_id' warning and the HTML escaping rules. The description adds the file-format and size constraints for photo, which the schema's 'absolute local file path or http(s) URL' line does not, but that is a single increment over an otherwise schema-driven baseline.

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 gives a specific verb and resource ('Send a photo through the Telegram bot') and immediately names the two accepted photo sources: an absolute local path or an http(s) URL. It is trivially distinguishable from the only sibling, send_message, since the resource type differs, though it never explicitly contrasts the two.

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

Usage Guidelines3/5

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

Usage is implied by the resource: call this when the user wants an image delivered to a chat. There is no explicit when-not guidance (e.g., use send_message for text or files, albums not supported) and no mention of prerequisites such as the bot needing access to the destination chat.

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

Deploy Server

Other Tools