Skip to main content
Glama
alexeyleshchenko

Telegram MCP Server

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.44.1

  • Disambiguation5/5

    Each tool targets a distinct action and resource: sending vs editing vs reading vs searching messages, finding chats vs getting chat info, and a low-level API escape hatch. Overlapping tools like send_message and send_message_to_phone are clearly differentiated by target type (chat_id vs phone number).

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case (search_messages_globally, get_messages, send_message, edit_message, find_chats, get_chat_info, send_message_to_phone, invoke_mtproto). The verbs and objects are clear, and the style is uniform throughout.

    Tool Count5/5

    With 8 tools, the set is well-scoped for a Telegram server: it covers messaging, searching, chat discovery, metadata retrieval, and a low-level fallback. This is within the ideal 3-15 range and each tool earns its place.

    Completeness4/5

    The core messaging lifecycle (send, edit, read/search) and chat discovery are well covered. However, there is no high-level delete_message tool, which is a notable gap for a messaging server. The invoke_mtproto tool can work around this, but it is a low-level workaround rather than a first-class operation.

  • Average 4.4/5 across 8 of 8 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 216 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior4/5

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

    Annotations already declare openWorldHint and destructiveHint, and the description adds meaningful behavioral context: dangerous methods are blocked without allow_dangerous=true, and successful responses are either an API result dict or a normalized error. This goes beyond the annotations by clarifying the guardrail and return behavior. The link to full documentation also supports transparency, though no rate limits or auth details are provided.

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

    Conciseness5/5

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

    The description is three sentences that front-load the core purpose, then add critical safety and result information. Every sentence earns its place, and the documentation link is a compact useful addition. No redundancy or fluff.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a complex low-level tool, the description covers the essential aspects: what it does, when to use it, the dangerous-method guard, and the return type. The full schema and output schema handle parameter specifics, and the documentation link fills any remaining gaps. It does not mention authentication or rate limits, but those are shared across the MCP context and not uniquely critical here.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The input schema provides 100% coverage with detailed descriptions for all four parameters, so the baseline is 3. The description adds minimal parameter-related context beyond the schema, only implicitly referencing allow_dangerous and normalization. It does not explain parameter semantics in the description itself, but the schema is self-sufficient.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool is a 'low-level Telegram API (MTProto) invoke' for 'methods not wrapped by other tools,' which is a specific verb+resource that distinguishes it from the high-level sibling tools. It also indicates the success output format, adding further specificity.

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

    Usage Guidelines4/5

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

    The description gives a clear usage rule: use this tool for methods not wrapped by other tools, implying that for wrapped methods one should use the appropriate sibling. It also warns that dangerous methods require allow_dangerous=true, setting expectations for when additional care is needed. However, it does not explicitly list alternative tool names.

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

  • Behavior4/5

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

    Beyond the readOnlyHint and idempotentHint annotations, the description discloses meaningful behavioral nuances: 'Global search ignores include_total_count' and 'Success: message list and metadata dict' describes return structure. These details inform the agent about parameter behavior and expected output, adding value over 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.

    Conciseness5/5

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

    The description is compact and efficient, front-loading the core purpose and scope, then covering query format, filters, output, and a behavioral note in just four short sentences. Every sentence conveys useful information without redundant fluff, earning a 5.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a tool with 8 parameters and a rich schema, the description effectively complements the structured data by clarifying global scope, output shape, and a key behavioral caveat. It doesn't need to explain every parameter because the schema does. The documentation link adds an escape hatch for deeper context.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The input schema already provides 100% coverage with detailed parameter descriptions, so the baseline is 3. The description adds no new parameter semantics beyond what the schema says, though it does restate query format ('Comma-separated query terms') and mentions include_total_count being ignored, which the schema also covers. This is sufficient but not additive.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's core function: 'Search all Telegram chats at once' with explicit scope distinction ('not scoped to one chat'). This unambiguously differentiates it from per-chat search tools like get_messages, making the purpose immediately obvious.

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

    Usage Guidelines4/5

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

    The description gives clear context that this is for global cross-chat searching, contrasted with per-chat scope. It doesn't explicitly name sibling tools as alternatives, but the 'not scoped to one chat' phrasing strongly implies when to use it. The documentation link provides further guidance.

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

  • Behavior4/5

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

    The description discloses that sending may create a temporary contact and reports contact_was_new/contact_removed flags in success results, which aligns with the destructiveHint annotation. It also adds a constraint that parse_mode=rich cannot be combined with files, providing context beyond the schema and annotations. 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.

    Conciseness5/5

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

    The description is three sentences, front-loaded with the core purpose, followed by the parse_mode constraint, and rounded out with success result details and a documentation link. Every sentence earns its place, with no filler or repetition of schema fields.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The description covers the essential behavioral aspects: temporary contact creation, text/files sending, parse_mode limitation, and return flags. Since an output schema exists and all parameters are fully described in the schema, the description provides sufficient context for an agent to invoke the tool correctly. It could have explicitly mentioned all 8 parameters, but those are already in the schema, so this is adequate.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100%, so the schema already documents all parameters with clear descriptions. The tool description adds some high-level context about parse_mode behavior (classic markdown/html/auto or rich) but largely repeats what the schema already states. It does not add meaningful detail about first_name, last_name, reply_to_msg_id, or remove_if_new beyond schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description opens with 'Send to a phone number,' which clearly states the action (send) and resource (phone number). It further specifies behavior: may create a temporary contact, then send text or files. This distinguishes it from the sibling tool send_message (which targets a chat), 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.

    Usage Guidelines4/5

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

    The first sentence establishes when to use this tool: when the target is a phone number rather than a chat ID, and the temporary contact mechanism implies no pre-existing chat is needed. However, it does not explicitly name alternative tools like send_message or state conditions where this tool should not be used, so guidance is clear but not fully explicit.

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

  • Behavior4/5

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

    Annotations declare destructiveHint=true and openWorldHint=true, so mutation is known. The description adds valuable behavioral context: ownership limitation, no media editing, detailed success/error return dicts, and parse_mode behavior. No contradictions. Minor lack of rate-limit or auth details beyond 'authenticated account' keeps it from 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.

    Conciseness4/5

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

    Compact and front-loaded—purpose, scope, and alternatives appear in the first two sentences. The rest covers return format and parse_mode in a structured way. Slightly verbose with the documentation URL and repetition of 'use edit_message', but every sentence adds value for a moderately complex tool.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Covers constraints, usage, alternatives, return format, error format, parse_mode details, and provides a documentation link. Output schema exists for returns, but the description goes beyond that to explain error cases and rich message behavior—complete for the tool's complexity.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds context for parse_mode (rich dialect auto-detection) and success return fields, but these are largely redundant with schema and output schema. Baseline 3 is appropriate.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    States a specific verb+resource: 'Replace the text of an existing message in a Telegram chat.' Immediately distinguishes from send_message with explicit guidance to use edit_message for updates and send_message for creations. Also clarifies scope (text-only, own messages only), eliminating ambiguity.

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

    Usage Guidelines5/5

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

    Provides explicit when-to-use and alternatives: 'Use edit_message to update a previously sent message; use send_message to create new ones.' Also notes restrictions (only messages sent by the authenticated account, cannot edit media) which serve as exclusions. This is textbook guidance.

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

  • Behavior5/5

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

    Beyond the readOnly/openWorld/idempotent annotations, the description discloses rich behavioral details: parallel round-robin merging of username searches, global vs dialog list modes, the effect of include_peers on GetPeerDialogs, and flag-based filter timing. This is substantial added context that helps predict tool behavior.

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

    Conciseness4/5

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

    The description is somewhat dense and rambles through modes, but each sentence conveys useful behavior. It front-loads the core action and includes a docs reference. Slightly longer than strictly necessary, but every clause earns its place.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a complex tool with 7 parameters, the description covers the main search modes, filter behaviors, and the success response shape. However, it introduces terms like 'flag-based filters' without elaboration and relies on external docs for full detail. Given the output schema exists, the return-value gap is mitigated, but some internal jargon remains unexplained.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 100%, so each parameter already has a description. The description text adds cross-parameter semantics: it explains how comma-separated usernames are searched in parallel, how min_date/max_date toggle dialog-list search, and how include_peers interacts with last-activity data. This meaningfully enhances schema-only information.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description opens with a clear, specific action: 'Find users/groups/channels by name, username, or phone.' This distinguishes it from sibling tools like search_messages_globally (which searches messages) and get_chat_info (which retrieves info about a specific chat). The resource and verbs are explicit.

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

    Usage Guidelines4/5

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

    The description explains when global search is used versus dialog-list/filter-based search, and how comma-separated usernames are handled. It doesn't explicitly name alternatives, but the sibling tools are clearly distinct, so the context is sufficient. It lacks explicit exclusion statements like 'use this for X, not for Y'.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the description adds value by disclosing the success return type (info dict) and conditional behaviors (topics_limit for forums, common_chats_limit for users). 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.

    Conciseness5/5

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

    Three concise sentences: purpose, success/conditional details, and a documentation link. Front-loaded with the main verb and resource, no redundant phrases, every sentence earns its place.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the two well-documented parameters, existing output schema, and rich annotations, the description covers the key nuances (forum topics, user common chats) and provides a full documentation link. It is complete for the tool's complexity.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 100% for both parameters, so baseline is 3. The description goes beyond by explaining how topics_limit affects output for forum chats and mentioning common_chats_limit (a response field not in the schema), adding behavioral meaning to the parameters.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description uses a specific verb 'Load' with a clear resource 'profile and metadata for one user, bot, group, or channel', distinguishing it from sibling tools like get_messages or send_message. It precisely scopes the tool to a single target entity.

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

    Usage Guidelines4/5

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

    The description provides clear context for when to use this tool (for fetching single-chat info) and mentions special cases (forum topics, user common chats). It does not explicitly name alternative tools or when-not-to-use conditions, but the context is unambiguous for the primary use case.

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

  • Behavior5/5

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

    Beyond readOnlyHint/idempotentHint annotations, the description discloses return shape (messages, has_more, total_count, discussion), cost behavior ('Each result costs one API call (not batchable)'), mode incompatibilities, and dynamic context behavior ('Disabled when result count exceeds cost-based caps'). These are substantial behavioral details not present in annotations.

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

    Conciseness4/5

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

    The description is compact (~160 words), front-loaded with purpose, and each sentence carries distinct information about modes, parameters, constraints, or output. Long sentences add some density, but there is no filler or redundant repetition of schema content.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a 13-parameter tool with a rich schema and output schema, the description covers all operational modes (browse, search, ID fetch, replies, threads), states return fields, notes limitations, and links to full documentation. It provides enough operational detail for an agent to invoke correctly without additional lookups.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 100% with detailed per-parameter descriptions, so baseline is 3. The description adds value by highlighting cross-parameter constraints (message_ids mutual exclusivity), server-side filtering scope ('per-chat only'), and cost implications of include_replies, which are not fully expressed in the schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Description opens with 'Read or search messages in one chat' and enumerates distinct modes (browse latest, search text, fetch by ids, load replies), giving a specific verb and resource that distinguishes it from siblings like search_messages_globally and send_message.

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

    Usage Guidelines4/5

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

    Provides clear usage context for each mode (from_user for sender filtering, context for neighbors/reply chains, include_replies for replies) and an explicit exclusion ('Do not combine message_ids with query or reply_to_id'). However, it does not explicitly name alternative tools like search_messages_globally, relying on the 'in one chat' scope and sibling names to imply alternatives.

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

  • Behavior5/5

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

    Annotations declare openWorldHint and destructiveHint, but the description adds substantial behavioral context: return format (success dict with message_id/status='sent', error dict with ok=false), channel post auto-reply behavior, parsing dialect auto-detection, and mode-specific file constraints (local paths stdio only, data URIs everywhere). 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.

    Conciseness4/5

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

    The description is a single dense paragraph, but every sentence provides distinct information and it front-loads the core purpose. It could benefit from bullet points, but for the tool's complexity the length is justified.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The description covers purpose, alternatives, parameter interactions, return values, error handling, and links to full documentation. With a rich output schema and detailed parameter docs, nothing essential is missing.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The input schema has 100% parameter description coverage, so baseline is 3. The description adds valuable cross-parameter semantics, such as files turning the message into a caption and reply_to_id triggering automatic posting in channel discussion groups, which goes beyond the schema's per-field descriptions.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description opens with 'Send text and optional file attachments to a Telegram chat,' a specific verb+resource statement. It also distinguishes itself from sibling tools by explicitly pointing to edit_message for modifications and send_message_to_phone for phone targets.

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

    Usage Guidelines5/5

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

    It provides explicit direction: 'Use send_message to create new messages; use edit_message to modify existing ones. Use send_message_to_phone when targeting a phone number instead of a chat_id.' It also details when to use reply_to and parse_mode options, including the limitation that rich mode cannot be combined with files.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

fast-mcp-telegram MCP server

Copy to your README.md:

Score Badge

fast-mcp-telegram MCP server

Copy to your README.md:

Latest Blog Posts

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/alexeyleshchenko/fast-mcp-telegram'

If you have feedback or need assistance with the MCP directory API, please join our Discord server