Skip to main content
Glama

Set channel permissions (admin)

discord_admin_set_permissions
Destructive

Allow or deny channel permissions for a role or member, or clear an existing override, to control access for a specific channel or category.

Instructions

Allow or deny permissions for a role (name, ID or @everyone) or a member on one channel or category (channels synced to a category follow it). clear=true removes the override. Permission names: CREATE_INSTANT_INVITE, KICK_MEMBERS, BAN_MEMBERS, ADMINISTRATOR, MANAGE_CHANNELS, MANAGE_GUILD, ADD_REACTIONS, VIEW_AUDIT_LOG, PRIORITY_SPEAKER, STREAM, VIEW_CHANNEL, SEND_MESSAGES, SEND_TTS_MESSAGES, MANAGE_MESSAGES, EMBED_LINKS, ATTACH_FILES, READ_MESSAGE_HISTORY, MENTION_EVERYONE, USE_EXTERNAL_EMOJIS, CONNECT, SPEAK, MUTE_MEMBERS, DEAFEN_MEMBERS, MOVE_MEMBERS, USE_VAD, CHANGE_NICKNAME, MANAGE_NICKNAMES, MANAGE_ROLES, MANAGE_WEBHOOKS, MANAGE_GUILD_EXPRESSIONS, USE_APPLICATION_COMMANDS, MANAGE_EVENTS, MANAGE_THREADS, CREATE_PUBLIC_THREADS, CREATE_PRIVATE_THREADS, SEND_MESSAGES_IN_THREADS, MODERATE_MEMBERS.

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_id": "<channel_id>",
      "target": "<target>"
    },
    "name": "discord_admin_set_permissions"
  }
}

Input Schema

NameRequiredDescriptionDefault
denyNo
allowNo
clearNoRemove this role/member's override instead
reasonNoReason, recorded in Discord's audit log
targetYesRole name/ID, "@everyone", or a member's user ID
channel_idYesChannel or category ID
target_typeNorole

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and openWorldHint=true, and the description adds real context beyond them: that clear=true strips the override, and that child channels synced to a category inherit the change (a wide blast radius an agent should know about). It stops short of saying whether allow/deny replaces or merges with an existing override, which is the key mutation semantic.

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 with the action and mode-switch semantics before the permission list, so the core call pattern reads first. The 36-name enumeration is bulky but earns its place as reference data absent from the schema's untyped string arrays. No filler sentences.

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?

A destructive, 7-parameter tool with no output schema, and the description covers the permission vocabulary, target forms, clear semantics, and category inheritance. Gaps remain: no statement of required bot permission, no explanation of what happens when allow and deny both name the same permission, and no note on whether the call overwrites all existing overrides for that target.

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 only 57%, and the description compensates substantially by enumerating the valid permission name vocabulary for allow/deny (36 names) and by clarifying that target accepts a role name, role ID, @everyone, or a user ID. It adds no meaning for reason or target_type, which the schema already documents.

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

Purpose4/5

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

Specific verb (allow/deny) and resource (permission override) with a precisely stated target scope: a role by name/ID or @everyone, or a member, on one channel or category. An agent can distinguish it from server-level role tools by the 'one channel or category' framing. It never names a sibling to contrast with, so it stops 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.

Usage Guidelines3/5

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

Operational guidance is present ('channels synced to a category follow it', 'clear=true removes the override'), which implies when each mode applies. However, there is no explicit guidance on when to pick this tool over discord_admin_set_member_roles or discord_admin_setup_roles, and no stated prerequisite like requiring MANAGE_ROLES. Usage must be inferred.

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