mcp-telegram
Provides tools for interacting with a real Telegram user account via MTProto, enabling reading, searching, sending, editing, forwarding, reacting, polling, moderating, managing contacts, stories, drafts, notifications, folders, privacy, and more.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-telegramsend 'hi' to my engineering channel"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
A Model Context Protocol (MCP) server that connects Claude Desktop, Codex CLI, Cursor, Claude Code, VS Code, Cline, Windsurf, Goose, and any other MCP-compatible client to a real Telegram user account via MTProto—so your agent can read, search, send, moderate, and manage Telegram chats from chat or automated tool calls instead of clicking through the Telegram UI.
Use it to: read dialogs and search messages globally · send/edit/forward/react/poll · download media and transcribe voice notes · moderate channels (ban/restrict/promote, invite links, slow-mode, admin log, forum topics) · manage stories, contacts, drafts, notifications, folders, privacy · or fall through to the raw MTProto bridge for anything else. All against a single signed-in user account—no bot required.
This server signs in as a real Telegram user (not a bot). Sessions live in~/.telegram-agent/. Treat that directory like a password.
Prerequisites
Node.js
>=20Telegram API credentials from my.telegram.org/apps —
api_idandapi_hash
Related MCP server: telegram-mcp
Want a lighter transport?
This package is the MCP server — every tool schema (~12,700 tokens) sits in your agent's context on every turn. Good for any MCP client and for hosted runtimes that can't shell out.
If your agent is Claude Code / Codex CLI / Cursor / Gemini CLI / Cline / Windsurf, there's a companion package — telegram-agent — that ships the same Telegram surface as a universal agent skill. The agent only loads the skill instructions when your prompt mentions Telegram — ~50× lower context cost in idle. Standalone (no MCP server in the loop), but uses the same ~/.telegram-agent/ session store as this package — sign in once, use either or both.
npm i -g telegram-agent
telegram-agent login
npx skills add beautyfree/telegram-agent -a claude-code -gContinue below for the MCP install path.
Install
Option A — automatic, all clients:
npx add-mcp mcp-telegram \
--env TELEGRAM_API_ID=123456 \
--env TELEGRAM_API_HASH=abc...add-mcp (from Neon) writes the correct config for Claude Desktop, Claude Code, Cursor, VS Code, Codex, Gemini CLI, Cline, Zed, Goose, OpenCode, and others. Pick the client in the interactive prompt.
Both env vars are required. Get them frommy.telegram.org/apps.
Option B — manual config:
{
"mcpServers": {
"telegram": {
"command": "npx",
"args": ["-y", "mcp-telegram"],
"env": {
"TELEGRAM_API_ID": "123456",
"TELEGRAM_API_HASH": "abc..."
}
}
}
}{
"mcpServers": {
"telegram": {
"command": "npx",
"args": ["-y", "mcp-telegram"],
"env": {
"TELEGRAM_API_ID": "123456",
"TELEGRAM_API_HASH": "abc..."
}
}
}
}{
"servers": {
"telegram": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-telegram"],
"env": {
"TELEGRAM_API_ID": "123456",
"TELEGRAM_API_HASH": "abc..."
}
}
}
}claude mcp add telegram \
-e TELEGRAM_API_ID=123456 \
-e TELEGRAM_API_HASH=abc... \
-- npx -y mcp-telegram[mcp_servers.telegram]
command = "npx"
args = ["-y", "mcp-telegram"]
env = { TELEGRAM_API_ID = "123456", TELEGRAM_API_HASH = "abc..." }First-time sign in
Ask your agent:
Sign in to my Telegram.
The agent calls the login tool. A browser tab opens. Enter your phone number, the SMS code, and 2FA password if you have one. The tab shows a green checkmark — you can close it. The session is now stored locally and the agent can read your Telegram.
To add another account, ask the agent to call login again.
Tools
102 tools covering the full Telegram user-account surface. Common ones below; the rest are grouped under collapsibles. Every tool accepts an optional accountId (omit when only one account is signed in). peer accepts a numeric chat id, an @username, or the literal "me" (Saved Messages).
Top of the menu:
Tool | What it does |
| Open the browser-based sign-in flow. Adds an account. |
| List signed-in accounts. |
| List dialogs/chats/channels. Filters: |
| List messages in a dialog. Newest first. |
| Search inside one dialog: |
| Search across every chat you have. |
| Find dialogs by name/title/username substring. |
| Send text. Supports |
| Send a file (local path or |
| Save the media on a message to disk. |
| Transcribe a voice/video note (Premium). |
| Call any raw MTProto method by name. Auto-resolves |
These are local-only: they manage which Telegram sessions live in ~/.telegram-agent/ and the settings UI. No Telegram API call beyond the sign-in flow itself.
Tool | What it does |
| List signed-in accounts. |
| Browser-based sign-in. Adds an account. |
| Drop a local session and revoke it on Telegram. |
| Open the local settings page (tool surface + read-only). |
Tool | What it does |
| Return the profile of the authenticated user. |
| Change own first/last name and bio. |
| Set or clear own |
| Set the account birthday. |
| Upload a new avatar (local path or URL). |
Tool | What it does |
| List dialogs. Filters: |
| Find dialogs by name/title/username substring. |
| Resolve |
| List custom dialog folders (chat filters). |
| List contacts. |
Tool | What it does |
| List messages in a dialog. |
| Search inside one dialog (text, type filter, sender, date range). |
| Search across every chat. |
| Fetch one or more messages by id. |
| Get reactions on messages. |
| Mark messages read up to an id. |
Tool | What it does |
| Send text. |
| Edit a previously sent message. |
| Delete by id (optionally revoke for all). |
| Forward messages between dialogs. |
| Pin / unpin in a dialog. |
| Set reactions on a message. |
| Send to a phone number, auto-creates a temporary contact. |
Tool | What it does |
| Send a file (path or URL). Albums via array. |
| Save a message's media to disk. |
| Save a peer's avatar to disk. |
| Transcribe voice/video (Premium). |
Tool | What it does |
| Send a poll. Supports quiz, multiple-choice, anonymous, close period. |
| Cast a vote. |
| Finalize a poll. |
| Fetch tally. |
Tool | What it does |
| Set emoji reactions on a message. |
| Read reactions. |
| Set account-wide default. |
Tool | What it does |
| Feed of contacts' stories. |
| One peer's stories. |
| Post a story (photo or video). |
| Delete own stories. |
| Mark stories viewed. |
| List who viewed your story. |
Tool | What it does |
| Full ban (optional |
| Lift restrictions. |
| Apply a custom rights mask. |
| Grant admin rights (with rank). |
| Strip admin rights. |
| Add users to a channel/supergroup. |
| Kick from chat/channel. |
| Single participant info. |
| Members with filter (admins/banned/bots/...) and substring search. |
| Remove every message by a user. |
| Recent admin events with event-type filter. |
Tool | What it does |
| Change title (works for channels, supergroups, and basic groups). |
| Change description. |
| Change avatar (path or URL). |
| Set/clear public |
| Check availability. |
| Set slow-mode seconds. |
| Author signatures on channel posts. |
| Hide history from new members. |
| Require admin approval to join. |
| Leave a channel/supergroup. |
| Extended info (about, counts, linked chat, slow-mode). |
| Extended user info (bio, common chats). |
Tool | What it does |
| New broadcast channel or supergroup (optional forum mode). |
| Permanently delete. |
| Basic group → supergroup. |
| Hand over creator rights (requires 2FA password). |
Tool | What it does |
| New link with optional expiry, usage cap, join-request gate. |
| List active or revoked links. |
| Revoke a specific link. |
| List users that joined via a link. |
Tool | What it does |
| List forum topics. |
| Create a new topic. |
| Rename, re-icon, close, hide. |
Tool | What it does |
| Save a draft for a dialog. |
| Drop the draft for a dialog. |
| List all dialog drafts. |
Tool | What it does |
| Mute a chat (optional |
| Unmute. |
| Read settings. |
| Update mute, previews, sound, story-mute. |
Tool | What it does |
| New folder with include/exclude rules. |
| Replace folder rules. |
| Remove a folder. |
| Set display order. |
Tool | What it does |
| All contacts. |
| Add a user to contacts. |
| Remove users from contacts. |
| Search contacts + global directory. |
Tool | What it does |
| Block / unblock. |
| Block list. |
| Read a privacy key. |
| Update a privacy key (mode + allow/disallow lists). |
Tool | What it does |
| Installed sticker sets. |
| Install by short name. |
| Pin a sticker to recent. |
Tool | What it does |
| List your boost slots. |
| Apply slots to a channel. |
Tool | What it does |
| Run an inline bot query. |
| Call any MTProto method by qualified name (e.g. |
Gating which tools are exposed
Three env vars, applied in order:
Variable | Effect |
| Hide every destructive / mutating tool. |
| Strict allowlist — only these tools register. |
| Blocklist applied after the allowlist. |
Examples:
MCP_TELEGRAM_READONLY=1 # read-only agent
MCP_TELEGRAM_TOOLS='login,list*,search*,get*' # discovery-only
MCP_TELEGRAM_DISABLE='delete*,ban*,kick*,create_channel,delete_channel,transfer_ownership,invokeMtproto' # safer write setEnvironment
Variable | Required | Default | Notes |
| yes | — | From my.telegram.org/apps. If unset, the auth page prompts for it and saves to |
| yes | — | Same as above. |
| no |
| State + per-account session storage. Legacy |
| no |
| Where |
| no | — | Set to |
| no | — | Strict allowlist. Comma-separated tool names; supports |
| no | — | Blocklist applied after the allowlist. Same syntax. |
| no |
|
|
Choosing which tools the agent sees
The three gating vars stack — MCP_TELEGRAM_READONLY → MCP_TELEGRAM_TOOLS → MCP_TELEGRAM_DISABLE.
# Read-only agent — every mutating tool is hidden
MCP_TELEGRAM_READONLY=1
# Discovery-only — only login + the list/search/get tools
MCP_TELEGRAM_TOOLS='login,list*,search*,get*,resolveUsername'
# Allow writes but keep destructive ones away from the agent
MCP_TELEGRAM_DISABLE='delete*,ban*,kick*,create_channel,delete_channel,transfer_ownership,invokeMtproto'
# Specific surface: read + send/edit only
MCP_TELEGRAM_TOOLS='login,list_accounts,list_dialogs,list_messages,search_messages,search_global,send_message,editMessage'In an MCP client config, drop these into the same env block as TELEGRAM_API_ID/TELEGRAM_API_HASH. To verify, re-open your client — the tools the server advertises are exactly the ones registered after the gates run.
Data layout
~/.telegram-agent/
├── state.json known accounts (no secrets in here)
└── sessions/
└── <account_id>/ per-account MTProto sessionIf a Telegram session is invalidated server-side (logged out from another device, password rotated, etc.), the next tool call returns an error telling the agent to call login to re-authorize.
Development
git clone https://github.com/beautyfree/mcp-telegram
cd mcp-telegram
npm install
echo "TELEGRAM_API_ID=...\nTELEGRAM_API_HASH=..." > .env
npm run devLayout:
src/
├── index.ts bin entry — stdio MCP server, tool registrations
├── telegram.ts MTProto client + login state machine
├── auth-browser.ts ephemeral HTTP server that drives the browser flow
├── auth-page.ts inline HTML for the auth page
├── state.ts persistent state in ~/.telegram-agent/
└── logger.tsLicense
MIT — see LICENSE.
Telegram MCP · MCP Telegram · Telegram MCP server · Telegram for Claude · Telegram for Cursor · Telegram for Claude Code · Telegram for VS Code · Telegram for Codex · Telegram for Cline · Telegram for Windsurf · Telegram for AI agents · Telegram MTProto MCP · Telegram user-account MCP · Telegram automation MCP · Model Context Protocol Telegram · MCP server Telegram · gramjs MCP
Available Tools
111 toolsadd_contactAdd a contactCIdempotent
Add a user to your contacts.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| phone | No | Required for phone-based contact lookup | |
| lastName | No | ||
| accountId | No | ||
| firstName | Yes | ||
| addPhonePrivacyException | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the annotations (openWorldHint, idempotentHint). It does not disclose side effects such as contact approval flows, duplicate handling, or the purpose of addPhonePrivacyException, leaving the agent with minimal behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it extremely concise and front-loaded with the core action. It contains no wasted words, though its brevity also contributes to under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters, no output schema, and minimal annotations, the description is far too terse to be complete. It fails to explain parameter purposes, return behavior, or special conditions such as phone being required for contact lookup, leaving significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers only 17% of parameters with descriptions (only 'phone'), and the tool description mentions no parameters. The implied meaning of 'user' is insufficient to explain required fields like firstName/lastName, accountId, and addPhonePrivacyException, making the description unhelpful for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Add' and clearly identifies the resource as 'a user to your contacts', distinguishing it from sibling tools like list_contacts, delete_contact, and search_contacts. It is unambiguous and directly states the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites like authentication, how to obtain the 'user' parameter, or when to prefer search_contacts or block_user over adding a contact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_recent_stickerAdd a sticker to recentBIdempotent
Pin a sticker to the recently used list. Use unsave: true to remove it.
| Name | Required | Description | Default |
|---|---|---|---|
| unsave | No | ||
| accountId | No | ||
| accessHash | Yes | ||
| documentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds some behavioral context beyond the annotations by explaining that the tool pins a sticker and that `unsave: true` removes it. However, it does not disclose potential side effects, permissions, or the result of pinning the same sticker again. The idempotentHint and openWorldHint are already present, but the description could do more to elaborate on the tool's runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences, front-loaded with the primary action and a secondary note on the unsave flag. Every word contributes meaningful information, with no wasted text or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and minimal annotations, the description covers the core action and the unsave variant but omits important context like prerequisites (e.g., must have a sticker document ID), error conditions, and the effect of repeated calls. It is adequate for a simple utility but leaves gaps that could affect proper usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the burden falls on the description. It explains only the `unsave` parameter, leaving `documentId`, `accessHash`, and `accountId` without any additional meaning. While parameter names may be self-explanatory to experienced users, the description fails to clarify their purpose or required format, making it insufficient for reliable invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Pin a sticker to the recently used list.' This uses a distinct verb ('pin') and resource ('recently used list'), and is not a tautology. It also distinguishes from any sibling tools, as none deal specifically with recent stickers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. The only contextual note is 'Use `unsave: true` to remove it,' which explains a parameter's effect rather than usage context. There are no exclusions or alternative tool mentions, leaving the agent without clear decision-making criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_boostApply boost slots to a channelC
Apply one or more boost slots to a channel.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| slots | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only openWorldHint annotation, the description fails to disclose critical behavioral traits such as whether boosts are consumed permanently, whether the action is reversible, or any permission requirements. It simply restates the action without adding operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the verb and object. There is no filler or redundant information, making it maximally concise for the content it provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutating tool with no output schema and minimal annotations. The description leaves essential unknowns unresolved—such as the effect of applying boosts, reversibility, and how account selection works—making it inadequate for safe and correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description does not explain the meaning of `peer`, how `slots` are identified, or the purpose of `accountId`. The only hint, 'one or more,' merely restates the schema's minItems constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('apply') and clearly names the resource ('boost slots' to 'a channel'). It distinguishes the action from sibling tools like get_my_boosts, and adds 'one or more' to indicate quantity, avoiding a mere tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites (e.g., owning boost slots or channel permissions), and no reference to sibling tools like get_my_boosts for checking available slots.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ban_userBan a user from a channel/supergroupBDestructive
Fully ban a user. Pass untilDate (unix seconds) to time-limit the ban; default is forever.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| user | Yes | ||
| accountId | No | ||
| untilDate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint, so the agent knows it is destructive. The description adds useful context about untilDate time-limiting and the default being forever, but it does not disclose permission requirements, reversibility, or impact on existing messages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core action and no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, no output schema, and only one parameter explained, the description is incomplete. It lacks context on how to specify the user (e.g., username vs ID), required admin permissions, and what happens to the user's messages or membership.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters. It only explains untilDate (unix seconds, default forever), while peer, user, and accountId are left undefined, leaving the agent to guess their meaning or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Fully ban a user' with a specific verb and resource, and the title clarifies 'from a channel/supergroup'. This distinguishes it from sibling tools like restrict_user, kick_participant, and block_user, making the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as restrict_user, kick_participant, or block_user. The description only states what it does, not in which situations it should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_userBlock a userCIdempotent
Block a user from contacting you.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description restates the title and adds no behavioral context beyond 'from contacting you'. While annotations include idempotentHint and openWorldHint, the description fails to disclose consequences like effects on existing conversations, reversibility, or whether the user is notified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, front-loading the core action. It is appropriately economical, though it sacrifices detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the two-parameter schema and lack of output schema, the description is too sparse to provide adequate context for correct invocation. It leaves the optional 'accountId' parameter unexplained and does not clarify what 'blocking' entails in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema_description_coverage at 0%, the description must explain the parameters. It does not mention 'user' or 'accountId' at all, leaving their formats, purpose, and necessity completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Block a user from contacting you' uses the specific verb 'block' with a clear resource ('a user') and a scope ('from contacting you'). This clearly distinguishes the tool from siblings like 'mute_peer' (which silences notifications) and 'ban_user' (which typically operates in a group/channel context).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'unblock_user', 'mute_peer', or 'ban_user'. It simply states the action without any context about suitable scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_usernameCheck if a username is availableARead-only
Verify whether a desired channel/supergroup username is free.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| username | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only behavior is known. The description adds the channel/supergroup scoping but does not describe behavior for unavailable usernames or potential edge cases. With annotations present, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It conveys the essential action and target resource effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's simplicity and read-only annotations, the complete lack of parameter documentation and usage guidance makes it incomplete for an agent. The 'peer' parameter is particularly ambiguous, and no return behavior is specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and no parameter descriptions are provided. The description clarifies that 'username' refers to a channel/supergroup username, but 'peer' and 'accountId' remain unexplained, leaving the agent uncertain about required inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it verifies whether a desired channel/supergroup username is free. This distinguishes it from siblings like update_username (which modifies) and resolve_username (which resolves existing usernames), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied (pre-checking username availability before claiming one), but there is no explicit guidance on when to use this tool versus alternatives like resolve_username or update_username. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_draftClear a draftAIdempotent
Equivalent to save_draft with an empty text.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations of openWorldHint and idempotentHint, the description adds the key behavioral fact that this acts as save_draft with empty text, effectively clearing the draft. It does not contradict the annotations and provides useful context beyond them, though it omits details like return values or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the key action, and contains no filler. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple, the complete absence of parameter semantics and no output schema leaves the description insufficient for confident invocation. The agent may infer the purpose but cannot determine correct input formats without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides zero information about the 'peer' or 'accountId' parameters. Schema descriptions are also absent (0% coverage), so the agent must guess the meaning of parameters, which is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool clears a draft by equating it to 'save_draft' with an empty text. This is a specific verb+resource (clear + draft) and distinguishes it from the related 'save_draft' tool by indicating the special case of empty content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when you want to clear a draft. However, it does not explicitly contrast with 'save_draft' or other alternatives, nor does it say when not to use this tool. The equivalence gives some guidance but leaves the selection logic implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_pollClose an active pollAIdempotent
Finalize a poll so no further votes are accepted.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No | ||
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide openWorldHint and idempotentHint, but the description adds the key behavioral effect ('no further votes are accepted'). It does not disclose whether existing votes are preserved, whether the action is reversible, or any permission requirements. Given the annotations, the description offers minimal additional transparency beyond the core effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the action and outcome. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters and no output schema or parameter descriptions, this one-sentence description is inadequate. It omits guidance on how to identify the poll (peer/messageId), what the response looks like, and any additional side effects. The annotations provide minimal support, leaving significant gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no parameter explanations. The agent must infer that 'peer' identifies the chat and 'messageId' identifies the poll, but this is not stated. The description fails to compensate for the total lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'finalize' and identifies the resource 'poll', clearly distinguishing from sibling tools like send_poll, vote_poll, and get_poll_results. It conveys the exact action and outcome succinctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use it: when an active poll exists and you want to stop voting. However, it does not explicitly state when not to use it or mention alternatives like vote_poll or get_poll_results, so it lacks explicit exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_channelCreate a channel or supergroupB
Create a broadcast channel (broadcast: true) or a supergroup (megagroup: true).
| Name | Required | Description | Default |
|---|---|---|---|
| about | No | ||
| forum | No | Enable forum/topics mode (supergroups only) | |
| title | Yes | ||
| accountId | No | ||
| broadcast | No | ||
| megagroup | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is openWorldHint, and the description adds no behavioral context beyond the fact that it creates something. It does not disclose permission requirements, serialization effects, account selection implications, or what happens after creation (e.g., returns chat info).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the action and uses inline code for the key flags. Every word earns its place, making it concise without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, no output schema, and no behavioral details, the description is insufficient for an agent to fully understand the tool's side effects, return format, or account selection. The description's focus on only two flags leaves significant gaps in operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, with only forum having a description. The description clarifies broadcast and megagroup flags and their role in determining channel type, but it leaves accountId, about, and title semantics unexplained, failing to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a broadcast channel or supergroup, with specific flags distinguishing the two. This is an explicit verb+resource combination that differentiates it from sibling create_* tools like create_invite_link or create_topic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as migrate_chat or create_folder. There is no mention of prerequisites, exclusions, or specific use cases beyond the inherent creation action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderCreate a dialog folderA
Create a new dialog folder (chat filter). id is auto-assigned to the next free slot 2..255.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| excludeRead | No | ||
| includeBots | No | ||
| pinnedPeers | No | ||
| excludeMuted | No | ||
| excludePeers | No | ||
| includePeers | No | ||
| includeGroups | No | ||
| excludeArchived | No | ||
| includeChannels | No | ||
| includeContacts | No | ||
| includeNonContacts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only openWorldHint=true in annotations, the description adds useful non-obvious behavior: 'id is auto-assigned to the next free slot 2..255.' This goes beyond the schema and annotations. It does not describe return values or failure modes, but the open-world mutation aspect is already hinted by the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences with no filler. It front-loads the primary purpose and adds a useful clarifying parenthetical, so every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this tool has 12 parameters, no output schema, and only an openWorldHint annotation, the description is far too minimal. It provides no guidance on how filter parameters combine, defaults when omitted, title constraints, or the expected result, making it incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the 12 parameters. While names like excludeRead, includeBots, and pinnedPeers are somewhat self-explanatory, the semantics of peer arrays, interactions between include/exclude filters, and default values are left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'dialog folder', with the parenthetical '(chat filter)' adding domain context. It is easily distinguished from sibling tools like edit_folder, delete_folder, and reorder_folders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by 'Create a new dialog folder,' but there is no explicit guidance about when to use this tool versus alternatives, nor any mention of prerequisites or conflicts with existing folders. The context is clear but lacks exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_invite_linkCreate an invite linkB
Generate a new invite link with optional expiry, usage cap, and join-request gate.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| title | No | ||
| accountId | No | ||
| expireDate | No | Unix seconds — link expires at this time | |
| usageLimit | No | ||
| requestNeeded | No | Require admin approval to join |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include openWorldHint, with no readOnly or destructive hints, so the description must disclose side effects. It only says 'generate' without mentioning permissions, irreversibility, rate limits, or what happens to existing links. This is similar to the TDQS 2.9 example where mutation tools require more transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence precisely conveys the tool's core function and options without redundancy. Every word contributes, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, no output schema, and minimal annotations, this description is notably incomplete. It does not mention the return value (the invite link), prerequisites for the `peer` parameter, or how the options interact. It also provides no context about when to create versus revoke links, leaving the agent with significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (expireDate and requestNeeded have descriptions). The description adds meaning for expireDate, usageLimit, and requestNeeded via 'expiry, usage cap, and join-request gate', but it omits the required `peer` param and optional `title`/`accountId`. For expireDate and requestNeeded, it mostly repeats the schema descriptions, so the added value is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Generate a new invite link') and distinct resource, making its purpose unmistakable. It also mentions key customization options (expiry, usage cap, join-request gate) that differentiate it from sibling tools like list_invite_links and revoke_invite_link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. While the name implies creation, the description lacks context such as 'use this instead of list_invite_links when you need a new link' or notes about required peer type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_topicCreate a forum topicA
Create a new topic in a forum-enabled supergroup.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| title | Yes | ||
| accountId | No | ||
| iconColor | No | Decimal RGB color (e.g. 0x6FB9F0) | |
| iconEmojiId | No | Custom emoji document id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only the cryptic 'openWorldHint' annotation, the description carries the burden of behavioral disclosure. It mentions the prerequisite of a forum-enabled supergroup but fails to state permissions required, what happens if the peer is not forum-enabled, or any side effects. This is a minimal disclosure for a potentially mutating action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero waste. It efficiently communicates the core action and the key constraint without redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no output schema, and a vague annotation, the description is too sparse. It does not explain the peer parameter format, the return value, how optional icon parameters are used, or any prerequisite beyond 'forum-enabled'. This leaves significant gaps for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 40%, leaving peer, title, and accountId undocumented. The description adds no elaboration on any parameter, so it does not compensate for the low coverage. Users are left guessing the format or semantics of the crucial required 'peer' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create'), a resource ('topic'), and a key qualifier ('forum-enabled supergroup'), making the tool's purpose unambiguous. It clearly distinguishes this from sibling tools like edit_topic and list_topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool should be used only when targeting a forum-enabled supergroup, giving clear context. However, it does not explicitly state when not to use it or mention alternatives such as edit_topic or list_topics, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_channelDelete a channel or supergroupADestructive
Permanently delete the channel. Creator only.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the description does not need to restate destructiveness. It adds value by specifying that deletion is permanent and restricted to the creator, which are useful behavioral traits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the core action, permanence, and authorization. Every word earns its place, and the title adds complementary scope ('channel or supergroup') without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two unannotated parameters and no output schema, the description leaves unanswered questions: what format is 'peer'? What role does 'accountId' play? What is the return value? The annotation only covers the destructive nature, so the description is incomplete for an agent to confidently invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage for its two parameters (peer, accountId), and the description provides no explanation of what these parameters mean or how they relate to the channel. The description fails to compensate for the low schema coverage, leaving the agent without parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('delete') and resource ('channel'), and adds the permanence aspect ('permanently delete') and the access constraint ('creator only'). This clearly distinguishes it from sibling tools like leave_channel or delete_messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys clear context: this is for permanent deletion by the creator. However, it does not explicitly mention when not to use it or suggest alternatives such as leave_channel, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_contactDelete contactsCDestructive
Remove one or more users from the contact book.
| Name | Required | Description | Default |
|---|---|---|---|
| users | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and open-world behavior. The description adds only the resource scope ('contact book'), which is apparent from the title, and does not disclose additional side effects or irreversibility beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence description is extremely concise and clearly conveys the tool's primary purpose, with no redundant wording. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and does not cover important operational context such as parameter meanings, permanence, side effects, or return values. Although annotations provide some safety signals, the lack of parameter details and usage guidance leaves significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention the 'users' or 'accountId' parameters, their types, or how to format user identifiers. The description adds no semantic value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the resource ('users from the contact book'), which distinguishes it from other delete tools like delete_messages or delete_channel. It is specific and directly matches the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool, prerequisites, or alternatives. The description only states the basic operation, leaving the agent to infer usage solely from the name and title.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_folderDelete a dialog folderBDestructive
Remove a folder by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate destructiveHint: true, but the description adds no further behavioral context (e.g., permanence, effect on contained dialogs, or required permissions). It is consistent with annotations but does not enrich the operational understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that directly states the action and object, with no redundant words. It is concise and front-loaded, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description lacks details about side effects (e.g., what happens to dialogs in the folder) and does not mention the accountId parameter. It is minimally viable for a one-line delete operation but leaves gaps for edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description merely states 'by id' without elaborating on what the id refers to or explaining the optional accountId parameter. The description adds no meaning beyond the parameter names already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove') with a clear resource ('a folder') and identifier ('by id'), distinguishing it from sibling folder tools like create_folder, edit_folder, and reorder_folders. The title 'Delete a dialog folder' reinforces this.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are any prerequisites or exclusions mentioned. The description only states the action, leaving the agent to infer usage from the function name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_messagesDelete messagesADestructive
Delete messages by id. revoke (default true) deletes for all participants where possible.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| revoke | No | ||
| accountId | No | ||
| messageIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive, but the description adds the crucial revoke behavior and its default value, plus the 'where possible' caveat. This goes beyond the structured metadata without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-load the core purpose and then add the most important behavioral detail. No redundant words or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple and annotations cover the destructive nature. Still, the description omits the meaning of peer and accountId, which are essential for executing the call correctly. The return value and error cases are not described, but no output schema exists, so some burden remains on the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain all parameters. It explicitly clarifies revoke and indirectly messageIds, but leaves peer and accountId completely undescribed. This partial coverage is insufficient for a 4-parameter tool with no schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'delete' with resource 'messages by id', clearly distinguishing it from sibling tools like edit_message or delete_story. The id qualifier adds precision about how messages are targeted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' implies the tool is for deleting specific messages already acquired via list/search/get operations, providing clear context. However, it does not explicitly state when not to use it or mention alternatives like delete_saved_history, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_saved_historyDelete a Saved sub-dialog historyADestructive
Wipe all messages in one Saved-Messages sub-dialog (forwards from a single origin peer). Irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | Original sender peer to clear from Saved Messages | |
| maxId | No | Only delete messages up to this id (inclusive). | |
| maxDate | No | ||
| minDate | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, but the description adds meaningful context by stating 'Irreversible' and clarifying the exact impact ('Wipe all messages... from a single origin peer'). This goes beyond the annotation by specifying the scope of destruction, though it does not mention auth requirements or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences that front-load the primary action and resource, with the parenthetical adding necessary specificity and 'Irreversible' adding crucial risk info. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters and no output schema, yet the description omits any guidance on the optional filtering parameters (maxId, maxDate, minDate) and accountId. It also does not describe what happens after deletion (e.g., return value). For a destructive tool with partial-deletion options, this is insufficient to ensure correct and safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40% (peer and maxId have descriptions; maxDate, minDate, and accountId do not). The tool description provides no parameter explanations and even says 'Wipe all messages,' which conflicts with the existence of maxId/maxDate/minDate filters that allow partial deletion. This could mislead the agent into thinking the tool always deletes everything, without explaining how to limit the deletion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Wipe') and clearly identifies the resource ('Saved-Messages sub-dialog') and scope ('forwards from a single origin peer'). It also distinguishes this from sibling tools like delete_messages and delete_user_history by targeting a sub-dialog of forwards, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (clearing a specific saved-messages sub-dialog) but does not explicitly compare it to alternatives such as delete_messages or delete_user_history, nor does it state when not to use it. There is no exclusion or prerequisite guidance, so usage context is clear but underdeveloped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_storyDelete one or more storiesCDestructive
Remove stories you previously posted.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | No | me | |
| storyIds | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, indicating this is a destructive operation. The description adds the constraint that only stories 'previously posted' by the user are affected, which is a useful scoping detail. However, it does not disclose permanence, authorization requirements, or side effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence (5 words) that is front-loaded with the main action. It is very concise. However, it is so minimal that it borders on under-specification, though it does convey the core purpose effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with 3 parameters (one required) and no output schema, the description is incomplete. It omits parameter semantics, whether the deletion is permanent, how story IDs are used, and any effect of the peer or accountId parameters. The annotations cover destructiveness, but the description alone is insufficient for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the parameters (peer, storyIds, accountId). It offers no additional meaning beyond the parameter names and types in the schema. This is a significant gap, as the description should compensate for the lack of schema-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action clearly: 'Remove stories you previously posted.' It identifies the resource (stories) and the verb (remove). It does not explicitly distinguish from sibling tools like delete_messages, but the resource is distinct. There is slight ambiguity about whether the 'previously posted' restriction is accurate, given the 'peer' parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you want to remove stories you have posted. It does not explicitly mention alternatives or when not to use it. The 'previously posted' scope provides some contextual guidance, but there is no explicit comparison to other deletion or management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_user_historyDelete all messages by a user in a chatADestructive
Wipe every message a given user has posted in the channel/supergroup.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| user | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, aligning with 'Wipe every message'. The description adds scope (channel/supergroup) but does not mention irreversibility, permission needs, or the effect on the user's access, which would provide additional transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no filler words. It front-loads the primary action and scope, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a simple destructive operation and no output schema, the description captures the essential context: what gets deleted and in which context. However, it omits parameter semantics for accountId and any behavioral caveats, which keeps it slightly shy of a full 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter semantics. It hints that 'user' names the message author and 'peer' identifies the channel/supergroup, but it does not clarify the meaning or format of 'accountId', nor does it explain the relationship between the parameters beyond implicit mapping.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Wipe') and resource ('every message a given user has posted in the channel/supergroup'), clearly distinguishing this from sibling tools like delete_messages or delete_saved_history. It conveys both the action and scope effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (removing all messages by one user in a group), but it does not explicitly state when to prefer this tool over alternatives such as delete_messages or restrict_user. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
demote_adminStrip admin rightsBIdempotent
Remove all admin rights from a user.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| user | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint and openWorldHint, which cover repeatability and external effects. The description adds the action but leaves ambiguity about whether 'all admin rights' are scoped to the given peer or global across chats. It doesn't disclose failure behavior or permission requirements, but the annotation coverage partially compensates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, straightforward sentence that conveys the core function without any filler. It is front-loaded and every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no output schema and 0% parameter documentation, this description is insufficient. It lacks details about required permissions, the precise scope of 'all admin rights' (per peer vs global), return behavior, and edge cases such as demoting a non-admin. The short description leaves too many critical gaps for an agent to use it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not compensate. It mentions 'user' but fails to explain the 'peer' and 'accountId' parameters. An agent would have to infer that 'peer' refers to a chat/channel and 'accountId' to the acting user's account, which is not stated anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Remove'), the object ('all admin rights'), and the target ('a user'). It unambiguously distinguishes from siblings like promote_admin and restrict_user, making the tool's function immediately obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as restrict_user or demote in different scopes. There is no mention of prerequisites (e.g., being a group admin) or when not to use it. The usage context is only implied by the tool's name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_mediaDownload media from a messageARead-only
Download the media attached to a message. Files land in /root/.telegram-agent/downloads (override with MCP_TELEGRAM_DOWNLOADS env). Returns the absolute path.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No | ||
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond annotations: the download destination directory, an environment variable override, and the return of the absolute path. This is consistent with readOnlyHint (no remote state mutation) and provides practical context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core purpose, and every word adds value. No redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward download tool, the description covers the key operational aspects: where files are stored, how to override the path, and what is returned. It lacks edge cases (e.g., no media attached) but is adequate given the simple nature and the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the meaning or purpose of peer, messageId, or accountId. The parameter names are somewhat self-explanatory, but the description fails to add any clarifying value, leaving a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'download' and resource 'media attached to a message', clearly distinguishing it from siblings like download_profile_photo. It also specifies where files land, reinforcing the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is clear: download media from a message. It does not explicitly state when to avoid using it or compare to alternatives, but the context is sufficiently clear without being misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_profile_photoDownload a profile photoARead-only
Download the profile photo of a user/chat/channel. Saved under /root/.telegram-agent/downloads.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true. The description adds a concrete behavioral detail: 'Saved under /root/.telegram-agent/downloads.' This clarifies the destination and side-effect of saving a file, going beyond the annotations. It does not cover error cases but adds meaningful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, each serving a purpose. The verb-fronted first sentence states the action, and the second provides the save location. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one required parameter, the description covers the core behavior and output location. It omits edge cases like missing profile photos, but given the low complexity and existing annotations, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain the parameters. 'peer' is only vaguely associated with 'user/chat/channel,' and 'accountId' is completely unaddressed. The description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Download the profile photo of a user/chat/channel.' This specifies the verb (download) and resource (profile photo) and differentiates it from siblings like download_media or set_profile_photo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for profile photos but does not explicitly state when to use it over alternatives like download_media. There is no mention of exclusions or preferred contexts, leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_aboutChange the description / about textAIdempotent
Set the description of a channel/supergroup. Max 255 chars.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| about | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions the 255-character limit (already in schema) and the target resource, but it does not disclose additional behavioral traits like permission requirements or whether the operation overwrites existing text. With openWorldHint and idempotentHint annotations, the description adds minimal context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is immediately clear and free of extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the description covers the core behavior. However, there is no output schema and the description does not mention return values or potential errors, but this is a minor gap for a setter operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains what 'about' is (the description text) and implies 'peer' is a channel/supergroup, but it does not clarify the format of peer or the purpose of accountId. For 3 parameters, this is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: setting the description of a channel/supergroup. It uses a specific verb ('set') and resource ('description of a channel/supergroup'), and it is distinct from sibling tools like edit_title and update_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the tool is for channel/supergroup descriptions, which implies when to use it. However, it does not explicitly mention alternatives or exclusions, such as 'use edit_title for the title'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_folderEdit a dialog folderCIdempotent
Replace the rules of an existing folder. id is required.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| title | Yes | ||
| excludeRead | No | ||
| includeBots | No | ||
| pinnedPeers | No | ||
| excludeMuted | No | ||
| excludePeers | No | ||
| includePeers | No | ||
| includeGroups | No | ||
| excludeArchived | No | ||
| includeChannels | No | ||
| includeContacts | No | ||
| includeNonContacts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Replace the rules' but does not clarify whether unspecified fields are reset to defaults or whether it's a partial update. It lacks information about permissions, error behavior if the folder doesn't exist, or side effects. Annotations openWorldHint and idempotentHint provide some context but do not cover these aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences, front-loading the main action. However, the second sentence about `id` being required is redundant with the schema and could be omitted without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters, no output schema, and mutation semantics, the description is far too minimal. It does not explain what 'rules' means, how the boolean/array parameters map to folder filtering behavior, or what happens on execution. Annotations partially compensate but are insufficient for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description only mentions `id` is required, which is already in the schema's required array, adding no new meaning. The other 12 parameters (e.g., excludeRead, includeBots, pinnedPeers) are not described, leaving the agent to infer their semantics from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Replace the rules of an existing folder,' identifying both the verb and resource. It distinguishes from siblings like create_folder and delete_folder by emphasizing 'existing,' but 'rules' is somewhat ambiguous without schema context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the phrase 'existing folder' and the requirement of `id`, suggesting this is for editing an already-created folder. However, no explicit alternatives or exclusions (e.g., use create_folder for new folders, reorder_folders for ordering) are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_messageEdit a messageBIdempotent
Edit the text of a previously sent message.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| text | Yes | ||
| accountId | No | ||
| messageId | Yes | ||
| parseMode | No | ||
| linkPreview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The idempotentHint and openWorldHint annotations already cover retry safety, lowering the bar. The description adds that the message must already have been sent, but it does not disclose typical limitations like ownership restrictions or age limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the core action. It contains no filler and is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters and no output schema, the one-sentence description is insufficient. It omits important context such as return values, permissions, or behavioral caveats, making it incomplete for a production messaging API.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implies the 'text' parameter but provides no explanations for peer, messageId, parseMode, linkPreview, or accountId, leaving significant gaps for a 6-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: editing the text of a previously sent message. It uses a specific verb (edit) and resource (message text), distinguishing it from sibling tools like send_message, delete_messages, and pin_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as sending a new message or deleting and resending. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_photoChange chat / channel avatarBIdempotent
Upload a new avatar photo from a local path or URL.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| peer | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include openWorldHint and idempotentHint, which already indicate the tool modifies external state and is idempotent. The description adds the useful context that the photo can come from a local path or URL and implies replacement of the existing avatar. However, it does not disclose potential side effects like whether the old avatar is deleted or if specific permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that is immediately understandable. It avoids unnecessary words and gets straight to the point, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple but lacks essential context. Required parameters 'peer' and 'path' are not explained, the difference from set_profile_photo is not stated, and there is no output schema or additional behavior described. An agent would struggle to know what values to pass for 'peer' and 'accountId'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain parameters. It only clarifies 'path' by stating it can be a local path or URL, but leaves 'peer' and 'accountId' unexplained. 'peer' is required and critical for selecting the chat/channel, so the lack of explanation is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Upload a new avatar photo from a local path or URL' clearly states the action (upload) and the resource (avatar photo). The title 'Change chat / channel avatar' clarifies the target, distinguishing it from user profile photo tools like set_profile_photo. However, the description alone does not explicitly mention 'chat/channel', so it relies on the title for full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that this is for chat/channel avatars specifically, nor does it contrast with set_profile_photo or other avatar-related tools. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_titleChange the title of a chat/channelAIdempotent
Set a new title. Works for channels, supergroups, and basic groups.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| title | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint and openWorldHint, which already communicate safety and side-effect behavior. The description adds the constraint about supported peer types, but gives no further behavioral details like error cases or whether the title change is restricted by permissions. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is a single brief sentence that immediately states the action and its scope. No filler words; each clause adds relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and minimal description, the tool fails to clarify parameter semantics (peer and accountId) and potential constraints. It is too sparse for practical use despite the annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no parameter descriptions (0% coverage), and the tool description does not explain the 'peer' or 'accountId' parameters. Only 'title' is self-explanatory, leaving the user to guess how to format peer references.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Set a new title' and explicitly lists supported peer types (channels, supergroups, basic groups), which clearly differentiates it from sibling tools like edit_topic or edit_about.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool applies to channels, supergroups, and basic groups, providing clear context for when to use it. However, it does not explicitly state when not to use the tool or mention alternatives, such as edit_topic for topic titles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_topicEdit a forum topicBIdempotent
Rename / re-icon / close / hide a topic.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| title | No | ||
| closed | No | ||
| hidden | No | ||
| topicId | Yes | ||
| accountId | No | ||
| iconEmojiId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not add behavioral context beyond the actions themselves. It does not explain whether actions can be combined, what happens if both closed and hidden are set, or any side effects. With annotations openWorldHint and idempotentHint, the safety profile is partially covered, but the description adds no extra value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that uses action-packed verbs with no wasted words. It is highly concise and structured effectively, listing the four main capabilities in a compact enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters, no output schema, and annotations that are present but minimal. The description is too brief to be contextually complete: it omits required parameter semantics (peer, topicId) and does not describe return format, permission requirements, or the effect of omitting optional fields. For a tool with this complexity, the description is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It maps 'rename' to title, 're-icon' to iconEmojiId, 'close' to closed, and 'hide' to hidden, providing meaning for 4 of 7 parameters. However, it does not explain peer, topicId, or accountId, which are essential for identifying the target topic. The partial coverage adds value but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Rename / re-icon / close / hide a topic' clearly states the specific actions and resource, distinguishing it from sibling tools like edit_title (chat/channel title) and create_topic (creating a topic). The verb list is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. It does not mention that it is only for existing forum topics or how it differs from edit_message or edit_title. The usage is only implied by the name and description, lacking clear context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forward_messagesForward messagesB
Forward messages from one dialog to another.
| Name | Required | Description | Default |
|---|---|---|---|
| silent | No | ||
| toPeer | Yes | ||
| fromPeer | Yes | ||
| accountId | No | ||
| dropAuthor | No | Hide the original author | |
| messageIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is openWorldHint: true, which is vague. The description does not disclose whether forwarding copies messages (leaving originals intact), any authentication requirements, rate limits, or side effects on the source/destination dialogs. This lack of behavioral detail goes beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It conveys the core purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should explain what the tool returns, but it does not. It also omits the 100-message limit for messageIds and other contextual details such as whether forwarding is available across different dialog types. The description is too sparse for a tool with six parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 17% (only dropAuthor has a description), so the description must compensate. It clarifies that fromPeer and toPeer refer to dialogs and that messageIds are the messages being forwarded, but it leaves silent, accountId, and the exact meaning of messageIds implicit. This is partial compensation but not thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Forward messages from one dialog to another.' This distinguishes it from siblings like send_message or edit_message, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as send_message, nor are any prerequisites or exclusions mentioned. The description simply states what it does, leaving the agent to infer when it should be selected over similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_admin_logGet the admin action logARead-only
Return recent admin events. Set fields in events to true to include those categories; leave empty to include everything.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| limit | No | ||
| query | No | Substring filter on event text | |
| events | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint, so safety is already covered. The description adds meaningful behavioral context with 'Set fields in events to true to include those categories; leave empty to include everything,' clarifying default filter behavior. However, it doesn't disclose limit defaults or return ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the core purpose. It is concise without any filler, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, a nested object, and no output schema, the description leaves significant gaps: it doesn't explain that `peer` is required, what 'recent' means, or the semantics of `limit` and `accountId`. Even with annotations providing safety context, the description is insufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only 'query' has a description). The description compensates by explaining the `events` object semantics, but it leaves `peer`, `limit`, and `accountId` unexplained, relying on name inference. The `events` clarification is useful but the overall compensation is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Return recent admin events' with a specific verb and resource, distinguishing it from all sibling tools. No other tool in the list targets admin logs, making this highly unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving admin events but does not explicitly state when to use this tool versus alternatives or provide any exclusions. It offers clear context but no explicit 'when to use' guidance beyond the core purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_channel_infoGet full channel/supergroup infoARead-only
Return extended info for a channel or supergroup (about, participants count, linked chat, slow mode).
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true (safe read) and openWorldHint=true. The description adds transparency by listing the specific info fields returned (about, participants count, linked chat, slow mode), which is useful context beyond the annotations. It does not mention any side effects, consistent with a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the purpose and examples. Every word is useful, with no redundancy or wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of informing the agent about the return value. It lists some returned fields but does not exhaustively describe the output shape or the purpose of 'accountId'. For a simple read-only info tool, the description is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter documentation. It implicitly explains the 'channel' parameter by referencing 'a channel or supergroup', but the 'accountId' parameter is not mentioned at all, leaving a gap. The description only partially compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Return extended info for a channel or supergroup', with specific examples of the information returned (about, participants count, linked chat, slow mode). This distinguishes it from sibling tools like 'get_user_info' (for users) and other channel mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when channel/supergroup extended info is needed but does not explicitly state when to use it versus alternatives. No exclusionary or alternative guidance is provided, making the usage context implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_default_tag_reactionsList default Saved-tag reactionsCRead-only
Server-suggested default emoji set for Saved-Messages tagging.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, indicating a non-destructive read operation. The description adds the context that the result is 'server-suggested' and a 'default emoji set,' which implies it is not user-specific and may be constant across accounts. However, it doesn't disclose whether the set is ordered, localized, or subject to changes, leaving some transparency gaps. The annotations lower the bar, and the description provides marginal additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise one-line phrase, front-loaded with the key term 'server-suggested.' It wastes no words, but it is not a complete sentence, which slightly reduces clarity. Still, it earns its place by adding the 'server-suggested' qualifier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no output schema, the description should clarify what the response looks like (e.g., an array of emoji codes). It also fails to explain the optional accountId parameter or any edge cases. The annotations cover safety, but the description is incomplete for an agent to fully understand the return value and parameter behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single optional 'accountId' parameter with 0% description coverage. The tool description does not mention accountId at all, leaving the agent to infer its purpose from the name alone. It is unclear whether providing accountId changes the returned set or what the default behavior is when omitted. Given the low schema coverage, the description should have compensated but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title 'List default Saved-tag reactions' provides a clear verb+resource, and the description adds context by specifying 'Server-suggested default emoji set for Saved-Messages tagging.' This distinguishes it from sibling tools like get_saved_reaction_tags, which likely return user-defined tags, by emphasizing 'server-suggested default.' However, the description itself is a noun phrase rather than a full action statement, relying on the title for the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as get_saved_reaction_tags or set_default_reaction. It neither states explicit when-to-use conditions nor provides exclusions. The only hint is the word 'default,' but this is not enough to guide tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inline_bot_resultsQuery an inline botBRead-only
Run an inline bot query (the @bot query form) and return the results.
| Name | Required | Description | Default |
|---|---|---|---|
| bot | Yes | ||
| peer | No | Where the results would be sent — affects allowed result types | me |
| query | Yes | ||
| offset | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds the `@bot query` syntactic form, which is useful, but it does not disclose behaviors such as pagination via offset or how peer affects allowed result types (the latter is in the schema but not the description). This is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the action and resource. No wasted words or unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core purpose is clear, but the description lacks details about return format, pagination, and parameter semantics. Given no output schema and low schema coverage, the description leaves operational gaps, making it minimally viable but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, so the description should compensate. It implicitly explains bot and query via the `@bot query` form, but does not clarify offset, accountId, or the meaning of peer beyond what the schema already provides. This is insufficient for a 5-parameter tool with mostly undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs an inline bot query (the `@bot query` form) and returns results, using a specific verb and resource. This distinguishes it from sibling search/message tools, which operate on messages or accounts rather than inline bot queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description only states what it does, not when it should be selected (e.g., for inline bot results vs. regular search), and no exclusions or alternative tool references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meGet current userARead-only
Return the profile of the authenticated user for the chosen account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the 'chosen account' scoping nuance but does not disclose return format, error behavior, or authentication requirements beyond the phrase 'authenticated user'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, front-loaded with the action verb 'Return' and no unnecessary words. Every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with annotations, the description covers the core purpose adequately. Minor gaps remain: it does not state what happens if accountId is omitted or whether authentication is required, but these are somewhat implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional string parameter (accountId) with no description (0% schema coverage). The description only hints at 'chosen account' but does not explain the parameter's purpose, format, or behavior when omitted, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the profile of the authenticated user for a chosen account, using a specific verb and resource. This distinguishes it from siblings like get_user_info, which likely handles arbitrary users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (to get the current user's profile) but provides no explicit alternatives, exclusions, or prerequisites. It doesn't mention when to use this over related tools like get_user_info or login.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messageGet message by idARead-only
Fetch one or several messages from a dialog by their ids.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| peer | Yes | Dialog id or @username | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and openWorldHint annotations already establish the safety profile, so the description does not need to repeat that. It adds minimal behavioral context beyond the fetch action, such as not disclosing error handling for invalid IDs or the return shape for multiple messages, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, directly stating the action and scope. Ideal size and front-loaded structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-and-fetch operation, the description covers the core functionality. It lacks explicit output shape, but without an output schema the 'Fetch' verb sufficiently implies the return. Given the tool's low complexity, the description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'peer' has a description). The description confirms ids are message IDs but does not clarify accountId or provide details about the ids array format beyond what minItems/maxItems already convey. It fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Fetch' and identifies the resource (messages), scope (from a dialog), and method (by their ids). This clearly distinguishes it from sibling tools like list_messages or search_messages, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage when the agent has specific message IDs and knows the dialog (peer). However, it does not explicitly exclude alternatives or name sibling tools like list_messages, stopping short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_message_reactionsGet reactions on messagesARead-only
Fetch the current reactions for one or more messages in a dialog.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No | ||
| messageIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint) cover safety and volatility; the description adds 'current' and batch support, but does not disclose response structure or behavior for invalid message IDs. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the core purpose without excess words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with no output schema, the description is adequate but omits return-value structure and usage guidance; given three parameters and openWorldHint, more detail would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description partially compensates by linking 'messages' to messageIds and 'dialog' to peer, but accountId is not explained, and parameter formats are left unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Fetch' with the resource 'current reactions' and specifies the scope 'for one or more messages in a dialog', clearly distinguishing from write operations like send_reaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope (dialog messages) provides context but there is no explicit guidance on when to use this tool over alternatives such as send_reaction or get_message. The name implies read-only usage, but no when-not-to-use or alternative references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_boostsGet own boost slotsBRead-only
Return the current boost slots the user has available across channels.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is known. The description adds scope ('across channels') but no additional behavioral traits such as authentication needs, rate limits, or side effects, which is acceptable given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and front-loaded with the action and object. There is no redundant or filler content, every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional parameter, no output schema), and the description gives a high-level return statement. However, it omits parameter semantics and the return structure, making it only partially complete for an agent to invoke correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (accountId) with no description, and schema description coverage is 0%. The description mentions nothing about this parameter, leaving the agent to guess its meaning and whether it is required. The description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and resource ('boost slots') with scope ('across channels'), making the tool's function immediately clear. It also implicitly distinguishes itself from the sibling 'apply_boost' by being the read-only counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (to see current available boost slots) but does not explicitly state when to use this versus alternatives like 'apply_boost', nor provide exclusions or prerequisites. The context is somewhat clear but guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_stickersList installed sticker setsBRead-only
Return the user's installed sticker sets.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, which cover the safety profile. The description adds minimal behavioral context, simply stating the return value. It does not disclose pagination, authentication, or the role of the optional accountId.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the verb 'Return' and states the resource. No extra words, perfectly scoped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple getter with a read-only annotation, so the description is mostly adequate. However, without an output schema, the return format is unclear, and the optional accountId is not explained. The description is minimal but sufficient for the core function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema contains one parameter (accountId) with no description, and the description does not mention it. Schema description coverage is 0%, so the description fails to explain how accountId affects the call or whether it defaults to the current user.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') with a clear resource ('the user's installed sticker sets'), which distinguishes it from sibling tools like install_sticker_set and add_recent_sticker. It matches the title and leaves no ambiguity about the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when/when-not guidance or alternative tool references. It is clear that this is a read operation for listing sticker sets, but there is no explicit comparison to install_sticker_set or add_recent_sticker.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notify_settingsGet notification settingsCRead-only
Return notification settings for a peer.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation, but the description adds no further behavioral details such as return format, fallback defaults, or the role of accountId. Without an output schema, this leaves the agent without critical information about what to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the verb and resource. While efficient, it could be slightly more informative without becoming verbose, but it earns its place as a clear statement of purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter, the description is minimal, but it omits explanation of accountId and the return value. With no output schema and low schema coverage, the description does not adequately compensate, making it incomplete for practical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only mentions 'peer' without explaining its format or meaning. The optional accountId parameter is entirely omitted, providing no semantic value beyond the schema's bare field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Return notification settings for a peer' uses a specific verb and resource, clearly indicating a read operation scoped to a peer. It distinguishes itself from sibling tools like set_notify_settings by focusing on retrieval rather than modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as set_notify_settings or mute_peer. The description lacks explicit context, exclusions, or prerequisites, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_participantGet a single participantARead-only
Return role, rights, and join date for one user in a channel/supergroup.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| user | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and open-world behavior. The description adds value by clarifying the exact return fields (role, rights, join date), which is useful for understanding the tool's output. It does not disclose edge cases like missing participants, but the read-only annotation covers the main safety concern.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clear sentence, front-loaded with the action 'Return'. No wasted words, easily scannable, and appropriately sized for the simplicity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with good annotations, the description adequately states the purpose and return value. It lacks detailed parameter format guidance, but the tool is relatively straightforward and the existing sibling tools (e.g., list_participants) likely cover more complex cases. Overall, it is mostly complete for a single participant lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero schema description coverage, the description offers minimal semantic help: it clarifies that 'peer' refers to the channel/supergroup and 'user' is the target user. However, it does not specify accepted identifier formats (ID, username, phone) or the optional accountId parameter, leaving significant ambiguity for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Return' and names the exact resource properties (role, rights, join date) for a single participant, which clearly distinguishes it from list_participants and other participant-related tools. The scope 'in a channel/supergroup' further clarifies the target context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the context 'in a channel/supergroup' and the singular nature ('one user'), making it clear when this tool is appropriate. However, it does not explicitly name alternatives or when-not-to-use cases, so it falls short of an explicit guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_peer_storiesGet a peer's storiesBRead-only
Return active stories posted by one peer.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations readOnlyHint=true and openWorldHint=true already declare a safe read operation. The description adds the 'active' filter and 'one peer' scope, providing some behavioral context beyond the annotations. However, it does not disclose other behaviors like handling of empty results or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant phrases. It efficiently conveys the verb, resource, and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter read-only tool with no output schema, the description is minimal. It omits crucial parameter semantics, especially for accountId, and does not explain what 'active' means or how the response is structured. The core purpose is clear, but the definition is incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate. It vaguely implies the 'peer' parameter via 'one peer', but the 'accountId' parameter is completely unexplained. No parameter details or format hints are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Return active stories posted by one peer' clearly specifies the action (return), resource (stories), and scope (one peer). It distinguishes itself from sibling list_stories by explicitly limiting to a single peer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like list_stories or view_story. The description does not mention any exclusions or alternative tools, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_poll_resultsGet poll resultsARead-only
Fetch the current vote tally for a poll message.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No | ||
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description is consistent with that. The description adds only the scope 'poll message' but does not disclose additional behavioral traits such as permission requirements or behavior for closed polls. It meets the baseline with annotations present but adds limited value beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the key information without any wasted words. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and the description does not describe the return structure of the vote tally (e.g., per-option counts, total votes). With zero schema coverage and no parameter descriptions, the tool definition lacks necessary invocation details. The presence of readOnlyHint and openWorldHint annotations partially offset the safety concerns, but the description is still under-specified for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain what 'peer', 'messageId', or 'accountId' mean. The phrase 'poll message' gives a minimal hint that messageId refers to a poll message, but the description fails to compensate for the complete lack of parameter documentation. An agent would have to rely on sibling tool conventions to understand the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Fetch' and a clear resource 'current vote tally for a poll message', making the tool's purpose unmistakable. It also distinguishes itself from sibling tools like send_poll, vote_poll, and close_poll by focusing on reading results rather than creating or modifying polls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates the tool is for retrieving poll results, so an agent can infer when to use it. However, it does not explicitly compare with alternatives like get_message or get_message_reactions, nor does it state when not to use this tool. This is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_privacyGet a privacy settingARead-only
Return current rules for one privacy key.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, which cover the safety profile. The description adds the context that the tool returns 'current rules' (not historical) and for 'one' key only, which is a behavioral constraint beyond what annotations provide. However, it does not disclose other details like auth requirements or rate limits, so it meets only the baseline for annotated read operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the verb 'Return' and immediately states the resource. Every word contributes meaning; there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with no output schema, the description is largely sufficient: it states the function, the resource, and the scope. The missing usage guidance and accountId explanation are gaps, but the tool's simplicity and the presence of readOnlyHint mean the description covers the essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'one privacy key,' which directly maps to the required 'key' parameter and reinforces that only a single key can be queried at a time. However, it does not elaborate on the optional 'accountId' parameter, and with schema description coverage at 0%, the description only partially compensates for the missing parameter documentation. The enum in the schema helps, but the description adds limited value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Return' and clearly identifies the resource as 'current rules for one privacy key.' This distinguishes the tool from its sibling set_privacy, which is a mutating counterpart. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like set_privacy, nor does it mention any exclusions or prerequisites. While a getter's usage is somewhat self-evident, the lack of explicit direction makes it minimally useful for an agent deciding between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_saved_dialogsList Saved-Messages sub-dialogsARead-only
List the forum-style sub-dialogs inside Saved Messages — each grouping forwards from one origin peer.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| accountId | No | ||
| excludePinned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and openWorldHint, so the bar for added disclosure is lower. The description contributes the domain-specific behavior that these sub-dialogs are groupings by origin peer, which helps the agent understand the result semantics. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant wording. It efficiently communicates the core purpose and a key distinguishing detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential 'what' but leaves out important contextual details like the effect of limit and excludePinned, especially given there is no output schema. The openWorldHint and parameter schema partially compensate, but the description alone is only minimally sufficient for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and three parameters (limit, accountId, excludePinned), the description provides no explanation of their meaning, behavior, or defaults. The burden falls entirely on the parameter names, which the description does not support.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and clearly identifies the resource as 'forum-style sub-dialogs inside Saved Messages', with an explanatory clause about grouping by origin peer. This distinguishes it from generic dialog listing tools like list_dialogs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool—when you need the sub-dialogs in Saved Messages—but it doesn't provide explicit exclusions or alternative tool references. The context is clear enough for typical use, but it lacks a when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_saved_historyList messages in a Saved sub-dialogARead-only
Fetch messages inside one Saved-Messages sub-dialog (filtered by original sender peer).
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | Original sender peer (the saved sub-dialog id / @username) | |
| limit | No | ||
| offsetId | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is clear. The description adds the filtering behavior by original sender peer, but does not disclose pagination behavior, return format, or other behavioral details beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the key action and resource. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only pagination tool, the description is adequate but lacks details about return format and pagination behavior. Since there is no output schema and only a basic description, the agent may not know what fields the fetched messages contain or how pagination parameters interact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'peer' has a description). The description clarifies that 'peer' means 'original sender peer', but limit, offsetId, and accountId are left unexplained. With low schema coverage, the description does not adequately compensate for the missing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Fetch messages inside one Saved-Messages sub-dialog' with a specific verb and resource, and clearly differentiates from siblings like get_saved_dialogs and search_saved_messages by specifying the sub-dialog scope and filtering by original sender peer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (for fetching messages from a specific saved sub-dialog), but it does not explicitly mention alternatives or give exclusions. No 'use X instead' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_saved_reaction_tagsList Saved-Messages reaction tagsARead-only
Return all reaction-tags the user has set on Saved Messages, with their custom titles and per-tag message counts. Premium feature; works only on the me peer.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | No | Scope tags to a saved-dialog (forwarded-from peer). Omit for global Saved tags. | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds operational context: it is a premium feature, restricted to the `me` peer, and returns custom titles and counts. This goes beyond the structured annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the action and result, naming the key constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list operation, the description covers the output contents, premium requirement, and peer scope. It does not mention errors or pagination, but given the readOnlyHint and simple schema, it is sufficiently complete. It could benefit from naming sibling tools for disambiguation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the peer parameter well ('Scope tags to a saved-dialog... Omit for global Saved tags'), and the description reinforces the `me` peer restriction. However, the accountId parameter is undocumented in both schema and description, and the description adds no syntax details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Return' and identifies the exact resource ('reaction-tags' on Saved Messages) with return contents (titles, counts). It clearly distinguishes from siblings like get_default_tag_reactions and update_saved_reaction_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states clear constraints: 'Premium feature' and 'works only on the `me` peer', telling the agent when it can be invoked. However, it does not explicitly contrast with alternative tools like get_default_tag_reactions or search_saved_messages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_story_viewersList viewers of a storyBRead-only
Show who has viewed a story you posted.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | No | me | |
| limit | No | ||
| query | No | ||
| storyId | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds the constraint that the story must be 'you posted', which is useful context, but it does not disclose pagination, ordering, or other behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is appropriately concise for a simple read operation, earning maximum efficiency for size and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five parameters, zero schema description coverage, and no output schema, the description is incomplete for agent reasoning. It leaves important semantics unexplained, such as the purpose of 'query' and 'peer', and what the response contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for five parameters (peer, limit, query, storyId, accountId). The description does not explain any of these parameters, leaving agents without information about their meanings, formats, or required values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'show' with the resource 'viewers of a story', clearly distinguishing it from sibling tools like list_stories and view_story. The phrase 'story you posted' adds ownership context, making the tool's function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a user wants to view viewers of their own story, but provides no explicit guidance on when to use this tool versus alternatives like get_peer_stories or view_story. No exclusions or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_infoGet full user infoBRead-only
Return extended profile info (bio, common chats count, etc.) for a user.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that it returns extended profile info like bio and common chats count, which gives some context about the output, but it does not mention error cases (e.g., user not found) or behavior around the optional accountId.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and gives examples. Every word earns its place, with no redundancy or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, but the description lacks details about the accountId parameter, potential errors, and how it differs from sibling tools like get_me. Given the 0% schema coverage and no output schema, more context is needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It only hints at 'user' implicitly through 'for a user', but the 'accountId' parameter is entirely unexplained. This leaves a significant gap in understanding the full parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Return extended profile info') and resource ('for a user'), with examples (bio, common chats count). However, it does not explicitly differentiate from sibling tools like get_me or get_participant, so it stops short of full specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives, such as get_me for self or get_participant for chat members. There are no exclusions or alternative tool mentions, leaving the usage context entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_sticker_setInstall a sticker setAIdempotent
Install a sticker set by its short name (e.g. "AnimatedEmojies").
| Name | Required | Description | Default |
|---|---|---|---|
| archived | No | ||
| accountId | No | ||
| shortName | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide openWorldHint and idempotentHint, which convey side-effect potential and idempotent behavior. The description adds no additional behavioral context beyond the surface action 'Install', so it meets the baseline but does not enrich transparency further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It is front-loaded with the action and includes a useful example, making it optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three parameters and no schema descriptions, the description covers only the required parameter and omits the optional ones. There is also no mention of return values or behavior, which is significant since no output schema exists. The description is too sparse to fully guide an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It explains 'shortName' with an example, but leaves 'archived' and 'accountId' completely unexplained. This is only partial compensation for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Install') and the resource ('sticker set'), with a concrete example of the short name parameter. It is specific and distinguishes this tool from other sticker-related sibling tools like get_my_stickers or add_recent_sticker by focusing on installation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you want to install a sticker set by short name) but provides no explicit guidance on alternatives or exclusions. It does not mention any prerequisite or context, so the usage context is only implicitly derived from the action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_userInvite a user to a channel/supergroupBIdempotent
Add a user (or list of users) to a channel or supergroup.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| users | Yes | User ids or @usernames | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include idempotentHint but not readOnly or destructive hints, so the description must disclose behavioral traits. It simply says 'Add' without mentioning permissions, potential errors, or side effects beyond the annotations. No additional context is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no redundant information. It is appropriately sized and front-loaded with the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and only a brief description. It omits important context such as prerequisites, return behavior, or error conditions, especially given the openWorldHint annotation which suggests additional side effects may exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33%, with only 'users' described. The description adds meaning to 'peer' (channel/supergroup) and clarifies that 'users' can be a list, but it does not explain 'accountId'. This partially compensates for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Add a user (or list of users) to a channel or supergroup' uses a specific verb and resource, clearly identifying the action and target. It distinguishes itself from sibling membership tools like kick_participant or ban_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as creating invite links or other member management functions. The description only states what it does, not when it should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mtprotoInvoke a raw MTProto methodADestructive
Call any Telegram API method by its qualified name (e.g. messages.SendMessage, channels.GetFullChannel, stories.GetAllStories). String values for fields named peer/channel/user/fromPeer/toPeer/bot/chat are auto-resolved to InputPeer/InputUser. Use this only when no dedicated tool fits — the API surface is huge and there are no per-method safety checks.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | Qualified MTProto method/class name, e.g. "messages.SendMessage" | |
| params | No | Parameters object for the method constructor | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (openWorldHint, destructiveHint), the description discloses that string values for peer-like fields are auto-resolved to InputPeer/InputUser, which is critical for invocation. It also reiterates the lack of safety checks, adding context that annotations only flag indirectly. It doesn't cover all potential behaviors (e.g., error handling), but the key risks are addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: stating the core function with examples, explaining a key behavioral transformation, and providing usage guidance. No redundant or filler content, well-paced and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a raw fallback tool with open-world semantics and no output schema, the description covers the essential operational knowledge: purpose, usage constraints, security caveat, and parameter transformation. It omits details like return format or error behavior, but given the tool's general-purpose nature, it is sufficiently complete for an agent to select and invoke correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds significant value by explaining the auto-resolution rule for the `params` object and giving method-name examples. It clarifies how to use the two main parameters, though `accountId` remains undocumented. The description goes beyond the schema's minimal property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calls any Telegram API method by qualified name, with concrete examples (e.g., messages.SendMessage). It explicitly distinguishes itself from dedicated siblings by saying 'Use this only when no dedicated tool fits', making its purpose and scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: use only when no dedicated tool fits. It also warns about the huge API surface and absence of per-method safety checks, helping the agent avoid misuse in favor of safer dedicated tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kick_participantKick a participantADestructive
Remove a user from a chat/channel. Requires admin rights.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| user | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, and the description adds the requirement for admin rights, which is useful authorization context beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately states the action and requirement. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive operation, the description covers the core action and permission requirement. However, the lack of parameter semantics and the optional accountId make it incomplete; annotations provide the destructive signal, but the description doesn't fully cover what an agent needs to know to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explicitly explain the parameters peer, user, or accountId. It implies that peer is the chat/channel and user is the user, but accountId remains unexplained, so the description insufficiently compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Remove' and resource 'user from a chat/channel', clearly distinguishing it from sibling tools like ban_user or restrict_user. It states the precise action and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a prerequisite (admin rights) which tells the agent when this tool is applicable. It does not mention alternatives or when not to use, but the condition is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
leave_channelLeave a channel/supergroupADestructive
Leave the channel. Use delete_channel to also remove it (creator only).
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint and openWorldHint, so the safe behavior is partially covered. The description adds the distinction that deletion is creator-only but does not disclose additional side effects of leaving (e.g., losing access, irreversibility beyond rejoin, or any accountId implications). It does not contradict annotations, but adds limited behavioral context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with a helpful pointer to the sibling tool. Every word earns its place, and it is immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two parameters, no output schema, and zero parameter documentation, the description is too sparse. It does not mention prerequisites (e.g., being a member), what happens after leaving, or how accountId is used. While the tool is simple, the lack of parameter semantics and any behavioral detail makes it incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning, but it does not explain any of the parameters. 'peer' and 'accountId' are not described at all, leaving the agent without guidance on required format or optional usage. This is a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Leave' plus the resource 'channel', clearly stating the action. It also distinguishes itself from 'delete_channel' by noting the alternative for removal, making the purpose unmistakable even among many sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool versus 'delete_channel', including a condition ('creator only') for the alternative. This gives clear usage context and an exclusion, satisfying the dimension fully.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accountsList Telegram accountsARead-only
Return the Telegram accounts currently signed in on this machine.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description's 'Return' aligns with a read operation. The description adds the scope of 'on this machine' but doesn't disclose additional behavioral traits such as order, empty-list behavior, or auth requirements. This is acceptable given the annotation coverage, but it's not beyond baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence (12 words) that immediately states the action and scope. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing tool with no output schema, the description is sufficient: it names the return entity and scope. The absence of output details is acceptable, and the sibling list provides enough context for the agent to select it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% coverage, so the description has no parameter details to add. Per the rules, a zero-parameter tool gets a baseline of 4, and the description doesn't reduce that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and resource ('Telegram accounts') with a clear scope ('currently signed in on this machine'), distinguishing it from sibling tools like login and logout. It clearly states what the tool does with no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when the tool is relevant: when checking which accounts are signed in on the machine. It doesn't explicitly mention alternatives, but the simple nature of the tool makes the usage evident. However, it lacks explicit exclusions or comparison with related tools like get_me, so it's not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blockedList blocked usersBRead-only
List users currently on the block list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, so the agent knows this is a safe operation. However, the description adds no extra behavioral context beyond what the name implies, such as pagination, accountId semantics, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no fluff, making it easy to parse and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of a list tool, the description covers the core action, but the lack of any parameter explanation and no output schema means the agent is missing information needed to use it effectively, especially with optional accountId.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the tool description does not mention the 'limit' or 'accountId' parameters at all. This leaves the agent without semantic understanding of how these optional params affect the call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List') and resource ('users currently on the block list'), distinguishing it from sibling tools like block_user or unban_user by indicating it is a read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for viewing blocked users but provides no explicit guidance on when to use it vs alternatives, nor any exclusions or prerequisites. Usage context is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsList own contactsBRead-only
List all users in the contact book.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and openWorldHint=true, covering the read-only safety profile. The description adds no extra behavioral context such as pagination, ordering, or the effect of accountId, so it meets but does not exceed the baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant information, front-loading the purpose effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple and annotations are present, the description completely omits the accountId parameter's meaning and provides no usage distinction from search_contacts. The lack of any parameter documentation makes the description incomplete for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (accountId) with 0% description coverage, and the description does not mention accountId at all. Since the description must compensate for low schema coverage but doesn't, this is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'all users in the contact book', making its primary function unambiguous. It distinguishes from sibling list_accounts and search_contacts, though it could more explicitly state 'own' contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool to use when you need the full list of contacts, but it provides no explicit when-to-use guidance or alternatives such as search_contacts for filtered queries. No exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dialogsList dialogsARead-only
List available Telegram dialogs, chats and channels for the chosen account.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max dialogs (default 50) | |
| folder | No | Folder id; 0 = no folder, 1 = archived | |
| unread | No | Only return dialogs with unread messages | |
| archived | No | Include archived dialogs | |
| accountId | No | ||
| ignorePinned | No | Ignore pinned dialogs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. Description adds scope context ('available', 'chats and channels') but doesn't disclose pagination or return format. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no filler. Efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with a well-described schema and annotations, the description covers the essentials. It doesn't explain return structure, but that is acceptable given the context and lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents most parameters. The description adds no parameter-level detail beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'list' + resource 'dialogs, chats and channels' + scope 'for the chosen account'. Distinguishes from sibling tools like search_dialogs (search vs list) and list_messages (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: lists all available dialogs for the chosen account. Doesn't explicitly mention alternatives, but the purpose is evident and no exclusions are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_draftsList all draftsBRead-only
Return all dialog drafts the user has across chats.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares safety, and the description adds the scope 'across chats' which clarifies the returned data. However, it does not disclose pagination behavior, whether drafts are returned in any particular order, or any specifics about the structure of the returned drafts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately and clearly states the tool's purpose. No extraneous words or repetition exist.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite its simplicity, the tool has an undocumented accountId parameter and no output schema. The description fails to clarify the parameter's role, and without any return format details, the agent cannot fully anticipate the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (accountId) with zero description coverage. The description does not mention this parameter at all, leaving its purpose and relationship to the described functionality completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and identifies the resource ('all dialog drafts') and scope ('across chats'). It clearly distinguishes itself from mutation siblings like save_draft and clear_draft, and from other list tools like list_messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as save_draft or clear_draft. The read-only nature is implicit, but there is no explicit mention of exclusions or preferred context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_foldersList custom dialog foldersBRead-only
Return the user-defined folders (a.k.a. chat filters) with their inclusion rules.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is known. The description adds the alias 'chat filters' and the fact that inclusion rules are returned, but no additional behavioral context like pagination, scoping, or side effects beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core action and resource, includes a helpful parenthetical alias, and contains no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the simple tool and annotations, the description leaves a key gap: the accountId parameter is unexplained and there is no output schema. It does not specify the expected filtering behavior or the structure of inclusion rules, so the description is only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage for the only parameter (accountId), and the description does not mention or explain it. An agent cannot determine what accountId does or whether it is optional from the given text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') with a clear resource ('user-defined folders (a.k.a. chat filters)') and adds detail about inclusion rules, distinguishing it from sibling list tools like list_dialogs and folder management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list_dialogs, search_dialogs, or folder creation/editing tools. The description only states what the tool does, not the context for selecting it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invite_joinersList users that joined via an invite linkBRead-only
List users that joined a chat through a specific invite link.
| Name | Required | Description | Default |
|---|---|---|---|
| link | No | Specific invite link; omit to list all joiners | |
| peer | Yes | ||
| limit | No | ||
| accountId | No | ||
| requested | No | List pending join requests instead |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint. The description adds only that it lists users via a specific invite link, but fails to disclose that the link is optional (omit for all joiners) or that 'requested' changes the result set to pending requests. These behavioral traits are left to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb and resource. Every word adds value, and there is no redundant or padding content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain what the tool returns, but it does not. It also omits the optional-link behavior and the 'requested' toggle, which are significant for understanding the tool's full range. The annotations help, but the description alone is insufficient for a 5-parameter tool with these nuances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 40% (only link and requested have descriptions). The description does not compensate by explaining peer, limit, accountId, or the relationship between link and requested. It merely repeats 'invite link' without adding parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List users') and a specific resource ('that joined a chat through a specific invite link'). This distinguishes it from sibling tools like list_invite_links (lists links) and list_participants (lists all participants).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like list_participants or list_invite_links. The schema hints at omitting the link to list all joiners and using 'requested' for pending requests, but the description itself offers no context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invite_linksList invite linksARead-only
List all invite links the current user can see in a chat.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| limit | No | ||
| adminId | No | Filter by issuing admin | |
| revoked | No | List revoked links instead of active ones | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and openWorldHint annotations already declare the safety profile. The description adds that the tool lists links visible to the current user, which clarifies permission scope, but it does not disclose other behavioral traits such as default filtering (active vs. revoked) or pagination behavior, though some of that is in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five parameters, no output schema, and low schema description coverage, this description is too minimal. It does not explain return values, default behavior for 'revoked', pagination via 'limit', or how 'adminId' filters results. The readOnly annotation helps but does not make the tool fully understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40% (adminId and revoked have descriptions, while peer, limit, and accountId do not). The description only hints that 'peer' refers to a chat, but it does not compensate for the low coverage by explaining the meaning or interaction of the parameters. Minimal value is added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('list') and resource ('invite links') with a clear scope ('current user can see in a chat'). It effectively distinguishes itself from sibling tools like create_invite_link, revoke_invite_link, and list_invite_joiners.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating it lists invite links visible to the current user for a chat, but it does not explicitly compare with alternatives or state when not to use it. For example, it does not mention that create_invite_link is for creating, or that list_invite_joiners is for viewing who joined via a link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_messagesList messagesBRead-only
List messages in a dialog. Newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | Dialog id or @username | |
| limit | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a read operation. The description adds 'Newest first' (ordering) and 'in a dialog' (scope), which is useful. However, it does not mention pagination, return format, or any other behavioral traits, so it stays at the baseline for annotated tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core action and a key detail. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having a readOnlyHint annotation, the tool has 3 parameters (one undocumented in schema) and no output schema. The description does not clarify pagination, the meaning of accountId, limit semantics, or the shape of the returned messages. This is underspecified for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only peer is described). The description does not explain limit or accountId, nor does it add meaning beyond what the schema provides. With low schema coverage, the description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List messages in a dialog.' This clearly distinguishes it from siblings like get_message (single message) or search_messages (searching). The addition of 'Newest first' further clarifies the ordering semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as search_messages or get_message. It lacks any context about use cases, exclusions, or prerequisites, leaving the agent without clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_participantsList participants of a group or channelARead-only
List members of a group, supergroup, or channel. Optional filter (admins/kicked/banned/bots) and substring search.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| limit | No | ||
| filter | No | ||
| search | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful filter/search behavior, but does not disclose return format, pagination, or edge cases. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two crisp sentences front-load the core purpose and add the key options without any filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and 0% schema parameter descriptions, the tool description is too sparse to fully support correct invocation. It omits the required peer, limit semantics, and what the return value looks like. Annotations mitigate safety but not usage completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'Optional filter (admins/kicked/banned/bots)' and 'substring search', which maps to filter and search but omits the enum values 'recent' and 'contacts'. It also fails to mention the required 'peer' parameter, 'limit', or 'accountId'. The compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), the resource ('members of a group, supergroup, or channel'), and clearly distinguishes from siblings like get_participant (singular) and other list tools (list_dialogs, list_contacts). The optional filter and search are additional scope-defining details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (to get members of group/channel) but does not explicitly compare with alternatives such as get_participant or mention exclusions. It gives context about filters and search but no when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_storiesList active stories from contactsBRead-only
Return the stories feed (other users' active stories).
| Name | Required | Description | Default |
|---|---|---|---|
| hidden | No | List archived (hidden) stories | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint, so the read-only nature is covered. The description adds only scope ('other users' active stories') and no behavioral details such as pagination, default filtering, or how the hidden parameter interacts with 'active' stories.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two optional parameters and no output schema, this is under-specified. The agent cannot determine accountId's role, the effect of hidden, or how this tool differs from get_peer_stories, making correct invocation uncertain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: hidden is described, but accountId is not. The description adds no parameter information, leaving accountId's purpose unexplained and failing to clarify how hidden modifies the active-stories feed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the stories feed, scoped to other users' active stories. This distinguishes it from peer-specific story tools like get_peer_stories and from story creation/deletion tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. Sibling tools such as get_peer_stories exist, but the description never mentions them or provides exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_topicsList forum topicsARead-only
List topics in a supergroup with forum mode enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| limit | No | ||
| query | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and openWorldHint. The description adds the constraint that this only works on forum-enabled supergroups, which is useful behavioral context. However, it does not disclose details about result types, pagination, or other behavior beyond the basic listing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence with no redundant information, achieving optimal conciseness and front-loading the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 4 parameters and no output schema, the description is too minimal. It doesn't clarify optional parameters or what the returned topics look like, leaving gaps in agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% coverage with no parameter descriptions. The description only hints that peer should refer to a forum-enabled supergroup, but does not explain limit, query, or accountId semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'list' with resource 'topics' and defines the scope 'supergroup with forum mode enabled'. This clearly distinguishes it from sibling tools like list_messages or list_dialogs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (listing topics in forum-enabled supergroups) but does not explicitly state when to use this tool over alternatives such as create_topic or search tools. No exclusions or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginSign in to TelegramA
Open a browser window where the user signs in to Telegram (phone → code → 2FA). Resolves once the user finishes. Use this when no account is signed in or to add another one.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the openWorldHint annotation, the description reveals the interactive flow (browser window, user-driven steps, completion resolve). It adds useful behavioral context about how the tool executes, though it omits potential timeout or cancellation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, followed by usage instruction. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and a single annotation, the description fully explains the tool's purpose, process, and appropriate usage context. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the description correctly avoids parameter details. This meets the baseline for no-parameter tools where schema coverage is trivially 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Open a browser window where the user signs in to Telegram'), includes the process ('phone → code → 2FA'), and clearly distinguishes from siblings by focusing on authentication. It also clarifies the outcome ('Resolves once the user finishes').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use guidance is provided: 'Use this when no account is signed in or to add another one.' It does not explicitly name alternatives or exclusions, but the condition is clear and sufficient for a login tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logoutSign out of TelegramADestructive
Drop the local session for an account and revoke it on the Telegram side.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | Account id (from listAccounts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful context beyond the annotations: it clarifies that the action affects both the local session ('Drop the local session') and the server-side session ('revoke it on the Telegram side'). This goes beyond the generic destructiveHint and provides specific behavioral detail about the scope of the side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the essential behavior without any fluff. It is front-loaded with the core action and uses precise language, making it easy for an agent to quickly understand the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter logout tool with annotations, the description is nearly complete. It covers the local and server-side effects, and the remaining missing detail (return value) is not critical given the tool's simplicity. The absence of an output schema also reduces the need to describe return values, but a note on success/failure signaling might have been useful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameter documentation, including the key detail that accountId comes from listAccounts. The tool description itself does not add any parameter-level information, which is acceptable given the high schema coverage, but it also doesn't clarify any edge cases or usage nuances beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Drop the local session for an account and revoke it on the Telegram side.' This is a specific verb+resource (drop/revoke session) that distinguishes logout from siblings like login or list_accounts, which involve creating or listing sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied by the title and description: use this to sign out an account. However, there is no explicit guidance on when to use this tool vs alternatives, nor any mention of exclusions or prerequisites. The description assumes the user knows when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_as_readMark dialog as readAIdempotent
Mark a dialog (and optionally up to a specific message id) as read.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | Dialog id or @username | |
| maxId | No | Mark messages up to this id (inclusive). Omit to mark all. | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint and idempotentHint, covering safety and idempotency. The description adds behavioral context about scoping (up to a specific message id or all) but does not disclose further side effects such as changes to unread counts or accountId implications. This is moderate transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential purpose and optional behavior without unnecessary words. It is concise and well-structured, earning a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only three parameters and no output schema. The description covers the main behavior and the optional maxId scoping, but it omits details about the accountId parameter and what the tool returns after execution. This is adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for peer and maxId (67% coverage). The description echoes the maxId behavior but adds no new meaning and leaves accountId undocumented. Since the schema handles most parameters, the description contributes only marginally.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear, specific action: 'Mark a dialog (and optionally up to a specific message id) as read.' This uses a precise verb and resource, and distinguishes the tool's scope from any sibling tools. No other sibling provides this exact functionality, so the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you want to mark a dialog as read) and the optional maxId parameter provides conditional behavior, but it does not explicitly state when not to use it or mention alternatives. No alternative tool is referenced, so the guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate_chatMigrate a basic group to a supergroupADestructive
One-way migration. Returns the new supergroup id in the resulting updates.
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Basic group chat id | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior (destructiveHint=true), but the description adds 'one-way migration' clarifying irreversibility and mentions the return of the new supergroup id in updates. This goes beyond the annotations, though it does not elaborate on side effects like message loss or permission changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the key concept 'One-way migration', and includes the output expectation. Every word adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no output schema and incomplete parameter coverage, the description is too sparse. It explains the return value vaguely ('resulting updates') but does not cover prerequisites, effects on the original group, or the optional accountId, leaving significant operational context unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% of parameters described in the schema (chatId yes, accountId no), the description should compensate but does not. It adds no explanation of accountId or any parameter details, leaving a gap in understanding required for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description clearly state the tool migrates a basic group to a supergroup. The description adds 'One-way migration' and specifies the result (new supergroup id in updates), making the purpose unambiguous and distinct from any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when converting a basic group to a supergroup, and 'one-way' hints at irreversible action. However, it provides no explicit guidance on when to use vs alternatives or any exclusions, leaving context to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mute_peerMute a peerAIdempotent
Mute a chat. Without untilDate, mutes forever.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No | ||
| untilDate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the key behavioral detail that without `untilDate` the mute is permanent, going beyond the annotations (`idempotentHint`, `openWorldHint`). It does not contradict annotations, but it does not disclose potential side effects or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loads the primary action, and contains no outright redundancy. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with annotations and no output schema, the description covers the core action and the main optional parameter behavior. Lacks explanation of `accountId`, but it is optional and a common pattern, so the description is complete enough for straightforward use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only clarifies the role of `untilDate` ("mutes forever" without it), leaving `peer` and `accountId` unexplained. This is partial compensation but insufficient for two other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb and resource: "Mute a chat". It distinguishes from the sibling tool `unmute_peer` by focusing on muting, and clarifies the behavior with `untilDate` (forever if omitted).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied from the title and description—use it to mute a chat. However, no explicit guidance is given on when to prefer this over alternatives like `unmute_peer` or `set_notify_settings`, and no exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_settingsOpen the mcp-telegram settings pageA
Open a local browser tab where the user can toggle read-only mode and edit the tool allowlist / blocklist. Resolves when the user closes the tab. Changes are persisted to ~/.telegram-agent/state.json; the MCP client must be restarted to pick them up. Env vars (MCP_TELEGRAM_READONLY / TOOLS / DISABLE) override stored values and are shown as locked in the UI.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description goes far beyond the openWorldHint annotation, disclosing critical behavioral details: it resolves when the tab is closed, changes persist to ~/.telegram-agent/state.json, the MCP client must be restarted to apply changes, and env vars override stored values and appear locked in the UI. No contradiction with annotations; excellent transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary action, then each subsequent sentence adds essential detail (lifecycle, persistence, override behavior). No extraneous information—every sentence earns its place. Ideal length for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description fully covers what the tool does, when it completes, where changes are stored, restart requirement, and env var interactions. This is complete guidance for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is empty. Per the rubric, the baseline for 0 params is 4. The description doesn't need to explain parameter meanings but adds context about configuration behavior (env var overrides) that helps the agent understand the tool's functioning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Open a local browser tab where the user can toggle read-only mode and edit the tool allowlist / blocklist.' This distinguishes it from all sibling tools, which focus on Telegram chat operations. The verb+resource+parameters are explicit and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool—when the user needs to modify read-only settings or allowlists/blocklists. It does not explicitly name alternatives or exclusions, but since no sibling tool overlaps in functionality, the context is sufficient. The lack of explicit 'use this instead of X' prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pin_messagePin a messageCIdempotent
Pin a message in the dialog.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| silent | No | ||
| accountId | No | ||
| messageId | Yes | ||
| pmOneSide | No | In PMs, pin only on your side (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description offers no behavioral details beyond the core action. It does not disclose whether pinning replaces an existing pinned message, requires specific permissions, or triggers notifications. The annotations (idempotent, openWorld) provide minimal safety hints, but the description adds no value in explaining side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no redundant wording, making it concise and immediately readable. It front-loads the verb 'Pin' and names the resource. However, it is so brief that it omits important contextual information, though conciseness itself is not the issue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has five parameters, two required, and no output schema, the description is too sparse to guide an agent effectively. It does not clarify return behavior, side effects, or how the parameters like silent and pmOneSide affect the operation. Annotations cover only idempotency and open-world assumptions, leaving much context unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any of the five parameters, and schema description coverage is only 20%, applying only to pmOneSide. With low coverage, the description should compensate by outlining parameter roles and relationships, but it remains silent. Users must rely on the bare schema, which lacks descriptions for peer, messageId, silent, and accountId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Pin a message in the dialog' uses a specific verb and resource, clearly distinguishing it from the sibling tool 'unpin_message'. However, the term 'dialog' is somewhat vague and does not clarify whether it applies to private chats, groups, or channels, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the action name and context, but there is no explicit guidance on when to use this tool versus alternatives like unpin_message. The description does not mention any prerequisites or scenarios where pinning would be inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promote_adminPromote a user to adminAIdempotent
Grant admin rights. Pass only the fields you want enabled; omitted fields default to false.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| rank | No | Custom admin badge text | |
| user | Yes | ||
| rights | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the key behavior that omitted rights fields default to false, complementing the idempotent and open-world annotations. It does not contradict the annotations and provides useful context for partial updates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary purpose, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity tool with nested parameters, the description covers the core action and default behavior but omits prerequisites, return values, and error scenarios. It is sufficient for basic usage but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 20% schema description coverage, the description compensates by clarifying the rights object semantics (omitted fields default to false), but leaves peer, user, and accountId without explanation, relying on their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Grant admin rights' with a specific verb and resource, distinguishing it from sibling tools like demote_admin that revoke admin rights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like demote_admin, though the purpose is clear. It focuses on how to pass rights fields rather than when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_foldersReorder dialog foldersAIdempotent
Set the display order of folders by passing the list of ids in the desired sequence.
| Name | Required | Description | Default |
|---|---|---|---|
| order | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint and idempotentHint. The description adds the core behavior of setting display order, but does not disclose edge cases like whether all folder IDs must be included, how invalid IDs are handled, or the effect on unsaved orders. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and key input. No redundant or unnecessary information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description lacks details on accountId usage, return behavior, or whether the order list must replace all folders or can be partial. Given no output schema and limited annotations, the description is adequate but leaves open common edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implicitly explains the required 'order' parameter as a list of folder IDs in desired sequence, but does not mention the optional 'accountId' parameter or its purpose. This partial compensation supports a mid-range score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'display order of folders', while specifying the exact input ('list of ids in the desired sequence'). It distinguishes this from sibling tools like edit_folder or create_folder by focusing specifically on ordering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on what the tool does and how to invoke it, but does not explicitly mention when to prefer it over alternatives or any exclusions. The 'desired sequence' wording makes usage intuitive, but no explicit when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_usernameResolve a Telegram usernameARead-only
Look up a user, channel, or chat by @username.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | With or without the leading @ | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds that it can resolve users, channels, and chats. It does not clarify behavior for non-existent usernames, whether the entity type is returned, or any rate limits. The description adds some context but not rich behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the key action and resource. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with read-only annotations and no output schema, the description covers the essential purpose and input. It lacks details about return value or error handling, but for a resolution tool this is a minor gap given the clear input and purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes the 'username' parameter (with or without @), but the 'accountId' parameter has no description in the schema. The tool description does not mention accountId at all, leaving its purpose and usage unclear. With 50% schema coverage, the description should compensate for the undocumented parameter but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('look up') and the resource ('user, channel, or chat') with a specific input mechanism ('by @username'). This distinguishes it from sibling tools like get_user_info or check_username, which have different scopes or purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you have a @username and need to resolve it to an entity. However, it does not explicitly mention when not to use it or suggest alternatives, such as using search_global for broader lookup or get_user_info if an ID is already known.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restrict_userRestrict a user with a custom rights maskBDestructive
Set specific restrictions. true for a field means the user CANNOT do that action.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| user | Yes | ||
| rights | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive and open-world. The description adds useful behavioral detail by defining the polarity of the boolean fields, but it does not disclose other significant behaviors such as whether restrictions are reversible, whether they replace or merge with existing restrictions, or what permissions are required. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two brief sentences that immediately convey the purpose and the critical field semantics. Every word earns its place, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested rights object, 14 boolean fields, destructive annotations) and lack of output schema, the description is too sparse. It omits usage guidance, parameter explanations for `peer`/`user`/`accountId`, and behavioral context like whether restrictions stack or reset. This could lead to incorrect invocation in an autonomous agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that all boolean fields in `rights` mean 'cannot do that action', which is essential because the schema has zero descriptions for these fields. However, it does not explain `peer`, `user`, or `accountId`, leaving their meaning to be inferred from names. The nested `rights` object is well served, but other parameters remain underdocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function ('Set specific restrictions') and explains the key semantics of the rights mask (true means the user CANNOT perform the action). It differentiates from simple ban/kick by focusing on a custom rights mask, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus sibling tools like ban_user, kick_participant, or promote_admin. There are no stated prerequisites (e.g., admin rights) or context for when a custom rights mask is appropriate, leaving the agent without selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_invite_linkRevoke an invite linkBDestructive
Permanently revoke a previously generated invite link.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The invite link URL (e.g. https://t.me/+abc...) | |
| peer | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive (destructiveHint: true) and open-world (openWorldHint: true). The description adds the 'permanently' and 'previously generated' qualifiers, which clarifies the irreversibility and the requirement that the link must exist, but does not elaborate on side effects or consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It is appropriately front-loaded with the action and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description leaves important gaps: no explanation of the peer parameter, no outcome expectations, and no cautionary context. The brevity comes at the expense of completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any parameters. Schema coverage is only 33% (only 'link' has a description), and the description fails to clarify 'peer' or 'accountId'. The agent receives no semantic help from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Permanently revoke a previously generated invite link.' It uses a specific verb (revoke) and resource (invite link), and the scope ('previously generated') distinguishes it from create_invite_link and list_invite_links among the siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or contexts. It simply defines the action, leaving the agent to infer when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_draftSave a message draftAIdempotent
Save a draft for a dialog. Pass empty text to clear it.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| text | Yes | ||
| replyTo | No | ||
| topMsgId | No | ||
| accountId | No | ||
| noWebpage | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include openWorldHint and idempotentHint, but the description adds the critical non-obvious behavior that an empty text clears the draft. It also scopes the operation to a dialog. This goes beyond what annotations already provide, though it does not detail overwrite behavior or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core purpose, and includes a helpful usage note. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple draft-saving tool, the description covers the essential action and a key variant (clearing). However, it omits any mention of return behavior, optional parameters (replyTo, noWebpage), and does not differentiate from the sibling clear_draft tool, leaving room for ambiguity in a broader workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameter meaning. It only clarifies the `text` parameter (empty clears), while `peer`, `replyTo`, `topMsgId`, `accountId`, and `noWebpage` remain unexplained. The compensation is incomplete for six parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: saving a draft for a dialog. It also adds key behavior (passing empty text clears) which distinguishes it from list_drafts and hints at an alternative to clear_draft, though not explicitly differentiating by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (to save a draft) and gives a usage nuance for clearing via empty text, but it does not explicitly mention alternatives like clear_draft or list_drafts, nor when to prefer them. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contactsSearch contacts and global directoryARead-only
Search users/chats/channels by a query (matches name, username, and indexed text).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds meaningful behavior by specifying that the query matches name, username, and indexed text, which clarifies the search scope beyond a generic 'search'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys the core purpose and matching behavior without waste. Every word adds value, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, but there is no output schema and the description does not indicate what the search returns (e.g., contact list format). It also lacks usage differentiation from siblings, and the accountId parameter is left ambiguous, leaving some gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the semantics of the 'query' parameter (matches name, username, indexed text), but it does not clarify 'limit' or 'accountId'. With schema description coverage at 0%, the description partially compensates but leaves two parameters under-explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Search') and resource ('users/chats/channels'), and adds matching criteria ('name, username, and indexed text'). It does not explicitly distinguish from the sibling tool 'search_global', which may serve a similar purpose, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like search_dialogs, search_messages, or search_global. The description implies a broad search but does not provide exclusions or preferred use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dialogsSearch dialogsARead-only
Find dialogs by a substring against their name/title/username.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Substring to match (case-insensitive) | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is clear. The description adds that the search targets name/title/username, but it does not discuss behavior beyond that, such as result ordering or pagination. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that clearly states the tool's purpose. There is no filler or redundant information, and it is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool, the description plus annotations and schema provide sufficient guidance for basic use. However, the accountId parameter is not explained, and there is no mention of result format or ordering, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only query has a description). The description adds meaning by specifying which fields the query matches, but it does not clarify the limit or accountId parameters, which remain undocumented. This partially compensates for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('find') and resource ('dialogs'), and clearly states the matching criteria: substring against name/title/username. This distinguishes it from sibling tools like search_messages, search_contacts, and search_global.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need to search dialogs by substring), but it does not explicitly mention alternative tools or when not to use it. No exclusions or comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_globalSearch messages across all dialogsARead-only
Search messages across every chat the user is in. Useful for "find that link about X".
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| filter | No | ||
| maxDate | No | ||
| minDate | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the scope of the search (across every chat) but does not disclose other behavioral aspects such as pagination, result limits, or how filters apply. With good annotations, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and scope, and the second sentence provides a memorable use case. No wasted words; every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, an enum, and no output schema, the description is too minimal. It does not explain return values, pagination behavior, or how the various filters interact. The tool has moderate complexity that the description fails to address, making it incomplete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning, but it does not mention any parameters except indirectly the query. There is no explanation of filter, minDate, maxDate, limit, or accountId. The description adds zero value beyond the schema field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search messages'), the resource ('messages'), and the scope ('across every chat the user is in'), which distinguishes it from sibling tools like search_messages (likely scoped to one chat). The use case 'find that link about X' further clarifies the intended purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when you need to search across all chats, e.g., finding a specific piece of content ('find that link'). It implies this is for global search when the chat is unknown, but it does not explicitly name alternative tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_messagesSearch messages in a dialogARead-only
Search messages within one dialog. Supports text substring, type filter (photos/links/etc), sender filter, and date range. Newest first unless reverse=true.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | Dialog id or @username | |
| limit | No | ||
| query | No | Substring to match in the message text | |
| filter | No | Media/content type filter | |
| maxDate | No | Unix seconds — exclude messages newer than this | |
| minDate | No | Unix seconds — exclude messages older than this | |
| reverse | No | Oldest first when true | |
| fromUser | No | Username (@nick) or numeric id of the sender to filter by | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond annotations, such as default sorting (newest first) and the effect of reverse=true, plus supported filter types. The readOnlyHint already communicates safety, so the bar is lower, and this description contributes meaningful extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each with clear value: scope, filters, and ordering. No meaningless words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core features of the tool adequately for a search operation. It does not mention limit or accountId parameters, but the schema indicates them and the overall description is sufficient for an agent to understand what the tool does and when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description summarizes the parameter semantics in plain language (query, filter, sender, date range) and clarifies the default sort behavior. Since the schema already has descriptions for most parameters, the description provides an additional layer of understanding without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches messages within one dialog, using a specific verb and resource. It distinguishes itself from global search (search_global) and listing tools (list_messages) by explicitly scoping to a single dialog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use for searching within one dialog with filters like text, type, sender, and date range. It does not explicitly name alternatives, but the scope is well-defined and not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_saved_messagesSearch Saved Messages (with tag filter)ARead-only
Search inside Saved Messages (me). Combine free-text query with tagEmoji and/or tagCustomEmojiIds to filter by reaction-tag. Newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| maxDate | No | ||
| minDate | No | ||
| tagEmoji | No | Emoji tags to match, e.g. ["🧠","📚"] | |
| accountId | No | ||
| savedPeer | No | Filter to a Saved-Messages sub-dialog (the original sender peer) | |
| tagCustomEmojiIds | No | Custom-emoji tag document ids |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations declaring `readOnlyHint: true` and `openWorldHint: true`, the description adds valuable behavioral context beyond these: it specifies the search scope (`me`), the combination of query and tag filters, and the `newest first` ordering. It does not elaborate on rate limits or pagination, but the provided details meaningfully extend the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action, and contains no filler. Every sentence adds useful information: scope, filter combination, and ordering. It is optimally concise for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality but omits important details for a tool with 8 optional parameters and no output schema. It explains the main use case but does not describe the meaning of date range or limit parameters, nor what the response contains. Given the absence of an output schema and the low schema coverage, the description could be more complete, but it does establish the essential behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 38%, the description needed to compensate for the undocumented parameters. It clarifies the relationship between `query`, `tagEmoji`, and `tagCustomEmojiIds` (combinable filters), but gives no guidance on `limit`, `maxDate`, `minDate`, `accountId`, or `savedPeer` (though `savedPeer` has a schema description). The description only partially covers the parameter space, leaving several parameters' semantics unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Search inside Saved Messages (`me`).' It specifies the scope (Saved Messages), the optional tag filtering mechanism, and the result ordering ('Newest first'). This differentiates it from sibling tools like `search_messages` (general search) and `get_saved_history` (browsing without search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this tool is for searching within Saved Messages, with the ability to combine a free-text query with tag emoji/custom-emoji IDs. It implies when to use it (when targeting Saved Messages) but does not explicitly name alternatives or exclusions. The scope is well-defined, so the agent can infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_fileSend a fileA
Upload and send one or more files. Each path may be an absolute local path or an https:// URL. Passing multiple paths sends them as an album.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Local path, URL, or array of those for an album | |
| peer | Yes | ||
| silent | No | ||
| asPhoto | No | ||
| asVoice | No | ||
| caption | No | ||
| replyTo | No | ||
| topMsgId | No | Forum topic root message id | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only an openWorldHint annotation, the description carries the burden of disclosing behavior. It explains the album behavior and path types, but does not mention side effects such as creating a chat message, requiring authentication, or potential rate limits. This is adequate but not deeply transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, immediately states the core purpose, and includes only relevant details about path types and album behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters and no output schema, yet the description only addresses the path parameter and the general send action. Key options like sending as photo/voice, captions, replies, and account selection are omitted, making the description insufficient for understanding the full scope of usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 22%, so the description must compensate. It explains the path parameter well, including local/URL distinction and album behavior, but leaves other parameters like silent, asPhoto, asVoice, caption, replyTo, and accountId unexplained. This partial compensation merits a mid-range score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Upload and send one or more files,' specifying both the action and resource. It distinguishes this tool from sibling tools like send_message and send_story by focusing on files rather than text or stories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by explaining that paths can be local or HTTPS URLs and that multiple paths form an album. However, it does not explicitly mention alternatives or when not to use this tool, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageSend a messageA
Send a text message to a dialog. Supports reply, forum topic, silent, scheduled delivery, and parse mode.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | Dialog id or @username | |
| text | Yes | ||
| silent | No | ||
| replyTo | No | Message id to reply to | |
| schedule | No | Unix seconds — send at this time instead of now | |
| topMsgId | No | Forum topic root message id | |
| accountId | No | ||
| parseMode | No | ||
| linkPreview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only openWorldHint=true in annotations, the description adds a useful capability list (reply, forum topic, silent, scheduled delivery, parse mode) but does not disclose delivery behavior, error possibilities, or account selection details. The annotation already signals unknown side effects, so the description provides moderate additional value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core action, and the second sentence efficiently enumerates optional capabilities. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema, the description omits return value information, error behavior, and account-specific semantics. While it covers key options, it leaves meaningful gaps that could impact the agent's ability to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 44%, so the description should compensate. It maps several features to parameters ('reply', 'forum topic', 'silent', 'scheduled delivery', 'parse mode') but leaves text, accountId, and linkPreview semantically unexplained beyond the schema, creating a partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Send a text message to a dialog', a specific verb+resource combination that clearly differentiates it from siblings like send_file, send_poll, and forward_messages. The phrase 'text message' narrows scope effectively, and the capability list reinforces the primary function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as the main text-messaging tool but provides no explicit when-not guidance or mention of alternatives such as send_file or send_message_to_phone. The feature list gives context, but it does not clarify when to choose this tool over sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_message_to_phoneSend a message to a phone numberA
Send a Telegram message to someone identified only by their phone number. The phone is briefly added to contacts (Telegram requires this), the message is sent, then the contact entry is removed by default. Phone must include country code (e.g. +12025550123).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| phone | Yes | ||
| silent | No | ||
| lastName | No | ||
| accountId | No | ||
| firstName | No | Name used for the temporary contact entry | |
| parseMode | No | ||
| keepContact | No | Do not remove the contact afterwards (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only an openWorldHint annotation, the description carries the burden and reveals key behavioral traits: the phone is temporarily added to contacts (required by Telegram), the contact is removed by default, and country code format is required. This goes beyond the bare annotation and gives the agent crucial side-effect awareness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. The first sentence states the core purpose, the second explains the important temporary-contact mechanism, and the third gives the phone format. Information density is high and structure is clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main workflow and the most critical nuance (temporary contact). However, there is no output schema to clarify return values, and the description does not mention what the tool returns, error conditions, or required permissions. Given the tool has 8 parameters and no output schema, this is a noticeable gap, though the core mechanics are well addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (2 of 8 parameters have descriptions). The description adds meaning for 'phone' (must include country code) and indirectly for 'keepContact' (removal by default), but leaves silent, lastName, parseMode, and accountId without meaningful explanation. With low coverage, the description does not sufficiently compensate for these undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: sending a Telegram message to a phone number. It specifies the resource (Telegram message) and the unique characteristic (identified only by phone number), which distinguishes it from sibling tools like send_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when you need to message someone using only their phone number. It does not explicitly name alternatives like send_message for peer identifiers, and offers no exclusions or when-not-to-use guidance. The context is clear but alternatives are not explicitly contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_pollSend a pollB
Send a poll. For a quiz, set quiz: true and correctAnswerIndex (0-based). Use closePeriod (seconds) or closeDate (unix seconds) to auto-close.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| quiz | No | ||
| answers | Yes | ||
| replyTo | No | ||
| question | Yes | ||
| solution | No | Explanation shown after a quiz answer | |
| accountId | No | ||
| anonymous | No | ||
| closeDate | No | ||
| closePeriod | No | ||
| multipleChoice | No | ||
| correctAnswerIndex | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the openWorldHint annotation by explaining that polls can auto-close via closePeriod/closeDate and that quiz mode requires a correctAnswerIndex. However, it omits side effects like the poll being posted to the peer, irreversibility, or authentication requirements, which limits full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and efficient: three sentences, with the core action 'Send a poll' front-loaded, followed by concise parameter guidance. No word is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters, no output schema, and only an openWorldHint annotation, the description is too sparse to be complete. It covers quiz and closing behavior but ignores return values, error handling, prerequisites, and other significant options like multipleChoice, solution, and anonymous, leaving the agent with significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 8%, so the description must compensate. It does clarify key parameters: quiz requires correctAnswerIndex (0-based), closePeriod is in seconds, and closeDate is unix seconds. But it leaves other parameters like multipleChoice, anonymous, replyTo, and accountId without explanatory text, relying on their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Send a poll,' a clear verb+resource statement that directly distinguishes this from sibling tools like vote_poll, close_poll, and get_poll_results. It adds specificity by covering quiz mode and auto-close options, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as vote_poll or get_poll_results. The description only explains parameter usage (quiz mode, close options) but never addresses tool-selection context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_reactionReact to a messageAIdempotent
Set one or more reactions on a message. Pass an empty reaction list to remove existing reactions.
| Name | Required | Description | Default |
|---|---|---|---|
| big | No | Animated "big" reaction | |
| peer | Yes | ||
| emoji | No | Standard emoji reactions, e.g. ["👍","🔥"] | |
| accountId | No | ||
| messageId | Yes | ||
| addToRecent | No | ||
| customEmojiIds | No | Custom emoji document ids |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds a non-obvious behavioral trait: passing an empty reaction list removes existing reactions. Annotations provide idempotency and open-world hints, but the description adds contextual behavior beyond those, though it does not cover auth or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, directly front-loaded with the primary purpose and a key usage note. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no output schema, and minimal annotations, the description does not provide enough context about expected outcomes, parameter relationships, or when to choose this over sibling reaction tools. The empty-list behavior is useful but leaves many gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is below 50% (only emoji and customEmojiIds have descriptions). The description adds the concept of empty list to remove, but it is ambiguous which parameter it refers to and leaves other parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (set reactions) and target (a message). The title 'React to a message' reinforces the verb+resource. It is distinct from siblings like get_message_reactions by focusing on writing reactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage: use when you want to react to a message, with a specific pattern for removal (empty list). However, it does not explicitly distinguish from related tools like set_default_reaction or get_message_reactions, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_storyPost a storyB
Publish a story (photo or video) on the chosen peer. Visibility defaults to "everyone".
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Local path or URL to the image/video | |
| peer | No | me | |
| period | No | Lifetime seconds; default 86400 (24h) | |
| pinned | No | ||
| caption | No | ||
| accountId | No | ||
| noForwards | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse (only openWorldHint: true), so the description carries the transparency burden. It discloses the visibility default but omits key behaviors such as return value, error handling, expiration behavior, or authentication needs. 'Publish' implies a write operation, but no explicit side-effect disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the core purpose clearly. It is concise with no wasted words, though it may be too terse given the number of parameters. Still, it earns a high score for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, sparse annotations, and no output schema, the description is severely incomplete. It does not explain accountId, peer semantics, noForwards, or what happens after publishing. The sibling tool list provides some context, but the description itself is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29% (path and period have descriptions). The description adds some context ('photo or video', 'chosen peer', visibility) but fails to explain critical parameters like peer, pinned, caption, accountId, and noForwards. Since the schema does not document these, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Publish'), the resource ('a story'), the type ('photo or video'), and the target ('chosen peer'). It distinguishes itself from sibling tools like list_stories, delete_story, and view_story, making it obvious this is the creation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies you use this tool to publish a story, but it does not explicitly mention when to use it versus alternatives or any prerequisites. The 'chosen peer' and visibility default hint at context but are not formal usage guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_birthdaySet birthday on profileCIdempotent
Set the account birthday. Year is optional.
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | ||
| year | No | ||
| month | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the annotations. It does not mention side effects, authentication needs, rate limits, or what happens on repeated calls. The idempotentHint and openWorldHint are provided, but the description itself offers no additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the primary action and no wasted words. It is appropriately concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits important context such as what 'the account' refers to, the meaning of accountId, whether there are preconditions, and how this interacts with other profile updates. Given no output schema, the description should provide more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate, but it only mentions that year is optional, which is already evident from the schema's required fields. It fails to explain the role of accountId or any nuances about day/month values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool sets the account birthday using the verb 'Set' and resource 'account birthday'. It is specific enough to be understood, but it does not explicitly differentiate from sibling tools like update_profile that might also modify profile fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It simply states what it does without mentioning exclusions, prerequisites, or when another tool would be a better fit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_default_reactionSet the account-wide default reactionCIdempotent
Set the quick reaction emoji shown on long-press in clients.
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | No | ||
| accountId | No | ||
| customEmojiId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint and openWorldHint, giving some behavioral context. The description adds that the emoji appears on long-press, which is a useful behavioral effect. However, it doesn't disclose side effects like overriding previous defaults or permission requirements, but the annotations lower the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It efficiently conveys the core action in a clear, concise manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three parameters and no output schema, yet the description provides minimal context. It doesn't explain the relationship between emoji and customEmojiId, nor the role of accountId, leaving an agent under-informed for correct invocation. The lack of return value info is also a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for parameters is 0%, and the description provides no explanation for emoji, accountId, or customEmojiId. The term 'emoji' is implied by the description, but the other two parameters remain ambiguous. The description fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets the quick reaction emoji for long-press, which is a specific action. It distinguishes from send_reaction by targeting the account-wide default rather than a specific message. However, the 'account-wide' scope appears only in the title, not the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus reaction-related siblings like send_reaction or get_default_tag_reactions. The description simply defines the action, leaving usage entirely implied with no exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_notify_settingsUpdate notification settingsCIdempotent
Update notify settings for a peer (sound, show preview, mute, story mute).
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| silent | No | ||
| accountId | No | ||
| muteUntil | No | ||
| showPreviews | No | ||
| storiesMuted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral detail beyond the fact that settings are updated. With only idempotentHint and openWorldHint in annotations, the agent is left unaware of side effects, persistence, or how the settings apply. No contradiction, but significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the verb and resource, and contains no redundant words. It is appropriately minimal for the purpose it serves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters and no output schema, this description is insufficient. It omits parameter details, expected return values, and how settings combine. An agent would struggle to use the tool correctly without external documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description should clarify each parameter. It only lists loose categories ('sound, show preview, mute, story mute') that map ambiguously to schema fields (e.g., 'mute' could be silent or muteUntil). Parameters like accountId and muteUntil are unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as updating notification settings for a peer, with a parenthetical listing the types of settings (sound, show preview, mute, story mute). It distinguishes from read-only tools like get_notify_settings, though it doesn't explicitly separate from mute_peer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like mute_peer or get_notify_settings. The description only states what the tool does, not the context or preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_privacySet a privacy settingAIdempotent
Replace the privacy rules for a key. mode chooses the base policy; allowUsers/disallowUsers add user-id exceptions.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| mode | Yes | ||
| accountId | No | ||
| allowUsers | No | ||
| disallowUsers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide openWorldHint and idempotentHint, and the description adds the key behavioral trait of replacement (overwriting existing rules) and explains how allowUsers/disallowUsers modify the base policy. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action, no redundant wording. Every sentence contributes to understanding the tool's behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core behavior is covered, but the description omits details about the key parameter's specific options, accountId's purpose, and return value. Since there is no output schema, a bit more context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains mode and allowUsers/disallowUsers, adding meaning beyond the schema, but fails to describe key and accountId. With 0% schema description coverage, this is partial compensation, leaving important parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Replace' and clearly specifies the resource: 'privacy rules for a key'. This distinguishes it from the read-only sibling get_privacy and from other setter tools (e.g., set_notify_settings) by focusing on privacy policies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for setting privacy rules, providing clear context about the mode and exception parameters. However, it does not explicitly state when to use this vs. alternatives or mention exclusions, such as 'use get_privacy to read current rules'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_profile_photoSet own profile photoBIdempotent
Upload a new profile photo from a local path or URL.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the annotations. The openWorldHint and idempotentHint annotations already indicate external side effects and repeatability. The description adds no context about permissions, whether the old photo is replaced, side effects, or return behavior. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the core purpose and input type without redundancy. Every word earns its place, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description is incomplete. It omits the role of 'accountId', provides no guidance on expected outcomes (e.g., new photo URL), and lacks behavioral details like authentication or replacement semantics. The description covers only the most basic purpose and one parameter's format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'path' can be a local path or URL, which adds some meaning. However, the 'accountId' parameter is not explained at all, leaving ambiguity about its purpose. With only two parameters and one unexplained, the description does not adequately compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Upload a new profile photo from a local path or URL.' It specifies the verb (upload), the resource (profile photo), and the input source (local path or URL), distinguishing it from siblings like download_profile_photo and edit_photo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for setting one's own profile photo and mentions accepted input formats (local path or URL). However, it does not explicitly state when to use this tool compared to alternatives like update_profile or edit_photo, nor does it provide exclusions or prior conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_slow_modeSet slow-mode delayAIdempotent
Limit how often non-admins can post. Allowed values: 0 (off), 10, 30, 60, 300, 900, 3600 seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| seconds | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With openWorldHint and idempotentHint annotations present, the description adds the behavioral detail that only non-admin posting is affected. It does not disclose permission requirements or side effects beyond the annotation coverage, so the score stays at a solid 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus an allowed-values list, front-loaded with the core purpose. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 3 parameters and no output schema, the description covers the primary behavior and the most important parameter (seconds). It omits accountId and permission prerequisites, but annotations cover idempotency and open-world context, making it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explicitly enumerates allowed values for 'seconds', which adds meaning beyond the schema's minimum-0 constraint. 'peer' is implied as the chat where slow mode applies, though accountId remains undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Limit how often non-admins can post.' This clearly explains what the tool does and distinguishes it from sibling tools that handle other chat settings like mute or notifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when you want to restrict posting frequency for non-admins. It does not explicitly name alternatives or exclusions, but the purpose is unambiguous and no competing sibling tool exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_join_requestToggle join-request requirementAIdempotent
When enabled, new members must be approved by an admin.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| enabled | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations by explaining the consequence of enabling the setting. It does not mention permissions, reversibility, or what happens when disabled, but for a simple toggle with idempotentHint and openWorldHint, it provides meaningful transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that directly explains the tool's effect. There is no wasted content, and it is appropriately sized for the simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple toggle behavior, but the description is incomplete given the undocumented parameters and lack of output schema. It does not explain what 'peer' refers to, the role of 'accountId', or the behavior when 'enabled' is false, leaving gaps for a tool with 3 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any of the parameters (peer, enabled, accountId). It does not compensate for the lack of schema descriptions, leaving the agent to guess the meaning and usage of each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific effect: 'When enabled, new members must be approved by an admin.' This clearly conveys that the tool toggles a join-request requirement, and the name/title reinforce the action. It is distinct from sibling tools like invite_user or kick_participant because it controls approval policy for new members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you want to require admin approval for new members, but it does not explicitly state when to use it versus alternatives. No exclusions or alternative tools are mentioned, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_saved_dialog_pinPin or unpin a Saved sub-dialogA
Pin/unpin one of the forum-style sub-dialogs inside Saved Messages.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | Original sender peer of the saved sub-dialog | |
| pinned | No | true to pin, false/omit to unpin | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the core behavior of pinning/unpinning, which aligns with the openWorldHint annotation. However, it discloses no additional behavioral context such as idempotency, error conditions, or how the operation affects the sub-dialog. The annotation is generic, so the description adds minimal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It immediately conveys the action and target without unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides adequate context for a simple toggle action, but it doesn't clarify prerequisites (e.g., the sub-dialog must be forum-style) or how success/failure is communicated. Given the absence of an output schema, some elaboration on expected behavior would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any parameters. The schema covers peer and pinned, but accountId is left undocumented. With 67% schema coverage, the description should help fill the gap for accountId but doesn't, leaving a clear deficiency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description, 'Pin/unpin one of the forum-style sub-dialogs inside Saved Messages,' clearly states the action and target, using a specific verb and resource. This distinguishes it from sibling tools like pin_message, which operate on regular messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for managing sub-dialogs in Saved Messages but does not explicitly state when to use it over alternatives or when not to use it. For instance, it doesn't mention that pin_message is for regular messages, leaving usage to be inferred from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_signaturesToggle author signatures on channel postsCIdempotent
Broadcast channels only.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| enabled | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral disclosure beyond the scope constraint. Annotations provide idempotentHint and openWorldHint, but the description does not explain side effects, reversal, or what toggling signatures actually does beyond the title. The description carries the burden here due to lack of readOnly/destructive annotations, and it fails to provide meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with a single sentence that delivers a clear scope warning. Every word earns its place. However, it is under-specified in terms of content, but that is more about completeness than conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool but no output schema and zero parameter documentation, the description is far too thin. It lacks a purpose statement, parameter guidance, and behavioral details. The 'Broadcast channels only' line is useful but insufficient for an agent to confidently invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of the parameters (peer, enabled, accountId). It does not help the agent understand what values to pass or their meaning. The description entirely fails to compensate for the lack of parameter details in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Broadcast channels only' provides a scope constraint but does not actually state what the tool does. The title 'Toggle author signatures on channel posts' gives the verb and resource, but the description itself lacks a purpose statement. It is not misleading, but it is vague and relies on the title for meaning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly scopes usage to broadcast channels, making it clear when this tool is appropriate. It implies that it should not be used for other channel types, though it does not mention alternatives or provide explicit exclusions beyond that scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_messageTranscribe a voice/video messageARead-only
Request a transcription of a voice note or video message. Requires a Telegram Premium account. The response may be pending — re-call to poll, passing the same message id.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No | ||
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds valuable context beyond annotations: the premium requirement and the potentially pending response with polling mechanism. Annotation contradiction is absent, and these details help manage expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, with the core purpose front-loaded and no unnecessary words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the essential workflow, prerequisite, and polling behavior. Without an output schema, a brief note about the expected successful result would make it fully complete, but the description is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for parameter clarity. It clarifies 'messageId' via the polling instruction but leaves 'peer' and 'accountId' unexplained, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Request a transcription') and the resource ('voice note or video message'). It is specific and distinct from all sibling tools, which do not offer transcription.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on prerequisites (Telegram Premium) and usage pattern (polling if pending). Does not explicitly mention alternatives, but no alternative transcription tool exists among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfer_ownershipTransfer channel ownershipADestructive
Transfer creator rights to another user. Requires the account 2FA password (Telegram enforces this).
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| newOwner | Yes | ||
| password | Yes | Current account 2FA cloud password | |
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal destructive and open-world behavior. The description adds the 2FA password requirement and notes Telegram enforces it, which is useful. However, it doesn't disclose that the transfer is likely irreversible or what happens to the original creator's rights.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the main verb and resource, and no unnecessary words. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description provides essential purpose and the 2FA requirement, but omits significant behavioral details like permanence and the effect on the current owner's rights. Partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (only password described). The description clarifies that the action transfers to 'another user', implying newOwner is the recipient, and the title indicates peer is the channel. But it doesn't define parameter formats or provide enough detail to fully compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Transfer') and resource ('creator rights'/'channel ownership'), clearly distinguishing from sibling tools like promote_admin and demote_admin. It unambiguously states the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use: transferring ownership to another user. It also notes a prerequisite (2FA password). However, it doesn't explicitly exclude alternatives or compare to promote_admin, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unban_userLift a ban / restrictionBIdempotent
Remove all restrictions for a user.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| user | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and openWorldHint=true, which cover retry safety and open-world behavior. The description adds minimal extra context by specifying 'all restrictions', but does not disclose potential side effects or permission requirements. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and contains no unnecessary words. It effectively communicates the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple and annotations provide some safety information, the description lacks parameter semantics and usage context. Without guidance on how 'peer' and 'user' relate or what 'all restrictions' entails, the description is not self-sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of the 'peer' or 'user' parameters. The agent must rely on parameter names alone, which is insufficient for correct invocation given the ambiguity of 'peer' in this context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Remove all restrictions for a user' clearly states the action and target, distinguishing it from related tools like 'ban_user' and 'restrict_user' which impose restrictions. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'unmute_peer' or 'unblock_user'. There is no mention of prerequisites, context, or exclusions, leaving the agent without clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unblock_userUnblock a userBIdempotent
Lift a previous block.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint and openWorldHint, reducing the burden on the description. The description adds the context that a previous block must exist, which is useful behavioral scope. However, it does not disclose side effects, errors, or accountId behavior, so it only partially enriches beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise, front-loaded sentence with no filler. The wording 'Lift a previous block' uses every word meaningfully, covering both the action and its precondition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema and no sibling differentiation, the single-sentence description is under-specified. It omits how the unblock operation relates to accountId, what response to expect, and how it contrasts with unban_user. The idempotent annotation helps but doesn't fill the missing operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description 'Lift a previous block' only indirectly suggests that the 'user' parameter should be a blocked user. It does not explain 'accountId' or its optional relationship to the operation. Given low coverage, the description fails to compensate and leaves parameter meaning largely to inference from names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Lift a previous block' clearly identifies the action (removing a block) and resource (a user's block), matching the title. It doesn't explicitly distinguish from sibling 'unban_user' or 'unmute_peer', but the block terminology is distinct enough. Slightly limited by no scope or recipient mention.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'previous block' implies the tool should be used only when a user is currently blocked, providing minimal contextual guidance. However, it offers no explicit when-not-to-use, prerequisites, or alternatives such as 'unban_user' for banned users. This is enough for a simple action but lacks explicit decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unmute_peerUnmute a peerBIdempotent
Clear a mute on a chat.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include openWorldHint and idempotentHint, which already convey that the tool may have world effects and is safe to repeat. The description adds little beyond what the annotations provide, offering no additional detail about side effects (e.g., re-enabling notifications) or required permissions. It is minimally adequate but not enriched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It communicates the core action clearly and efficiently, earning a high score for conciseness despite the brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple tool with 2 parameters, no output schema, and zero schema descriptions, the description is too sparse. It lacks essential context about parameter meaning and usage scenarios, making it incomplete for an agent to select and invoke correctly without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the 'peer' or 'accountId' parameters. It fails to compensate for the empty schema, leaving the agent to guess what 'peer' refers to (user ID, chat ID, etc.) and the role of 'accountId'. This is a critical gap for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Clear a mute on a chat' clearly identifies the action and resource. It directly contrasts with the sibling tool mute_peer, effectively distinguishing it as the inverse operation. The title 'Unmute a peer' reinforces the specific verb and object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a mute needs to be removed, but provides no explicit context about when to use it versus alternatives. It doesn't mention that it's the inverse of mute_peer or reference any related settings tools, leaving usage largely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpin_messageUnpin a messageAIdempotent
Unpin a specific message, or pass no id to unpin everything in the dialog.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No | ||
| messageId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a key behavioral detail not evident from the schema alone: passing no id unpins everything in the dialog. This is an important side effect that goes beyond the annotations (openWorldHint, idempotentHint). However, it does not disclose potential permission requirements or effects, but the simple nature of the operation keeps this acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and contains no filler. It efficiently conveys the core functionality and the special behavior of unpinning all messages.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 3 parameters and no output schema, the description is largely complete. It covers the main use cases and the optional messageId behavior. It does not mention accountId, but that is likely an optional parameter for multi-account setups and is understandable from context. Overall, sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clarifies the optional messageId semantics (omitting it means unpin all), which is valuable. However, it does not explain 'peer' or 'accountId', though their names are somewhat self-explanatory in this API context. The partial compensation earns a mid-range score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Unpin a specific message, or pass no id to unpin everything in the dialog.' It uses a specific verb (unpin) and resource (message), and distinguishes itself from the sibling tool 'pin_message' by explicitly covering both specific and bulk unpinning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool: to unpin a single message (by specifying messageId) or to unpin all messages (by omitting messageId). While it doesn't explicitly mention alternatives, the contrast with pin_message is obvious. It gives useful operational guidance but lacks explicit exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_my_usernameUpdate own @usernameAIdempotent
Set or clear (empty string) own public username.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations openWorldHint=true and idempotentHint=true already covering side effects and idempotency, the description adds value by disclosing the clear behavior via empty string. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence (9 words) that conveys the essential operation and special case. Every word earns its place; no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no output schema and 0% parameter coverage, the description should offer more context. It covers the main purpose and clearing behavior, but fails to mention the role of accountId, making the definition incomplete for a two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains 'username' as the value to set, but completely omits the optional 'accountId' parameter, leaving its purpose ambiguous. This is a significant gap for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Set or clear' and resource 'own public username', clearly distinguishing from sibling 'update_username' which likely targets other entities. It also clarifies the special empty-string behavior for clearing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'own public username' makes it clear this is for the current user, not channels/groups. However, it does not explicitly state when to prefer this over update_username or mention prerequisites like authentication, though context implies it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_profileUpdate own profile (name, bio)AIdempotent
Change own first name, last name, or about. Omitted fields are left untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| about | No | ||
| lastName | No | ||
| accountId | No | ||
| firstName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it clarifies that omitted fields are left untouched (partial update semantics) and restricts to 'own' profile. The annotations (idempotentHint, openWorldHint) already cover retry safety and external side effects, so the description supplements rather than repeats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with a clear verb and resource, front-loaded with the action and followed by the key usage tip. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description captures the core behavior but omits clarification of the 'accountId' parameter, which is significant given the sibling tools like list_accounts suggest multi-account support. It also doesn't mention any return value or error conditions, though for a simple update tool this may be acceptable. Overall, it's adequate but incomplete for a 4-parameter tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It mentions 'first name, last name, or about,' mapping to firstName, lastName, and about, and adds the partial-update semantics. However, it leaves 'accountId' completely unexplained, and the field meanings are otherwise just the property names already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Change') and clearly identifies the resource ('own first name, last name, or about'), which aligns with the title and distinguishes it from sibling tools like update_my_username and set_birthday by explicitly scoping to 'own' profile fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Change own first name, last name, or about' implies when to use this tool (updating own profile fields), but it does not explicitly mention alternatives or when not to use it (e.g., for username, birthday, or photo changes). The note 'Omitted fields are left untouched' gives usage context but not exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_saved_reaction_tagRename a Saved-Messages reaction tagA
Set or clear the custom title of a Saved-Messages reaction-tag. Pass title to rename, omit to clear. Premium feature.
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | No | Emoji tag, e.g. "🧠". Either this or customEmojiId required. | |
| title | No | Tag name. Omit to clear. | |
| accountId | No | ||
| customEmojiId | No | Custom-emoji document id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only openWorldHint), so the description carries the transparency burden. It discloses the toggle behavior and premium feature, but does not mention side effects, permission requirements, or return behavior. For a simple mutation, this is acceptable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, with no redundancy. Each sentence adds distinct value: the core function, the usage pattern, and a constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool and schema coverage, the description plus schema is sufficient for an agent to invoke it correctly. It could optionally mention return behavior or identification of the tag, but those are either covered in the schema or not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (3 of 4 params described). The description reinforces the title parameter's rename/clear semantics and adds the premium constraint, but does not clarify accountId or the emoji/customEmojiId selection beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (set/clear custom title) and the specific resource (Saved-Messages reaction-tag). It distinguishes itself from the sibling tool get_saved_reaction_tags by focusing on modification rather than listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear conditional usage—'Pass title to rename, omit to clear'—and notes the premium feature requirement. It does not explicitly list alternatives or when-not-to-use scenarios, but the purpose is specific enough to avoid confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_usernameSet / change channel public @usernameAIdempotent
Assign a new public username. Pass an empty string to clear it.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| username | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the non-obvious behavior that an empty string clears the username, which is not captured in annotations. It doesn't mention error cases or permission requirements, but idempotentHint already implies safe repetition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with the action verb front-loaded. Every word earns its place—there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with no output schema, the description covers the core action but omits which peer types it applies to (channel vs user) and how accountId factors in, which are relevant given sibling tools like update_my_username.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain parameters. It partially explains 'username' (assign or clear with empty string), but 'peer' and 'accountId' are completely undocumented, leaving the agent to guess what they refer to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Assign a new public username' clearly states the action and resource. The title 'Set / change channel public @username' further specifies it's for channels, distinguishing it from update_my_username. The empty-string clearing behavior adds useful nuance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like update_my_username or check_username. The only usage hint is 'Pass an empty string to clear it,' which says how to use it, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_storyMark stories as viewedCIdempotent
Increment view counters for the given stories.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| storyIds | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include openWorldHint and idempotentHint, so the description is not expected to repeat these. It adds the mechanism 'increment view counters' but does not disclose potential side effects, error behavior, or limitations beyond the basic mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary content. It is efficient but could have added parameter context without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and the presence of three parameters, the description is too thin. It does not clarify what 'peer' refers to, how storyIds map to the peer, or what the tool returns. This leaves significant gaps for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no explanation for any of the three parameters (peer, storyIds, accountId). With schema description coverage at 0%, the agent has to infer meanings solely from types and requiredness, which is inadequate for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('increment view counters') and resource ('stories'), which distinguishes it from siblings like list_stories or send_story. However, it does not explicitly name alternative tools or elaborate on its exact scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, such as needing to fetch stories first, or exclusions, such as not using it for marking messages as read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vote_pollVote in a pollC
Cast a vote on a poll by the index(es) of the chosen options.
| Name | Required | Description | Default |
|---|---|---|---|
| peer | Yes | ||
| accountId | No | ||
| messageId | Yes | ||
| answerIndexes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral detail beyond the bare action. The openWorldHint annotation warns of potential unintended side effects, but the description does not elaborate on vote idempotency, whether votes can be changed, or error conditions. It is not misleading, but it misses an opportunity to clarify behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded in a single sentence. It avoids fluff and is well-structured, but its brevity comes at the cost of missing important usage and parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has four parameters, no output schema, and only openWorldHint annotation, the description is too minimal. It does not explain prerequisites, behavior on failure, or distinct parameter semantics, leaving significant gaps for an agent trying to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only clarifies that answerIndexes are the indexes of chosen options, but peer and messageId are left to their names, and accountId is unexplained. This is insufficient for a tool with four parameters and no schema-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: casting a vote on a poll using the indexes of chosen options. It uses a specific verb ('cast a vote') and resource ('poll'), and distinguishes itself from sibling tools like send_poll, close_poll, and get_poll_results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites (e.g., poll must be active, user must be logged in) or when not to use it (e.g., closed polls). The description only states the action without context for selection among related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action, with specific names like send_story vs send_file. Some overlap exists between similar admin tools (ban_user vs restrict_user vs kick_participant), but descriptions clarify the differences. Overall, the boundaries are clear.
All tools use snake_case with a consistent verb_noun pattern (list, send, get, create, delete, edit, toggle). There are no mixed conventions or camelCase. Some verbs like 'get' vs 'list' are used interchangeably, but the pattern is uniform.
111 tools is far beyond the 15-tool sweet spot and in the extreme range. Even for a comprehensive Telegram client, this is an overwhelming surface that likely requires heavy filtering to be usable.
The tool set covers nearly every major Telegram feature: messaging, media, stories, admin, channels, folders, contacts, privacy, stickers, and more. The raw invoke_mtproto fallback fills any gaps, making the surface effectively complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.
Multi-tenant Telegram gateway for AI agents — HTTP+stdio, 8 tools, MTProto User API
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables interaction with Telegram to send, read, and search messages across chats and dialogs. It supports waiting for incoming messages and retrieving conversation history through natural language commands.144MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to control a real Telegram user account via MTProto, allowing message sending, chat reading/searching, and message management through MCP tools.36
- FlicenseNot gradedqualityBmaintenanceMCP server that gives LLMs access to Telegram Bot API, enabling them to read recent messages and reply to users via persistent local storage and MCP tools.
- AlicenseNot gradedqualityCmaintenanceAn MCP server that automates a single Telegram user account via the Telegram user API, enabling chat listing, reading/sending messages, searching, and additional actions through natural language.56MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/beautyfree/mcp-telegram'
If you have feedback or need assistance with the MCP directory API, please join our Discord server