Skip to main content
Glama
cj-vana

Discord Server Setup MCP

by cj-vana

Discord Server Setup MCP

An MCP (Model Context Protocol) server for automating Discord server setup using the Discord Bot API. This server enables AI assistants like Claude to manage servers, channels, roles, permissions, and apply templates through a Discord bot.

Features

  • Cross-Platform: Works on Windows, Linux, and macOS

  • No Discord App Required: Operates via Discord Bot API (headless)

  • Guild Management: Discover, select, and manage multiple Discord servers

  • Channel Management: Create, edit, and delete channels and categories with permission overwrites (edits merge overwrites by target so you don't accidentally expose a private channel)

  • Role Management: Create, edit, delete, list, and reorder roles with semantic hierarchy placement (top/above/below, or a top-first ordered list) so important roles land where you mean

  • Permission Overwrites: Make channels/categories private, grant specific role access

  • Server Settings: Configure verification levels, content filters, and notification settings

  • Pre-built Templates: Apply ready-to-use server templates for common use cases

  • Fast & Reliable: Direct API calls with proper error handling

Related MCP server: Discord Agent MCP

Pre-built Templates

Template

Description

Roles

Categories

Channels

Gaming

Comprehensive gaming community with competitive, streaming, and events sections

10

11

40+

Community

General community server for discussions and social interaction

6

6

20+

Business

Professional workspace for teams and organizations

6

6

18+

Study Group

Academic collaboration space for study groups and classes

5

5

15+

Prerequisites

System Requirements

  • Node.js 18.0.0 or higher

  • Discord Bot with appropriate permissions

Discord Bot Setup

  1. Create an application at https://discord.com/developers/applications

  2. Add a bot user and copy the bot token

  3. Privileged Gateway Intents are NOT required. The server only uses the default (non-privileged) Guilds intent, so you can leave all Privileged Gateway Intents off. (Requesting privileged intents that aren't enabled would actually make login fail.)

  4. Generate an OAuth2 invite URL:

    • Go to OAuth2 → URL Generator

    • Select scopes: bot and applications.commands

    • Select the permissions the bot needs — Manage Roles, Manage Channels, and Manage Server cover the current tools; Administrator is the simplest catch-all for full server management.

  5. Invite the bot to your Discord server(s) using the generated URL

Important: The bot can only create/move/assign roles below its own highest role in the hierarchy. Make sure the bot's role sits high enough in Server Settings → Roles for the roles you want it to manage.

Installation

Quick Install (One-Liner)

curl -fsSL https://raw.githubusercontent.com/cj-vana/discord-setup-mcp/main/install.sh | bash

This installs to ~/.discord-setup-mcp by default. Set DISCORD_MCP_DIR to customize:

DISCORD_MCP_DIR=/custom/path curl -fsSL https://raw.githubusercontent.com/cj-vana/discord-setup-mcp/main/install.sh | bash

Manual Install

# Clone the repository
git clone https://github.com/cj-vana/discord-setup-mcp.git
cd discord-setup-mcp

# Install dependencies
npm install

# Build the project
npm run build

Configuration

Set Bot Token

Option A: Environment Variable

macOS/Linux (temporary - current session only):

export DISCORD_BOT_TOKEN="your-bot-token-here"

macOS/Linux (permanent - add to shell profile):

# For zsh (default on macOS)
echo 'export DISCORD_BOT_TOKEN="your-bot-token-here"' >> ~/.zshrc
source ~/.zshrc

# For bash
echo 'export DISCORD_BOT_TOKEN="your-bot-token-here"' >> ~/.bashrc
source ~/.bashrc

Windows Command Prompt (temporary):

set DISCORD_BOT_TOKEN=your-bot-token-here

Windows PowerShell (temporary):

$env:DISCORD_BOT_TOKEN = "your-bot-token-here"

Windows (permanent - System Environment Variables):

  1. Press Win + R, type sysdm.cpl, press Enter

  2. Go to Advanced tab → Environment Variables

  3. Under "User variables", click New

  4. Variable name: DISCORD_BOT_TOKEN

  5. Variable value: your-bot-token-here

  6. Click OK and restart your terminal

Option B: Configuration File

Create ~/.discord-mcp/config.json:

# Create the directory
mkdir -p ~/.discord-mcp

# Create the config file (replace with your actual token)
cat > ~/.discord-mcp/config.json << 'EOF'
{
  "discordToken": "your-bot-token-here",
  "defaultGuildId": "optional-default-server-id"
}
EOF

# Secure the file (recommended)
chmod 600 ~/.discord-mcp/config.json

On Windows, create %USERPROFILE%\.discord-mcp\config.json with the same JSON content.

The easiest method is to set the token directly in your Claude Desktop config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "discord-setup": {
      "command": "node",
      "args": ["/path/to/discord-setup-mcp/dist/index.js"],
      "env": {
        "DISCORD_BOT_TOKEN": "your-bot-token-here"
      }
    }
  }
}

Replace /path/to/discord-setup-mcp with the actual path where you cloned the repository.

Claude Code Configuration

# Add the MCP server
claude mcp add discord-setup-mcp node /path/to/discord-setup-mcp/dist/index.js

# Set the token (if not using config file or system env var)
claude mcp add discord-setup-mcp node /path/to/discord-setup-mcp/dist/index.js -e DISCORD_BOT_TOKEN=your-bot-token-here

Set the token in your environment or use the config file method.

Usage

Basic Workflow

  1. List servers the bot has access to

  2. Select a server to work with

  3. Create channels, roles, or apply templates

Example Commands

List Discord servers
Select the server named "My Server"
Create a text channel called "general-chat"
Create a role called "Moderator" with MANAGE_MESSAGES permission
Make the "admin-chat" category private, only visible to the Admin role
Apply the gaming template to this server

Tool Reference

Guild Management

list_guilds

List all servers the bot can access.

select_guild

Set the active server for subsequent operations.

Parameter

Type

Required

Description

guildId

string

Yes

Guild ID or name to select

get_guild_info

Get detailed server information including channels, roles, and settings.

Parameter

Type

Required

Description

guildId

string

No

Guild ID or name (uses current if not specified)

Channel Management

create_category

Create a channel category with optional permission overwrites.

Parameter

Type

Required

Description

name

string

Yes

Category name (1-100 characters)

guildId

string

No

Guild ID or name

position

number

No

Position in channel list

permissionOverwrites

array

No

Permission overwrites for roles/users

create_channel

Create a channel (text, voice, announcement, stage, forum).

Parameter

Type

Required

Description

name

string

Yes

Channel name (1-100 characters)

type

string

No

Channel type: text, voice, announcement, stage, forum (default: text)

guildId

string

No

Guild ID or name

categoryId

string

No

Parent category ID

topic

string

No

Channel topic (text channels, max 1024 chars)

nsfw

boolean

No

Age-restricted channel (default: false)

slowmode

number

No

Slowmode in seconds (0-21600)

bitrate

number

No

Voice channel bitrate (8000-384000)

userLimit

number

No

Voice channel user limit (0-99, 0=unlimited)

position

number

No

Position in channel list

permissionOverwrites

array

No

Permission overwrites for roles/users

edit_channel

Modify an existing channel's settings and permissions.

Parameter

Type

Required

Description

channelId

string

Yes

Channel ID to edit

guildId

string

No

Guild ID or name

name

string

No

New channel name

topic

string

No

New channel topic

nsfw

boolean

No

Age-restricted setting

slowmode

number

No

Slowmode in seconds

bitrate

number

No

Voice channel bitrate

userLimit

number

No

Voice channel user limit

position

number

No

New position

categoryId

string

No

Move to category (null to remove)

permissionOverwrites

array

No

Replace permission overwrites

delete_channel

Delete a channel (cannot be undone).

Parameter

Type

Required

Description

channelId

string

Yes

Channel ID to delete

guildId

string

No

Guild ID or name

Role Management

Discord role positions are inverted. A higher position number is higher in the hierarchy and more powerful; @everyone is position 0 at the bottom; and a brand-new role defaults to the bottom. Use placement / orderedRoleIds below and let the server compute the raw numbers — you rarely need to reason about positions directly. The bot can only place roles below its own highest role.

create_role

Create a role with permissions and optional placement in the hierarchy.

Parameter

Type

Required

Description

name

string

Yes

Role name (1-100 characters)

guildId

string

No

Guild ID or name

color

string/number

No

Hex color (#FF0000) or integer

hoist

boolean

No

Display separately in member list

mentionable

boolean

No

Allow anyone to mention this role

permissions

array

No

Permission names (SCREAMING_SNAKE_CASE); unknown names are rejected, not silently dropped

placement

string

No

top / bottom / above / below — where to rank the role (preferred over position)

referenceRoleId

string

No

Role to place above/below (required when placement is above/below)

position

number

No

Raw Discord position (advanced; overrides placement)

edit_role

Modify an existing role.

Parameter

Type

Required

Description

roleId

string

Yes

Role ID to edit

guildId

string

No

Guild ID or name

name

string

No

New role name

color

string/number

No

New color

hoist

boolean

No

Display separately setting

mentionable

boolean

No

Mentionable setting

permissions

array

No

Replace all permissions

position

number

No

New position in hierarchy

delete_role

Delete a role (cannot be undone).

Parameter

Type

Required

Description

roleId

string

Yes

Role ID to delete

guildId

string

No

Guild ID or name

list_roles

List roles sorted highest-to-lowest (as they appear in Discord's UI), with each role's position and whether the bot can manage it, plus botHighestRolePosition. Call this before reordering or placing roles.

Parameter

Type

Required

Description

guildId

string

No

Guild ID or name

reorder_roles

Reorder roles in the hierarchy. Provide exactly one of the inputs below.

Parameter

Type

Required

Description

orderedRoleIds

array

No

Role IDs from most important (index 0 = top) to least. Positions computed for you. Preferred.

rolePositions

array

No

Advanced: explicit {roleId, position} objects with raw Discord positions

guildId

string

No

Guild ID or name

Server Settings

update_server_settings

Update multiple server settings at once.

set_verification_level

Set member verification level (0-4).

set_content_filter

Set explicit content filter level.

set_default_notifications

Set default notification setting for new members.

Templates

list_templates

List available pre-built templates.

preview_template

View template details before applying.

Parameter

Type

Required

Description

templateId

string

Yes

Template ID to preview

apply_template

Apply a template to a server.

Parameter

Type

Required

Description

templateId

string

Yes

Template ID to apply

guildId

string

No

Guild ID or name

Permission Overwrites

Permission overwrites allow you to customize access to channels and categories. Use them to:

  • Make channels private (deny @everyone VIEW_CHANNEL)

  • Grant specific roles access

  • Restrict certain actions for specific users/roles

Permission Overwrite Format

{
  "id": "role-or-user-id",
  "type": "role",
  "allow": ["VIEW_CHANNEL", "SEND_MESSAGES"],
  "deny": ["MANAGE_MESSAGES"]
}

Field

Type

Description

id

string

Role ID or User ID

type

string

role or member

allow

array

Permissions to explicitly allow

deny

array

Permissions to explicitly deny

Example: Make a Category Private

{
  "channelId": "category-id",
  "permissionOverwrites": [
    {
      "id": "everyone-role-id",
      "type": "role",
      "deny": ["VIEW_CHANNEL"]
    },
    {
      "id": "admin-role-id",
      "type": "role",
      "allow": ["VIEW_CHANNEL", "SEND_MESSAGES", "MANAGE_MESSAGES"]
    }
  ]
}

Available Permissions

Use these permission names in role permissions and permission overwrites:

General Permissions

Permission

Description

ADMINISTRATOR

Full server access (bypasses all permissions)

VIEW_CHANNEL

View channels and read messages

MANAGE_CHANNELS

Create, edit, delete channels

MANAGE_ROLES

Create, edit, delete roles below bot's role

MANAGE_GUILD

Change server settings

VIEW_AUDIT_LOG

View server audit log

VIEW_GUILD_INSIGHTS

View server insights

MANAGE_WEBHOOKS

Create, edit, delete webhooks

MANAGE_GUILD_EXPRESSIONS

Manage emojis and stickers

CREATE_INSTANT_INVITE

Create invite links

CHANGE_NICKNAME

Change own nickname

MANAGE_NICKNAMES

Change other members' nicknames

KICK_MEMBERS

Kick members from server

BAN_MEMBERS

Ban members from server

MODERATE_MEMBERS

Timeout members

MANAGE_EVENTS

Create and manage events

Text Channel Permissions

Permission

Description

SEND_MESSAGES

Send messages in text channels

SEND_TTS_MESSAGES

Send text-to-speech messages

MANAGE_MESSAGES

Delete messages, pin messages

EMBED_LINKS

Embed links in messages

ATTACH_FILES

Upload files

READ_MESSAGE_HISTORY

Read past messages

MENTION_EVERYONE

Use @everyone and @here

USE_EXTERNAL_EMOJIS

Use emojis from other servers

USE_EXTERNAL_STICKERS

Use stickers from other servers

ADD_REACTIONS

Add reactions to messages

MANAGE_THREADS

Manage and delete threads

CREATE_PUBLIC_THREADS

Create public threads

CREATE_PRIVATE_THREADS

Create private threads

SEND_MESSAGES_IN_THREADS

Send messages in threads

USE_APPLICATION_COMMANDS

Use slash commands

Voice Channel Permissions

Permission

Description

CONNECT

Connect to voice channels

SPEAK

Speak in voice channels

STREAM

Screen share and video

USE_VAD

Use voice activity detection

PRIORITY_SPEAKER

Be heard over others

MUTE_MEMBERS

Mute other members

DEAFEN_MEMBERS

Deafen other members

MOVE_MEMBERS

Move members between channels

REQUEST_TO_SPEAK

Request to speak in stage channels

USE_EMBEDDED_ACTIVITIES

Use activities

USE_SOUNDBOARD

Use soundboard

USE_EXTERNAL_SOUNDS

Use external sounds

SEND_VOICE_MESSAGES

Send voice messages

Examples

Create a Complete Team Server Structure

1. Select my Discord server
2. Create these roles with permissions:
   - "Admin" with ADMINISTRATOR
   - "Moderator" with MANAGE_MESSAGES, KICK_MEMBERS, MUTE_MEMBERS
   - "Member" with VIEW_CHANNEL, SEND_MESSAGES, CONNECT, SPEAK

3. Create these categories, all private to @everyone but visible to Member role:
   - "General" with channels: welcome, rules, announcements
   - "Discussion" with channels: general-chat, off-topic, help
   - "Voice" with voice channels: General Voice, Gaming, AFK

4. Make the "Admin" category only visible to Admin role

Set Up Private Channels

Make the "staff-chat" channel private:
- Deny VIEW_CHANNEL to @everyone
- Allow VIEW_CHANNEL, SEND_MESSAGES, MANAGE_MESSAGES to Moderator role
- Allow VIEW_CHANNEL, SEND_MESSAGES, ADMINISTRATOR to Admin role

Configure Role Hierarchy

Reorder roles so Admin is highest, then Moderator, then Member, then @everyone

Troubleshooting

Bot Not Connecting

  • Verify bot token is correct

  • Check that ALL Privileged Gateway Intents are enabled in Discord Developer Portal

  • Ensure the bot user is created (not just the application)

Can't Manage Roles/Channels

  • Ensure bot has Administrator permission

  • Bot's role must be higher than roles it manages (drag bot role up in server settings)

  • Verify the bot was invited with correct OAuth2 scopes (bot and applications.commands)

Permission Errors

  • Grant the bot Administrator permission for unrestricted access

  • Bot can only manage roles below its highest role in the hierarchy

  • Drag the bot's role higher in Server Settings → Roles

Guild Not Found

  • Confirm bot is in the server

  • Try using guild ID instead of name

  • Enable Discord Developer Mode to copy IDs (User Settings → Advanced)

Debug Logging

Verbose per-call tracing is off by default. Set DISCORD_MCP_DEBUG=1 (or true) in the server's environment to emit debug output to stderr for troubleshooting permission and API issues.

Security

  • Never share your bot token - treat it like a password

  • Use environment variables - don't commit tokens to version control

  • Regenerate tokens if compromised - reset in Discord Developer Portal

  • Limit server access - only add the bot to servers you trust

  • Restrict file permissions - chmod 600 ~/.discord-mcp/config.json

Architecture

  • Runtime: Node.js 18+

  • Language: TypeScript

  • Discord API: discord.js v14

  • MCP SDK: @modelcontextprotocol/sdk

  • Validation: Zod

See CLAUDE.md for development documentation.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for guidelines.

License

MIT License - see LICENSE file for details.

Acknowledgments

Available Tools

19 tools
apply_templateA

Applies a template to a Discord server, creating all roles, categories, and channels defined in the template. Reports per-item failures and skipped (already-existing) roles; success is false if any element failed to create.

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdNoGuild ID or name. Defaults to the currently selected guild.
validateNoValidate the guild before applying
skipRolesNoSkip creating roles
templateIdYesTemplate ID to apply (gaming, community, business, study-group)
skipCategoriesNoSkip creating categories and channels

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description takes full responsibility for behavioral disclosure. It reports per-item failures, skipped elements, and overall success condition. However, it does not address authentication needs or rate limits.

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?

Two concise sentences with no unnecessary words. The action and result are front-loaded, making it efficient for an agent to parse.

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 adequately covers behavior and results for a batch template tool, given no output schema. It mentions failure reporting and skipped items, but could reference the source of templates (e.g., list_templates).

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 parameters are well-documented. The description adds context about template application outcomes but does not significantly enhance individual parameter understanding beyond 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?

The description clearly states the verb ('applies') and the resource ('template to a Discord server'), specifying it creates roles, categories, and channels. It distinguishes from sibling tools like create_channel and create_role, which handle individual elements.

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 implies usage for bulk server setup using a template, but does not explicitly state when to use it versus individual creation tools or provide exclusion criteria. The context is clear, but no direct comparison to alternatives.

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

create_categoryB

Creates a new category in a Discord server. Categories organize channels into groups.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the category (1-100 characters)
guildIdNoGuild ID or name. Defaults to the currently selected guild.
positionNoPosition of the category in the channel list
permissionOverwritesNoPermission overwrites for roles/users. Use this to make the category private.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It only states the creation action and general purpose, without disclosing side effects, required permissions, rate limits, or failure modes. Critical behavioral aspects are omitted.

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?

Two sentences, no unnecessary words. Front-loaded with the core action and purpose. Every sentence serves a clear function.

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

Completeness2/5

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

With no output schema, 4 parameters, and no annotations, the description is too sparse. It lacks information about return values, error scenarios, prerequisite conditions, or the impact of parameters like 'position' and 'permissionOverwrites'. A more complete description would significantly aid an agent.

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%, so the description need not re-list parameters. However, it adds no additional context about parameter usage, formatting, or defaults beyond what the schema already provides. Baseline score of 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?

The description clearly states the verb ('creates'), resource ('category'), and context ('Discord server'), with an explanation of the concept ('organize channels into groups'). It distinguishes from siblings like 'create_channel' by specifying it is for categories rather than channels.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., 'create_channel' for channels, 'create_role' for roles). No context on when not to use it or what prerequisites exist.

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

create_channelC

Creates a new channel in a Discord server. Supports text, voice, announcement, stage, and forum channels.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the channel (1-100 characters)
nsfwNoWhether the channel is age-restricted
typeNoChannel type (default: text)text
topicNoChannel topic (text channels, max 1024 chars)
bitrateNoBitrate for voice channels (8000-384000)
guildIdNoGuild ID or name. Defaults to the currently selected guild.
positionNoPosition in the channel list
slowmodeNoSlowmode in seconds (0-21600)
userLimitNoUser limit for voice channels (0-99, 0 = unlimited)
categoryIdNoID of the category to place this channel in
permissionOverwritesNoPermission overwrites for roles/users.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only states 'creates' without disclosing side effects, required permissions, or whether the operation is reversible. Behavior beyond creation is opaque.

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 concise at two sentences without waste. However, it could be slightly more informative without losing conciseness.

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

Completeness2/5

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

Given the complexity (11 parameters, no output schema), the description is insufficient. It does not explain return values, error conditions, or any broader context needed for proper invocation.

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%, so parameters are well-documented in the schema. The description adds no additional meaning beyond listing channel types already present in the schema enum.

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?

The description clearly states it creates a new channel and lists supported types, making the purpose evident. However, it does not differentiate from sibling tools like create_category or create_role, which could be confused.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or context for usage. The description lacks any indication of when to choose this over other creation tools.

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

create_roleA

Creates a role. IMPORTANT: Discord positions are inverted — higher number = higher/more powerful, @everyone = 0 at the bottom, and a new role defaults to the BOTTOM. To make an important role rank high, pass placement:"top" (or "above"/"below" a reference role). Do not rely on raw position numbers unless you know Discord's inverted scheme.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the role (1-100 characters)
colorNoRole color as hex string (#FF0000) or integer (0-16777215)
hoistNoDisplay members with this role separately in the sidebar
guildIdNoGuild ID or name. Defaults to the currently selected guild.
positionNoRaw Discord position (higher = more powerful). Overrides placement. Prefer placement instead.
placementNoWhere to rank the role. "top" = highest the bot can assign (just under the bot), "bottom" = just above @everyone (Discord default), "above"/"below" = relative to referenceRoleId. Prefer this over raw position.
mentionableNoAllow anyone to @mention this role
permissionsNoArray of Discord permission names in SCREAMING_SNAKE_CASE (e.g. VIEW_CHANNEL, SEND_MESSAGES, MANAGE_ROLES, KICK_MEMBERS, ADMINISTRATOR, USE_VAD, SEND_TTS_MESSAGES). Unknown names are rejected rather than silently ignored.
referenceRoleIdNoRole ID to place the new role above/below (required when placement is "above" or "below").

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description bears full burden. It discloses Discord's inverted position system, that unknown permission names are rejected, and how placement works. However, it does not mention what the tool returns (no output schema).

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 paragraph that front-loads the purpose and then provides crucial usage context. While slightly lengthy, every sentence adds value and the structure is logical.

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?

Given the tool complexity (9 parameters, no output schema), the description covers placement nuance and permission behavior but omits what the tool returns (e.g., the created role object). It also does not mention rate limits or idempotency, leaving some gaps.

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 baseline is 3. The description adds value by explaining the 'placement' vs 'position' trade-off and the behavior of 'permissions' array (rejecting unknown names). This goes beyond the schema 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 tool name 'create_role' combined with the description 'Creates a role' clearly states the action and resource. It is distinct from siblings like delete_role, edit_role, and reorder_roles.

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 description provides explicit guidance on using 'placement' over raw 'position' due to Discord's inverted scheme, and explains default behavior (new role at bottom). It tells when to use each option and warns against relying on raw numbers.

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

delete_channelA

Deletes a channel from a Discord server. This action cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdNoGuild ID or name. Defaults to the currently selected guild.
channelIdYesID of the channel to delete

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It correctly states the action is irreversible, but it does not mention side effects on messages, permission requirements, or whether the deletion is immediate or eventual.

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 consists of two concise sentences with no unnecessary words. It front-loads the primary action and immediately follows with a critical caveat about irreversibility.

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?

Given the absence of an output schema, the description adequately covers the main behavior (deletion) and a key constraint (irreversibility). It could be more complete by mentioning permission requirements or what happens to messages, but overall it serves its purpose.

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 schema already provides full descriptions for both parameters (guildId, channelId). The tool description adds no additional information about parameter semantics beyond what the schema offers, meeting the baseline expectation.

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 that the tool deletes a channel from a Discord server, using a specific verb and resource. It distinguishes itself from sibling tools like create_channel or edit_channel.

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 implies that this is a destructive action by noting 'cannot be undone', but it does not explicitly state when to use this tool versus alternative actions (e.g., archiving) or mention prerequisites like having manage channels permission.

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

delete_roleA

Deletes a role from a Discord server. This action cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleIdYesID of the role to delete
guildIdNoGuild ID or name. Defaults to the currently selected guild.

TDQS

A3.8/5.0
Behavior3/5

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

The description mentions irreversibility, a key behavioral trait, but lacks details on auth requirements, side effects (e.g., whether members are affected), or error states. With no annotations provided, more transparency would be beneficial.

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?

Two sentences with no wasted words. Every sentence serves a purpose: defining the action and highlighting irreversibility.

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?

Given the simplicity of the tool (2 params, no output schema), the description covers the core purpose and irreversibility. It is adequate but could include more usage 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?

Schema coverage is 100%, and the description adds no extra meaning beyond the schema's parameter descriptions. 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?

The description clearly states the action ('deletes') and resource ('role from a Discord server'). It distinguishes from sibling tools like create_role and edit_role by specifying deletion.

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 implies caution with 'cannot be undone' but does not explicitly state when to use this tool versus alternatives like edit_role, nor mention prerequisites like permissions.

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

edit_channelA

Edits an existing channel. permissionOverwrites are MERGED by target by default (overwrites for the given roles/users are added or replaced; overwrites for other targets are left untouched) so you can grant one role access without exposing the channel. Set replaceAllOverwrites:true to replace the entire overwrite set instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the channel
nsfwNoWhether the channel is age-restricted
topicNoNew topic (text channels only)
bitrateNoBitrate for voice channels (8000-384000)
guildIdNoGuild ID or name. Defaults to the currently selected guild.
positionNoPosition in the channel list
slowmodeNoSlowmode in seconds (0-21600)
channelIdYesID of the channel to edit
userLimitNoUser limit for voice channels (0-99)
categoryIdNoCategory ID to move this channel to (null to remove from category)
permissionOverwritesNoPermission overwrites to apply. Merged by target unless replaceAllOverwrites is true.
replaceAllOverwritesNoIf true, replace the channel's entire overwrite set instead of merging by target.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that permissionOverwrites are merged by default and that setting replaceAllOverwrites:true replaces the entire set. It does not cover all possible behavioral aspects (e.g., immediate effect, permissions needed), but the key nuance is well explained.

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 two sentences, front-loaded with the main purpose. Every sentence is informative; the second sentence explains the critical nuance of permission overwrites without unnecessary detail. It is concisely scoped.

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?

Given 12 parameters and no output schema, the description addresses the most complex aspect (permission overwrites). It could mention that changes are applied immediately or require permissions, but the description is fairly complete for the tool's complexity. The merge behavior adds necessary context.

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 schema documents all parameters. The description adds value by explaining the merging behavior of permissionOverwrites in detail beyond the schema's description. This helps the agent understand the default behavior and the replaceAllOverwrites option.

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 'Edits an existing channel', specifying the verb and resource. It distinguishes from sibling tools like create_channel and delete_channel by focusing on editing an existing channel. The explanation of permission overwrites adds precise scope.

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 on when to use this tool (to edit an existing channel) and explains the default merge behavior versus replaceAllOverwrites. However, it does not explicitly state when not to use it or mention alternative tools for related tasks like creating or deleting channels.

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

edit_roleA

Edits a role's name, color, permissions, hoist, mentionable, or position. Note: permissions REPLACE the role's existing permission set. Position uses Discord's inverted scale (higher = more powerful); to reorder relative to other roles, reorder_roles is usually clearer.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the role
colorNoNew color as hex string or integer
hoistNoDisplay members with this role separately
roleIdYesID of the role to edit
guildIdNoGuild ID or name. Defaults to the currently selected guild.
positionNoNew raw Discord position (higher = more powerful).
mentionableNoAllow anyone to @mention this role
permissionsNoArray of Discord permission names in SCREAMING_SNAKE_CASE (e.g. VIEW_CHANNEL, SEND_MESSAGES, MANAGE_ROLES, KICK_MEMBERS, ADMINISTRATOR, USE_VAD, SEND_TTS_MESSAGES). Unknown names are rejected rather than silently ignored. Replaces the role's existing permissions.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description bears full responsibility. It discloses that permissions replace the existing set and explains the inverted position scale, but does not mention auth requirements or potential side effects, such as the need for MANAGE_ROLES permission.

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 two concise sentences with no unnecessary words. It front-loads the purpose and then provides critical warnings, making it efficient and easy to parse.

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 mutation tool with 8 parameters and no output schema, the description covers key behaviors and warnings. However, it lacks mention of required permissions (e.g., MANAGE_ROLES) and does not specify that return values are not documented, leaving some context incomplete.

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 each parameter is documented in the schema. The description adds marginal value beyond the schema by noting the replacement behavior for permissions and the inverted position scale, but most parameter meanings are already clear from 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?

The description starts with 'Edits a role's name, color, permissions, hoist, mentionable, or position,' clearly specifying the verb and resource. It distinguishes from siblings like 'create_role' and 'reorder_roles' by focusing on editing existing role attributes and explicitly mentioning reorder_roles as clearer for reordering.

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 guidance by noting that permissions REPLACE the existing set and that position uses Discord's inverted scale with reorder_roles recommended for reordering. However, it does not mention required permissions (e.g., MANAGE_ROLES) or when to use this tool for other fields, leaving some gaps.

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

get_guild_infoA

Gets detailed information about a Discord server (guild), including channels, roles (sorted highest-to-lowest with the bot's hierarchy ceiling), and settings. If no guildId is specified, uses the currently selected guild.

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdNoGuild ID or name (optional, uses current guild if not specified)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the sorting of roles and mention of hierarchy ceiling, but does not cover error handling, authentication needs, rate limits, or potential side effects. Adequate for a simple read operation but not comprehensive.

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?

Two sentences with no wasted words. Purpose and behavior are front-loaded. Every sentence adds value.

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?

Given the tool's simplicity (one optional parameter, no output schema), the description covers the returned content (channels, roles, settings) and parameter behavior. Could mention that settings include all guild settings, but overall it is sufficient for an agent to invoke correctly.

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?

Only one parameter (guildId) with 100% schema coverage. The description repeats the schema's explanation about using current guild if not specified, adding no new semantic value. Baseline score of 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?

Clearly states it retrieves detailed information about a Discord server, listing specific elements (channels, roles with sorting detail, settings). Distinguishes from sibling tools that create, delete, or edit guild resources, as this is a read-only information retrieval tool.

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 context on when this tool is appropriate (getting detailed guild info) and explains the behavior when no guildId is given (uses current guild). Lacks explicit guidance on when not to use or direct comparison to alternatives like list_guilds.

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

list_guildsA

Lists all Discord servers (guilds) that the bot has access to. Use this to discover available servers before performing operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states the tool lists guilds but doesn't disclose behavioral traits like pagination, rate limits, permissions needed, or return format. However, it adds useful context about the purpose (discovery).

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?

Two sentences, front-loaded with the core purpose, followed by usage guidance. Every sentence earns its place with no wasted words, making it efficient and easy to parse.

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?

Given no annotations, no output schema, and 0 parameters, the description is complete for a simple list operation but lacks details on behavioral aspects like return format or limitations. It's adequate but has clear gaps in transparency.

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 tool has 0 parameters, and schema description coverage is 100%. The description doesn't need to add parameter semantics, so baseline is 4. It appropriately focuses on tool purpose rather than 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 clearly states the specific action ('Lists all Discord servers') and resource ('guilds'), with explicit scope ('that the bot has access to'). It distinguishes from siblings like 'get_guild_info' (detailed info for one guild) and 'select_guild' (choose a specific guild).

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?

Explicitly states when to use this tool: 'Use this to discover available servers before performing operations.' This provides clear context for usage versus alternatives like 'get_guild_info' (for details on a known guild) or 'select_guild' (to choose one).

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

list_rolesA

Lists roles sorted highest-to-lowest in the hierarchy (as they appear in Discord's UI), with each role's position and whether the bot can manage it. Call this before reordering or placing roles so you can reason about the current hierarchy.

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdNoGuild ID or name. Defaults to the currently selected guild.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It mentions sorting order and returned fields (position, manageability), but does not disclose permissions needed, potential rate limits, or error behavior. It implies a read-only operation but does not state it explicitly.

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 two concise sentences. The first sentence explains the tool's function, and the second provides usage guidance. No redundant words; information is front-loaded.

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 simple listing tool with one parameter and no output schema, the description covers purpose, output details, and when to use it. It omits prerequisites like required permissions or guild context, but the default guild setting and sibling tools partially compensate. Overall, it is fairly complete.

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% for the sole parameter guildId, which is explained as 'Guild ID or name. Defaults to the currently selected guild.' The tool description adds no additional meaning beyond the schema, so 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?

The description clearly states that the tool lists roles sorted highest-to-lowest, including position and manageability info. This distinguishes it from sibling tools like create_role or reorder_roles.

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 explicitly advises calling this tool before reordering or placing roles, providing clear usage context. It does not mention when not to use it or list alternatives, but the sibling set includes reorder_roles and create_role, so the advice is helpful.

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

list_templatesB

Lists all available Discord server templates with their basic information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a list operation but doesn't describe what 'basic information' includes, whether the list is paginated, if there are rate limits, or any authentication requirements. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy for an agent to parse quickly. Every word earns its place.

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?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavioral aspects like output format or usage context. For a read-only list tool, this is borderline acceptable but leaves room for improvement in guiding the agent.

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 0 parameters with 100% coverage, so the schema fully documents the absence of parameters. The description doesn't need to add parameter semantics, but it correctly implies no filtering options are available (lists 'all' templates). This aligns with the schema, earning a baseline score of 4 for zero-parameter tools.

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?

The description clearly states the action ('Lists') and resource ('Discord server templates with their basic information'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from sibling tools like 'preview_template' or 'apply_template', which also involve templates but serve different purposes.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'list_templates' over 'preview_template' or 'apply_template', nor does it specify any prerequisites or context for usage. The agent must infer usage from the tool name alone.

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

preview_templateA

Shows detailed information about a specific template including all roles, categories, and channels.

ParametersJSON Schema
NameRequiredDescriptionDefault
templateIdYesTemplate ID to preview (gaming, community, business, study-group)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations, so description carries full burden. It states output content but omits traits like read-only nature, authentication needs, or absence of side effects. Adequate but not comprehensive.

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?

One sentence with no redundancy. Front-loaded with verb and object. Efficient.

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?

Simple tool with one parameter and 100% schema coverage. Description covers what the tool returns. Minor omission: no mention of behavior if template not found.

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 already provides 100% coverage with examples. Description adds context about return content but not extra parameter meaning. 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?

Description clearly states the tool shows detailed information about a specific template, listing included components (roles, categories, channels). It distinguishes from siblings like list_templates and apply_template.

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?

Usage is implied (when you need template details) but no explicit when-to-use, when-not-to-use, or alternative tools mentioned. Context from sibling tools partially fills gap.

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

reorder_rolesA

Reorders roles in the hierarchy. Preferred: pass orderedRoleIds as an array of role IDs from MOST important (top) to least important (bottom) — the server computes the raw Discord positions for you. Advanced: pass rolePositions with explicit numeric positions (higher = more powerful). Provide exactly one of the two.

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdNoGuild ID or name. Defaults to the currently selected guild.
rolePositionsNoAdvanced: explicit [{roleId, position}] with raw Discord positions (higher = more powerful). Provide this OR orderedRoleIds, not both.
orderedRoleIdsNoRole IDs ordered from most important (index 0 = top) to least important. Positions are computed automatically. Provide this OR rolePositions, not both.

TDQS

A4.2/5.0
Behavior3/5

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

Discloses reordering behavior and how positions are computed for each method. Missing information on required permissions (Manage Roles) and potential side effects on role hierarchy. No annotations 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?

Two concise sentences with clear structure. First sentence states purpose, second explains the two methods with guidance. No wasted words.

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?

Adequately covers the main functionality and parameter choices. Lacks mention of return value or required permissions. Without output schema, a bit more detail on what happens after reordering would improve completeness.

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?

Adds meaningful context beyond schema: explains the difference between the two mutually exclusive parameters, the preferred usage, and that orderedRoleIds computes positions automatically.

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?

Clearly states it reorders roles and distinguishes from sibling tools like create_role, delete_role, edit_role by focusing on reordering. The two methods (orderedRoleIds and rolePositions) are explicitly described.

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 guidance on using orderedRoleIds as preferred method and rolePositions as advanced, and to provide exactly one. However, does not explicitly state when not to use this tool vs edit_role for single role changes.

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

select_guildA

Sets the active Discord server (guild) for subsequent operations. All tools will use this server unless a different guildId is explicitly specified.

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdYesGuild ID or name to select

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that this tool sets a stateful context affecting subsequent operations, which is valuable behavioral information. However, it doesn't mention potential side effects like permission requirements, error conditions, or whether the selection persists across sessions.

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 perfectly concise with two sentences that are front-loaded and essential. Every word contributes to understanding the tool's purpose and usage without any redundancy or unnecessary elaboration.

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?

Given the tool's moderate complexity (stateful context setting) and lack of annotations/output schema, the description is mostly complete. It explains the core behavior and scope, though it could benefit from mentioning any limitations or prerequisites. The absence of an output schema is acceptable here as the tool likely doesn't return complex data.

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 the single parameter 'guildId' with its type and description. The description doesn't add any additional parameter semantics beyond what the schema provides, maintaining the baseline score.

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 specific action ('Sets the active Discord server') and resource ('guild'), distinguishing it from siblings like get_guild_info (which retrieves information) or list_guilds (which lists available servers). It precisely defines what the tool does beyond just its name.

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 description explicitly states when to use this tool ('for subsequent operations') and provides clear context about its effect ('All tools will use this server unless a different guildId is explicitly specified'), helping differentiate it from alternatives that might directly specify guildId in each call.

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

set_content_filterB

Sets the explicit content filter level for the server.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYesContent filter level: disabled (no scanning), members_without_roles (scan messages from members without roles), all_members (scan all messages)
guildIdNoGuild ID or name. Defaults to the currently selected guild.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior, but it only says 'Sets', implying a write operation. It lacks details on permissions required, reversibility, immediate effect, or side effects. The enum values are already in the schema.

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 a single sentence with no redundant words. It is front-loaded with the action and resource.

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?

The tool is a simple mutation with no output schema or annotations. The description is adequate but misses contextual details like whether the filter level applies server-wide, if it affects existing content, or if any server requirements exist.

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% with descriptions for both parameters. The description does not add any extra meaning beyond the schema, so 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?

The description clearly states the verb 'Sets' and the specific resource 'explicit content filter level for the server'. This distinguishes it from sibling tools like 'update_server_settings' which handle general settings.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., 'update_server_settings'). There is no mention of prerequisites, exclusions, or context where this tool is appropriate.

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

set_default_notificationsB

Sets the default notification setting for new members joining the server.

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdNoGuild ID or name. Defaults to the currently selected guild.
settingYesNotification setting: all_messages (notify for all messages), only_mentions (notify only when mentioned)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Only states 'sets', implying mutation, but lacks details on permissions, side effects, or whether setting is persisted. Minimal disclosure.

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?

Single sentence, no wasted words. Efficient for a simple tool, but could include brief usage context without becoming verbose.

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

Completeness2/5

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

No output schema, no annotations. Description only covers purpose; lacks return value info, prerequisites, or integration with sibling tools. Incomplete for a mutation tool.

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%, with clear enum descriptions for 'setting'. Description adds no further meaning beyond 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?

Description clearly states verb 'sets' and resource 'default notification setting for new members'. It distinguishes from sibling tools like create_channel or delete_role.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. Does not mention prerequisites (e.g., guild selection) or conditions under which it should be used.

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

set_verification_levelC

Sets the verification level required for new members to interact with the server.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYesVerification level: none (unrestricted), low (verified email), medium (registered 5+ min), high (member 10+ min), very_high (verified phone)
guildIdNoGuild ID or name. Defaults to the currently selected guild.

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description should disclose behavioral traits. It only states that the tool sets a level, but does not reveal that it modifies server settings, that it requires Manage Server permissions, or the impact of changing levels on existing members.

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 a single sentence with no wasted words. It is appropriately sized for a simple mutation tool, though more detail could be added without losing conciseness.

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

Completeness2/5

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

Given no output schema and no annotations, the description is incomplete. It does not explain return values, success/failure indicators, or the scope of the change (e.g., applies to the entire guild).

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%, so the baseline is 3. The description adds no extra meaning beyond the schema's parameter descriptions; it merely restates the function.

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?

The description clearly states the action ('Sets') and the resource ('verification level'), making the purpose unambiguous. While it does not explicitly distinguish from sibling tools like set_content_filter, the unique resource is sufficient for differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as other server settings tools. There is no mention of prerequisites like required permissions or default behavior.

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

update_server_settingsC

Updates multiple server settings at once. Can modify name, description, verification level, content filter, and default notifications.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew server name (2-100 characters)
guildIdNoGuild ID or name. Defaults to the currently selected guild.
descriptionNoNew server description (community servers, max 300 characters)
verificationLevelNoVerification level for new members
explicitContentFilterNoExplicit content filter setting
defaultMessageNotificationsNoDefault notification setting for new members

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description carries the full burden. The description only states 'updates' without detailing mutation implications, required permissions, error cases, or return values. Minimal behavioral disclosure.

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 concise: one sentence with a clear verb and resource, followed by a list of fields. It is front-loaded with the key information and has no fluff.

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

Completeness2/5

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

Given 6 parameters, no annotations, and no output schema, the description is insufficient. It does not explain the return value, partial update behavior, or error handling. The tool's complexity demands more 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?

Schema coverage is 100% (each parameter has a description in the input schema). The description adds a listing of fields but no extra semantic context beyond what the schema already provides. Baseline 3 is appropriate.

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?

The description clearly states it updates server settings and lists the modifiable fields. It implies batch update capability, which distinguishes it from sibling tools that set individual settings, but could be more explicit.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus the individual set_* siblings. The description does not mention prerequisites, constraints, or alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updatesv2.0.1
    • Changedapply_template5 fields changed
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / skipCategories / description
        Added value: +"Skip creating categories and channels"
      • addedInput schema / properties / skipRoles / description
        Added value: +"Skip creating roles"
      • addedInput schema / properties / templateId / description
        Added value: +"Template ID to apply (gaming, community, business, study-group)"
      • addedInput schema / properties / validate / description
        Added value: +"Validate the guild before applying"
    • Changedcreate_category8 fields changed
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / name / description
        Added value: +"Name of the category (1-100 characters)"
      • addedInput schema / properties / permissionOverwrites / description
        Added value: +"Permission overwrites for roles/users. Use this to make the category private."
      • changedInput schema / properties / permissionOverwrites / items / properties / allow / description
        Previous value: -"Permissions to allow"New value: +"Permission names to allow (SCREAMING_SNAKE_CASE)"
      • changedInput schema / properties / permissionOverwrites / items / properties / deny / description
        Previous value: -"Permissions to deny"New value: +"Permission names to deny (SCREAMING_SNAKE_CASE)"
      • changedInput schema / properties / permissionOverwrites / items / properties / id / description
        Previous value: -"Role ID or user ID"New value: +"Role ID or user ID this overwrite applies to"
      • changedInput schema / properties / permissionOverwrites / items / properties / type / description
        Previous value: -"Whether this is a role or user override"New value: +"Whether id refers to a role or a member"
      • addedInput schema / properties / position / description
        Added value: +"Position of the category in the channel list"
    • Changedcreate_channel15 fields changed
      • addedInput schema / properties / bitrate / description
        Added value: +"Bitrate for voice channels (8000-384000)"
      • addedInput schema / properties / categoryId / description
        Added value: +"ID of the category to place this channel in"
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / name / description
        Added value: +"Name of the channel (1-100 characters)"
      • addedInput schema / properties / nsfw / description
        Added value: +"Whether the channel is age-restricted"
      • addedInput schema / properties / permissionOverwrites / description
        Added value: +"Permission overwrites for roles/users."
      • changedInput schema / properties / permissionOverwrites / items / properties / allow / description
        Previous value: -"Permissions to allow"New value: +"Permission names to allow (SCREAMING_SNAKE_CASE)"
      • changedInput schema / properties / permissionOverwrites / items / properties / deny / description
        Previous value: -"Permissions to deny"New value: +"Permission names to deny (SCREAMING_SNAKE_CASE)"
      • changedInput schema / properties / permissionOverwrites / items / properties / id / description
        Previous value: -"Role ID or user ID"New value: +"Role ID or user ID this overwrite applies to"
      • changedInput schema / properties / permissionOverwrites / items / properties / type / description
        Previous value: -"Whether this is a role or user override"New value: +"Whether id refers to a role or a member"
      • addedInput schema / properties / position / description
        Added value: +"Position in the channel list"
      • addedInput schema / properties / slowmode / description
        Added value: +"Slowmode in seconds (0-21600)"
      • addedInput schema / properties / topic / description
        Added value: +"Channel topic (text channels, max 1024 chars)"
      • addedInput schema / properties / type / description
        Added value: +"Channel type (default: text)"
      • addedInput schema / properties / userLimit / description
        Added value: +"User limit for voice channels (0-99, 0 = unlimited)"
    • Changedcreate_role11 fields changed
      • addedInput schema / properties / color / description
        Added value: +"Role color as hex string (#FF0000) or integer (0-16777215)"
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / hoist / description
        Added value: +"Display members with this role separately in the sidebar"
      • addedInput schema / properties / mentionable / description
        Added value: +"Allow anyone to @mention this role"
      • addedInput schema / properties / name / description
        Added value: +"Name of the role (1-100 characters)"
      • addedInput schema / properties / permissions / description
        Added value: +"Array of Discord permission names in SCREAMING_SNAKE_CASE (e.g. VIEW_CHANNEL, SEND_MESSAGES, MANAGE_ROLES, KICK_MEMBERS, ADMINISTRATOR, USE_VAD, SEND_TTS_MESSAGES). Unknown names are rejected rather than silently ignored."
      • removedInput schema / properties / permissions / items / enum
        Removed value: -[
        -  "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",
        -  "VIEW_GUILD_INSIGHTS",
        -  "CONNECT",
        -  "SPEAK",
        -  "MUTE_MEMBERS",
        -  "DEAFEN_MEMBERS",
        -  "MOVE_MEMBERS",
        -  "USE_VAD",
        -  "CHANGE_NICKNAME",
        -  "MANAGE_NICKNAMES",
        -  "MANAGE_ROLES",
        -  "MANAGE_WEBHOOKS",
        -  "MANAGE_GUILD_EXPRESSIONS",
        -  "USE_APPLICATION_COMMANDS",
        -  "REQUEST_TO_SPEAK",
        -  "MANAGE_EVENTS",
        -  "MANAGE_THREADS",
        -  "CREATE_PUBLIC_THREADS",
        -  "CREATE_PRIVATE_THREADS",
        -  "USE_EXTERNAL_STICKERS",
        -  "SEND_MESSAGES_IN_THREADS",
        -  "USE_EMBEDDED_ACTIVITIES",
        -  "MODERATE_MEMBERS",
        -  "VIEW_CREATOR_MONETIZATION_ANALYTICS",
        -  "USE_SOUNDBOARD",
        -  "USE_EXTERNAL_SOUNDS",
        -  "SEND_VOICE_MESSAGES"
        -]
      • addedInput schema / properties / placement
        Added value: +{
        +  "description": "Where to rank the role. \"top\" = highest the bot can assign (just under the bot), \"bottom\" = just above @everyone (Discord default), \"above\"/\"below\" = relative to referenceRoleId. Prefer this over raw position.",
        +  "enum": [
        +    "top",
        +    "bottom",
        +    "above",
        +    "below"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / position / description
        Added value: +"Raw Discord position (higher = more powerful). Overrides placement. Prefer placement instead."
      • changedInput schema / properties / position / minimum
        Previous value: -0New value: +1
      • addedInput schema / properties / referenceRoleId
        Added value: +{
        +  "description": "Role ID to place the new role above/below (required when placement is \"above\" or \"below\").",
        +  "type": "string"
        +}
    • Changeddelete_channel2 fields changed
      • addedInput schema / properties / channelId / description
        Added value: +"ID of the channel to delete"
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
    • Changeddelete_role2 fields changed
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / roleId / description
        Added value: +"ID of the role to delete"
    • Changededit_channel16 fields changed
      • addedInput schema / properties / bitrate / description
        Added value: +"Bitrate for voice channels (8000-384000)"
      • addedInput schema / properties / categoryId / description
        Added value: +"Category ID to move this channel to (null to remove from category)"
      • addedInput schema / properties / channelId / description
        Added value: +"ID of the channel to edit"
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / name / description
        Added value: +"New name for the channel"
      • addedInput schema / properties / nsfw / description
        Added value: +"Whether the channel is age-restricted"
      • addedInput schema / properties / permissionOverwrites / description
        Added value: +"Permission overwrites to apply. Merged by target unless replaceAllOverwrites is true."
      • changedInput schema / properties / permissionOverwrites / items / properties / allow / description
        Previous value: -"Permissions to allow"New value: +"Permission names to allow (SCREAMING_SNAKE_CASE)"
      • changedInput schema / properties / permissionOverwrites / items / properties / deny / description
        Previous value: -"Permissions to deny"New value: +"Permission names to deny (SCREAMING_SNAKE_CASE)"
      • changedInput schema / properties / permissionOverwrites / items / properties / id / description
        Previous value: -"Role ID or user ID"New value: +"Role ID or user ID this overwrite applies to"
      • changedInput schema / properties / permissionOverwrites / items / properties / type / description
        Previous value: -"Whether this is a role or user override"New value: +"Whether id refers to a role or a member"
      • addedInput schema / properties / position / description
        Added value: +"Position in the channel list"
      • addedInput schema / properties / replaceAllOverwrites
        Added value: +{
        +  "default": false,
        +  "description": "If true, replace the channel's entire overwrite set instead of merging by target.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / slowmode / description
        Added value: +"Slowmode in seconds (0-21600)"
      • addedInput schema / properties / topic / description
        Added value: +"New topic (text channels only)"
      • addedInput schema / properties / userLimit / description
        Added value: +"User limit for voice channels (0-99)"
    • Changededit_role10 fields changed
      • addedInput schema / properties / color / description
        Added value: +"New color as hex string or integer"
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / hoist / description
        Added value: +"Display members with this role separately"
      • addedInput schema / properties / mentionable / description
        Added value: +"Allow anyone to @mention this role"
      • addedInput schema / properties / name / description
        Added value: +"New name for the role"
      • addedInput schema / properties / permissions / description
        Added value: +"Array of Discord permission names in SCREAMING_SNAKE_CASE (e.g. VIEW_CHANNEL, SEND_MESSAGES, MANAGE_ROLES, KICK_MEMBERS, ADMINISTRATOR, USE_VAD, SEND_TTS_MESSAGES). Unknown names are rejected rather than silently ignored. Replaces the role's existing permissions."
      • removedInput schema / properties / permissions / items / enum
        Removed value: -[
        -  "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",
        -  "VIEW_GUILD_INSIGHTS",
        -  "CONNECT",
        -  "SPEAK",
        -  "MUTE_MEMBERS",
        -  "DEAFEN_MEMBERS",
        -  "MOVE_MEMBERS",
        -  "USE_VAD",
        -  "CHANGE_NICKNAME",
        -  "MANAGE_NICKNAMES",
        -  "MANAGE_ROLES",
        -  "MANAGE_WEBHOOKS",
        -  "MANAGE_GUILD_EXPRESSIONS",
        -  "USE_APPLICATION_COMMANDS",
        -  "REQUEST_TO_SPEAK",
        -  "MANAGE_EVENTS",
        -  "MANAGE_THREADS",
        -  "CREATE_PUBLIC_THREADS",
        -  "CREATE_PRIVATE_THREADS",
        -  "USE_EXTERNAL_STICKERS",
        -  "SEND_MESSAGES_IN_THREADS",
        -  "USE_EMBEDDED_ACTIVITIES",
        -  "MODERATE_MEMBERS",
        -  "VIEW_CREATOR_MONETIZATION_ANALYTICS",
        -  "USE_SOUNDBOARD",
        -  "USE_EXTERNAL_SOUNDS",
        -  "SEND_VOICE_MESSAGES"
        -]
      • addedInput schema / properties / position / description
        Added value: +"New raw Discord position (higher = more powerful)."
      • changedInput schema / properties / position / minimum
        Previous value: -0New value: +1
      • addedInput schema / properties / roleId / description
        Added value: +"ID of the role to edit"
    • Addedlist_roles
    • Changedpreview_template1 field changed
      • changedInput schema / properties / templateId / description
        Previous value: -"Template ID to preview"New value: +"Template ID to preview (gaming, community, business, study-group)"
    • Changedreorder_roles6 fields changed
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / orderedRoleIds
        Added value: +{
        +  "description": "Role IDs ordered from most important (index 0 = top) to least important. Positions are computed automatically. Provide this OR rolePositions, not both.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / rolePositions / description
        Added value: +"Advanced: explicit [{roleId, position}] with raw Discord positions (higher = more powerful). Provide this OR orderedRoleIds, not both."
      • changedInput schema / properties / rolePositions / items / properties / position / minimum
        Previous value: -0New value: +1
      • addedInput schema / properties / rolePositions / minItems
        Added value: +1
      • removedInput schema / required
        Removed value: -[
        -  "rolePositions"
        -]
    • Changedset_content_filter2 fields changed
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / level / description
        Added value: +"Content filter level: disabled (no scanning), members_without_roles (scan messages from members without roles), all_members (scan all messages)"
    • Changedset_default_notifications2 fields changed
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / setting / description
        Added value: +"Notification setting: all_messages (notify for all messages), only_mentions (notify only when mentioned)"
    • Changedset_verification_level2 fields changed
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / level / description
        Added value: +"Verification level: none (unrestricted), low (verified email), medium (registered 5+ min), high (member 10+ min), very_high (verified phone)"
    • Changedupdate_server_settings7 fields changed
      • addedInput schema / properties / defaultMessageNotifications / description
        Added value: +"Default notification setting for new members"
      • addedInput schema / properties / description / description
        Added value: +"New server description (community servers, max 300 characters)"
      • changedInput schema / properties / description / maxLength
        Previous value: -120New value: +300
      • addedInput schema / properties / explicitContentFilter / description
        Added value: +"Explicit content filter setting"
      • addedInput schema / properties / guildId / description
        Added value: +"Guild ID or name. Defaults to the currently selected guild."
      • addedInput schema / properties / name / description
        Added value: +"New server name (2-100 characters)"
      • addedInput schema / properties / verificationLevel / description
        Added value: +"Verification level for new members"
  2. 18 tool updatesv2.0.0
    • First observedapply_template
    • First observedcreate_category
    • First observedcreate_channel
    • First observedcreate_role
    • First observeddelete_channel
    • First observeddelete_role
    • First observededit_channel
    • First observededit_role
    • First observedget_guild_info
    • First observedlist_guilds
    • First observedlist_templates
    • First observedpreview_template
    • First observedreorder_roles
    • First observedselect_guild
    • First observedset_content_filter
    • First observedset_default_notifications
    • First observedset_verification_level
    • First observedupdate_server_settings

TDQS

A3.7/5.0

Scored across 19 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between update_server_settings and individual setters (e.g., set_verification_level), and apply_template might be confused with creating individual items. Overall, an agent can distinguish them with careful reading.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., create_role, edit_channel, list_guilds) using snake_case. No mixing of styles or vague verbs.

Tool Count5/5

19 tools is well-scoped for a Discord server setup server. Each tool addresses a distinct aspect of server configuration without being excessive.

Completeness3/5

The set covers core operations like CRUD for channels and roles, guild info, templates, and settings. However, it lacks delete_category and edit_category, leaving category management incomplete. Permission management is embedded in channel and role editing but not exposed as a separate tool.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    MCP server for macOS Automator that enables AI to control Mac computers by executing AppleScript/JXA, running automation workflows, and performing system-level tasks like sending emails and organizing files.
    6
    12
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides comprehensive Discord bot automation with 71 tools for messaging, channel management, moderation, roles, members, emojis, stickers, scheduled events, auto-moderation, and application commands through AI assistants.
    37
    8
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to manage a Discord server, including creating channels, categories, roles, setting permissions, and assigning roles through natural language commands.
    -