Skip to main content
Glama
discord-server-mcp

discord-server-mcp

set_permissions

Configure Discord channel or category permission overrides for roles, @everyone, or members by allowing, denying, or removing access; preview changes before applying.

Instructions

Set what a role, @everyone or a member can do in a channel or category (allow, deny, or remove the override). Permission names: CreateInstantInvite, KickMembers, BanMembers, Administrator, ManageChannels, ManageGuild, AddReactions, ViewAuditLog, PrioritySpeaker, Stream, ViewChannel, SendMessages, SendTTSMessages, ManageMessages, EmbedLinks, AttachFiles, ReadMessageHistory, MentionEveryone, UseExternalEmojis, ViewGuildInsights, Connect, Speak, MuteMembers, DeafenMembers, MoveMembers, UseVAD, ChangeNickname, ManageNicknames, ManageRoles, ManageWebhooks, ManageGuildExpressions, UseApplicationCommands, RequestToSpeak, ManageEvents, ManageThreads, CreatePublicThreads, CreatePrivateThreads, UseExternalStickers, SendMessagesInThreads, UseEmbeddedActivities, ModerateMembers, ViewCreatorMonetizationAnalytics, UseSoundboard, CreateGuildExpressions, CreateEvents, UseExternalSounds, SendVoiceMessages, SendPolls, UseExternalApps, PinMessages.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "channel": "<channel>",
      "target": "<target>"
    },
    "name": "set_permissions"
  }
}

Input Schema

NameRequiredDescriptionDefault
botNoUse this bot (name or id) instead of choosing automatically
denyNo
allowNo
mergeNoKeep the override's other permissions; false replaces it
reasonNoReason shown in the server's audit log
removeNoDelete this override completely
serverNoServer name or id. Optional when the bot is in one server or DISCORD_GUILD_ID is set.
targetYesRole name/id, "@everyone", or "user:<member>"
channelYesChannel or thread name, id, or message link
dry_runNoShow the requests that would be made without changing anything

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A3.8/5.0
Behavior3/5

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

With only readOnlyHint=false supplied, the description adds the meaningful detail that an override can be allowed, denied, or removed. It does not disclose that this is a mutation requiring elevated permissions, how existing overrides are affected (merge vs replace is left to the schema), or what the call returns.

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 operative sentence is front-loaded and dense with the three modes. The trailing list of ~50 permission identifiers is long but earns its place by compensating for the missing enum, though it is bulkier than ideal for a description field.

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

Completeness3/5

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

For a 10-parameter mutation tool with no output schema and a single annotation, the definition covers the domain vocabulary but omits permission requirements, error conditions, and confirmation of what state results after the call. The schema carries merge/remove/dry_run semantics, so the gap is moderate rather than severe.

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 80%, so the baseline is 3, but the description supplies the full enumeration of valid permission names for the allow/deny arrays, which the schema leaves as untyped string lists with zero enums. It also names the accepted target forms (role, @everyone, member), reinforcing the target parameter.

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 (set), the resource (channel/category permission override), the three target kinds (role, @everyone, member), and the three outcomes (allow, deny, remove). An agent can distinguish this from check_permissions purely from the description.

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

Usage Guidelines3/5

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

The description conveys the operation modes but never says when to use this versus check_permissions, nor does it state prerequisites such as needing Manage Roles/Manage Channels. Usage is implied by the allow/deny/remove framing rather than spelled out.

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