Skip to main content
Glama

group_get_invite_link

Get an invite link for an existing group (Telegram, WhatsApp) or Discord server.

What this does:

  • Telegram: mints a FRESH link (e.g. t.me/+...) on every call; previously issued links stay valid

  • WhatsApp: returns the group's EXISTING link, the same one each time. Do not describe it to anyone as newly issued

  • Discord: mints a permanent discord.gg/... link into a server the account is in (chat_id: the server id, a channel id, or a channel's thread ref); the account needs Create Invite there

  • Requires the connected account to be the group's owner or an admin with invite rights

When to use:

  • A member can't be added directly because their privacy settings block invites (group.add_member fails with a privacy error) — send them this link instead

  • Onboarding people to a private group

Returns: success, chat_id, invite_link.

Input Schema

NameRequiredDescriptionDefault
channelYesChannel where the group exists (e.g., 'telegram', 'whatsapp', 'discord')
chat_idYesID of the group/channel to export an invite link for. Group id exactly as `group.list` reports it: a signed numeric id on Telegram, or a JID ending in @g.us on WhatsApp. A WhatsApp group has no numeric id, so this is a string either way. Read it from `group.list`; never compose one. Discord: the server id, a channel id, or the channel's thread ref (discord:<account>:<channel>) from channels.list.
account_idNoWhich of the workspace's accounts on this channel mints the link (from channels.list). OMIT with one account.
in_workspaceNoRun this one call in this workspace id instead of the session's. Nothing is stored; other sessions are not affected.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / account_id
      Added value: +{
      +  "description": "Which of the workspace's accounts on this channel mints the link (from channels.list). OMIT with one account.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / channel / description
      Previous value: -"Channel where the group exists (e.g., 'telegram')"New value: +"Channel where the group exists (e.g., 'telegram', 'whatsapp', 'discord')"
    • changedInput schema / properties / chat_id / description
      Previous value: -"ID of the group/channel to export an invite link for. Group id exactly as `group.list` reports it: a signed numeric id on Telegram, or a JID ending in @g.us on WhatsApp. A WhatsApp group has no numeric id, so this is a string either way. Read it from `group.list`; never compose one."New value: +"ID of the group/channel to export an invite link for. Group id exactly as `group.list` reports it: a signed numeric id on Telegram, or a JID ending in @g.us on WhatsApp. A WhatsApp group has no numeric id, so this is a string either way. Read it from `group.list`; never compose one. Discord: the server id, a channel id, or the channel's thread ref (discord:<account>:<channel>) from channels.list."
  2. Changed1 schema field changed
    • addedInput schema / properties / in_workspace
      Added value: +{
      +  "description": "Run this one call in this workspace id instead of the session's. Nothing is stored; other sessions are not affected.",
      +  "type": "integer"
      +}
  3. Added
  4. Removed
  5. Added

TDQS

A4.5/5.0
Behavior5/5

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

Goes well past the annotations: it discloses that Telegram mints a fresh link on every call while old links stay valid (explaining why idempotentHint=false), that WhatsApp returns the same existing link each time and must not be described as new, and that Discord requires Create Invite permission plus owner/admin rights. That is exactly the operational context annotations cannot carry, and nothing here conflicts with readOnlyHint=false or destructiveHint=false.

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?

Front-loaded purpose sentence, then clean labeled blocks ('What this does', 'When to use', 'Returns') — easy to scan. It loses a point for echoing the Discord chat_id guidance already present verbatim in the schema.

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

Completeness4/5

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

With no output schema, the description compensates by naming the return fields (success, chat_id, invite_link), and it covers permissions and per-channel outcomes. Minor gap: it does not note that links may need revocation later or any rate limits on repeated minting.

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

Parameters3/5

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

Schema coverage is 100% and the schema already spells out chat_id formats per channel and the account_id/in_workspace semantics in detail. The description restates the Discord chat_id forms but adds nothing new about account_id or in_workspace, so it is a baseline case where the schema does the heavy lifting.

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 and resource ('get an invite link for an existing group ... or Discord server') and immediately breaks the behavior down per channel. It is distinct from the many other group_* siblings such as group_add_member or group_create, which an agent can rule out from the first sentence alone.

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?

The 'When to use' block gives the decisive trigger — group.add_member failing with a privacy error — and names the alternative explicitly, plus a second scenario (private group onboarding). An agent knows both when to reach for this tool and which sibling call it substitutes for.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.