Skip to main content
Glama

group_create

Create a new group on a channel: a Telegram group, a WhatsApp group, or a Discord SERVER (a community with text channels inside; Discord calls it a guild) owned by the connected account. Returns the new group's chat ID and invite link.

What this does:

  • Creates a new group with the specified title

  • Returns chat_id, invite_link, and channel_ref for further operations

  • Optionally registers the group in your inbox for monitoring

  • Discord: also makes the text channels asked for (beside #general) and one permanent invite link; chat_id is the server id, channel_ref the #general thread, channels lists every text channel with its thread_ref (messages.send posts into one). People cannot be added to a server: send them invite_link. A step Discord refused after the server was made (a channel, the invite) is in problems; the server exists. Nothing is hosted by DialogBrain: the server lives at Discord.

  • Telegram: group_type='channel' makes a BROADCAST CHANNEL; add username='' to make it public (public_link in the answer). A Telegram broadcast channel: group.create(channel='telegram', group_type='channel', title=..., username=...); then write into it with messages.send(thread_id=). Steps refused after the chat was made (username, invite link) are in problems; the chat exists.

Returns: success, chat_id, channel_ref, title, thread_id, invite_link, public_link, problems.

Input Schema

NameRequiredDescriptionDefault
aboutNoOptional description or about text for the group
titleYesTitle/name of the group to create
channelYesChannel to create the group on: 'telegram', 'whatsapp' or 'discord' (a server)
channelsNoDiscord only: text channels to create inside the new server, beside its default #general, e.g. ["rules", "announcements", "submissions"], or objects {"name", "topic"}; at most 10 (more are added in Discord itself). Refused on channels whose groups have no rooms inside (Telegram, WhatsApp).
usernameNoTelegram only, for a supergroup or a channel: make it PUBLIC at https://t.me/<username> (5-32 characters, letters, digits and underscore, starting with a letter; '@' is accepted). If Telegram refuses it (taken, invalid, too many public chats) the chat still exists: success stays true, the reason is in `problems` and `invite_link` is a private link. On success `public_link` is set.
account_idNoWhich of the workspace's accounts on this channel creates the group (from channels.list). OMIT with one account; with several the workspace's own account is preferred over a shared one.
group_typeNoType of group to create. Options: 'supergroup' (default), 'basic', 'channel'. 'channel' = Telegram broadcast channel: subscribers read, only admins post (messages.send to its thread posts into it). 'channel' is refused on WhatsApp and Discord; 'supergroup'/'basic' are Telegram-only and ignored on WhatsApp.supergroup
in_workspaceNoRun this one call in this workspace id instead of the session's. Nothing is stored; other sessions are not affected.
participantsNoPeople to put in the group at creation: phone numbers or JIDs on WhatsApp, @usernames or phone numbers on Telegram. Without this the group is created empty and the creator is its only member, which on WhatsApp means nobody can be shown it — there is no invite link to send. Reported back per person in `participants_added` and `participants_failed`.
register_in_inboxNoAuto-register the created group in your inbox for monitoring. Default: true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / group_type / description
      Previous value: -"Type of group to create. Options: 'supergroup' (default), 'basic'. Telegram-only; ignored on WhatsApp."New value: +"Type of group to create. Options: 'supergroup' (default), 'basic', 'channel'. 'channel' = Telegram broadcast channel: subscribers read, only admins post (messages.send to its thread posts into it). 'channel' is refused on WhatsApp and Discord; 'supergroup'/'basic' are Telegram-only and ignored on WhatsApp."
    • addedInput schema / properties / username
      Added value: +{
      +  "description": "Telegram only, for a supergroup or a channel: make it PUBLIC at https://t.me/<username> (5-32 characters, letters, digits and underscore, starting with a letter; '@' is accepted). If Telegram refuses it (taken, invalid, too many public chats) the chat still exists: success stays true, the reason is in `problems` and `invite_link` is a private link. On success `public_link` is set.",
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / account_id
      Added value: +{
      +  "description": "Which of the workspace's accounts on this channel creates the group (from channels.list). OMIT with one account; with several the workspace's own account is preferred over a shared one.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / channel / description
      Previous value: -"Channel to create the group on (e.g., 'telegram', 'whatsapp')"New value: +"Channel to create the group on: 'telegram', 'whatsapp' or 'discord' (a server)"
    • addedInput schema / properties / channels
      Added value: +{
      +  "description": "Discord only: text channels to create inside the new server, beside its default #general, e.g. [\"rules\", \"announcements\", \"submissions\"], or objects {\"name\", \"topic\"}; at most 10 (more are added in Discord itself). Refused on channels whose groups have no rooms inside (Telegram, WhatsApp).",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  3. 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"
      +}
  4. Added
  5. Removed
  6. Added

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly=false, destructive=false, idempotent=false), and the description goes well beyond them: partial-failure semantics where the chat/server still exists and only the refused steps appear in `problems`, the fact that nothing is hosted by DialogBrain, and the restriction that people cannot be added to a Discord server at all. This is exactly the consequence-level disclosure an agent needs before a non-idempotent creation call.

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

Conciseness3/5

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

The opening sentence is well front-loaded, but the body is bulky and repetitive: the 'What this does' bullet listing return fields is restated again in a trailing 'Returns:' line, and the platform bullets re-explain parameter constraints the schema already states. It earns most of its length, but a third could be cut without losing information.

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 10-parameter, non-idempotent creation tool with no output schema, it covers the return values, the degraded-success case, platform-specific capability limits, and where the created artifact actually lives. An agent could invoke this correctly without consulting anything else.

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 the baseline is 3, but the description adds cross-parameter reasoning the per-parameter schema cannot: group_type='channel' combined with username yields a public broadcast channel, whose returned thread_id is then used with messages.send, and channels is refused on Telegram/WhatsApp. Some of this duplicates the schema verbatim, which keeps it out of 5 territory.

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 concrete verb+resource ('Create a new group on a channel') and immediately scopes the three platforms, including the non-obvious fact that a Discord group is a server/guild. It clearly distinguishes creating a group here versus operating on an existing one, which is what siblings like group_add and group_join do.

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?

Gives explicit conditional guidance: use group_type='channel' for a Telegram broadcast channel, add username for a public one, use participants to avoid an empty WhatsApp group nobody can be shown, and channels only on Discord. What it lacks is any routing to sibling tools (e.g., group_add, group_list, group_get_invite_link) for the follow-up cases it describes.

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.

Resources