Discord Server Setup MCP
Provides tools for automating Discord server setup and management, including the creation and configuration of servers, channels, categories, and roles, as well as applying pre-built templates for gaming, community, business, and study groups.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Discord Server Setup MCPCreate a new server for me using the Gaming template"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 meanPermission 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
Create an application at https://discord.com/developers/applications
Add a bot user and copy the bot token
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.)
Generate an OAuth2 invite URL:
Go to OAuth2 → URL Generator
Select scopes:
botandapplications.commandsSelect 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.
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 | bashThis 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 | bashManual 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 buildConfiguration
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 ~/.bashrcWindows Command Prompt (temporary):
set DISCORD_BOT_TOKEN=your-bot-token-hereWindows PowerShell (temporary):
$env:DISCORD_BOT_TOKEN = "your-bot-token-here"Windows (permanent - System Environment Variables):
Press
Win + R, typesysdm.cpl, press EnterGo to Advanced tab → Environment Variables
Under "User variables", click New
Variable name:
DISCORD_BOT_TOKENVariable value:
your-bot-token-hereClick 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.jsonOn Windows, create %USERPROFILE%\.discord-mcp\config.json with the same JSON content.
Claude Desktop Configuration (Recommended)
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-hereSet the token in your environment or use the config file method.
Usage
Basic Workflow
List servers the bot has access to
Select a server to work with
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 serverTool 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 |
| string | Yes | Guild ID or name to select |
get_guild_info
Get detailed server information including channels, roles, and settings.
Parameter | Type | Required | Description |
| 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 |
| string | Yes | Category name (1-100 characters) |
| string | No | Guild ID or name |
| number | No | Position in channel list |
| array | No | Permission overwrites for roles/users |
create_channel
Create a channel (text, voice, announcement, stage, forum).
Parameter | Type | Required | Description |
| string | Yes | Channel name (1-100 characters) |
| string | No | Channel type: |
| string | No | Guild ID or name |
| string | No | Parent category ID |
| string | No | Channel topic (text channels, max 1024 chars) |
| boolean | No | Age-restricted channel (default: false) |
| number | No | Slowmode in seconds (0-21600) |
| number | No | Voice channel bitrate (8000-384000) |
| number | No | Voice channel user limit (0-99, 0=unlimited) |
| number | No | Position in channel list |
| array | No | Permission overwrites for roles/users |
edit_channel
Modify an existing channel's settings and permissions.
Parameter | Type | Required | Description |
| string | Yes | Channel ID to edit |
| string | No | Guild ID or name |
| string | No | New channel name |
| string | No | New channel topic |
| boolean | No | Age-restricted setting |
| number | No | Slowmode in seconds |
| number | No | Voice channel bitrate |
| number | No | Voice channel user limit |
| number | No | New position |
| string | No | Move to category (null to remove) |
| array | No | Replace permission overwrites |
delete_channel
Delete a channel (cannot be undone).
Parameter | Type | Required | Description |
| string | Yes | Channel ID to delete |
| 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;
@everyoneis position0at the bottom; and a brand-new role defaults to the bottom. Useplacement/orderedRoleIdsbelow 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 |
| string | Yes | Role name (1-100 characters) |
| string | No | Guild ID or name |
| string/number | No | Hex color ( |
| boolean | No | Display separately in member list |
| boolean | No | Allow anyone to mention this role |
| array | No | Permission names (SCREAMING_SNAKE_CASE); unknown names are rejected, not silently dropped |
| string | No |
|
| string | No | Role to place above/below (required when |
| number | No | Raw Discord position (advanced; overrides |
edit_role
Modify an existing role.
Parameter | Type | Required | Description |
| string | Yes | Role ID to edit |
| string | No | Guild ID or name |
| string | No | New role name |
| string/number | No | New color |
| boolean | No | Display separately setting |
| boolean | No | Mentionable setting |
| array | No | Replace all permissions |
| number | No | New position in hierarchy |
delete_role
Delete a role (cannot be undone).
Parameter | Type | Required | Description |
| string | Yes | Role ID to delete |
| 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 |
| string | No | Guild ID or name |
reorder_roles
Reorder roles in the hierarchy. Provide exactly one of the inputs below.
Parameter | Type | Required | Description |
| array | No | Role IDs from most important (index 0 = top) to least. Positions computed for you. Preferred. |
| array | No | Advanced: explicit |
| 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 |
| string | Yes | Template ID to preview |
apply_template
Apply a template to a server.
Parameter | Type | Required | Description |
| string | Yes | Template ID to apply |
| 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
@everyoneVIEW_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 |
| string | Role ID or User ID |
| string |
|
| array | Permissions to explicitly allow |
| 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 |
| Full server access (bypasses all permissions) |
| View channels and read messages |
| Create, edit, delete channels |
| Create, edit, delete roles below bot's role |
| Change server settings |
| View server audit log |
| View server insights |
| Create, edit, delete webhooks |
| Manage emojis and stickers |
| Create invite links |
| Change own nickname |
| Change other members' nicknames |
| Kick members from server |
| Ban members from server |
| Timeout members |
| Create and manage events |
Text Channel Permissions
Permission | Description |
| Send messages in text channels |
| Send text-to-speech messages |
| Delete messages, pin messages |
| Embed links in messages |
| Upload files |
| Read past messages |
| Use @everyone and @here |
| Use emojis from other servers |
| Use stickers from other servers |
| Add reactions to messages |
| Manage and delete threads |
| Create public threads |
| Create private threads |
| Send messages in threads |
| Use slash commands |
Voice Channel Permissions
Permission | Description |
| Connect to voice channels |
| Speak in voice channels |
| Screen share and video |
| Use voice activity detection |
| Be heard over others |
| Mute other members |
| Deafen other members |
| Move members between channels |
| Request to speak in stage channels |
| Use activities |
| Use soundboard |
| Use external sounds |
| 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 roleSet 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 roleConfigure Role Hierarchy
Reorder roles so Admin is highest, then Moderator, then Member, then @everyoneTroubleshooting
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 (
botandapplications.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
Built with discord.js
Powered by Model Context Protocol
Created for use with Claude
Available Tools
19 toolsapply_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.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | No | Guild ID or name. Defaults to the currently selected guild. | |
| validate | No | Validate the guild before applying | |
| skipRoles | No | Skip creating roles | |
| templateId | Yes | Template ID to apply (gaming, community, business, study-group) | |
| skipCategories | No | Skip creating categories and channels |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the category (1-100 characters) | |
| guildId | No | Guild ID or name. Defaults to the currently selected guild. | |
| position | No | Position of the category in the channel list | |
| permissionOverwrites | No | Permission overwrites for roles/users. Use this to make the category private. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the channel (1-100 characters) | |
| nsfw | No | Whether the channel is age-restricted | |
| type | No | Channel type (default: text) | text |
| topic | No | Channel topic (text channels, max 1024 chars) | |
| bitrate | No | Bitrate for voice channels (8000-384000) | |
| guildId | No | Guild ID or name. Defaults to the currently selected guild. | |
| position | No | Position in the channel list | |
| slowmode | No | Slowmode in seconds (0-21600) | |
| userLimit | No | User limit for voice channels (0-99, 0 = unlimited) | |
| categoryId | No | ID of the category to place this channel in | |
| permissionOverwrites | No | Permission overwrites for roles/users. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the role (1-100 characters) | |
| color | No | Role color as hex string (#FF0000) or integer (0-16777215) | |
| hoist | No | Display members with this role separately in the sidebar | |
| guildId | No | Guild ID or name. Defaults to the currently selected guild. | |
| position | No | Raw Discord position (higher = more powerful). Overrides placement. Prefer placement instead. | |
| placement | No | 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. | |
| mentionable | No | Allow anyone to @mention this role | |
| permissions | No | 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. | |
| referenceRoleId | No | Role ID to place the new role above/below (required when placement is "above" or "below"). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | No | Guild ID or name. Defaults to the currently selected guild. | |
| channelId | Yes | ID of the channel to delete |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| roleId | Yes | ID of the role to delete | |
| guildId | No | Guild ID or name. Defaults to the currently selected guild. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name for the channel | |
| nsfw | No | Whether the channel is age-restricted | |
| topic | No | New topic (text channels only) | |
| bitrate | No | Bitrate for voice channels (8000-384000) | |
| guildId | No | Guild ID or name. Defaults to the currently selected guild. | |
| position | No | Position in the channel list | |
| slowmode | No | Slowmode in seconds (0-21600) | |
| channelId | Yes | ID of the channel to edit | |
| userLimit | No | User limit for voice channels (0-99) | |
| categoryId | No | Category ID to move this channel to (null to remove from category) | |
| permissionOverwrites | No | Permission overwrites to apply. Merged by target unless replaceAllOverwrites is true. | |
| replaceAllOverwrites | No | If true, replace the channel's entire overwrite set instead of merging by target. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name for the role | |
| color | No | New color as hex string or integer | |
| hoist | No | Display members with this role separately | |
| roleId | Yes | ID of the role to edit | |
| guildId | No | Guild ID or name. Defaults to the currently selected guild. | |
| position | No | New raw Discord position (higher = more powerful). | |
| mentionable | No | Allow anyone to @mention this role | |
| permissions | No | 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. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | No | Guild ID or name (optional, uses current guild if not specified) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | No | Guild ID or name. Defaults to the currently selected guild. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| templateId | Yes | Template ID to preview (gaming, community, business, study-group) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | No | Guild ID or name. Defaults to the currently selected guild. | |
| rolePositions | No | Advanced: explicit [{roleId, position}] with raw Discord positions (higher = more powerful). Provide this OR orderedRoleIds, not both. | |
| orderedRoleIds | No | Role IDs ordered from most important (index 0 = top) to least important. Positions are computed automatically. Provide this OR rolePositions, not both. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes | Guild ID or name to select |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | Content filter level: disabled (no scanning), members_without_roles (scan messages from members without roles), all_members (scan all messages) | |
| guildId | No | Guild ID or name. Defaults to the currently selected guild. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | No | Guild ID or name. Defaults to the currently selected guild. | |
| setting | Yes | Notification setting: all_messages (notify for all messages), only_mentions (notify only when mentioned) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | Verification level: none (unrestricted), low (verified email), medium (registered 5+ min), high (member 10+ min), very_high (verified phone) | |
| guildId | No | Guild ID or name. Defaults to the currently selected guild. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New server name (2-100 characters) | |
| guildId | No | Guild ID or name. Defaults to the currently selected guild. | |
| description | No | New server description (community servers, max 300 characters) | |
| verificationLevel | No | Verification level for new members | |
| explicitContentFilter | No | Explicit content filter setting | |
| defaultMessageNotifications | No | Default notification setting for new members |
TDQS
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.
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.
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.
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.
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.
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.
15 tool updates
v2.0.1- Changed
apply_template5 fields changed- added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / skipCategories / descriptionAdded value: +"Skip creating categories and channels" - added
Input schema / properties / skipRoles / descriptionAdded value: +"Skip creating roles" - added
Input schema / properties / templateId / descriptionAdded value: +"Template ID to apply (gaming, community, business, study-group)" - added
Input schema / properties / validate / descriptionAdded value: +"Validate the guild before applying"
- Changed
create_category8 fields changed- added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / name / descriptionAdded value: +"Name of the category (1-100 characters)" - added
Input schema / properties / permissionOverwrites / descriptionAdded value: +"Permission overwrites for roles/users. Use this to make the category private." - changed
Input schema / properties / permissionOverwrites / items / properties / allow / descriptionPrevious value: -"Permissions to allow"New value: +"Permission names to allow (SCREAMING_SNAKE_CASE)" - changed
Input schema / properties / permissionOverwrites / items / properties / deny / descriptionPrevious value: -"Permissions to deny"New value: +"Permission names to deny (SCREAMING_SNAKE_CASE)" - changed
Input schema / properties / permissionOverwrites / items / properties / id / descriptionPrevious value: -"Role ID or user ID"New value: +"Role ID or user ID this overwrite applies to" - changed
Input schema / properties / permissionOverwrites / items / properties / type / descriptionPrevious value: -"Whether this is a role or user override"New value: +"Whether id refers to a role or a member" - added
Input schema / properties / position / descriptionAdded value: +"Position of the category in the channel list"
- Changed
create_channel15 fields changed- added
Input schema / properties / bitrate / descriptionAdded value: +"Bitrate for voice channels (8000-384000)" - added
Input schema / properties / categoryId / descriptionAdded value: +"ID of the category to place this channel in" - added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / name / descriptionAdded value: +"Name of the channel (1-100 characters)" - added
Input schema / properties / nsfw / descriptionAdded value: +"Whether the channel is age-restricted" - added
Input schema / properties / permissionOverwrites / descriptionAdded value: +"Permission overwrites for roles/users." - changed
Input schema / properties / permissionOverwrites / items / properties / allow / descriptionPrevious value: -"Permissions to allow"New value: +"Permission names to allow (SCREAMING_SNAKE_CASE)" - changed
Input schema / properties / permissionOverwrites / items / properties / deny / descriptionPrevious value: -"Permissions to deny"New value: +"Permission names to deny (SCREAMING_SNAKE_CASE)" - changed
Input schema / properties / permissionOverwrites / items / properties / id / descriptionPrevious value: -"Role ID or user ID"New value: +"Role ID or user ID this overwrite applies to" - changed
Input schema / properties / permissionOverwrites / items / properties / type / descriptionPrevious value: -"Whether this is a role or user override"New value: +"Whether id refers to a role or a member" - added
Input schema / properties / position / descriptionAdded value: +"Position in the channel list" - added
Input schema / properties / slowmode / descriptionAdded value: +"Slowmode in seconds (0-21600)" - added
Input schema / properties / topic / descriptionAdded value: +"Channel topic (text channels, max 1024 chars)" - added
Input schema / properties / type / descriptionAdded value: +"Channel type (default: text)" - added
Input schema / properties / userLimit / descriptionAdded value: +"User limit for voice channels (0-99, 0 = unlimited)"
- Changed
create_role11 fields changed- added
Input schema / properties / color / descriptionAdded value: +"Role color as hex string (#FF0000) or integer (0-16777215)" - added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / hoist / descriptionAdded value: +"Display members with this role separately in the sidebar" - added
Input schema / properties / mentionable / descriptionAdded value: +"Allow anyone to @mention this role" - added
Input schema / properties / name / descriptionAdded value: +"Name of the role (1-100 characters)" - added
Input schema / properties / permissions / descriptionAdded 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." - removed
Input schema / properties / permissions / items / enumRemoved 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" -] - added
Input schema / properties / placementAdded 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" +} - added
Input schema / properties / position / descriptionAdded value: +"Raw Discord position (higher = more powerful). Overrides placement. Prefer placement instead." - changed
Input schema / properties / position / minimumPrevious value: -0New value: +1 - added
Input schema / properties / referenceRoleIdAdded value: +{ + "description": "Role ID to place the new role above/below (required when placement is \"above\" or \"below\").", + "type": "string" +}
- Changed
delete_channel2 fields changed- added
Input schema / properties / channelId / descriptionAdded value: +"ID of the channel to delete" - added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild."
- Changed
delete_role2 fields changed- added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / roleId / descriptionAdded value: +"ID of the role to delete"
- Changed
edit_channel16 fields changed- added
Input schema / properties / bitrate / descriptionAdded value: +"Bitrate for voice channels (8000-384000)" - added
Input schema / properties / categoryId / descriptionAdded value: +"Category ID to move this channel to (null to remove from category)" - added
Input schema / properties / channelId / descriptionAdded value: +"ID of the channel to edit" - added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / name / descriptionAdded value: +"New name for the channel" - added
Input schema / properties / nsfw / descriptionAdded value: +"Whether the channel is age-restricted" - added
Input schema / properties / permissionOverwrites / descriptionAdded value: +"Permission overwrites to apply. Merged by target unless replaceAllOverwrites is true." - changed
Input schema / properties / permissionOverwrites / items / properties / allow / descriptionPrevious value: -"Permissions to allow"New value: +"Permission names to allow (SCREAMING_SNAKE_CASE)" - changed
Input schema / properties / permissionOverwrites / items / properties / deny / descriptionPrevious value: -"Permissions to deny"New value: +"Permission names to deny (SCREAMING_SNAKE_CASE)" - changed
Input schema / properties / permissionOverwrites / items / properties / id / descriptionPrevious value: -"Role ID or user ID"New value: +"Role ID or user ID this overwrite applies to" - changed
Input schema / properties / permissionOverwrites / items / properties / type / descriptionPrevious value: -"Whether this is a role or user override"New value: +"Whether id refers to a role or a member" - added
Input schema / properties / position / descriptionAdded value: +"Position in the channel list" - added
Input schema / properties / replaceAllOverwritesAdded value: +{ + "default": false, + "description": "If true, replace the channel's entire overwrite set instead of merging by target.", + "type": "boolean" +} - added
Input schema / properties / slowmode / descriptionAdded value: +"Slowmode in seconds (0-21600)" - added
Input schema / properties / topic / descriptionAdded value: +"New topic (text channels only)" - added
Input schema / properties / userLimit / descriptionAdded value: +"User limit for voice channels (0-99)"
- Changed
edit_role10 fields changed- added
Input schema / properties / color / descriptionAdded value: +"New color as hex string or integer" - added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / hoist / descriptionAdded value: +"Display members with this role separately" - added
Input schema / properties / mentionable / descriptionAdded value: +"Allow anyone to @mention this role" - added
Input schema / properties / name / descriptionAdded value: +"New name for the role" - added
Input schema / properties / permissions / descriptionAdded 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." - removed
Input schema / properties / permissions / items / enumRemoved 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" -] - added
Input schema / properties / position / descriptionAdded value: +"New raw Discord position (higher = more powerful)." - changed
Input schema / properties / position / minimumPrevious value: -0New value: +1 - added
Input schema / properties / roleId / descriptionAdded value: +"ID of the role to edit"
- Added
list_roles - Changed
preview_template1 field changed- changed
Input schema / properties / templateId / descriptionPrevious value: -"Template ID to preview"New value: +"Template ID to preview (gaming, community, business, study-group)"
- Changed
reorder_roles6 fields changed- added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / orderedRoleIdsAdded 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" +} - added
Input schema / properties / rolePositions / descriptionAdded value: +"Advanced: explicit [{roleId, position}] with raw Discord positions (higher = more powerful). Provide this OR orderedRoleIds, not both." - changed
Input schema / properties / rolePositions / items / properties / position / minimumPrevious value: -0New value: +1 - added
Input schema / properties / rolePositions / minItemsAdded value: +1 - removed
Input schema / requiredRemoved value: -[ - "rolePositions" -]
- Changed
set_content_filter2 fields changed- added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / level / descriptionAdded value: +"Content filter level: disabled (no scanning), members_without_roles (scan messages from members without roles), all_members (scan all messages)"
- Changed
set_default_notifications2 fields changed- added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / setting / descriptionAdded value: +"Notification setting: all_messages (notify for all messages), only_mentions (notify only when mentioned)"
- Changed
set_verification_level2 fields changed- added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / level / descriptionAdded value: +"Verification level: none (unrestricted), low (verified email), medium (registered 5+ min), high (member 10+ min), very_high (verified phone)"
- Changed
update_server_settings7 fields changed- added
Input schema / properties / defaultMessageNotifications / descriptionAdded value: +"Default notification setting for new members" - added
Input schema / properties / description / descriptionAdded value: +"New server description (community servers, max 300 characters)" - changed
Input schema / properties / description / maxLengthPrevious value: -120New value: +300 - added
Input schema / properties / explicitContentFilter / descriptionAdded value: +"Explicit content filter setting" - added
Input schema / properties / guildId / descriptionAdded value: +"Guild ID or name. Defaults to the currently selected guild." - added
Input schema / properties / name / descriptionAdded value: +"New server name (2-100 characters)" - added
Input schema / properties / verificationLevel / descriptionAdded value: +"Verification level for new members"
18 tool updates
v2.0.0- First observed
apply_template - First observed
create_category - First observed
create_channel - First observed
create_role - First observed
delete_channel - First observed
delete_role - First observed
edit_channel - First observed
edit_role - First observed
get_guild_info - First observed
list_guilds - First observed
list_templates - First observed
preview_template - First observed
reorder_roles - First observed
select_guild - First observed
set_content_filter - First observed
set_default_notifications - First observed
set_verification_level - First observed
update_server_settings
TDQS
Scored across 19 tools
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.
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.
19 tools is well-scoped for a Discord server setup server. Each tool addresses a distinct aspect of server configuration without being excessive.
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
Related MCP Connectors
The Canva MCP server connects AI assistants (like Claude, ChatGPT, and Cursor) to Canva's API, enabling them to create and manage designs directly within chat conversations. Key capabilities include generating new designs from prompts, autofilling templates, searching and resizing existing designs, importing files from URLs, exporting designs as PDFs or images, and managing folders and comments without switching between tools.
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
LinkedIn outreach MCP server — 19 tools for AI agents to prospect, sequence, and manage contacts.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP 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.6124MIT
- AlicenseNot gradedqualityBmaintenanceProvides 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.378MIT
- FlicenseBqualityDmaintenanceEnables macOS automation through 45 AppleScript-powered tools for system control, app management, calendar, reminders, notifications, clipboard, and task scheduling.45-
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to manage a Discord server, including creating channels, categories, roles, setting permissions, and assigning roles through natural language commands.-