Discord MCP Server
Provides comprehensive tools for managing Discord servers, including guild settings, channels, messages, members, roles, permissions, forum channels, auto moderation, emojis, stickers, invites, webhooks, scheduled events, community features, onboarding, and welcome screen.
Click on "Install 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 MCP Serversend a message to #general saying 'Hello everyone!'"
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 MCP Server
An MCP (Model Context Protocol) server that enables LLMs to control Discord servers via a bot token. This server provides comprehensive Discord management tools including sending messages, managing members, roles, channels, permissions, and more.
Features
Guild/Server Management
discord_list_guilds- List all servers the bot has access todiscord_get_guild- Get detailed info about a specific serverdiscord_edit_guild- Edit server settings (name, verification level, system channels, etc.)discord_leave_guild- Leave a server
Channel Management
discord_list_channels- List channels in a server (filter by type)discord_get_channel- Get channel details (includes forum tags for forum channels)discord_create_channel- Create text/voice/forum channels and categoriesdiscord_edit_channel- Edit channel name, topic, position, category, forum tags, and morediscord_delete_channel- Delete a channel or category
Forum Channel Features
Create forum channels with
type: "forum"Set default reaction emoji, sort order, and layout
Manage forum tags (create, edit, delete)
Tags support custom emojis and moderation settings
Permission Management
discord_set_channel_permissions- Set permission overrides for roles/members on channelsdiscord_remove_channel_permissions- Remove permission overridesdiscord_get_channel_permissions- View all permission overrides on a channeldiscord_sync_channel_permissions- Sync channel permissions with parent category
Message Operations
discord_send_message- Send messages (with optional reply)discord_get_messages- Retrieve channel messages (with pagination)discord_edit_message- Edit bot's messagesdiscord_delete_message- Delete messagesdiscord_add_reaction- Add emoji reactionsdiscord_remove_reaction- Remove bot's reactionsdiscord_pin_message- Pin a messagediscord_unpin_message- Unpin a messagediscord_get_pinned_messages- Get all pinned messages
Member Management
discord_list_members- List server members (with pagination)discord_get_member- Get member detailsdiscord_kick_member- Kick a memberdiscord_ban_member- Ban a member (with message deletion option)discord_unban_member- Unban a userdiscord_set_nickname- Set/clear member nicknamediscord_move_member- Move member to a different voice channeldiscord_timeout_member- Timeout/mute a member (up to 28 days)
Role Management
discord_list_roles- List all server rolesdiscord_create_role- Create a new rolediscord_edit_role- Edit role name, color, permissions, and settingsdiscord_delete_role- Delete a rolediscord_add_role- Assign role to memberdiscord_remove_role- Remove role from memberdiscord_set_role_positions- Reorder role hierarchy
Server Administration
discord_list_bans- List all banned usersdiscord_prune_members- Remove inactive members (with dry-run option)discord_get_audit_log- View audit log entries
Community Features
discord_get_community_settings- View community settings (rules channel, features, etc.)discord_setup_community- Configure community channels (rules, updates, safety alerts)
Welcome Screen
discord_get_welcome_screen- Get welcome screen configurationdiscord_edit_welcome_screen- Edit welcome screen (description, channels, emojis)
Onboarding
discord_get_onboarding- Get onboarding configurationdiscord_edit_onboarding- Edit existing onboarding settingsdiscord_setup_onboarding- Setup onboarding from scratch (prompts, default channels, roles)
Auto Moderation
discord_list_automod_rules- List auto moderation rulesdiscord_get_automod_rule- Get details of an auto mod rulediscord_create_automod_rule- Create auto moderation rulediscord_edit_automod_rule- Edit auto moderation rulediscord_delete_automod_rule- Delete auto moderation rule
Emoji Management
discord_list_emojis- List custom emojisdiscord_create_emoji- Create emoji from image URLdiscord_delete_emoji- Delete a custom emoji
Sticker Management
discord_list_stickers- List custom stickersdiscord_delete_sticker- Delete a custom sticker
Invite Management
discord_list_invites- List active invitesdiscord_create_invite- Create channel invitediscord_delete_invite- Delete an invite
Webhook Management
discord_list_webhooks- List webhooks (guild or channel)discord_create_webhook- Create a webhookdiscord_edit_webhook- Edit webhook name or channeldiscord_delete_webhook- Delete a webhook
Scheduled Events
discord_list_events- List scheduled eventsdiscord_create_event- Create a scheduled event (stage, voice, or external)discord_delete_event- Delete a scheduled event
Related MCP server: Discord MCP
Setup
1. Create a Discord Bot
Go to the Discord Developer Portal
Click "New Application" and give it a name
Go to the "Bot" section and click "Add Bot"
Copy the bot token (keep this secret!)
Enable these Privileged Gateway Intents:
Server Members Intent
Message Content Intent
2. Invite the Bot to Your Server
Go to OAuth2 -> URL Generator
Select scopes:
bot,applications.commandsSelect bot permissions (choose based on features you need):
Core Permissions:
Manage Channels
Manage Roles
Manage Messages
Read Message History
Send Messages
Add Reactions
Member Management:
Kick Members
Ban Members
Manage Nicknames
Moderate Members (for timeouts)
Server Administration:
Manage Guild (for server settings)
View Audit Log
Manage Emojis and Stickers
Manage Webhooks
Manage Events
Create Instant Invite
Copy the generated URL and open it to invite the bot
3. Install the MCP Server
Option A: Install globally from npm
npm install -g @mahesvara/discord-mcpserverOption B: Run directly with npx (no install required)
npx @mahesvara/discord-mcpserverUsage
MCP Client Configuration
Add to your MCP client configuration (e.g., Claude Desktop or Claude Code):
Using globally installed package:
{
"mcpServers": {
"discord": {
"command": "discord-mcpserver",
"env": {
"DISCORD_BOT_TOKEN": "your_bot_token_here"
}
}
}
}Using npx (no install required):
{
"mcpServers": {
"discord": {
"command": "npx",
"args": ["-y", "@mahesvara/discord-mcpserver"],
"env": {
"DISCORD_BOT_TOKEN": "your_bot_token_here"
}
}
}
}Environment Variables
The server supports loading environment variables from a .env file in the current directory:
DISCORD_BOT_TOKEN=your_bot_token_here
TRANSPORT=http
PORT=3000
HOST=localhostVariable | Description | Default |
| Your Discord bot token (required) | - |
| Transport mode: |
|
| HTTP server port (when using http transport) |
|
| HTTP server host (use |
|
HTTP Transport
For remote access, run the server with HTTP transport enabled:
Linux/macOS:
DISCORD_BOT_TOKEN=your_token TRANSPORT=http PORT=3000 HOST=0.0.0.0 discord-mcpserverWindows (Command Prompt):
set DISCORD_BOT_TOKEN=your_token && set TRANSPORT=http && set PORT=3000 && set HOST=0.0.0.0 && discord-mcpserverWindows (PowerShell):
$env:DISCORD_BOT_TOKEN="your_token"; $env:TRANSPORT="http"; $env:PORT="3000"; $env:HOST="0.0.0.0"; discord-mcpserverOr use a .env file (works on all platforms):
discord-mcpserverThen configure your MCP client to connect via HTTP:
{
"mcpServers": {
"discord": {
"type": "http",
"url": "http://your-server-ip:3000/mcp"
}
}
}Tool Examples
Create a Forum Channel with Tags
{
"tool": "discord_create_channel",
"params": {
"guild_id": "1234567890123456789",
"name": "help-forum",
"type": "forum",
"topic": "Ask questions and get help",
"default_reaction_emoji": "✅",
"default_sort_order": "latest_activity",
"default_forum_layout": "list_view",
"available_tags": [
{ "name": "Solved", "emoji_name": "✅", "moderated": false },
{ "name": "Bug", "emoji_name": "🐛", "moderated": false },
{ "name": "Question", "emoji_name": "❓", "moderated": false },
{ "name": "Announcement", "emoji_name": "📢", "moderated": true }
]
}
}Setup Server Onboarding
{
"tool": "discord_setup_onboarding",
"params": {
"guild_id": "1234567890123456789",
"default_channel_ids": ["1111111111111111111"],
"prompts": [
{
"type": "multiple_choice",
"title": "What are you interested in?",
"single_select": false,
"required": true,
"options": [
{ "title": "Gaming", "emoji_name": "🎮", "role_ids": ["2222222222222222222"] },
{ "title": "Tech", "emoji_name": "💻", "role_ids": ["3333333333333333333"] }
]
}
]
}
}Configure Community Settings
{
"tool": "discord_setup_community",
"params": {
"guild_id": "1234567890123456789",
"rules_channel_id": "1111111111111111111",
"public_updates_channel_id": "2222222222222222222",
"description": "A friendly gaming community",
"preferred_locale": "en-US"
}
}Edit Welcome Screen
{
"tool": "discord_edit_welcome_screen",
"params": {
"guild_id": "1234567890123456789",
"enabled": true,
"description": "Welcome to our server!",
"welcome_channels": [
{ "channel_id": "1111111111111111111", "description": "Read the rules", "emoji_name": "📜" },
{ "channel_id": "2222222222222222222", "description": "Introduce yourself", "emoji_name": "👋" }
]
}
}Create a Category
{
"tool": "discord_create_channel",
"params": {
"guild_id": "1234567890123456789",
"name": "Bot Testing",
"type": "category"
}
}Create a Channel in a Category
{
"tool": "discord_create_channel",
"params": {
"guild_id": "1234567890123456789",
"name": "bot-commands",
"type": "text",
"topic": "Channel for bot interactions",
"parent_id": "CATEGORY_ID_HERE"
}
}Set Channel Permissions
{
"tool": "discord_set_channel_permissions",
"params": {
"channel_id": "1234567890123456789",
"target_id": "ROLE_ID_HERE",
"target_type": "role",
"allow": ["ViewChannel", "SendMessages", "ReadMessageHistory"],
"deny": ["CreatePublicThreads"]
}
}Common Permission Names
View & Access:
ViewChannel- See the channel
Messages:
SendMessages,ReadMessageHistory,ManageMessagesEmbedLinks,AttachFiles,AddReactionsUseExternalEmojis,UseExternalStickersMentionEveryone
Threads:
CreatePublicThreads,CreatePrivateThreadsSendMessagesInThreads,ManageThreads
Voice:
Connect,Speak,StreamMuteMembers,DeafenMembers,MoveMembersUseVAD,PrioritySpeaker
Management:
ManageChannels,ManageRoles,ManageWebhooks
Send a Message
{
"tool": "discord_send_message",
"params": {
"channel_id": "1234567890123456789",
"content": "Hello from the MCP server!"
}
}Assign a Role
{
"tool": "discord_add_role",
"params": {
"guild_id": "1234567890123456789",
"user_id": "9876543210987654321",
"role_id": "1111111111111111111"
}
}Response Formats
Most read operations support two response formats:
json (default): Structured data for programmatic processing
markdown: Human-readable formatted output
Error Handling
All tools return clear error messages with suggestions when operations fail:
Missing permissions
Invalid IDs (guild, channel, user, role, message)
Rate limiting
Network issues
Security Notes
Never commit your bot token - use environment variables
The bot can only operate in servers it's been invited to
Destructive operations (delete, kick, ban) are marked with
destructiveHint: trueAll inputs are validated with Zod schemas
Required Bot Permissions
Depending on which tools you use, your bot needs these permissions:
Tool Category | Required Permissions |
Messages | Send Messages, Read Message History, Manage Messages |
Channels | Manage Channels |
Permissions | Manage Roles (for channel permission overrides) |
Members | Kick Members, Ban Members, Manage Nicknames, Moderate Members |
Roles | Manage Roles |
Reactions | Add Reactions |
Server Settings | Manage Guild |
Emojis/Stickers | Manage Emojis and Stickers |
Invites | Create Instant Invite, Manage Guild |
Webhooks | Manage Webhooks |
Events | Manage Events |
Audit Log | View Audit Log |
Community/Onboarding | Manage Guild |
Tool Examples
Edit Role Permissions
{
"tool": "discord_edit_role",
"params": {
"guild_id": "1234567890123456789",
"role_id": "1111111111111111111",
"name": "Moderators",
"color": 3447003,
"permissions": ["KickMembers", "BanMembers", "ManageMessages", "ModerateMembers"]
}
}Reorder Role Hierarchy
{
"tool": "discord_set_role_positions",
"params": {
"guild_id": "1234567890123456789",
"positions": [
{ "role_id": "1111111111111111111", "position": 5 },
{ "role_id": "2222222222222222222", "position": 4 }
]
}
}Timeout a Member
{
"tool": "discord_timeout_member",
"params": {
"guild_id": "1234567890123456789",
"user_id": "9876543210987654321",
"duration_minutes": 60,
"reason": "Spamming in chat"
}
}Create an Invite
{
"tool": "discord_create_invite",
"params": {
"channel_id": "1234567890123456789",
"max_age": 86400,
"max_uses": 10,
"temporary": false
}
}Create a Scheduled Event
{
"tool": "discord_create_event",
"params": {
"guild_id": "1234567890123456789",
"name": "Community Game Night",
"description": "Join us for games!",
"scheduled_start_time": "2024-12-01T20:00:00Z",
"entity_type": "voice",
"channel_id": "1111111111111111111"
}
}Role Permission Names
When editing roles, use these permission names:
General:
Administrator- Full access (use with caution)ManageGuild,ManageRoles,ManageChannelsKickMembers,BanMembers,ModerateMembersViewAuditLog,ViewGuildInsights
Messages:
SendMessages,ManageMessages,ReadMessageHistoryEmbedLinks,AttachFiles,AddReactionsMentionEveryone,UseExternalEmojis
Voice:
Connect,Speak,StreamMuteMembers,DeafenMembers,MoveMembers
Other:
ManageWebhooks,ManageEmojisAndStickersManageEvents,CreateEvents
License
MIT
Available Tools
67 toolsdiscord_add_reactionAdd Reaction to MessageAIdempotent
Add an emoji reaction to a message.
Args:
channel_id (string): Discord channel ID
message_id (string): Message ID to react to
emoji (string): Emoji to react with (e.g., '👍' or custom emoji format)
Returns: Confirmation of reaction added
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | Yes | Emoji to react with (unicode emoji or custom emoji format) | |
| channel_id | Yes | Discord channel ID (snowflake) | |
| message_id | Yes | Discord message ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover idempotency and non-destructiveness. The description adds 'Returns: Confirmation of reaction added' but no further behavioral context beyond what annotations provide.
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 (3 lines), front-loaded with the purpose, and efficiently structured with Args and Returns sections. 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?
For a simple 3-parameter tool with no output schema, the description fully covers what the tool does, its inputs, and its output. It is complete for correct agent usage.
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 fully describes parameters. The description adds an emoji example and return type, but does not significantly enhance parameter meaning.
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 'Add an emoji reaction to a message' with a specific verb and resource. It distinguishes from siblings like discord_remove_reaction and discord_send_message.
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 does not explicitly state when to use this tool over alternatives. However, the purpose is clear from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_add_roleAdd Role to MemberAIdempotent
Add a role to a Discord member.
Args:
guild_id (string): Discord server/guild ID
user_id (string): Discord user ID
role_id (string): Discord role ID to add
Returns: Confirmation of role added
| Name | Required | Description | Default |
|---|---|---|---|
| role_id | Yes | Discord role ID (snowflake) | |
| user_id | Yes | Discord user ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readOnly (write), non-destructive, and idempotent. The description adds no behavioral context beyond 'Add', such as permission requirements or side effects. It does not contradict annotations.
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 extremely concise: two sentences, three bullet points, and a return note. Every sentence adds value with no redundancy, and the purpose 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 write operation with clear annotations and full schema coverage, the description is nearly complete. It lacks mention of error conditions or explicit prerequisites but covers the core behavior and parameters adequately.
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%, and the description simply restates the parameter names without adding meaning beyond the schema's existing 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 description 'Add a role to a Discord member' uses a specific verb ('Add') and resource ('role to a Discord member'), clearly distinguishing it from sibling tools like 'discord_remove_role' (removes) and 'discord_create_role' (creates).
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 explicit when-to-use or when-not-to-use guidance is provided. The description implies usage context but does not mention prerequisites (e.g., role must exist, member in guild) or alternative tools like 'discord_create_role'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_ban_memberBan Discord MemberBDestructive
Ban a member from a Discord server.
Args:
guild_id (string): Discord server/guild ID
user_id (string): Discord user ID to ban
reason (string, optional): Reason for ban (visible in audit log)
delete_message_days (number): Days of messages to delete (0-7, default: 0)
Returns: Confirmation of ban
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Reason for ban (visible in audit log) | |
| user_id | Yes | Discord user ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| delete_message_days | No | Number of days of messages to delete (0-7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and readOnlyHint=false. The description adds that the reason is visible in audit logs and delete_message_days controls message deletion. However, it fails to disclose irreversibility implications, permission requirements (e.g., 'Ban Members' permission), or error handling for already-banned users.
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 with a clear summary, argument list, and return value. No unnecessary repetition; well-structured for quick parsing.
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 tool with 4 parameters and no output schema, the description covers the basic action and parameters. It lacks details on error scenarios and permissions but is sufficient for typical use.
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 already documented. The description adds value by stating the default for delete_message_days as 0, which is not in the schema. Otherwise, it largely restates 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 description clearly states the tool bans a member from a Discord server. However, it does not differentiate from sibling tools like kick or timeout, missing an opportunity to distinguish 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 no guidance on when to use this tool versus alternatives such as discord_kick_member or discord_unban_member. No context on selection criteria or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_automod_ruleCreate Auto Moderation RuleA
Create a new auto moderation rule for a server.
Args:
guild_id (string): Discord server/guild ID
name (string): Rule name
event_type ('message_send'): Event that triggers the rule
trigger_type ('keyword' | 'spam' | 'keyword_preset' | 'mention_spam'): Trigger type
trigger_metadata (object, optional): Trigger configuration (keyword_filter, presets, etc.)
actions (array): Actions to take (block_message, send_alert_message, timeout)
enabled (boolean): Whether rule is enabled (default: true)
exempt_roles (array, optional): Role IDs exempt from this rule
exempt_channels (array, optional): Channel IDs exempt from this rule
Returns: Created rule details
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Rule name | |
| actions | Yes | Actions to take when rule is triggered | |
| enabled | No | Whether the rule is enabled | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| event_type | Yes | Event type that triggers the rule | |
| exempt_roles | No | Roles exempt from this rule | |
| trigger_type | Yes | Type of content that triggers the rule | |
| exempt_channels | No | Channels exempt from this rule | |
| trigger_metadata | No | Trigger configuration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description aligns with annotations (non-read-only, non-destructive). It notes return details but lacks permissions, side effects, or error conditions. Annotations supply behavioral safety hints.
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?
Well-structured with headings, Arg list, and Returns. Mostly concise, though the Arg list partially duplicates schema. First sentence is clear and 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?
Covers all inputs, but lacks output schema for return value structure and missing prerequisites like required permissions. Reasonably complete given complexity, but could be improved.
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 explains parameters. The description rephrases minimal context but adds little beyond defaults or optionality already in 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 verb 'Create' clearly states the action, and 'automod rule' specifies the resource. It distinguishes from sibling tools like discord_edit_automod_rule, discord_delete_automod_rule, etc.
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 explicit guidance on when to use vs alternatives (e.g., editing or listing rules). Usage is implied by the tool name and description, but no direct comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_channelCreate Discord ChannelA
Create a new channel or category in a Discord server.
Args:
guild_id (string): Discord server/guild ID
name (string): Channel name
type ('text' | 'voice' | 'category' | 'forum'): Channel type (default: 'text')
topic (string, optional): Channel topic (text/forum channels only)
parent_id (string, optional): Category ID to create channel under (not for categories)
nsfw (boolean, optional): Whether the channel is NSFW (text/forum channels only)
bitrate (number, optional): Bitrate for voice channels (8000-384000)
user_limit (number, optional): User limit for voice channels (0 = unlimited)
default_reaction_emoji (string, optional): Default emoji for forum posts (emoji char or custom ID)
default_sort_order ('latest_activity' | 'creation_date', optional): Sort order for forum posts
default_forum_layout ('not_set' | 'list_view' | 'gallery_view', optional): Forum layout
available_tags (array, optional): Tags for forum posts (max 20)
name (string): Tag name (max 20 chars)
moderated (boolean, optional): Only mods can apply this tag
emoji_name (string, optional): Unicode emoji (e.g., '🎮')
emoji_id (string, optional): Custom emoji ID
Returns: The created channel's details
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Channel name | |
| nsfw | No | Whether the channel is NSFW (text/forum channels only) | |
| type | No | Channel type: 'text', 'voice', 'category', or 'forum' | text |
| topic | No | Channel topic (text/forum channels only) | |
| bitrate | No | Bitrate for voice channels (8000-384000) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| parent_id | No | Category ID to create channel under (not for categories) | |
| user_limit | No | User limit for voice channels (0 = unlimited) | |
| available_tags | No | Available tags for forum posts (max 20 tags) | |
| default_sort_order | No | Default sort order for forum posts | |
| default_forum_layout | No | Default layout for forum channel | |
| default_reaction_emoji | No | Default reaction emoji for forum posts - use emoji character (e.g., '👍') or custom emoji ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint false) and no destructive or idempotent behavior. The description adds no additional behavioral context beyond what the annotations provide, such as permission requirements, rate limits, or error conditions (e.g., duplicate names).
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 well-structured with Args and Returns sections, making it easy to scan. However, it is verbose, listing all 12 parameters in detail when a shorter summary could suffice. Still, the structure earns a high score.
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 of 12 parameters (2 required) and no output schema, the description thoroughly documents each parameter's purpose, type, constraints, and defaults. It covers all necessary details for an agent to correctly invoke the tool, leaving no obvious 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%, meaning all parameters have schema descriptions. The description largely repeats this information with a structured Args list, adding marginal value like inline defaults and notes (e.g., 'not for categories' for parent_id). This provides some extra clarity but doesn't significantly surpass 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 explicitly states 'Create a new channel or category in a Discord server', clearly identifying the verb (create) and resource (channel/category). This distinguishes it from sibling tools like discord_edit_channel and discord_delete_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 provides no direct guidance on when to use this tool vs alternatives (e.g., when to create a category vs text channel, or when to use discord_edit_channel). The context is implied by the tool name and parameter types, but explicit usage instructions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_emojiCreate EmojiA
Create a custom emoji in a server.
Args:
guild_id (string): Discord server/guild ID
name (string): Emoji name (2-32 chars, alphanumeric and underscores)
image_url (string): URL of image (PNG, JPG, GIF under 256KB)
roles (string[], optional): Role IDs that can use this emoji
Returns: Created emoji details
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Emoji name (2-32 alphanumeric characters) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| image_url | Yes | URL of the image to use for the emoji |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is not read-only, not idempotent, and not destructive. The description adds return info but does not discuss permissions, rate limits, or edge cases. It adds some value beyond annotations by specifying image constraints (PNG, JPG, GIF, <256KB).
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 with separate Args and Returns sections. It is front-loaded with purpose and parameter details, but the extra `roles` param adds unnecessary length.
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 creation tool with 3 parameters, the description covers purpose, parameters, and returns. However, it lacks prerequisites (e.g., 'Manage Emoji' permission), error handling info, and uniqueness constraints for emoji names. Given no output schema, it could provide 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%, but the description adds an optional `roles` parameter not present in the schema, causing inconsistency. It does provide additional constraints for `image_url` (file type, size) not in schema, which is helpful. Overall, it adds some value but also confusion.
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 'Create a custom emoji in a server,' using a specific verb and resource. It distinguishes from sibling tools like `discord_add_reaction` (adds existing emoji) and `discord_delete_emoji` (deletes emoji).
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?
While no explicit alternatives are given, the purpose is clear among siblings that have different actions (add, delete, list). The description provides parameter context, but lacks explicit guidance on when to use vs. other emoji-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_eventCreate Scheduled EventB
Create a scheduled event in a server.
Args:
guild_id (string): Discord server/guild ID
name (string): Event name
description (string, optional): Event description
scheduled_start_time (string): ISO8601 timestamp for start
scheduled_end_time (string, optional): ISO8601 timestamp for end
entity_type ('stage' | 'voice' | 'external'): Type of event
channel_id (string, optional): Channel ID for stage/voice events
location (string, optional): Location for external events
Returns: Created event details
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Event name | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| channel_id | No | Channel ID for stage/voice events | |
| description | No | Event description | |
| entity_type | Yes | Event type: stage instance, voice channel, or external location | |
| entity_metadata | No | Metadata for external events (location) | |
| scheduled_end_time | No | ISO8601 timestamp for event end (required for external events) | |
| scheduled_start_time | Yes | ISO8601 timestamp for event start |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it's not read-only (readOnlyHint=false) and may have open-world side effects. The description discloses it creates an event but does not elaborate on permissions, rate limits, or failure behavior.
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 long due to parameter listing, but it is structured with Args and Returns sections. It front-loads the main action. However, it repeats schema information which could be more concise.
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 given, the description mentions 'Created event details' but not fields. There is inconsistency: description lists 'location' as a separate parameter, but schema nests it inside 'entity_metadata'. Does not explain that scheduled_end_time is required for external events (schema mentions it).
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 adds limited new meaning. It lists parameters with types and optionality, but essentially repeats schema info. Minor added value in clarifying entity_type enum and location field.
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 'Create a scheduled event in a server', specifying the action and resource. It distinguishes from sibling tools like discord_list_events (read) and discord_delete_event (delete).
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 explicit guidance on when to use this tool versus alternatives. No mention of prerequisites like required permissions or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_inviteCreate InviteA
Create an invite link for a channel.
Args:
channel_id (string): Discord channel ID
max_age (number): Duration in seconds (0 = never expires, max 604800 = 7 days)
max_uses (number): Max uses (0 = unlimited)
temporary (boolean): Kick members when they disconnect if not assigned a role
unique (boolean): Create new unique invite vs reuse existing
Returns: Created invite URL
| Name | Required | Description | Default |
|---|---|---|---|
| unique | No | Whether to create a unique invite | |
| max_age | No | Invite expiration in seconds (0 = never, max 604800 = 7 days) | |
| max_uses | No | Max uses (0 = unlimited) | |
| temporary | No | Whether membership is temporary | |
| channel_id | Yes | Discord channel ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description explains all parameters and return value, including behavior of temporary and unique. Annotations indicate no destructive or idempotent effects, which matches. Could mention rate limits or permission checks, but current detail is good.
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?
Concise and well-structured: one-line summary, then Args list, then Returns. No fluff, every sentence adds information.
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?
Covers all parameters and return value. Lacks error cases, rate limits, or permission requirements. Given no output schema, the return description is adequate. Slightly above average 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?
Schema has 100% description coverage, so baseline is 3. Description adds value by clarifying parameter behavior (e.g., 'Kick members when they disconnect' for temporary, 'reuse existing' for unique). Marginally above baseline.
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 'Create' and the resource 'invite link for a channel'. It is specific and distinguishes this tool from siblings like discord_delete_invite and discord_list_invites.
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 indicate prerequisites like permissions or when not to use it. Missing explicit when-to-use/not-use or sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_roleCreate Discord RoleA
Create a new role in a Discord server.
Args:
guild_id (string): Discord server/guild ID
name (string): Role name
color (number, optional): Role color as decimal integer (e.g., 16711680 for red)
mentionable (boolean): Whether the role can be mentioned (default: false)
hoist (boolean): Whether to display role members separately (default: false)
Returns: The created role's details
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Role name | |
| color | No | Role color as decimal (e.g., 16711680 for red) | |
| hoist | No | Whether to display role members separately | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| mentionable | No | Whether the role can be mentioned | |
| permissions | No | Array of permission names (e.g., ['SendMessages', 'ManageChannels']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate write operation (readOnlyHint=false) and non-destructive, which aligns with description. The description adds default values for mentionable and hoist (false) and states it returns role details, providing behavioral context beyond annotations.
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?
Extremely concise: a single line of purpose followed by a structured argument list. Every sentence adds value; no wasted words. Front-loaded with the action.
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 and no output schema, the description covers all parameters with defaults and return info. It lacks permission or error context, but is sufficient for a creation tool with openWorldHint=true.
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% (baseline 3). The description adds value by including defaults for mentionable and hoist, an example for color, and a clear mapping of args. It improves over the schema alone.
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 'Create a new role in a Discord server', using a specific verb and resource. It distinguishes itself from sibling tools like discord_edit_role and discord_delete_role by focusing on creation.
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 explicit guidance on when to use this tool versus alternatives like discord_edit_role. The purpose is implied from the name, but no when-not-to-use or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_webhookCreate WebhookB
Create a webhook in a channel.
Args:
channel_id (string): Discord channel ID
name (string): Webhook name
avatar_url (string, optional): Avatar image URL
Returns: Created webhook details including URL
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Webhook name | |
| avatar_url | No | URL of avatar image for the webhook | |
| channel_id | Yes | Discord channel ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-readOnly, non-idempotent write operation. The description adds no further behavioral context such as required permissions, rate limits, or side effects beyond stating it creates a webhook and returns details.
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 and well-structured with an args list and return statement. It efficiently conveys necessary information without verbosity.
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 covers the basics: parameters and return value. However, it lacks context about permissions, webhook limits, or typical use cases, which would be helpful given the presence of many sibling tools and no output schema.
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 detailed descriptions for all parameters. The description lists parameters but adds no additional meaning beyond what the schema provides, so 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 action ('Create'), resource ('webhook'), and scope ('in a channel'). It effectively distinguishes from sibling tools like discord_edit_webhook and discord_delete_webhook.
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., discord_create_channel for other creations), prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_automod_ruleDelete Auto Moderation RuleADestructive
Delete an auto moderation rule from a server.
Args:
guild_id (string): Discord server/guild ID
rule_id (string): Auto moderation rule ID to delete
Returns: Confirmation of deletion
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | Auto moderation rule ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate destructiveHint: true. The description adds that the tool returns a 'Confirmation of deletion', but does not elaborate on irreversible consequences or permission requirements. It adds only minimal behavioral context beyond the annotations.
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 extremely concise: one purpose sentence, an args list, and a returns line. It is front-loaded with the purpose and contains no extraneous 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?
For a simple destructive action, the description covers the core operation and return value. However, it lacks context about required permissions, error handling, or how the confirmation is structured. Still, it is largely sufficient given the annotations that already signal destructive behavior.
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 covers both parameters with descriptions, patterns, and length constraints (100% coverage). The description merely repeats the same information without adding new semantics or examples, so it meets the baseline but does not improve clarity.
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 'Delete an auto moderation rule from a server', specifying the action (delete) and the resource (auto moderation rule). It effectively distinguishes this tool from sibling tools like create, edit, get, and list.
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, no prerequisites (e.g., required permissions), and no conditions for use. It only states the action and arguments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_channelDelete Discord ChannelADestructive
Delete a channel from a Discord server. This action is permanent!
Args:
channel_id (string): Discord channel ID to delete
Returns: Confirmation of deletion
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Discord channel ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds the warning 'This action is permanent!' and mentions return confirmation, which reinforces but does not significantly extend the behavioral information provided by annotations.
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 extremely concise with two clear sections: a brief statement of action and permanence, followed by structured Args/Returns. Every sentence adds value with no redundancy.
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 destructive tool with one parameter and no output schema, the description fully covers what the tool does, its key behavioral trait (permanence), and the required input. No missing information for the agent to use it 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?
The schema covers the single parameter with 100% coverage including pattern and description. The description merely restates the parameter name and type without adding new semantic meaning beyond what the schema already provides.
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 'Delete' and resource 'channel', matching the tool name. It distinguishes from sibling tools like discord_edit_channel and discord_create_channel by explicitly stating 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?
No guidance on when to use this tool versus alternatives such as editing, archiving, or other channel operations. The only context is a warning about permanence, but no usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_emojiDelete EmojiADestructiveIdempotent
Delete a custom emoji from a server.
Args:
guild_id (string): Discord server/guild ID
emoji_id (string): Discord emoji ID
Returns: Confirmation of deletion
| Name | Required | Description | Default |
|---|---|---|---|
| emoji_id | Yes | Discord emoji ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. Description adds 'confirmation of deletion' but lacks details like permission requirements or error handling, offering minimal extra value beyond annotations.
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?
Description is short and to the point, with an args/returns structure. However, the args section largely duplicates schema info, slightly reducing 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?
With full schema and annotations, the description is functionally sufficient for a simple tool, but lacks additional context like required permissions or effects on non-existent emojis.
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 detailed param descriptions. The description just lists param names without adding new meaning, meeting the baseline for full schema coverage.
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 deletes a custom emoji from a server, using a specific verb and resource. It effectively distinguishes from sibling tools like discord_create_emoji and discord_list_emojis.
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 use when deletion is needed but provides no explicit guidance on when to use vs alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_eventDelete Scheduled EventADestructiveIdempotent
Delete a scheduled event from a server.
Args:
guild_id (string): Discord server/guild ID
event_id (string): Discord scheduled event ID
Returns: Confirmation of deletion
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Discord scheduled event ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description says 'Delete' and 'Returns confirmation', which aligns with annotations but adds no additional behavioral context beyond what is already indicated.
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 extremely concise, with no wasted words. It front-loads the purpose and lists arguments clearly.
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 tool with 2 required parameters, no output schema, and full annotations, the description covers the essential information: what it does, required args, and return type.
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 both parameters. The description's Args list merely repeats the schema's descriptions without adding new meaning or format details.
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 title 'Delete Scheduled Event' and description 'Delete a scheduled event from a server.' clearly state the action and resource. It distinguishes from sibling tools like discord_create_event and discord_list_events.
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 an Args list and Return info, but no explicit guidance on when to use vs alternatives or when not to use. The context is clear but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_inviteDelete InviteADestructiveIdempotent
Delete an invite by its code.
Args:
invite_code (string): The invite code to delete
Returns: Confirmation of deletion
| Name | Required | Description | Default |
|---|---|---|---|
| invite_code | Yes | Invite code to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive (destructiveHint=true) and idempotent (idempotentHint=true) behavior. The description adds that a confirmation is returned but offers no additional behavioral context (e.g., that deleted invites become invalid immediately).
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 short and front-loaded with the purpose. The 'Args' and 'Returns' sections are clear but a bit verbose for a single parameter; could be tighter.
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, one-parameter, destructive tool with good annotation coverage, the description is adequate but lacks specifics about the return format or what 'Confirmation of deletion' entails.
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?
With 100% schema description coverage, the description merely restates the invite_code parameter and its purpose, adding no extra meaning 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 action ('Delete') and the resource ('invite by its code'), distinguishing it from sibling tools like discord_create_invite or discord_list_invites.
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 deleting invites but provides no context on when to use this tool versus alternatives like revoking invite permissions or pruning members.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_messageDelete Discord MessageADestructive
Delete a message from a Discord channel.
Args:
channel_id (string): Discord channel ID
message_id (string): Message ID to delete
Returns: Confirmation of deletion
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Discord channel ID (snowflake) | |
| message_id | Yes | Discord message ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (destructiveHint=true) already indicate the tool modifies state. The description adds a return type ('Confirmation of deletion') but omits details like rate limits, idempotency, or behavior on missing messages. No contradiction with annotations.
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 extremely concise (two sentences plus bulleted args and return). Every line serves a purpose: purpose, arguments, and return value. No fluff or redundancy.
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 deletion tool with comprehensive schema and annotations, the description covers the core function, parameters, and return. Missing edge case handling (e.g., permissions) is acceptable given the tool's simplicity.
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 detailed parameter descriptions (snowflake pattern, length constraints). The description restates these concisely ('Discord channel ID', 'Message ID to delete') but adds no new semantic information 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 'Delete a message from a Discord channel' using a specific verb and resource. Among sibling tools with 'delete_' prefix, it uniquely targets messages, distinguishing itself from delete_channel, delete_role, etc.
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, no prerequisites (e.g., permissions needed), and no exclusions. The agent must infer usage solely from the name and destructiveHint annotation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_roleDelete Discord RoleADestructive
Delete a role from a Discord server. This action is permanent!
Args:
guild_id (string): Discord server/guild ID
role_id (string): Discord role ID to delete
Returns: Confirmation of deletion
| Name | Required | Description | Default |
|---|---|---|---|
| role_id | Yes | Discord role ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds 'This action is permanent!' which reinforces the destructive nature but does not elaborate on specific behavioral details like permission requirements or downstream effects on 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 concise with three clear sections (action, args, returns). No unnecessary words, but the args section could be integrated more succinctly with the schema.
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 deletion tool with full schema coverage and annotations, the description covers the core action, permanence, parameters, and return type. It lacks potential error conditions or prerequisite handling, but is largely complete for typical use.
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 detailed parameter descriptions (e.g., snowflake patterns). The description repeats parameter names and types but adds no new meaning 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 'Delete a role from a Discord server' with a specific verb and resource, and emphasizes permanence. It distinguishes itself from sibling tools like discord_create_role and discord_edit_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?
The description provides no guidance on when to use this tool, preconditions (e.g., permissions), or when not to use it. It lacks explicit context for an agent to decide between this and other role-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_stickerDelete StickerADestructiveIdempotent
Delete a custom sticker from a server.
Args:
guild_id (string): Discord server/guild ID
sticker_id (string): Discord sticker ID
Returns: Confirmation of deletion
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| sticker_id | Yes | Discord sticker ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds return info ('Confirmation of deletion'), but no additional behavioral context beyond what annotations provide.
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?
Extremely concise: one sentence for purpose, followed by structured Args and Returns sections. 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?
For a simple delete tool with two well-documented parameters and no output schema, the description adequately covers purpose, inputs, and return value.
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 detailed parameter descriptions. The description repeats parameter names but adds no new meaning 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 'Delete' and resource 'custom sticker from a server', distinguishing it from other delete tools for different resources like channels or emojis.
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 alternatives (e.g., discord_delete_emoji). The description is purely functional without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_webhookDelete WebhookADestructiveIdempotent
Delete a webhook.
Args:
webhook_id (string): Discord webhook ID
Returns: Confirmation of deletion
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | Discord webhook ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions a 'confirmation of deletion' return value, adding some behavioral context. However, annotations already indicate destructive and idempotent hints; the description does not elaborate on side effects or authorization beyond schema defaults.
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?
Extremely concise: two short paragraphs with clear structure. The purpose is stated first, followed by parameters and return value. No unnecessary 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?
For a simple delete operation with only one parameter and no output schema, the description fully covers what the tool does and what it returns. It is complete given the tool's simplicity.
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 provides full coverage of webhook_id with pattern and description. The description merely restates 'Discord webhook ID' without adding new semantic information, so baseline score applies.
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 ('Delete a webhook') using a specific verb and resource. It distinguishes itself from sibling tools like 'create', 'edit', and 'list' webhooks.
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 explicit guidance on when to use this tool versus alternatives like editing or creating a webhook. While the delete context is straightforward, the description lacks criteria or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_edit_automod_ruleEdit Auto Moderation RuleBIdempotent
Edit an existing auto moderation rule.
Args:
guild_id (string): Discord server/guild ID
rule_id (string): Auto moderation rule ID
name (string, optional): New rule name
trigger_metadata (object, optional): New trigger configuration
actions (array, optional): New actions
enabled (boolean, optional): Enable/disable rule
exempt_roles (array, optional): New exempt roles
exempt_channels (array, optional): New exempt channels
Returns: Updated rule details
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| actions | No | ||
| enabled | No | ||
| rule_id | Yes | Auto moderation rule ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| event_type | No | ||
| exempt_roles | No | ||
| exempt_channels | No | ||
| trigger_metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent and non-destructive, but description lacks additional behavioral context like permissions or failure modes.
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?
Structured with Args and Returns, but could be more concise; the parameter list is somewhat lengthy for a description.
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 and vague return statement; missing preconditions or error handling; complexity suggests more detail needed.
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 low (22%), but description enumerates all parameters with basic types, compensating partially; nested object schemas are in 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 it edits an existing auto moderation rule, distinguishing it from sibling create and delete tools.
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 explicit guidance on when to use vs alternatives, but context implies use when rule exists and needs modification; sibling tools for create/delete/list are available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_edit_channelEdit Discord ChannelAIdempotent
Edit a channel's properties including name, topic, category, position, and more.
Args:
channel_id (string): Discord channel ID
name (string, optional): New channel name
topic (string, optional): New channel topic
parent_id (string, optional): Move to a different category (or 'none' to remove from category)
position (number, optional): New position of the channel
nsfw (boolean, optional): Whether the channel is NSFW
bitrate (number, optional): Bitrate for voice channels (8000-384000)
user_limit (number, optional): User limit for voice channels
default_reaction_emoji (string, optional): Default emoji for forum posts (emoji char or custom ID, 'none' to remove)
default_sort_order ('latest_activity' | 'creation_date', optional): Sort order for forum posts
default_forum_layout ('not_set' | 'list_view' | 'gallery_view', optional): Forum layout
available_tags (array, optional): Tags for forum posts (max 20) WARNING: This REPLACES all existing tags! To keep existing tags, first use discord_get_channel to get current tags with their IDs, then include them in this array with their id field.
id (string): Tag ID - REQUIRED to preserve existing tags, omit only for new tags
name (string): Tag name (max 20 chars)
moderated (boolean, optional): Only mods can apply this tag
emoji_name (string, optional): Unicode emoji (e.g., '🎮')
emoji_id (string, optional): Custom emoji ID
Returns: Updated channel details
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New channel name | |
| nsfw | No | Whether the channel is NSFW | |
| topic | No | New channel topic | |
| bitrate | No | Bitrate for voice channels | |
| position | No | New position of the channel | |
| parent_id | No | Move channel to a different category (use 'none' to remove from category) | |
| channel_id | Yes | Discord channel ID (snowflake) | |
| user_limit | No | User limit for voice channels | |
| available_tags | No | Available tags for forum posts (max 20 tags) | |
| default_sort_order | No | Default sort order for forum posts | |
| default_forum_layout | No | Default layout for forum channel | |
| default_reaction_emoji | No | Default reaction emoji for forum posts - use emoji character (e.g., '👍') or custom emoji ID, use 'none' to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true (repeatable) and destructiveHint=false, which the description implicitly supports. It adds critical behavioral context: 'WARNING: This REPLACES all existing tags! To keep existing tags, first use discord_get_channel...' This disclosure goes beyond the schema and annotations, though other side effects (e.g., permission requirements, channel type constraints) are not mentioned.
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 well-structured with clear 'Args' and 'Returns' sections. The first sentence establishes purpose immediately. While the available_tags section is verbose, it is justified given the complexity of that parameter. Overall, it is appropriately sized and 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?
The description adequately covers the tool's behavior given the rich schema (100% parameter coverage) and annotations. However, without an output schema, the return value is vaguely described as 'Updated channel details.' It lacks guidance on which parameters apply to which channel types (e.g., bitrate only for voice) and does not mention error handling or validation constraints beyond schema.
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 clear descriptions, so baseline is 3. The description adds substantial value beyond the schema by explaining nuanced usage, such as 'use 'none' to remove' on parent_id and default_reaction_emoji, and the detailed warning about tag replacement with sub-property explanations. This compensates for the baseline.
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 'Edit a channel's properties including name, topic, category, position, and more.' This uses a specific verb ('Edit') and resource ('channel's properties'), and lists concrete examples. It differentiates from sibling edit tools like discord_edit_message or discord_edit_role by focusing on channel properties.
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 only lists parameters but provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention situations where editing channel properties is appropriate versus using other tools like discord_set_channel_permissions or discord_move_member. No explicit when/when-not reasoning is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_edit_guildEdit Discord ServerAIdempotent
Edit server settings like name, verification level, and system channel.
Args:
guild_id (string): Discord server/guild ID
name (string, optional): New server name
verification_level (string, optional): 'none', 'low', 'medium', 'high', 'very_high'
default_notifications (string, optional): 'all_messages' or 'only_mentions'
afk_channel_id (string, optional): AFK voice channel ID
afk_timeout (number, optional): AFK timeout in seconds
system_channel_id (string, optional): System messages channel
system_channel_flags (object, optional): System channel behavior
Returns: Updated server details
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New server name | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| afk_timeout | No | AFK timeout in seconds (60, 300, 900, 1800, 3600) | |
| afk_channel_id | No | AFK voice channel ID | |
| system_channel_id | No | System messages channel ID | |
| verification_level | No | Verification level required for members | |
| system_channel_flags | No | System channel behavior flags | |
| default_notifications | No | Default notification settings for new members |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent, write, and non-destructive behavior. The description adds that it returns updated server details but lacks information about required permissions, partial update behavior, or effects on unmentioned settings.
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 initial sentence is concise, but the arg list duplicates the input schema, making it longer than necessary. Could be more efficient by directing users to the schema for parameter details.
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 tool with 8 parameters, a nested object, and no output schema, the description covers basic purpose and return type but lacks details on validation, partial updates, and response structure. Adequate but not comprehensive.
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 fully describes each parameter. The description repeats parameter names and types but does not add meaningful semantic details beyond what the schema provides.
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 'Edit server settings' with verb and resource, and lists example fields (name, verification level, system channel). Distinguishes from sibling tools like discord_edit_channel and discord_edit_role, which edit different resources.
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 editing guild settings but does not explicitly state when to use this tool versus alternatives or provide exclusions. Context from sibling names helps, but no direct guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_edit_messageEdit Discord MessageAIdempotent
Edit a message sent by the bot.
Args:
channel_id (string): Discord channel ID
message_id (string): Message ID to edit
content (string): New message content (max 2000 characters)
Returns: Confirmation of edit
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | New message content (max 2000 characters) | |
| channel_id | Yes | Discord channel ID (snowflake) | |
| message_id | Yes | Discord message ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds no further behavioral details (e.g., whether content is fully replaced or appended). It does not contradict annotations.
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 brief and well-structured, with a clear single sentence followed by Args and Returns. No unnecessary information, though the Args list is redundant with the schema.
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, the Returns line provides minimal confirmation but lacks error handling or prerequisites (e.g., message must be from bot). Adequate for a simple tool but leaves 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% with descriptions for all parameters. The description repeats the content max length but adds no new semantics beyond the 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?
The description clearly states 'Edit a message sent by the bot', specifying the action and resource. The title confirms the purpose, and it distinguishes from sibling tools like discord_send_message and discord_delete_message.
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 the tool only edits bot-sent messages but does not explicitly state when to use it versus alternatives (e.g., sending a new message or deleting). No direct comparisons or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_edit_onboardingEdit Server OnboardingAIdempotent
Edit the onboarding configuration for a server.
Configure prompts/questions that new members answer to customize their server experience. Each prompt can assign roles or show channels based on member selections.
Args:
guild_id (string): Discord server/guild ID
prompts (array, optional): Onboarding prompts with options
default_channel_ids (array, optional): Channels shown to all new members
enabled (boolean, optional): Enable/disable onboarding
mode ('onboarding_default' | 'onboarding_advanced', optional): Onboarding mode
Returns: Updated onboarding configuration
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Onboarding mode | |
| enabled | No | Whether onboarding is enabled | |
| prompts | No | Onboarding prompts/questions | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| default_channel_ids | No | Channels shown to new members by default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive, idempotent write operation. The description adds context about returning updated configuration and the purpose of prompts. No contradictions or missing behavioral traits beyond annotations.
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 compact (approx. 100 words), front-loaded with purpose, then explanatory sentences, then bulleted args, then return statement. Every sentence adds value with no redundancy.
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 mentions the return type. It covers the main aspects of the tool, though it could briefly note that existing prompts require IDs for updates (covered in schema). Overall, it is sufficiently complete for a tool with rich schema annotations.
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 detailed descriptions. The description provides a high-level summary of parameters but does not add significant meaning beyond what the schema already 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 tool name and description clearly state it edits server onboarding. It explains what onboarding entails (prompts/questions, role/channel assignment) and distinguishes from sibling tools like discord_get_onboarding and discord_setup_onboarding.
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 editing existing onboarding but does not explicitly state when to use this versus alternatives (e.g., discord_setup_onboarding for initial setup) or provide conditions like requiring existing onboarding configuration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_edit_roleEdit Discord RoleAIdempotent
Edit a role's properties including name, color, and permissions.
Common permission names:
Admin: Administrator (grants all permissions)
General: ManageGuild, ManageRoles, ManageChannels, KickMembers, BanMembers, ModerateMembers
Messages: SendMessages, ManageMessages, EmbedLinks, AttachFiles, ReadMessageHistory, MentionEveryone
Voice: Connect, Speak, MuteMembers, DeafenMembers, MoveMembers, Stream
Other: ManageEmojisAndStickers, ManageWebhooks, ManageEvents, ViewAuditLog
Args:
guild_id (string): Discord server/guild ID
role_id (string): Discord role ID to edit
name (string, optional): New role name
color (number, optional): Role color as decimal integer (e.g., 16711680 for red)
mentionable (boolean, optional): Whether the role can be mentioned
hoist (boolean, optional): Whether to display role members separately
permissions (string[], optional): Permissions to grant (replaces existing). Examples: ['SendMessages', 'ViewChannel']
Returns: Updated role details
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New role name | |
| color | No | New role color as decimal | |
| hoist | No | Whether to display role members separately | |
| role_id | Yes | Discord role ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| mentionable | No | Whether the role can be mentioned | |
| permissions | No | New permission names array |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that permissions replace existing values and returns updated role details. Annotations already indicate idempotence and non-destructiveness, and the description adds context about permission replacement. No contradictions with annotations.
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 well-structured: purpose first, then a helpful permission reference, then arg list. It is front-loaded but could be slightly more concise by reducing the permission list or integrating arg descriptions more succinctly.
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 7 parameters (2 required), no output schema, and good annotations, the description covers all parameters and notes the return type. It adequately informs usage for a mutation tool, though it lacks mention of error cases or validation behavior.
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 listing common permission names, explaining color format with an example decimal, and providing permission examples. This goes beyond what the schema provides.
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 tool edits a role's properties (name, color, permissions). The verb 'Edit' and resource 'role' are specific. However, it does not differentiate from sibling tools like discord_create_role or discord_edit_channel, though the name itself provides clarity.
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?
There is no guidance on when to use this tool vs alternatives such as discord_create_role or discord_set_role_positions. No prerequisites, context, or when-not-to-use information is provided, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_edit_webhookEdit WebhookAIdempotent
Edit an existing webhook.
Args:
webhook_id (string): Discord webhook ID
name (string, optional): New webhook name
channel_id (string, optional): Move webhook to different channel
Returns: Updated webhook details
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New webhook name | |
| channel_id | No | Move webhook to a different channel | |
| webhook_id | Yes | Discord webhook ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey idempotentHint=true, readOnlyHint=false, destructiveHint=false. The description adds that it returns 'Updated webhook details', but otherwise does not elaborate on side effects or permissions. No contradiction with annotations.
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 very concise: one sentence for purpose, a clean args list, and a returns line. No superfluous information.
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 covers the return value, and the schema covers all parameters. Given the tool's simplicity and the presence of annotations, little else is needed. Minor gaps: no mention of error cases or permission requirements, but these are not critical.
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 complete descriptions for all three parameters. The description merely repeats the parameter names and purposes without adding further semantics or constraints.
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 explicitly states 'Edit an existing webhook', clearly specifying the verb (edit) and resource (webhook). Among sibling tools (create, delete, list), this uniquely identifies the tool's function.
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., discord_create_webhook, discord_edit_channel). No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_edit_welcome_screenEdit Welcome ScreenAIdempotent
Edit the welcome screen configuration for a server.
Requires the server to have Community features enabled and bot must have MANAGE_GUILD permission.
Args:
guild_id (string): Discord server/guild ID
enabled (boolean, optional): Enable/disable the welcome screen
description (string, optional): Server description (max 140 chars)
welcome_channels (array, optional): Up to 5 channels to show (channel_id, description, emoji)
Returns: Updated welcome screen settings
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | No | Whether the welcome screen is enabled | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| description | No | The server description shown in the welcome screen (max 140 chars) | |
| welcome_channels | No | Welcome screen channels (max 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only, idempotent, open world, and non-destructive. The description adds meaningful context such as required permissions and prerequisite (Community features), plus return type ('Updated welcome screen settings'), which goes beyond annotations.
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 well-structured with a clear main sentence, a prerequisite line, a bulleted Args list, and a Returns line. It is mostly concise but the Args section repeats schema information, making it slightly longer than necessary.
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 complexity (4 parameters, 1 required), no output schema, and moderate annotations, the description covers prerequisites, permissions, parameter details, and return value. It is complete 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?
Schema coverage is 100%, so the description does not need to add much. The description restates parameter info in a structured list, adding minor formatting details but essentially duplicating the schema. This is adequate but not extra valuable.
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 'Edit the welcome screen configuration for a server.' This is a specific verb-resource combination and distinguishes from sibling tools like discord_get_welcome_screen and other edit tools.
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 usage context: requires Community features and MANAGE_GUILD permission. However, it does not mention when not to use it or suggest alternatives, though the sibling list includes get and other edit tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_audit_logGet Audit LogARead-onlyIdempotent
Get the audit log for a server. Shows who did what actions.
Common action types: 1=GuildUpdate, 10=ChannelCreate, 11=ChannelUpdate, 12=ChannelDelete, 20=MemberKick, 22=MemberBanAdd, 23=MemberBanRemove, 24=MemberUpdate, 25=MemberRoleUpdate, 30=RoleCreate, 31=RoleUpdate, 32=RoleDelete, 72=MessageDelete, 73=MessageBulkDelete
Args:
guild_id (string): Discord server/guild ID
user_id (string, optional): Filter by user who performed action
action_type (number, optional): Filter by action type
limit (number): Number of entries (1-100, default 20)
response_format ('json' | 'markdown'): Output format
Returns: Audit log entries with action, user, target, and changes
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of entries to retrieve | |
| user_id | No | Filter by user who performed actions | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| action_type | No | Filter by action type (Discord audit log action type number) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds a list of common action types and general content, but does not disclose additional behavioral traits like data freshness, rate limits, or permission requirements.
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 and front-loaded with purpose. The list of action types is useful but somewhat lengthy; a summary or reference could improve 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, the description partially covers return data (action, user, target, changes) but omits pagination, permissions, and rate limit context. Annotations help but more detail would be beneficial.
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 covers all parameters with descriptions (coverage 100%). The description adds value by listing common action type codes, but there is a contradiction: description says limit default is 20, while schema says 50. This inconsistency reduces clarity.
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 tool retrieves audit logs for a server with the verb 'Get' and resource 'audit log'. It uniquely identifies this functionality among siblings, as no other sibling tool focuses on audit logs.
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 viewing audit logs but lacks explicit guidance on when to use this tool versus alternatives, such as when to filter by user/action or how it differs from other log retrieval methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_automod_ruleGet Auto Moderation RuleARead-onlyIdempotent
Get details of a specific auto moderation rule.
Args:
guild_id (string): Discord server/guild ID
rule_id (string): Auto moderation rule ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: Auto moderation rule details
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | Auto moderation rule ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds only 'Get details' which aligns but provides no additional behavioral context (e.g., auth needs, rate limits, or data scope).
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?
Concise docstring format with Args/Returns. First sentence is clear. Could be slightly more concise by omitting docstring style, but overall 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?
Given simple get operation, high schema coverage, and complete annotations, description covers essential usage. No output schema, but return type is implied. Adequately 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 covers 100% of parameters with descriptions. Description repeats parameter info and notes default format, which is already in schema. No significant new semantics beyond 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?
Clearly states 'Get details of a specific auto moderation rule.' The verb 'get' and resource 'automod rule' are specific. The 'specific' qualifier distinguishes it from list, create, edit, and delete siblings.
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?
Implied usage (retrieve a single rule by ID) but no explicit guidance on when to use versus discord_list_automod_rules or other siblings. No exclusion or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_channelGet Discord Channel InfoARead-onlyIdempotent
Get detailed information about a specific channel.
Args:
channel_id (string): Discord channel ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: Channel details including name, type, topic, and category
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Discord channel ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, establishing safety. The description adds no additional behavioral context beyond what schema provides, but does not contradict annotations.
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?
Description is extremely concise: one main sentence, a list of arguments, and a returns note. No unnecessary words or redundancy, earning its place efficiently.
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 read-only tool with well-annotated safety and no output schema, the description covers the main purpose, parameters, and return format adequately. However, it omits error handling or prerequisites.
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 schema descriptions cover both parameters thoroughly. The description repeats this information almost verbatim, adding no new semantic value.
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 retrieves detailed information about a specific channel, using the verb 'Get' and naming the resource 'channel'. It distinguishes well from siblings like discord_get_channel_permissions and discord_get_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?
No guidance on when to use this tool versus alternatives such as discord_get_channel_permissions or discord_get_messages. The description does not mention exclusions or preferred contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_channel_permissionsGet Channel PermissionsARead-onlyIdempotent
Get all permission overrides for a channel.
Args:
channel_id (string): Discord channel ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: List of permission overrides with allow/deny for each role/member
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Discord channel ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=true), stating it retrieves permission overrides. It adds the return type (list of overrides with allow/deny per role/member), which provides useful context beyond annotations. No contradiction.
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 and well-structured: a clear purpose sentence followed by Args and Returns sections. Every sentence adds value, and there is no extraneous information.
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 read tool with no output schema, the description adequately explains the return value (list of permission overrides). Annotations cover behavioral safety, and parameters are fully covered by schema and description. The tool's context is 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 coverage is 100%, so both parameters are documented in the schema. The description mentions both parameters and adds that response_format defaults to 'json', but the schema already includes a default value, so the added value is minimal. Baseline 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 'Get all permission overrides for a channel.' The verb 'get' and resource 'permission overrides for a channel' are specific, distinguishing it from sibling tools like discord_set_channel_permissions and discord_remove_channel_permissions.
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 does not explicitly state when to use this tool versus alternatives. Usage is implied by the verb 'get', but no direct guidance on when not to use or references to sibling tools are provided. The sibling list exists but is not referenced in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_community_settingsGet Community SettingsBRead-onlyIdempotent
Get the community settings for a server.
Shows rules channel, updates channel, and other community-related settings.
Args:
guild_id (string): Discord server/guild ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: Community settings including channels and features
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description confirms it's a read operation and lists return items, but does not disclose permission requirements, rate limits, or behavior when guild is not a community.
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?
Concise and well-structured: first line states purpose, then a bullet list of examples/args, and a return summary. No fluff or redundant information.
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, so description must detail return structure. It only vaguely says 'community settings including channels and features' without specifying field names or types. Missing error cases (e.g., guild not found, community not enabled).
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 descriptions cover both parameters (guild_id and response_format) completely. The function description adds the default value for response_format and clarifies the purpose of markdown vs json, providing marginal extra value.
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 name and description clearly state this tool retrieves community settings for a server, specifying it shows rules channel, updates channel, and other community-related settings. It is distinct from siblings like discord_get_guild or discord_get_onboarding.
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 explicit guidance on when to use this over other guild-related tools such as discord_get_guild, discord_get_onboarding, or discord_get_welcome_screen. No prerequisites or limitations are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_guildGet Discord Server InfoARead-onlyIdempotent
Get detailed information about a specific Discord server.
Args:
guild_id (string): Discord server/guild ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: Server details including name, member count, owner, and icon
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) already convey safety. Description adds value by listing return fields (name, member count, owner, icon). No behavioral contradictions or missing critical details.
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?
Extremely concise: one sentence for purpose, bullet list for args and returns. Front-loaded with the primary action. No superfluous content.
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 read-only tool with full schema and annotations, the description covers purpose, parameters, and return fields. Lacks error handling details (e.g., invalid guild_id) but overall sufficient.
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 detailed descriptions for both parameters. Description's args section merely repeats schema content, providing no additional meaning beyond what is already documented.
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 'Get detailed information about a specific Discord server.' The verb 'Get' and resource 'Discord server' are specific and distinct from sibling tools like discord_get_channel or discord_get_member.
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 explicit guidance on when to use this tool versus alternatives like discord_get_channel or discord_list_guilds. Usage is implied by the tool name and description but lacks explicit 'when-not-to-use' or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_memberGet Discord MemberARead-onlyIdempotent
Get detailed information about a specific member.
Args:
guild_id (string): Discord server/guild ID
user_id (string): Discord user ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: Member details including username, nickname, roles, join date
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Discord user ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by summarizing the return fields (username, nickname, roles, join date), providing context beyond the annotations.
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 and well-structured with separate Args and Returns sections. Every sentence contributes essential information without redundancy.
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 what the tool does, required parameters, and return fields. However, it omits potential edge cases (e.g., error handling for non-existent member), which would make it more 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%, so the baseline is 3. The description repeats and slightly extends the schema descriptions (e.g., adding default for response_format), but does not significantly add new meaning.
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 'Get detailed information about a specific member,' specifying the action (get) and resource (member). It distinguishes from sibling tools like discord_list_members by focusing on a single member via required guild_id and user_id.
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 does not explicitly state when to use this tool versus alternatives, but the purpose is clear and the required parameters (guild_id, user_id) imply it is for a specific member. Sibling tool names provide implicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_messagesGet Discord MessagesARead-onlyIdempotent
Retrieve messages from a Discord channel.
Args:
channel_id (string): Discord channel ID
limit (number): Number of messages to retrieve (1-100, default: 20)
before (string, optional): Get messages before this message ID
after (string, optional): Get messages after this message ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: List of messages with content, author, timestamp, attachments
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Get messages after this message ID | |
| limit | No | Number of messages to retrieve (1-100) | |
| before | No | Get messages before this message ID | |
| channel_id | Yes | Discord channel ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the return format (list with content, author, timestamp, attachments) and defaults, going beyond annotations without contradiction.
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 with a well-structured docstring: a single-line purpose, followed by args list and returns. No unnecessary 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?
All parameters and return values are covered, but there is no explanation of pagination behavior or edge cases (e.g., using both before and after). Adequate for moderate complexity.
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 provides clear docstring explanations for each parameter (e.g., 'channel_id (string): Discord channel ID'), adding value beyond 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 description clearly states 'Retrieve messages from a Discord channel' with a specific verb and resource, differentiating it from siblings like discord_send_message, discord_edit_message, etc.
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 explicit when-to-use or when-not-to-use guidance is given. While it implies use for reading messages, it does not discuss alternatives like discord_get_pinned_messages or pagination strategies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_onboardingGet Server OnboardingARead-onlyIdempotent
Get the onboarding configuration for a server.
Onboarding guides new members through a questionnaire to customize their experience.
Args:
guild_id (string): Discord server/guild ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: Onboarding settings including prompts, options, and default channels
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows it's safe and idempotent. The description adds behavioral context by specifying that it returns onboarding settings (prompts, options, default channels), which goes beyond annotations. No contradictions.
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 well-structured with a title, purpose statement, parameter list, and return description. It is relatively concise, though the parameter list is redundant with the schema. Overall, efficient and front-loaded with purpose.
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 (2 params, read-only, idempotent), the description provides sufficient context. It explains the return value at a high level, which compensates for the lack of an output schema. Does not mention permissions or rate limits, but for a GET operation, this is adequate.
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 both parameters. The description repeats this info but adds a default for response_format. It does not provide 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 it retrieves the onboarding configuration for a Discord server. It uses a specific verb ('Get') and resource ('onboarding configuration'), and the tool name distinguishes it from write counterparts like discord_setup_onboarding and discord_edit_onboarding.
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 explains what onboarding is but does not explicitly state when to use this tool versus alternatives (e.g., for editing onboarding). Usage is implied from the get operation, but no explicit guidance on exclusions or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_pinned_messagesGet Pinned MessagesBRead-onlyIdempotent
Get all pinned messages in a channel.
Args:
channel_id (string): Discord channel ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: List of pinned messages
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Discord channel ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety and idempotency. The description adds that the tool returns a list of pinned messages. However, it does not elaborate on rate limits, authorization needs, or result limit behavior. The description adds marginal value beyond annotations.
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 relatively concise and front-loaded with the main purpose. However, the 'Args:' and 'Returns:' formatting is slightly verbose and could be streamlined. It is efficient but has minor redundancy.
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 simple with two parameters, no output schema, and clear annotations. The description covers the basic functionality, parameters, and return type. However, it lacks information about permission requirements, result limits, or whether the output is truncated. This is adequate but not comprehensive.
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?
Both parameters are fully described in the input schema (100% coverage). The description restates the parameter names and types but adds only the default value for response_format, which is already present in the schema. No new semantic meaning is provided.
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 tool retrieves all pinned messages in a channel, specifying the exact resource and action. It distinguishes itself from sibling tools like discord_get_messages (which retrieves all messages) and discord_pin_message/unpin_message (which modify pinned state).
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 does not provide any guidance on when to use this tool versus alternatives, such as discord_get_messages for non-pinned messages. It lacks explicit context about typical use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_welcome_screenGet Welcome ScreenARead-onlyIdempotent
Get the welcome screen configuration for a server.
Requires the server to have Community features enabled.
Args:
guild_id (string): Discord server/guild ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: Welcome screen settings including description and channels
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description complements by adding the prerequisite (Community features) and describing the return shape (settings including description and channels). This adds behavioral context beyond annotations.
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?
Concise and well-structured: purpose in first sentence, then requirement, then parameter list, then return value. No unnecessary words. 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 (2 parameters, no output schema), the description is complete. It covers the purpose, prerequisite, parameters, and expected returns. Annotations cover safety and idempotency, so no gaps remain.
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?
Input schema covers 100% of parameters with descriptions. The tool description repeats the parameter names and output format but adds no new meaning beyond what the schema 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?
Clearly states 'Get the welcome screen configuration for a server' with a specific verb and resource. Differentiates from sibling tools like 'discord_edit_welcome_screen' by focusing on retrieval. Also notes the prerequisite (Community features), adding precision.
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 that the server must have Community features enabled, providing a clear prerequisite. However, it does not explicitly mention when not to use this tool or suggest alternatives like 'discord_get_community_settings' for broader community settings. Still, context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_kick_memberKick Discord MemberADestructive
Kick a member from a Discord server.
Args:
guild_id (string): Discord server/guild ID
user_id (string): Discord user ID to kick
reason (string, optional): Reason for kick (visible in audit log)
Returns: Confirmation of kick
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Reason for kick (visible in audit log) | |
| user_id | Yes | Discord user ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds that the reason is visible in the audit log, but doesn't elaborate on side effects like rejoin ability or permission requirements.
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?
Extremely concise: purpose, args list, and return value in six lines, front-loaded with the core action.
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?
Covers basic essentials: action, arguments, return type. Lacks permission hints or error conditions, but adequate for a simple destructive tool with complete schema and annotations.
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%, and the description merely restates the schema's parameter descriptions without adding new meaning or examples.
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 'Kick a member from a Discord server' with a specific verb and resource, distinguishing it from siblings like ban, remove role, or timeout.
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 alternatives like discord_ban_member or discord_timeout_member; lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_leave_guildLeave Discord ServerADestructive
Leave a Discord server (guild). The bot will no longer have access to this server.
WARNING: This is a destructive action. The bot will need to be re-invited to rejoin.
Args:
guild_id (string): Discord server/guild ID to leave
confirm (boolean): Must be set to true to confirm leaving
Returns: Confirmation message with server details
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be set to true to confirm leaving the server | |
| guild_id | Yes | Discord server/guild ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the destructiveHint annotation by explaining the consequence (bot loses access) and the need to re-invite. No contradiction with annotations.
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 and well-structured, with a purpose sentence, consequence warning, and a brief args list. No unnecessary 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?
For a simple destructive action, the description adequately covers purpose, parameters, consequences, and return value hint. Could be slightly enhanced by mentioning the bot must be in the guild, but overall 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?
The input schema covers 100% of parameters with clear descriptions. The description repeats this information in a different format without adding new semantic details, so a 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 tool leaves a Discord server (guild) and that the bot loses access. This is specific and distinguishes it from sibling tools that act on members or 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 includes a warning about destructiveness and the need for re-invitation, but does not explicitly state when to use this tool versus alternatives like kick or ban. No comparison with siblings is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_automod_rulesList Auto Moderation RulesARead-onlyIdempotent
List all auto moderation rules for a server.
Args:
guild_id (string): Discord server/guild ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: List of auto moderation rules
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no behavioral context beyond stating it lists rules. No extra transparency on returns, pagination, 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?
The description is concise, front-loads the purpose, and uses a clear structure with 'Args:' and 'Returns:' sections. The 'Args:' block is slightly redundant with the schema, but overall 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?
The tool is a simple read-only list with full schema coverage and sufficient annotations. The description mentions return type and parameters. No output schema exists, but the description notes it returns a list, which is adequate.
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 only paraphrases the schema's parameter descriptions. It adds no new semantic meaning beyond what the input schema already provides.
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 'List all auto moderation rules for a server', using a specific verb ('list') and resource ('auto moderation rules'), and differentiates from sibling tools like 'discord_get_automod_rule' and 'discord_create_automod_rule'.
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 does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. Usage is implied by the tool's purpose, but no direct guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_bansList BansARead-onlyIdempotent
List all banned users in a server.
Args:
guild_id (string): Discord server/guild ID
limit (number): Number of bans to return (1-1000, default 100)
response_format ('json' | 'markdown'): Output format
Returns: List of banned users with reasons
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of bans to return (1-1000) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds no additional behavioral context beyond what annotations provide, such as permission requirements or rate limits. No contradictions.
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 structured with Args and Returns sections, making it easy to parse. It is concise with no redundant sentences, though could be slightly more streamlined.
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, annotations, and full schema coverage, the description is adequate. However, it lacks mention of required permissions or behavior when no bans exist, which 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?
Schema coverage is 100%, so baseline is 3. The description adds a 'Returns' section explaining the output ('List of banned users with reasons'), which is not in the schema, providing extra context for parameter interpretation.
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: 'List all banned users in a server.' It uses a specific verb and resource, and distinguishes itself from sibling list tools like discord_list_members by specifying 'banned users'.
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 does not explicitly state when to use this tool versus alternatives like discord_ban_member or discord_unban_member. It implies usage for reading bans, but lacks explicit guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_channelsList Discord ChannelsARead-onlyIdempotent
List channels in a Discord server.
Args:
guild_id (string): Discord server/guild ID
type ('text' | 'voice' | 'category' | 'all'): Filter by channel type (default: 'all')
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: List of channels with id, name, type, topic, and category info
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by channel type | all |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds useful context about returned data (id, name, type, topic, category) which aids agent understanding. No contradictions with annotations.
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, well-structured with Args and Returns sections, and front-loads the primary action. Every sentence provides value; no extraneous content.
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 complexity (3 parameters, no output schema), the description along with annotations and schema provides sufficient context for an agent to use the tool. It summarizes return fields, which compensates for lack of output schema. Minor gap: no mention of pagination or rate limits, but this is acceptable for a list 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 coverage is 100% with detailed descriptions for all three parameters (type, guild_id, response_format). The tool description repeats the parameter list but does not add any additional meaning 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 the verb 'List' and resource 'channels in a Discord server'. It distinguishes itself from sibling tools like discord_get_channel (single channel) and discord_create_channel (creation) by specifying a list operation. The title reinforces this purpose.
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 does not provide explicit guidance on when to use this tool versus alternatives (e.g., discord_get_channel for details, discord_list_webhooks for webhooks). Usage is implied through the description, but no when-not-to-use or comparisons are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_emojisList EmojisARead-onlyIdempotent
List all custom emojis in a server.
Args:
guild_id (string): Discord server/guild ID
response_format ('json' | 'markdown'): Output format
Returns: List of emojis with name, ID, and whether animated
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds the return format (list with name, ID, animated) but no additional behavioral details like pagination 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?
The description is concise with a clear structure (purpose, args, returns). It is front-loaded and efficient, though the 'Args:' and 'Returns:' style could be slightly more terse.
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 list tool with two parameters and no output schema, the description adequately explains the purpose, parameters, and return values. It covers what an agent needs to know, though it could mention that only custom emojis are listed.
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?
With 100% schema coverage, the schema already describes both parameters thoroughly. The description repeats the parameter meanings but adds no new semantic information beyond what is in 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 'List all custom emojis in a server' with a specific verb and resource. It distinguishes from sibling tools like discord_create_emoji and discord_list_stickers.
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 does not provide explicit guidance on when to use this tool versus alternatives. Usage is implied but no exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_eventsList Scheduled EventsARead-onlyIdempotent
List all scheduled events in a server.
Args:
guild_id (string): Discord server/guild ID
response_format ('json' | 'markdown'): Output format
Returns: List of events with name, time, location, and status
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, assuring safety. The description adds value by specifying the return structure (list of events with fields). No contradictions, and it explains behavior beyond annotations adequately.
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 highly concise: one sentence for purpose, followed by bullet-pointed args and returns. Every sentence is useful, and it is front-loaded with the core action.
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 read-only list tool with good annotations, the description covers purpose, parameters, and return fields. However, it does not mention pagination, limits, or prerequisites (e.g., permissions). It is mostly complete but has minor 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?
Given 100% schema coverage, the description adds minimal value. It repeats parameter names and types but lacks details like default values or format descriptions that 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 'List all scheduled events in a server' with a specific verb and resource. It distinguishes from siblings like discord_create_event and discord_delete_event by focusing on listing. The return fields (name, time, location, status) are also specified.
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 does not provide explicit when-to-use or when-not-to-use guidance. There are no alternatives mentioned, and prerequisites (e.g., permissions) are not discussed. For a simple list tool, the usage is implied but not instructed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_guildsList Discord ServersARead-onlyIdempotent
List all Discord servers (guilds) the bot has access to.
Returns server names, IDs, member counts, and owner information.
Args:
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: List of guilds with id, name, memberCount, icon, ownerId
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, etc. The description adds return field details but no additional behavioral context (e.g., pagination, rate limits). With annotations covering safety, a score of 3 is appropriate.
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 (4 lines), front-loaded with purpose, then return info and parameter. Every sentence adds value with no waste.
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 simple with one parameter and no output schema. Annotations cover safety. The description adequately explains return structure and parameter, making it complete for an agent to use.
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 (response_format) with 100% schema coverage. The description restates the enum options and default value, adding little beyond the schema. Baseline 3 is correct.
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 tool lists all Discord servers (guilds) the bot has access to, and specifies the returned information (server names, IDs, member counts, owner info). This distinguishes it from sibling tools that list other entities like channels or members.
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 use for getting an overview of available guilds but does not explicitly state when to use or avoid alternative tools. Given the many sibling tools for specific CRUD operations on guilds, some guidance would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_invitesList InvitesARead-onlyIdempotent
List all active invites in a server.
Args:
guild_id (string): Discord server/guild ID
response_format ('json' | 'markdown'): Output format
Returns: List of invites with code, uses, max uses, expiration
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe read operation. The description adds the return format details (code, uses, max uses, expiration) beyond annotations.
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 short, uses a clear Args/Returns structure, and contains no superfluous information. 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?
For a list tool with two parameters and no output schema, the description sufficiently explains functionality, parameters, and return format. Annotations cover behavioral safety.
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 essentially restates the schema's parameter descriptions. It adds clarity but does not provide additional meaning 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 'List all active invites in a server' with a specific verb and resource. It distinguishes from sibling tools like discord_create_invite and discord_delete_invite.
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 does not explicitly state when to use this tool vs alternatives, but it is implied as a read-only listing operation. No exclusions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_membersList Discord MembersARead-onlyIdempotent
List members in a Discord server.
Args:
guild_id (string): Discord server/guild ID
limit (number): Maximum number of members (1-100, default: 20)
after (string, optional): Get members after this user ID (for pagination)
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: List of members with username, nickname, roles, join date
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Get members after this user ID (for pagination) | |
| limit | No | Maximum number of members to return | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false. The description adds that the tool returns a list of members with specific fields (username, nickname, roles, join date), providing context beyond the annotations. No contradiction.
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 exceptionally concise: one sentence for purpose, followed by a clear parameter list. Every word earns its place, no redundancy or 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?
Despite having no output schema, the description mentions the return fields (username, nickname, roles, join date). It covers pagination via the 'after' parameter. For a simple list operation with full schema coverage and clear annotations, this is nearly 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 coverage is 100%, so the schema already documents all parameters. The description's 'Args' section largely repeats schema descriptions (e.g., 'Discord server/guild ID' for guild_id) without adding significant new meaning. The baseline 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 'List members in a Discord server', which is a specific verb+resource. It distinguishes from sibling tools like discord_get_member (single member) and discord_list_channels or discord_list_roles (different resources).
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 discord_get_member or discord_list_guilds. There is no mention of use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_rolesList Discord RolesARead-onlyIdempotent
List all roles in a Discord server.
Args:
guild_id (string): Discord server/guild ID
response_format ('markdown' | 'json'): Output format (default: 'json')
Returns: List of roles with name, color, position, permissions
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description does not need to restate these. The description adds return field details but does not discuss potential issues like required permissions or rate limits. Value added is moderate.
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?
Description is short but includes structured Arg and Returns sections. It is front-loaded with the purpose. Some redundancy (the schema already defines parameters) but overall 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?
Given the lack of an output schema, the description covers the return fields (name, color, position, permissions). However, it omits potential context like permission requirements, pagination, or error handling. Adequate for a simple read-only list tool but not thorough.
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 reinforces the meaning of guild_id and response_format, clarifying the default and the output formats ('markdown for human-readable, json for structured data'), adding value beyond the schema pattern/enum constraints.
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 'List all roles in a Discord server.' It uses a specific verb (list) and resource (roles), and distinguishes from sibling tools that create, edit, delete, or add roles, as well as other list tools for different resources.
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 does not explicitly state when to use this tool versus alternatives (e.g., when to list roles vs when to get a specific role or create one). However, the purpose is clear enough to infer use cases, but lacks explicit guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_stickersList StickersARead-onlyIdempotent
List all custom stickers in a server.
Args:
guild_id (string): Discord server/guild ID
response_format ('json' | 'markdown'): Output format
Returns: List of stickers with name, description, and format
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds minimal behavioral context beyond saying it lists stickers and returns fields, which is consistent.
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?
Extremely concise: three lines of arguments and returns. The main purpose is front-loaded in the first sentence. 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?
Given the simple nature of the tool (no output schema, only 2 parameters), the description covers everything needed: what it does, required parameter, optional format, and return structure.
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 clear parameter descriptions. The description adds value by specifying the return format (list of stickers with name, description, and format) beyond the input 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 'List all custom stickers in a server' with a specific verb and resource. It distinguishes from sibling tools like 'discord_delete_sticker' or 'discord_create_emoji'.
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 explicit guidance on when to use this tool versus alternatives (e.g., listing emojis or roles). Usage is implied but not differentiated from other list operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_webhooksList WebhooksARead-onlyIdempotent
List webhooks in a guild or channel.
Args:
guild_id (string, optional): List all webhooks in the server
channel_id (string, optional): List webhooks for a specific channel
response_format ('json' | 'markdown'): Output format
Returns: List of webhooks with name, channel, and URL
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | No | Guild ID to list all webhooks in the server | |
| channel_id | No | Channel ID to list webhooks for a specific channel | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds return format details and parameter behavior, which adds value beyond annotations.
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 well-structured with separate sections for args and returns, but the Args section repeats schema info, making it slightly redundant. Still concise overall.
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, the description includes return value details. It covers the basic use cases but does not clarify mutual exclusivity of guild_id and channel_id or error conditions.
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%, and the description largely restates the schema-provided parameter meanings. No new semantic insight is added.
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 (list) and resource (webhooks in a guild or channel), and distinguishes from sibling tools like discord_create_webhook and discord_list_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 specifies the context (guild or channel) but does not explicitly exclude alternatives or provide when-not-to-use guidance. However, the optional parameters make usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_move_memberMove Member to Voice ChannelAIdempotent
Move a member to a different voice channel or disconnect them from voice.
The member must currently be connected to a voice channel to be moved.
Args:
guild_id (string): Discord server/guild ID
user_id (string): Discord user ID to move
channel_id (string | null): Target voice channel ID, or null to disconnect
Returns: Confirmation of move or disconnect
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Discord user ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| channel_id | Yes | Target voice channel ID, or null to disconnect the user |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, idempotent, non-destructive mutation. The description adds that the member can be disconnected (null channel) and must be currently connected. This provides useful behavioral context beyond annotations.
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 paragraphs: one for purpose and prerequisite, one for parameters and return. No wasted words, front-loaded with core action.
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 simple operation and no output schema, the description adequately covers prerequisites, parameters (with null explanation), and the return value (confirmation). No 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 covers all three parameters with 100% description coverage. The description's Args section restates them and adds meaning: channel_id can be null to disconnect. This adds value 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?
Description clearly states the action: moving a member to a different voice channel or disconnecting them. This distinguishes it from sibling tools like discord_kick_member or discord_ban_member, which handle different operations.
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?
States a key prerequisite: the member must be connected to a voice channel. This helps agents determine when to use the tool. However, it does not explicitly mention alternative tools or when not to use it, missing some guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_pin_messagePin Discord MessageBIdempotent
Pin a message in a channel.
Args:
channel_id (string): Discord channel ID
message_id (string): Message ID to pin
Returns: Confirmation of message pinned
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Discord channel ID (snowflake) | |
| message_id | Yes | Discord message ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds minimal behavioral context beyond the return value, but not enough to justify a higher score.
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 very short and front-loaded with the purpose. However, the Args and Returns sections are redundant with the schema, reducing efficiency slightly.
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 provides the core purpose and parameter types, but lacks important context such as permission requirements, error states, or behavioral nuances like idempotency.
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?
Input schema covers 100% of parameters with descriptions. The tool description restates the same information without adding new semantics, so baseline 3 applies.
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 ('Pin a message') and the target resource ('in a channel'). This explicitly distinguishes it from sibling tools like discord_unpin_message.
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. For example, it does not mention that pinning requires certain permissions or that messages must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_prune_membersPrune MembersADestructive
Remove inactive members from the server.
Args:
guild_id (string): Discord server/guild ID
days (number): Days of inactivity required (1-30)
include_roles (string[], optional): Role IDs to include in prune (by default only members without roles)
dry_run (boolean): If true, returns count without actually pruning (default true)
Returns: Number of members pruned (or would be pruned if dry_run)
| Name | Required | Description | Default |
|---|---|---|---|
| days | Yes | Number of days of inactivity (1-30) | |
| dry_run | No | If true, only returns count without actually pruning | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| include_roles | No | Role IDs to include in prune (normally members with roles are excluded) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, and the description confirms the destructive nature while adding safety via dry_run. It also discloses that include_roles affects which members are pruned, and returns the count. No contradictions.
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 well-organized with 'Args' and 'Returns' sections, using minimal yet informative language. Every sentence adds value without redundancy.
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 schema coverage and annotations, the description fully explains parameters, behavior (including dry_run safety), and return value. No output schema needed for a simple numeric return.
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%, but the description adds nuance (e.g., 'by default only members without roles') beyond the schema descriptions. It clarifies behavior for each parameter effectively.
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 'Remove inactive members from the server,' using a specific verb and resource. It distinguishes this tool from siblings like kick/ban/timeout by focusing on inactivity-based removal.
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 explains key parameters like dry_run (default true) and include_roles, providing context for safe usage. However, it does not explicitly contrast with alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_remove_channel_permissionsRemove Channel Permission OverridesBDestructiveIdempotent
Remove all permission overrides for a role or member on a channel.
Args:
channel_id (string): Discord channel ID
target_id (string): Role or User ID to remove permission overrides for
Returns: Confirmation of removal
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | Role or User ID to remove permission overrides for | |
| channel_id | Yes | Discord channel ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it removes 'all' permission overrides, which adds clarity beyond the annotations. However, it does not discuss side effects, reversibility, or required permissions. Annotations already indicate destructive and idempotent nature, so the description adds moderate value.
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 and front-loaded. However, it includes inline 'Args:' and 'Returns:' sections that mostly duplicate the input schema, slightly reducing efficiency. Still, it remains clear and to the point.
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 tool with low complexity (2 params, simple operation) and good annotations, the description adequately covers the purpose and return value ('Confirmation of removal'). Yet, it lacks mention of idempotency or potential error cases, 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% with descriptions for both parameters. The description reiterates the parameters but adds no additional context beyond the schema. Baseline score of 3 is appropriate as the description does not compensate further.
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: 'Remove all permission overrides for a role or member on a channel.' It uses a specific verb and resource, and the sibling tools include related operations like set_channel_permissions, making the distinction evident.
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 does not provide any guidance on when to use this tool versus alternatives such as discord_set_channel_permissions or discord_sync_channel_permissions. No explicit when-to-use or when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_remove_reactionRemove Reaction from MessageAIdempotent
Remove the bot's emoji reaction from a message.
Args:
channel_id (string): Discord channel ID
message_id (string): Message ID
emoji (string): Emoji to remove
Returns: Confirmation of reaction removed
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | Yes | Emoji reaction to remove | |
| channel_id | Yes | Discord channel ID (snowflake) | |
| message_id | Yes | Discord message ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotent and destructive hints. The description adds important context: it only removes the bot's reaction, not others'. Also describes return confirmation. No contradiction with annotations.
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, well-structured with Args and Returns sections, and to the point. 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?
For a simple tool with annotations and no output schema, the description covers purpose, parameters, and return value. Could mention emoji format or permissions, but overall complete enough for its complexity.
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 adequate parameter descriptions. The description repeats the parameter list without adding new meaning (e.g., emoji format not specified). 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 'remove' and the resource 'the bot's emoji reaction from a message'. It distinguishes from siblings like discord_add_reaction (adds) and discord_delete_message (deletes message).
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 explicit guidance on when to use vs alternatives. The description implies it only removes the bot's own reactions, but does not mention prerequisites or exclusions. It is adequate for a simple tool but lacks proactive differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_remove_roleRemove Role from MemberAIdempotent
Remove a role from a Discord member.
Args:
guild_id (string): Discord server/guild ID
user_id (string): Discord user ID
role_id (string): Discord role ID to remove
Returns: Confirmation of role removed
| Name | Required | Description | Default |
|---|---|---|---|
| role_id | Yes | Discord role ID (snowflake) | |
| user_id | Yes | Discord user ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false, so the description adds limited behavioral context. It does not mention required permissions or side effects, but the operation is straightforward.
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 and structured with an Args section. It is clear and efficient, though the 'Args:' block could be integrated into the sentence for slightly better flow.
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 low complexity (3 required params, no nested objects, no output schema), the description adequately covers what the tool does and its inputs. Missing permission context, but not critical.
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 description adds no new meaning beyond the schema. The description simply lists the param names without additional context or format details.
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 ('Remove a role') and the resource ('from a Discord member'), using a specific verb and resource. It distinguishes from sibling tools like discord_add_role and discord_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?
The description does not explicitly state when to use this tool versus alternatives. Although the action is self-explanatory, no guidance on when not to use or prerequisites is provided, which is a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_send_messageSend Discord MessageA
Send a message to a Discord channel.
Args:
channel_id (string): Discord channel ID
content (string): Message content (max 2000 characters)
reply_to (string, optional): Message ID to reply to
Returns: The sent message details including ID
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Message content (max 2000 characters) | |
| reply_to | No | Optional message ID to reply to | |
| channel_id | Yes | Discord channel ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint=false) but not destructive (destructiveHint=false). The description adds return details but lacks info on permissions, rate limits, or side effects beyond what annotations provide.
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 very concise, with a clear structure including Args and Returns. Every sentence is meaningful and front-loaded, 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?
For a simple send message tool with good annotations and 100% schema coverage, the description is nearly complete. It covers purpose, parameters, and return. Minor omission: no mention of Discord-specific limits or prerequisites beyond character count.
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%, and the description largely repeats schema information (e.g., 'Message content (max 2000 characters)'). It adds no new meaning 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 'Send a message to a Discord channel', which is a specific verb+resource. It effectively distinguishes from sibling tools like discord_edit_message, discord_delete_message, etc.
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 like discord_edit_message or discord_create_webhook. The description does not mention any prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_set_channel_permissionsSet Channel PermissionsAIdempotent
Set permission overrides for a role or member on a channel.
Common permission names:
View: ViewChannel
Messages: SendMessages, ReadMessageHistory, ManageMessages, EmbedLinks, AttachFiles, AddReactions
Voice: Connect, Speak, Stream, MuteMembers, DeafenMembers, MoveMembers
Threads: CreatePublicThreads, CreatePrivateThreads, SendMessagesInThreads
Management: ManageChannels, ManageRoles, ManageWebhooks
Args:
channel_id (string): Discord channel ID
target_id (string): Role or User ID to set permissions for
target_type ('role' | 'member'): Whether target is a role or member
allow (string[], optional): Permissions to allow (e.g., ['ViewChannel', 'SendMessages'])
deny (string[], optional): Permissions to deny (e.g., ['SendMessages'])
Returns: Confirmation of permission changes
| Name | Required | Description | Default |
|---|---|---|---|
| deny | No | Permissions to deny (e.g., ['SendMessages', 'AddReactions']) | |
| allow | No | Permissions to allow (e.g., ['ViewChannel', 'SendMessages', 'ReadMessageHistory']) | |
| target_id | Yes | Role or User ID to set permissions for | |
| channel_id | Yes | Discord channel ID (snowflake) | |
| target_type | Yes | Whether target is a role or member |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent, non-destructive, read-write behavior. The description adds value by organizing permission names and implying that overrides are set, which aligns with annotations. However, it does not clarify whether existing overrides are replaced or merged, nor mention rate limits or required permissions.
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?
Description is well-structured with clear sections (purpose, permission names, args, returns). The permission name list is lengthy but necessary. The overall length is justified given the complexity, though some redundancy exists between the args list and the schema.
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 covers purpose and arguments well but provides only vague return information ('Confirmation of permission changes'). No output schema exists, so more detail on the return format would be helpful. It also lacks clarification on behavior when overrides already exist (overwrite vs merge), though idempotent hint suggests replacement.
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?
Input schema covers all parameters with descriptions (100% coverage). The description adds significant value by listing common permission names organized by category (View, Messages, Voice, etc.), which helps the agent construct valid 'allow' and 'deny' arrays beyond the schema's brief 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 description uses a specific verb ('Set') and resource ('permission overrides for a role or member on a channel'), clearly distinguishing it from sibling tools like 'discord_remove_channel_permissions' or 'discord_sync_channel_permissions'.
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?
While the description lists common permission names to guide input, it does not explicitly state when to use this tool versus alternatives (e.g., 'use discord_sync_channel_permissions to copy permissions from another channel'). No exclusions or context on prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_set_nicknameSet Member NicknameAIdempotent
Set or clear a member's nickname.
Args:
guild_id (string): Discord server/guild ID
user_id (string): Discord user ID
nickname (string, optional): New nickname (empty/null to reset)
Returns: Confirmation of nickname change
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Discord user ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| nickname | Yes | New nickname (max 32 chars) or null to clear |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and non-destructiveHint=false. The description adds that setting nickname to empty/null resets it, and returns a confirmation. No contradictions, but does not disclose permission requirements or side effects beyond what annotations imply.
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 short and front-loaded with the main action. The Args/Returns structure is clear. Every sentence adds value, though the descriptions of parameters are somewhat redundant with the schema.
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 3-parameter tool with no nested objects, the description covers the core functionality and return value. Lacks mention of required permissions or rate limits, but is sufficient for an agent to use 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?
Schema coverage is 100% with clear descriptions for each parameter. The description adds minimal value by restating the optional nature of nickname (null to reset), but does not provide additional context 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 action ('Set or clear a member's nickname') and the resource ('member's nickname'), making the purpose unmistakable. Among sibling tools, it is distinct from other member management actions like kicking or banning.
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., when to set vs. clear a nickname, or prerequisites like permissions). The description lacks explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_set_role_positionsSet Role PositionsAIdempotent
Reorder role hierarchy by setting role positions.
Higher position = more authority in the hierarchy. The @everyone role is always at position 0. Roles can only manage other roles below them in the hierarchy.
IMPORTANT: The bot can only move roles that are below its own highest role in the hierarchy.
Args:
guild_id (string): Discord server/guild ID
positions (array): Array of objects with:
role_id (string): Discord role ID
position (number): New position for the role (higher = more authority)
Returns: Confirmation of position changes
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| positions | Yes | Array of role positions to set |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-readOnly, non-destructive, idempotent operation. The description adds critical behavioral context: the hierarchy rules, bot's role limitation, and that positions are relative. This goes beyond what annotations provide.
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 well-structured with clear sections and important notations. It is concise but not minimal; it could be slightly tighter without losing clarity.
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 covers all essential context: hierarchy mechanics, @everyone constraint, bot limitations, and return value. No output schema exists, but the return is described adequately. Complete for a role positioning 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 coverage is 100% with descriptions for both parameters. The tool description elaborates on the meaning of position (higher = more authority) and the structure of the positions array, adding significant value 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 'Reorder' and the resource 'role hierarchy' with 'setting role positions'. It is distinct from sibling tools like discord_create_role or discord_edit_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?
The description explains when to use the tool (reordering roles) and provides important constraints (e.g., @everyone at position 0, roles can only manage lower roles, bot limitation). It does not explicitly state when not to use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_setup_communitySetup Community ServerAIdempotent
Configure the required channels for a Community server.
Sets the rules channel and public updates channel which are required for Community features. The server must already have Community enabled in Discord Server Settings.
Args:
guild_id (string): Discord server/guild ID
rules_channel_id (string): Channel for server rules (required)
public_updates_channel_id (string): Channel for Discord updates (required)
description (string, optional): Server description (max 120 chars)
preferred_locale (string, optional): Preferred language (e.g., 'en-US', 'de')
safety_alerts_channel_id (string, optional): Channel for safety alerts
Returns: Updated community settings
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| description | No | Server description (max 120 chars) | |
| preferred_locale | No | Preferred language (e.g., 'en-US', 'de', 'fr') | |
| rules_channel_id | Yes | Channel for server rules (required for Community) | |
| safety_alerts_channel_id | No | Channel for safety alerts from Discord | |
| public_updates_channel_id | Yes | Channel for Discord community updates (required for Community) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond annotations: it specifies which channels are set, mentions the prerequisite, and states it returns updated settings. Annotations already indicate it's not destructive and is idempotent, so description supplements adequately.
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?
Description is concise, front-loaded with the core action, and well-structured with a clear args list and return statement. Every sentence is necessary and 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?
Given the availability of annotations and full schema, the description covers the tool's purpose, parameters, and prerequisites adequately. It could mention possible errors or side effects, but overall it is complete enough.
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?
Since schema coverage is 100%, the description adds little new meaning beyond the schema's parameter descriptions. It lists parameters but does not provide additional semantic context.
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 configures required channels for a Community server, specifically the rules and public updates channels. It distinguishes from other guild editing tools by focusing on community setup.
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?
Description mentions the prerequisite that Community must already be enabled, but does not provide guidance on when to use this tool versus alternatives like discord_edit_guild or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_setup_onboardingSetup Server OnboardingA
Setup and enable onboarding for a server from scratch.
This tool configures the complete onboarding experience for new members. The server must have Community features enabled.
Requirements:
Server must have Community features enabled (done in Discord Server Settings)
At least one default channel must be specified
At least one prompt with options must be provided
Each option must have at least one role_ids OR channel_ids
Args:
guild_id (string): Discord server/guild ID
default_channel_ids (string[]): Channels shown to all new members (required, at least one)
prompts (array): Onboarding questions (required, at least one)
type ('multiple_choice' | 'dropdown'): Prompt type
title (string): Question title
single_select (boolean): Allow only one selection (default: true)
required (boolean): Must answer to continue (default: false)
in_onboarding (boolean): Show during onboarding (default: true)
options (array): Available choices (at least one)
title (string): Option title
description (string, optional): Option description
emoji_name (string, optional): Unicode emoji (e.g., '🎮')
role_ids (string[], optional): Roles to assign when selected
channel_ids (string[], optional): Channels to show when selected
mode ('onboarding_default' | 'onboarding_advanced', optional): Mode (default: 'onboarding_default')
enabled (boolean, optional): Enable after setup (default: true)
Returns: Confirmation with onboarding status
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Onboarding mode | onboarding_default |
| enabled | No | Whether to enable onboarding after setup | |
| prompts | Yes | Onboarding prompts/questions (at least one required) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| default_channel_ids | Yes | Channels shown to new members by default (at least one required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no destructive/intensity hints, but the description states it configures onboarding 'from scratch.' It doesn't cover behavior if onboarding already exists or error cases, which is a gap for a complex tool.
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 well-organized with sections (overview, requirements, args), uses bullet points for clarity, and is concise given the complexity. 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?
The description covers requirements and parameter details thoroughly, and includes a return value note. It lacks error handling or edge cases, but overall is complete for a complex onboarding 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 describes all parameters (100% coverage), so baseline is 3. The description adds value by specifying requirements and giving context (e.g., 'at least one role_ids OR channel_ids' is clarified beyond 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 description explicitly states 'Setup and enable onboarding for a server from scratch,' making the verb and resource clear. It distinguishes from siblings like discord_edit_onboarding and discord_setup_community.
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 lists clear requirements (Community features enabled, at least one default channel/prompt/option) and implies it's for initial setup. It could explicitly mention when to use discord_edit_onboarding instead, but the requirements are helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_sync_channel_permissionsSync Channel Permissions with CategoryAIdempotent
Sync a channel's permissions with its parent category.
Args:
channel_id (string): Discord channel ID
Returns: Confirmation of sync
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Discord channel ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false. Description adds that it syncs permissions, implying overwrite but not destructive. No contradiction, and adds context beyond annotations.
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 plus an Args/Returns block. Extremely concise, no fluff, all sentences earn their 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 only one parameter, no output schema, and annotations covering safety, the description is adequate. It explains what the tool does and what to provide. Could mention prerequisite that channel must be in a category, but not critical.
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 description for channel_id. Description repeats the parameter name and type but adds no new 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 'sync' and the resource 'channel's permissions with parent category', distinguishing it from siblings like discord_set_channel_permissions which sets individual permissions.
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 use for syncing to parent category, but does not explicitly mention when not to use or name alternatives like discord_set_channel_permissions for granular control. Context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_timeout_memberTimeout MemberAIdempotent
Timeout (mute) a member for a specified duration. They cannot send messages, react, or join voice.
Args:
guild_id (string): Discord server/guild ID
user_id (string): Discord user ID to timeout
duration_minutes (number): Timeout duration in minutes (0 to remove, max 40320 = 28 days)
reason (string, optional): Reason for timeout (visible in audit log)
Returns: Confirmation of timeout
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Reason for timeout | |
| user_id | Yes | Discord user ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) | |
| duration_minutes | Yes | Timeout duration in minutes (max 28 days = 40320) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotent, non-destructive), description explains the behavioral effect (muting communication channels) and mentions duration limits and reason visible in audit log. No contradictions with annotations.
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?
Efficiently structured: single line for action/effect, then bulleted parameter list with clear args/returns. No wasted words; front-loaded with core purpose.
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 4 parameters, no output schema, and annotations, the description fully covers tool behavior: action, parameter constraints (including 0 to remove), and return confirmation. Sufficient for 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?
Schema coverage is 100%, but description adds context: explains each parameter's role, notes that duration_minutes=0 removes timeout, and mentions reason is visible in audit log. Adds value beyond 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?
Clearly states "Timeout (mute) a member for a specified duration" with specific verb and resource. Distinguishes from sibling tools like ban, kick, move by naming the action and its effect (cannot send messages, react, join voice).
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?
Implies usage through action description (timeout vs ban/kick) but lacks explicit guidance on when to use this tool vs alternatives. No when-not or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_unban_memberUnban Discord MemberAIdempotent
Remove a ban from a user.
Args:
guild_id (string): Discord server/guild ID
user_id (string): Discord user ID to unban
Returns: Confirmation of unban
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Discord user ID (snowflake) | |
| guild_id | Yes | Discord server/guild ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readOnly, idempotent, non-destructive. The description adds that it returns a confirmation, which is useful, but does not elaborate on auth needs, side effects, or additional behavioral traits beyond annotations.
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?
Very concise: one sentence for purpose, then lists parameters and return value. No fluff, 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 2-parameter tool with comprehensive annotations and schema, the description provides all necessary information: action, inputs, and output. No 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% with clear parameter descriptions. The tool description restates them without adding new meaning, so baseline 3 applies.
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 'Remove a ban from a user' with a specific verb and resource, distinguishing it from sibling tools like discord_ban_member.
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, prerequisites (e.g., user must be banned, required permissions), or when not to use. The name and description imply straightforward usage but lack explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_unpin_messageUnpin Discord MessageAIdempotent
Unpin a message in a channel.
Args:
channel_id (string): Discord channel ID
message_id (string): Message ID to unpin
Returns: Confirmation of message unpinned
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Discord channel ID (snowflake) | |
| message_id | Yes | Discord message ID (snowflake) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds a return value but does not disclose additional behavioral traits (e.g., permission requirements, error states, or side effects).
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 short and front-loaded with the main action. However, the Args section is redundant with the schema, which is unnecessary for such a simple tool. Overall, it is efficient but could be trimmed.
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?
While the tool is simple with 2 required parameters and annotations cover safety, the description omits important context such as prerequisites (e.g., 'Manage Messages' permission), what happens if the message is not pinned, and error handling. It is minimally complete but leaves 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%, and the schema already fully describes both parameters with patterns and constraints. The description's Args section merely repeats the parameter names and types without adding new meaning, meeting the baseline.
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 'Unpin' and the resource 'a message in a channel', distinguishing it from sibling tools like discord_pin_message (opposite) and discord_delete_message (different action).
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 unpinning messages but does not explicitly state when to use it or when not to, nor does it mention alternatives like pin_message or delete_message. There is no guidance on prerequisites or context.
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. Dates show when Glama detected each change.
67 tool updates
v1.1.4- First observed
discord_add_reaction - First observed
discord_add_role - First observed
discord_ban_member - First observed
discord_create_automod_rule - First observed
discord_create_channel - First observed
discord_create_emoji - First observed
discord_create_event - First observed
discord_create_invite - First observed
discord_create_role - First observed
discord_create_webhook - First observed
discord_delete_automod_rule - First observed
discord_delete_channel - First observed
discord_delete_emoji - First observed
discord_delete_event - First observed
discord_delete_invite - First observed
discord_delete_message - First observed
discord_delete_role - First observed
discord_delete_sticker - First observed
discord_delete_webhook - First observed
discord_edit_automod_rule - First observed
discord_edit_channel - First observed
discord_edit_guild - First observed
discord_edit_message - First observed
discord_edit_onboarding - First observed
discord_edit_role - First observed
discord_edit_webhook - First observed
discord_edit_welcome_screen - First observed
discord_get_audit_log - First observed
discord_get_automod_rule - First observed
discord_get_channel - First observed
discord_get_channel_permissions - First observed
discord_get_community_settings - First observed
discord_get_guild - First observed
discord_get_member - First observed
discord_get_messages - First observed
discord_get_onboarding - First observed
discord_get_pinned_messages - First observed
discord_get_welcome_screen - First observed
discord_kick_member - First observed
discord_leave_guild - First observed
discord_list_automod_rules - First observed
discord_list_bans - First observed
discord_list_channels - First observed
discord_list_emojis - First observed
discord_list_events - First observed
discord_list_guilds - First observed
discord_list_invites - First observed
discord_list_members - First observed
discord_list_roles - First observed
discord_list_stickers - First observed
discord_list_webhooks - First observed
discord_move_member - First observed
discord_pin_message - First observed
discord_prune_members - First observed
discord_remove_channel_permissions - First observed
discord_remove_reaction - First observed
discord_remove_role - First observed
discord_send_message - First observed
discord_set_channel_permissions - First observed
discord_set_nickname - First observed
discord_set_role_positions - First observed
discord_setup_community - First observed
discord_setup_onboarding - First observed
discord_sync_channel_permissions - First observed
discord_timeout_member - First observed
discord_unban_member - First observed
discord_unpin_message
TDQS
Each tool targets a distinct action and resource pair. For example, 'discord_add_role' and 'discord_remove_role' are clearly opposite, and all creation, editing, and deletion tools are clearly separated. There is no overlap or ambiguity between tools.
All tools follow a consistent 'discord_verb_noun' pattern using snake_case. The verb is always a clear action (create, edit, delete, list, get, etc.) and the noun is the Discord resource (channel, role, member, etc.). The pattern is uniform throughout.
With 67 tools, the set is large but covers the extensive Discord API. It provides comprehensive management capabilities for servers, channels, roles, members, emojis, stickers, webhooks, automod, onboarding, and more. While slightly on the higher side, each tool serves a distinct purpose within this broad scope.
The tool set covers most CRUD operations for the major Discord resources. Notable gaps include missing 'discord_edit_emoji', 'discord_edit_event', and 'discord_create_sticker'. However, the overall coverage is extensive, and these gaps are minor given the breadth of functionality provided.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that integrates with Discord to provide AI-powered features.
MCP server for AI dialogue using various LLM models via AceDataCloud
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server for Discord that enables AI assistants to interact with Discord servers, channels, and messages via the Discord API.614MIT
- FlicenseCqualityCmaintenanceAn MCP server that exposes Discord bot actions as tools for LLM clients.291-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI assistants to manage Discord servers, including roles, channels, members, messages, and moderation, via natural language commands.1MIT
- AlicenseBqualityBmaintenanceA local MCP server that lets AI clients control a Discord bot via Discord's REST API, offering messaging, administration, and moderation tools. Includes safety features such as guild scoping, allowlists, and opt-in write permissions.20MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Oratorian/discord-node-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server