Unofficial Telegram Sales MCP
Unofficial single-user Telegram integration exposing read-facing tools for exploring chats, messages, contacts and file metadata (search, contacts, file metadata sources) via TDLib, with all write actions (send, reply, edit, delete, forward, reactions, pins, media, scheduling) hard-disabled. Native TDLib runtime build and real authenticated Telegram login/reads are currently gated/unqualified, so the Telegram provider reports NOT_CONFIGURED until a developer independently builds and validates the native runtime and session.
Click on "Deploy 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., "@Unofficial Telegram Sales MCPshow my tracked Telegram sales groups and recent CRM leads"
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.
Unofficial Telegram Sales MCP — portable source beta
Unofficial, single-user, Windows-first. Not affiliated with or endorsed by Telegram. First-party source is MIT; third-party/native software keeps its own license. This source-only beta is prepared for distribution using a fresh project history; private: true blocks accidental npm publication.
Source-only developer release: Read RUNBOOK.md for the complete self-service clone, installation, TDLib build/integration, credential safety, manifest maintenance, and troubleshooting guide. The publisher does not supply a built native runtime or a tested Telegram login; native integration remains gated until a developer independently validates and updates it.
Implemented versus qualified
NATIVE_BUILD=HOLD; REAL_TELEGRAM_QUALIFIED=NO. A portable native/auth/session implementation is now present as source, but no independent tdjson DLL was built or acquired and no real login/read has been run. Login and native-reopen commands are deliberately gated before they inspect supplied state/native files or request credentials. Changing an env variable, MCP field or manifest flag cannot remove that gate. A reviewed later code revision with native evidence is required.
Working offline: local stdio MCP discovery; 11 read-facing tool definitions; opt-in eight-tool SQLite CRM and quick-reply preview. Default health distinguishes MCP readiness, NOT_CONFIGURED Telegram provider and native build HOLD. In-memory/native-wire fake tests exercise authentication and read plumbing; they do not prove actual authenticated Telegram reads. Search/contacts/file metadata sources remain individually unqualified; download is denied.
New source includes bounded JSONL transport, a first-party Python ctypes wrapper for official tdjson C API, separate private terminal authentication, CurrentUser DPAPI helper, dedicated-root lock/vault/account binding and noninteractive reopen composition. Details and VERIFIED/UNKNOWN evidence are in NATIVE_BUILD.md. No native binary or user session is included.
All Telegram actions remain hard disabled at registration, write service, adapter, native read facade and wrapper whitelist. Retained write classes are source-only and cannot be enabled by a toggle. No send, reply, edit, delete, forward, reaction, pin, mark-read, media or schedule dispatch; no bulk/unsolicited messaging. No human write-approval framework has been implemented or claimed.
Related MCP server: Telegram MCP Server
Local usage
Node 22.19+; tested with Node 22.19.0, whose SQLite API is experimental. Native source targets Windows x64 with matching 64-bit Python 3.11+ and independently reviewed TDLib; those native prerequisites remain UNQUALIFIED. Offline Node/CRM mode does not need Python.
npm ci --ignore-scripts --userconfig .npmrc --globalconfig config/npm-globalrc
npm run typecheck
npm run build
npm run test:offline
node dist/cli.js --help
node dist/login.js --helpMCP client command: node, args ["dist/cli.js"], cwd this source directory. stdout is protocol-only; no HTTP listener/tunnel. Local stdio is not ChatGPT Web/cloud connectivity. See INSTALL.md for CRM initialization and currently gated native command interfaces.
Data and consent
CRM upserts mutate local SQLite and require private interactive acknowledgment before DB construction. Eight tools: lead upsert/get/list, group track/list, template upsert/list, preview. Preview cannot dispatch. SQLite CRM is not encrypted. The acknowledgment file is not authentication against a compromised same-user process.
Telegram/contact/message/lead/template results can be forwarded by an MCP client to AI/cloud services. Local storage does not guarantee local-only processing; obtain appropriate consent and review client/provider retention. Never put real credentials, records, sessions or diagnostics in public artifacts.
Future native login uses a separate private TTY, not MCP stdin or argv/env secrets. DPAPI source protects only explicitly sealed material; no claim all TDLib/files/CRM/RAM are encrypted. Wrong identity, corrupt vault, auth-required reopen or unconfirmed shutdown fails closed. See SECURITY.md, THIRD_PARTY_NOTICES.md, CONTRIBUTING.md.
Available Tools
11 toolstelegram_accountB
Reports the safe, redacted snapshot, reauth state, and runtime health of the Telegram user account without exposing secrets or identity values.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose meaningful traits — the output is a 'safe, redacted snapshot' that does not expose secrets or identity values — which is genuine value. But it never explicitly states that the operation is read-only with no side effects, nor any auth requirement, leaving the mutation question to be inferred from 'Reports'.
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 front-loads the verb and the payload, with no redundant restatement of the tool name. Nothing 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 no annotations and no output schema, the description is the only source of truth about what comes back; it names three high-level facets (snapshot, reauth state, runtime health) but not their shape or contents. It also fails to differentiate itself from telegram_health, which is the biggest completeness gap for an agent choosing among siblings.
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 takes zero parameters, so the baseline is 4; the description correctly implies no input is needed and focuses on what is returned instead.
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?
States a specific verb (reports) and a specific resource (redacted snapshot, reauth state, runtime health of the Telegram user account), which is much clearer than the bare name. However, it never distinguishes itself from the sibling telegram_health, which by name covers overlapping 'runtime health' territory, leaving the agent to guess which one to call.
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 when-to-use guidance and no named alternative. The overlap with telegram_health is a real ambiguity the description does nothing to resolve, so the agent must infer selection from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_capabilitiesB
Reports the explicit capability manifest and status for the Telegram sales plugin foundation and account runtime.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only reporting operation but does not state that explicitly, nor does it describe authentication requirements, return format, or whether the call has any 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?
A single sentence that front-loads the action and resource without filler. However, it leans on jargon like 'explicit capability manifest' that could be clearer for an agent unfamiliar with the plugin internals.
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 no output schema and no annotations, the description should explain what the returned manifest and status contain. It does not describe return values, possible statuses, or the structure of the capability manifest, leaving an agent unable to predict the response.
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 takes no parameters, so the baseline is 4. The description does not need to explain parameter semantics beyond what the empty schema already communicates.
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?
States a specific verb (Reports) and resource (capability manifest and status) scoped to the Telegram sales plugin foundation and account runtime. It distinguishes itself from data-fetching siblings like telegram_chats_list and telegram_account by focusing on a meta-level capability report, though it does not explicitly name those 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?
Provides no guidance on when to use this tool versus alternatives such as telegram_health or telegram_account. There is no indication of prerequisites, exclusions, or the specific situations in which a capability report is preferred over a health check or account query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_chat_getB
Retrieves normalized details and permissions for a specific chat by chat_id. Read only.
| Name | Required | Description | Default |
|---|---|---|---|
| chat_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It usefully states that the operation is read only and that it returns normalized details and permissions, but it does not explain access requirements, invalid chat_id behavior, rate limits, or what 'normalized' and 'permissions' concretely mean.
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 zero waste. The main purpose is front-loaded and the read-only safety note is appended 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?
For a simple single-chat read tool this is minimally adequate: it says what is retrieved and that it is read only. However, with no output schema or annotations, the return shape remains vague and the description does not explain how an agent should obtain or format chat_id.
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 is one required parameter, chat_id, with 0% schema description coverage. The description only repeats that the chat is identified by chat_id and does not explain the accepted format, such as numeric ID versus username, how to obtain it, or the schema's length constraints.
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 and resource: retrieves details and permissions for a specific chat. It clearly scopes the operation to one chat via chat_id, though it does not explicitly distinguish itself from siblings such as telegram_chats_list or telegram_messages_get.
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 only implied by the mention of a specific chat and chat_id. There is no explicit guidance on when to use this instead of telegram_chats_list, nor any prerequisites, exclusions, or error conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_chats_listC
Lists recent chats with bounded pagination and normalized summaries. Read only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| chat_list | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden, and it does explicitly disclose "Read only" plus the bounded-pagination and normalized-summary traits. However, it says nothing about auth requirements, rate limits, ordering guarantees, or what a "normalized summary" actually contains — meaningful gaps for a zero-annotation tool.
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-loaded with the verb and resource, with no filler. The only weak spot is that the compact phrase "normalized summaries" carries a lot of unexplained meaning for four 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?
No annotations, no output schema, and 0% parameter documentation mean the description is the sole source of behavioral detail, and it is two sentences long. An agent would not know what a returned chat summary looks like, how pagination terminates, or how archive scoping behaves, which is insufficient for a tool in a 10-sibling namespace.
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% across 3 parameters. "Bounded pagination" loosely hints that `limit` and `cursor` exist and are capped, but the description never mentions the `chat_list` enum values (main vs archive), the 1–100 limit range, or default behavior when no cursor is supplied. The enum and min/max in the schema are self-evident, but the semantics of cursor format and scope are unexplained in both places.
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?
States a specific verb and resource ("Lists recent chats") with scope modifiers ("recent", "bounded pagination", "normalized summaries"), so an agent can tell it apart from message-oriented siblings like telegram_messages_get or telegram_messages_search. It does not explicitly contrast with telegram_inbox or telegram_contacts, which are the closest ambiguities.
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 when-to-use guidance and no named alternative. The description never says why an agent would pick this over telegram_inbox or telegram_contacts, both of which plausibly return chat-like data. Only the phrase "recent chats" implies the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_contactsA
Lists or searches known Telegram user contacts with safe privacy projection. Phone number values are never exposed (phone_number_present fact only). Read only.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| limit | No | ||
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does a good job on safety: it declares 'Read only' (substituting for readOnlyHint) and discloses a non-obvious projection rule that phone numbers are never returned, only a phone_number_present fact. Gaps remain on pagination, result caps, and error 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?
Three short sentences, zero filler, with the resource and the privacy guarantee front-loaded. Nothing is repeated from the schema or title.
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 no annotations, so the description is the only behavioral source; it covers the safety/read-only profile well but leaves the return shape, pagination behavior, and query matching semantics undocumented. Adequate but with real gaps for an agent that must construct correct calls.
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 all three parameters and does not: it never states what 'query' matches (display name, username, phone?), nor that 'limit' caps at 100, nor that 'query' is required or ignored when mode=list. Only the mode split is loosely implied.
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 gives a specific verb pair (lists or searches) and a specific resource (known Telegram user contacts), which is clearly distinguishable from message- and chat-oriented siblings. It does not explicitly name the closest ambiguous alternative, telegram_public_search, so the boundary between 'known contacts' and 'public search' is left implicit.
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?
'Lists or searches' implies the two modes and thus when to use each, and 'known ... contacts' hints that this is scoped to the account's own contact graph rather than public users. However, there is no explicit statement of when to prefer this over telegram_public_search or telegram_inbox, and no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_file_getA
Retrieves metadata or bounded base64 content for a Telegram file by file_id. Accepts ONLY Telegram file_id (int32 decimal string). Arbitrary file paths or URLs are strictly forbidden. Content reads are bounded to at most 262144 bytes (256 KB). Read only.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| file_id | Yes | ||
| max_bytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and discloses key traits: read-only operation, bounded content reads at 256 KB, base64 content format, and rejection of arbitrary paths or URLs. It does not cover authentication requirements, error behavior, or return structure, which keeps it below a 5.
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 four short sentences and front-loads the core purpose, identifier constraint, byte bound, and read-only nature. Every sentence adds relevant information with no wasted text.
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, no annotations, no output schema, and 0% schema description coverage, so the description should be relatively complete. It covers the essential input constraints and read-only behavior but omits return format details, optional-parameter behavior, and error handling, leaving meaningful gaps for an agent invoking it without other structured guidance.
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 all three parameters. It explains file_id as an int32 decimal string and distinguishes metadata from bounded base64 content, and it states the 262144-byte maximum, but it does not explain max_bytes by name or clarify whether it applies only to content mode.
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 and resource: it retrieves metadata or bounded base64 content for a Telegram file by file_id. It clearly distinguishes the two modes and the accepted identifier type, so an agent can understand the tool's function without reading the schema.
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 through 'by file_id' and 'Accepts ONLY Telegram file_id', and it explicitly forbids file paths or URLs. However, it does not state when to choose this tool versus alternatives or describe prerequisites, so the usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_healthB
Reports the health and provider status of the Telegram sales plugin foundation and account runtime.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden, and it discloses little: 'health' and 'provider status' are undefined, there is no indication of whether this is a safe read, whether it performs live network checks with latency or rate-limit implications, or what happens on failure. It implies read-only but never states 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?
A single front-loaded sentence with no filler. It is appropriately sized, though the brevity is partly under-specification rather than pure 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?
For a zero-argument diagnostic tool with no output schema and no annotations, the description should at minimum say what the report contains and how to interpret a failing result. It covers the 'what' at a high level but leaves the return shape and failure semantics undefined.
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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. No misleading parameter language is present.
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?
States a specific verb ('Reports') and a specific resource ('health and provider status of the Telegram sales plugin foundation and account runtime'), so an agent can distinguish it from data-oriented siblings like telegram_messages_get. However, it never names or contrasts itself with the closest sibling, telegram_capabilities, leaving the boundary implicit.
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 when-to-use guidance, no prerequisites, and no mention of alternatives. An agent cannot tell from the description whether this should be called before other Telegram tools, as a periodic check, or only after failures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_inboxB
Returns a read-only projection of recent and unread conversations without marking anything read. Output contains page/scan-scoped returned_count, unread_in_scan, and raw_scanned_count.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| unread_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the operation is read-only and does not mark conversations as read, and it explains the output counters (`returned_count`, `unread_in_scan`, `raw_scanned_count`). It omits auth requirements, rate limits, and pagination/cursor behavior, but the core safety behavior is clearly stated.
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 purpose and safe-operation behavior, then followed by output metadata. Every sentence earns its place, with no repetitive 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?
There is no output schema and no annotations, and the description partially compensates by explaining the returned counters and the non-mutating behavior. However, for a tool with three undocumented parameters at 0% schema coverage, the description is incomplete because it does not explain how to use `limit`, `cursor`, or `unread_only`.
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 three parameters (`limit`, `cursor`, `unread_only`). It refers vaguely to 'recent and unread' conversations but does not map that to the `unread_only` parameter or explain pagination via `cursor`/`limit`.
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: it 'Returns a read-only projection of recent and unread conversations.' That makes the basic purpose clear. However, it does not explicitly distinguish itself from the sibling `telegram_chats_list` or other conversation-listing tools, so it falls short of a 5.
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 identifies the kind of data returned (recent/unread conversations) but gives no explicit guidance on when to use this tool versus siblings such as `telegram_chats_list` or `telegram_messages_search`. The only usage-relevant statement is that it does not mark anything read, which is behavioral rather than alternative-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_messages_getB
Fetches recent message history or context around a specific message in a chat in deterministic order. Read only.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | history | |
| after | No | ||
| limit | No | ||
| before | No | ||
| offset | No | ||
| chat_id | Yes | ||
| message_id | No | ||
| from_message_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does add two valuable traits — 'Read only' and deterministic ordering — which an agent cannot get from structured data. However, for an 8-parameter paginated read it says nothing about pagination behavior, default window sizes, or how before/after/offset interact with each mode.
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 compact sentence with the core operation front-loaded and no filler. Slight cost is that the two modes are compressed into one clause rather than enumerated, but nothing 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?
Eight parameters at 0% coverage, no annotations, no output schema, and a one-sentence description leave an agent guessing about parameter interplay and return shape. For a tool this configurable, the description is well short of 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?
Schema description coverage is 0% across 8 parameters, so the description must compensate and largely does not. It hints that 'context' needs a specific message and 'history' is recent-first, but never explains chat_id, message_id, from_message_id, before, after, offset, or limit — several of which are unobvious with no documentation at all.
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?
States a specific verb and resource ('Fetches recent message history or context around a specific message in a chat') and names the two modes, which distinguishes it from telegram_messages_search. It stops short of explicitly naming the sibling it replaces, so an agent must infer the boundary.
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 'recent message history or context around a specific message' implies the two supported scenarios, but there is no explicit when-to-use/when-not guidance and no pointer to telegram_messages_search or telegram_inbox as alternatives. Usage is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_messages_searchB
Searches for messages within a specific chat or across the entire account in reverse-chronological order. Read only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| scope | Yes | ||
| cursor | No | ||
| filter | No | ||
| chat_id | No | ||
| max_date | No | ||
| min_date | No | ||
| chat_list | No | ||
| sender_user_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully states that the operation is read-only and returns results in reverse-chronological order, but it omits permissions/auth needs, pagination behavior, rate limits, how scope and chat_id interact, and what the response contains. That is too thin for a 10-parameter search tool with no annotation coverage.
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 compact sentences with no wasted wording. The core purpose and scope are front-loaded, and 'Read only' is valuable because no annotations are provided.
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 complex search tool with 10 parameters, 0% schema description coverage, no annotations, and no output schema. The description gives only the broad purpose, scope, ordering, and read-only status, but does not explain parameter relationships, pagination, filtering, date semantics, or expected results. It is not complete enough 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 all 10 parameters. It only adds meaning to scope by saying 'specific chat or across the entire account,' and vaguely gestures at ordering. It does not explain query, filter, chat_id, cursor, min_date/max_date, sender_user_id, limit, or chat_list, leaving most 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 states a specific verb and resource: searches messages. It also clarifies scope (specific chat vs entire account) and ordering (reverse-chronological), which goes beyond a tautological restatement. It does not explicitly distinguish itself from siblings like telegram_public_search or telegram_messages_get, so it lands at 4 rather than 5.
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 searching within a chat or account, but it does not say when to choose it over telegram_public_search, telegram_messages_get, or telegram_inbox. No exclusions or prerequisite conditions are given, leaving the agent to infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_public_searchB
Searches for public Telegram entities: exact username, public chats by title/username query, public channel posts, or public messages by hashtag/cashtag. Public posts search is strictly free (star_count=0); stars payment is disabled. Read only.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| mode | Yes | ||
| limit | No | ||
| query | No | ||
| cursor | No | ||
| username | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It usefully discloses that it is read-only and that the posts mode is free (stars payment disabled), which is real value. However it omits auth requirements, rate limits, pagination behavior, and return shape for a multi-mode tool.
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 purpose followed by mode enumeration and a short billing caveat. No filler, though the payment sentence is terse and slightly abrupt.
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 six-parameter, four-mode search with no annotations and no output schema, the description covers purpose and modes but leaves pagination (cursor), result limits, and return format unexplained. Adequate to invoke, not complete enough to predict 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?
Schema coverage is 0%, so the description must compensate for six undocumented parameters. It implies which parameter each mode uses (username for username mode, query for chats, tag for hashtag), which is helpful, but never explains limit bounds, cursor pagination, or the query vs username distinction explicitly.
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?
States a specific verb (Searches) and resource (public Telegram entities) and enumerates four concrete search modes that map to the mode enum. The 'public' qualifier distinguishes it from a private/account-scoped search like telegram_messages_search, though it never names that sibling explicitly.
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?
Describes what each mode targets but gives no explicit when/when-not guidance or named alternatives against telegram_messages_search or telegram_chats_list. An agent can infer that this is the public-scope search tool, but selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v1.0.0-beta.2- First observed
telegram_account - First observed
telegram_capabilities - First observed
telegram_chat_get - First observed
telegram_chats_list - First observed
telegram_contacts - First observed
telegram_file_get - First observed
telegram_health - First observed
telegram_inbox - First observed
telegram_messages_get - First observed
telegram_messages_search - First observed
telegram_public_search
TDQS
Scored across 11 tools
Most tools target clearly distinct resources or actions, such as messages_get vs. messages_search vs. public_search vs. file_get. There is some overlap between telegram_chats_list and telegram_inbox, and between telegram_health, telegram_capabilities, and telegram_account, but the descriptions give enough separation to avoid serious misselection.
All tools share the telegram_ prefix, but the suffix conventions are mixed: some are noun-only (telegram_health, telegram_account, telegram_inbox), while others use resource_action (telegram_chats_list, telegram_chat_get, telegram_messages_search). There is also singular/plural inconsistency between telegram_chats_list and telegram_chat_get. The names remain readable, but the pattern is not fully predictable.
Eleven tools is a reasonable size for a Telegram-focused server and stays within the well-scoped 3-15 range. Each tool appears to earn its place by covering a specific read/search/health capability.
The surface is entirely read-only and lacks core Telegram sales operations such as sending messages, managing chats or contacts, uploading files, or performing account reauthentication actions. While the read/search/health coverage is fairly broad, the absence of write or lifecycle operations is a significant gap for a sales-oriented Telegram MCP.
Maintenance
Related MCP Connectors
Unified inbox MCP for WhatsApp, Telegram, Email, voice — read/send messages, search, AI agents.
Unified messaging MCP server: WhatsApp, Instagram, Telegram, SMS, Messenger & email support inbox
Hosted Telegram MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseNot gradedqualityDmaintenancePrivacy-first Telegram MCP server enabling maintainers to triage chats, inspect context, search messages, draft replies, and send authorized messages locally without a cloud relay.41 npm1MIT
- AlicenseAqualityAmaintenanceMCP server that acts as a gateway to Telegram, providing AI-optimized tools for messaging, search, and chat management via MTProto. Supports multi-user authentication with QR login and HTTP/stdio transports.82MIT
- AlicenseAqualityAmaintenanceEnables MCP-compatible clients to securely access and manage Telegram accounts, chats, messages, media, and contacts, with tiered permissions, write controls, and local caching.22Apache 2.0
- AlicenseAqualityCmaintenanceEnables local, privacy-first control of a personal Telegram account through MCP, using TDLib to read chats, send and reply to messages, search, transfer files, and interact with approved inline buttons.20MIT