Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Send, reply, react, and edit Telegram messages via MCP. Use whenever the user wants to send a message on Telegram, reply to someone on Telegram, react to a Telegram message, edit a sent message, or download an attachment from Telegram. Also trigger when messages arrive from Telegram (channel tags with chat_id), when the user says 'manda no telegram', 'responde no telegram', 'envia mensagem', 'reage com', or references any Telegram chat or group.
.claude/skills/evolution-foundation-int-telegram/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 243% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 302% | 0% |
| case-13 | ✓→✗ | ▼ Worse | 237% | 0% |
| case-14 | ✓→✗ | ▼ Worse | 214% | 0% |
| case-19 | ✓→✗ | ▼ Worse | 350% | 0% |
Skill for sending, replying, reacting, and editing messages on Telegram via MCP.
Telegram is connected via MCP plugin. Messages arrive as <channel source="telegram" chat_id="..." message_id="..." user="..." ts="..."> tags. The sender does not see what you write in this session — everything you want them to read must go through the reply tool.
| Tool | What it does | |------|-----------| | mcp__plugin_telegram_telegram__reply | Sends a message or replies to a specific message | | mcp__plugin_telegram_telegram__edit_message | Edits an already sent message | | mcp__plugin_telegram_telegram__react | Adds an emoji reaction to a message | | mcp__plugin_telegram_telegram__download_attachment | Downloads attachment from a message (photo, file, audio) |
Use reply to send messages. Pass the chat_id back.
reply(chat_id="...", text="Sua mensagem aqui")To reply to a specific message (quote-reply), add reply_to:
reply(chat_id="...", text="Sua resposta", reply_to="message_id")Important: Only use reply_to when replying to a previous message. For new messages (the most recent), omit reply_to.
The reply tool accepts files via the files parameter:
reply(chat_id="...", text="Here is the report", files=["/absolute/path/file.pdf"])Use react to add emoji:
react(chat_id="...", message_id="...", emoji="👍")Use edit_message to correct or update an already sent message. Edits do not generate push notifications — if something important changed and the user needs to know, send a new message afterwards.
edit_message(chat_id="...", message_id="...", text="Texto corrigido")Use case: progress updates on long tasks. Edit the previous message with the updated status, and send a new message when finished (to trigger the push notification).
When a message arrives with attachment_file_id, use download_attachment to download:
download_attachment(file_id="...")The tool returns the path of the downloaded file. Use Read to read the content (images, PDFs, etc.).
If the message arrived with image_path, read directly with Read without needing to download.
reply — your response text in this session is invisible to them/telegram:access)User says: "tell the contact on telegram the meeting changed to 3pm" -> Need the contact's chat_id. If you don't have it, ask. If there's a recent message, use its chat_id.
Message arrives from Telegram:
<channel source="telegram" chat_id="123456" message_id="789" user="Contact" ts="...">
Hey, how's the deploy going?
</channel>-> Use reply(chat_id="123456", text="It's running, deploy should finish in 10min").
User says: "react with eyes emoji on the last group message" -> Use react(chat_id="...", message_id="...", emoji="eye emoji").
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,709 | 6,874 | -29% | 1 | 1 | 0% | 661 | 1,473 | +123% | 0 | 0 | — |
case-12 | fail→fail | 7,900 | 7,555 | -4% | 1 | 1 | 0% | 1,009 | 1,452 | +44% | 0 | 0 | — |
case-02 | fail→fail | 3,373 | 5,339 | +58% | 1 | 1 | 0% | 488 | 1,208 | +148% | 0 | 0 | — |
case-03 | fail→fail | 9,245 | 7,199 | -22% | 1 | 1 | 0% | 1,773 | 1,426 | -20% | 0 | 0 | — |
case-04 | fail→pass | 2,532 | 2,173 | -14% | 1 | 1 | 0% | 370 | 1,269 | +243% | 0 | 0 | — |
case-05 | fail→fail | 4,405 | 9,978 | +127% | 1 | 1 | 0% | 643 | 1,657 | +158% | 0 | 0 | — |
case-06 | fail→fail | 7,343 | 9,871 | +34% | 1 | 1 | 0% | 1,524 | 2,645 | +74% | 0 | 0 | — |
case-07 | fail→fail | 7,313 | 7,614 | +4% | 1 | 1 | 0% | 752 | 1,514 | +101% | 0 | 0 | — |
case-08 | fail→fail | 3,810 | 7,664 | +101% | 1 | 1 | 0% | 528 | 1,402 | +166% | 0 | 0 | — |
case-09 | fail→fail | 3,752 | 4,106 | +9% | 1 | 1 | 0% | 624 | 1,141 | +83% | 0 | 0 | — |
case-10 | fail→fail | 5,023 | 3,981 | -21% | 1 | 1 | 0% | 815 | 1,143 | +40% | 0 | 0 | — |
case-11 | fail→fail | 12,427 | 3,983 | -68% | 1 | 1 | 0% | 1,312 | 1,208 | -8% | 0 | 0 | — |
case-13 | pass→fail | 2,967 | 13,801 | +365% | 1 | 1 | 0% | 564 | 1,898 | +237% | 0 | 0 | — |
case-14 | pass→fail | 2,672 | 9,087 | +240% | 1 | 1 | 0% | 438 | 1,376 | +214% | 0 | 0 | — |
case-15 | fail→fail | 2,862 | 8,171 | +185% | 1 | 1 | 0% | 386 | 1,667 | +332% | 0 | 0 | — |
case-16 | fail→fail | 2,099 | 2,513 | +20% | 1 | 1 | 0% | 317 | 1,382 | +336% | 0 | 0 | — |
case-17 | fail→pass | 2,408 | 3,664 | +52% | 1 | 1 | 0% | 378 | 1,518 | +302% | 0 | 0 | — |
case-18 | fail→fail | 7,163 | 5,808 | -19% | 1 | 1 | 0% | 1,075 | 1,365 | +27% | 0 | 0 | — |
case-19 | pass→fail | 2,392 | 10,949 | +358% | 1 | 1 | 0% | 435 | 1,958 | +350% | 0 | 0 | — |
case-20 | pass→fail | 4,325 | 7,545 | +74% | 1 | 1 | 0% | 595 | 1,553 | +161% | 0 | 0 | — |
case-21 | fail→fail | 5,551 | 6,117 | +10% | 1 | 1 | 0% | 938 | 1,329 | +42% | 0 | 0 | — |
case-22 | fail→fail | 5,381 | 4,132 | -23% | 1 | 1 | 0% | 292 | 1,199 | +311% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 4 counted toward the lift figure. The other 18 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -9 percentage points is the difference between those two pass rates over the 4 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.