discord-mcp
The discord-mcp server enables AI clients to fully manage Discord servers through the Model Context Protocol (MCP), covering the following areas:
Server Management: List servers, get detailed server info, edit settings (name, icon, verification level, AFK channel, etc.), and view the audit log.
Channel Management: List, create, edit, and delete channels (text, voice, category, announcement, stage, forum); organize under categories.
Message Management: Send, read, edit, and delete messages; pin/unpin messages; add/remove reactions; list users who reacted; send via webhooks.
Role Management: List, create (with color, permissions, hoist, mentionable options), edit, and delete roles; assign/remove roles from members.
Member Management: List members, get member info, kick, ban, unban, timeout, list bans, move between voice channels, and server mute/deafen members.
Channel Permissions: List permission overwrites; set (allow/deny/reset) permissions for roles or members; remove overwrites entirely.
Thread Management: Create threads (from a message or standalone), list active/archived threads, and archive/unarchive threads.
Invite Management: Create invite links (with custom expiry/usage limits), list active invites, and delete/revoke invites.
Scheduled Events: Create (voice, stage, or external), list, and delete scheduled guild events.
Webhook Management: Create, list, and delete webhooks; send messages via webhook with custom username/avatar.
Emoji & Stickers: List, create, and delete custom emojis; list custom stickers.
Provides tools for managing Discord servers, including channels, messages, roles, members, permissions, threads, invites, events, webhooks, and emojis/stickers.
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-mcpcreate a text channel called dev-updates under the Engineering category"
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
An MCP server for managing Discord servers through any MCP-compatible AI client. Once connected, you just describe what you want:
You: create a channel called
dev-chatunder the Engineering category
You: make a role called Moderator that can kick and ban, then give it to @alex
You: post "deploy is live 🚀" in #announcements
You: make #staff-only private — hide it from @everyone but let the Staff role in
Your AI client talks to this server over MCP, which translates requests into real Discord API calls via discord.js.
What it can do
Area | Tools |
Servers |
|
Channels |
|
Messages |
|
Roles |
|
Members |
|
Channel permissions |
|
Threads |
|
Invites |
|
Scheduled events |
|
Webhooks |
|
Emoji & stickers |
|
Related MCP server: Discord MCP Server
Setup
1. Create the Discord bot
Go to the Discord Developer Portal → New Application, give it a name, Create.
Open the Bot tab → Reset Token → Copy. This is your
DISCORD_TOKEN.(Optional) To list members or read message text, scroll to Privileged Gateway Intents and enable Server Members Intent and Message Content Intent. You'll also set
DISCORD_PRIVILEGED_INTENTS=truelater. Skip this if you only need to create channels/roles and send messages.
2. Invite the bot to your server
In the Developer Portal → OAuth2 → URL Generator.
Under Scopes, check
bot.Under Bot Permissions, pick what you want it to do. For full management the simplest choice is Administrator.
Open the generated URL, choose your server, Authorize.
Important — role hierarchy: in Server Settings → Roles, drag the bot's role above the roles/members you want it to manage.
3. Install and build
Requires Node.js 18+ (20+ recommended).
git clone https://github.com/grooving6/discord-mcp.git
cd discord-mcp
npm install
npm run buildThen create your .env from the template and fill in the token:
4. Connect it to your MCP client
Option A — project config (recommended). This repo includes a .mcp.json.
Run your MCP client from this directory and it picks it up automatically.
Option B — global registration (Claude Code example). Use an absolute path to make the server available in any session:
claude mcp add discord -- node /absolute/path/to/discord-mcp/dist/index.jsAvailable Tools
55 toolsadd_reactionAdd reactionA
React to a message with a Unicode emoji or custom guild emoji (name or id).
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | Yes | Emoji to react with. Unicode (e.g. '👍') or custom emoji name/id. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel the message is in (name or id). | |
| message_id | Yes | Id of the message to react to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states the basic action and emoji types. Missing details like required permissions (e.g., 'Add Reactions'), rate limits, confirmation of success, or behavior when emoji is invalid. For a tool that mutates state, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately states the action and key details. Every word is purposeful with no fluff. It is front-loaded 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?
For a simple reaction tool, the description covers the main functionality. However, it lacks context on error handling (e.g., missing permissions, invalid emoji), idempotency (can the same reaction be added twice?), and return behavior. Given no output schema, more guidance 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?
The input schema already has detailed descriptions for all parameters (100% coverage). The description adds value by clarifying emoji formats (Unicode vs custom name/id) and explaining the optionality of 'server' under certain conditions. This goes beyond the schema's basic 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 adds a reaction to a message with either a Unicode emoji or a custom guild emoji, specifying the format (name/id). It distinguishes from siblings like 'remove_reaction' and 'get_reactions' by focusing on the add 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 adding reactions but provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like 'remove_reaction' for removal, though the sibling list includes it. The context is clear enough for basic selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_threadArchive threadA
Archive a thread, optionally locking it so only moderators can unarchive it.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | Also lock the thread. Defaults to false. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| thread | Yes | Thread to archive (name or id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the primary action and locking behavior but omits permission requirements, effect on the thread, or error conditions. The locking detail adds some value beyond a simple verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence of 14 words. It is front-loaded with the key action and includes the optional locking detail without 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 archive tool with three parameters and no output schema, the description covers the primary purpose and the optional locking feature. The existence of 'unarchive_thread' as a sibling tool implies reversibility, which is partially addressed by the locking constraint. However, it could mention that archiving hides the thread from general view or require specific permissions.
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 input schema already documents all parameters. The description adds the 'optionally locking' context, which maps to the 'lock' parameter, but does not add significant new meaning 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 action 'Archive a thread' with a specific verb and resource. It also includes an optional locking behavior, distinguishing it from sibling tools like 'unarchive_thread'.
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. While the sibling 'unarchive_thread' implies a complementary pair, no guidance is given on scenarios for archiving vs. locking or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_roleAssign role to memberC
Give a role to a member.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Role to add (name or id). | |
| member | Yes | Member (id, @mention, or username). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full burden. It only states the action without disclosing side effects, required permissions, or behavior when the member already has the role.
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 (6 words) but lacks any structure or additional sentences. It is under-specified rather than efficiently 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?
Given no annotations or output schema, the description should provide more context about permissions, idempotency, and error conditions. It is insufficient for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no 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 "Give a role to a member" clearly indicates the verb (assign) and resource (role to member). It distinguishes from siblings like remove_role and create_role by implying adding an existing role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided about when to use this tool versus alternatives. There is no mention of prerequisites, typical scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ban_memberBan memberA
Ban a user from the server, optionally deleting their recent messages.
| Name | Required | Description | Default |
|---|---|---|---|
| member | Yes | Member to ban (id, @mention, or username). | |
| reason | No | Reason recorded in the audit log. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| delete_message_days | No | Delete this many days (0-7) of the user's recent messages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It correctly identifies the tool as destructive (banning) and optionally deleting messages, but it does not disclose reversibility (via unban_member) or permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core purpose without unnecessary words. Every word contributes 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 straightforward ban action, the description is largely complete. However, it could be improved by mentioning that banning is permanent and reversible via unban_member, or by noting required permissions. Without an output schema, the return value is not addressed.
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 all parameters well. The description only adds the phrase 'optionally deleting their recent messages,' which ties to the delete_message_days parameter but does not provide 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 'ban' and the resource 'user from the server', with the optional behavior of deleting recent messages. It effectively distinguishes itself from sibling tools like kick_member and timeout_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 timeout_member or kick_member. Usage is implied by the name and description, but the tool does not help an agent decide between similar actions such as kick vs ban.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_channelCreate channelB
Create a channel. type can be: text, voice, category, announcement, stage, or forum. Use category to nest the new channel under an existing category.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the new channel. | |
| type | No | Channel type to create. | text |
| topic | No | Topic / description (text-style channels). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| category | No | Name or id of an existing category to place this channel under. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not mention required permissions, rate limits, or any destructive effects beyond creating a new channel. This is minimal for a creation 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?
Two short sentences, no wasted words. The purpose is front-loaded with the action and resource, followed by key parameter hints. Efficient and clear.
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 exists, so the description should compensate. It covers channel types and category nesting but omits return values, error scenarios, and permission requirements. Reasonably complete for basic use 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 all parameters. The description adds context about the `type` enum and explains using `category` for nesting, but repeats schema information. This adds marginal 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 'Create a channel' and lists channel types, providing a specific verb and resource. However, it does not explicitly differentiate from sibling tools like create_role or create_emoji, which would help an agent choose correctly.
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 suggests using the `category` parameter to nest channels under an existing category, offering some usage guidance. But it lacks explicit when-to-use or when-not-to-use instructions compared to alternatives like edit_channel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_emojiCreate emojiA
Upload a new custom emoji from a URL or base64-encoded image. Requires Manage Expressions permission.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Emoji name (2-32 characters, alphanumeric and underscores only). | |
| image | Yes | Image source — a public URL (https://...) or a base64 data URI (data:image/png;base64,...). PNG, JPG, GIF (animated) supported. Max 256 KB. | |
| roles | No | Restrict this emoji to specific roles (names or ids). Omit to allow all roles. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses a mutating action and permission requirement, but lacks details on limits, overwrite behavior, or return 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?
Two sentences, no fluff, front-loaded with action. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with 4 parameters and no annotations or output schema, the description could explain success/error scenarios, rate limits, or the effect of omitted parameters. It covers the basics but is not exhaustive.
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. Description is partially redundant with schema (image source types already described), adding minimal new parameter 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?
Clearly states the verb 'Upload' and resource 'new custom emoji', specifying two modes (URL or base64). Distinguishes from sibling tools like delete_emoji and 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?
Mentions required permission (Manage Expressions), but does not provide when-not-to-use or alternative tools. Adequate but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_eventCreate scheduled eventA
Schedule a guild event. For voice/stage events pass a voice channel; for external events pass a location string instead.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Event name (1-100 characters). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | No | Voice or stage channel for the event (name or id). Omit for external events. | |
| end_time | No | End time as ISO 8601. Required for external events. | |
| location | No | Physical or external location string. Used when no channel is provided. | |
| start_time | Yes | Start time as an ISO 8601 string (e.g. '2025-08-01T18:00:00Z'). | |
| description | No | Event description (up to 1000 characters). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It explains the two creation modes but omits details like permission requirements, time constraints, or response format. The description adds value beyond the schema but lacks comprehensive behavioral clarity.
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 that deliver essential information without unnecessary words. It is front-loaded with the main action and then provides conditional guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (7 parameters, 2 required, no output schema), the description covers the key decision point (channel vs location). It does not explain return values or error cases, but these are less critical for a creation tool. Overall, it is sufficiently 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 each parameter is already documented. The description adds a bit of context by explaining the relationship between channel and location, but does not significantly augment parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Schedule a guild event.' It distinguishes between two modes (voice/stage vs external), which helps differentiate it from sibling tools like create_channel or create_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 explicit guidance: for voice/stage events pass a channel; for external events pass a location string. It does not mention when not to use the tool or list alternatives, 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.
create_inviteCreate inviteB
Generate an invite link for a channel.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel to invite users to (name or id). | |
| max_uses | No | Maximum number of uses. 0 = unlimited. Defaults to unlimited. | |
| temporary | No | Grant temporary membership (user is kicked if they don't get a role). Defaults to false. | |
| max_age_hours | No | Hours until the invite expires. 0 = never expires. Defaults to 24. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states 'generate an invite link' without mentioning required permissions, side effects (e.g., whether it overrides existing invites), or what the tool returns (the link itself). This is insufficient for a creation 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 a single, front-loaded sentence with no extraneous words. Every word contributes to the 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?
Despite having 5 parameters and no output schema, the description omits critical context: what the tool returns (the invite link), required permissions, and edge cases (e.g., if the channel is invalid). A more comprehensive description is needed for this complexity level.
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 all parameters. The description adds no extra meaning beyond the schema. 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 'Generate an invite link for a channel' uses a specific verb and resource, clearly distinguishing it from sibling tools like delete_invite and list_invites. The purpose is immediate and unambiguous.
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., list_invites, delete_invite). The usage is implied but not clarified with exclusions or contexts, leaving room for misinterpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_roleCreate roleA
Create a role with an optional color, permissions, and display options.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Role name. | |
| color | No | Hex color, e.g. "#5865F2". | |
| hoist | No | Display members with this role separately in the sidebar. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| mentionable | No | Allow anyone to @mention this role. | |
| permissions | No | Permission flag names, e.g. ["ManageChannels","KickMembers"]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure but only lists optional attributes, omitting side effects, permissions required, or return 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?
One concise sentence with no filler, effectively front-loading the 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?
Lacks information about required parameters, return values, and preconditions; adequate for a simple creation but not fully 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 description coverage is 100%, so baseline is 3; description adds grouping of optional fields but does not enhance understanding beyond what 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 creates a role with optional attributes, distinguishing it from sibling tools like edit_role or delete_role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives guidance; implicit that it's for role creation, but no contrast with 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.
create_threadCreate threadA
Start a thread from an existing message, or as a standalone thread in a text/forum channel. Pass message_id to branch from a message; omit it for a standalone thread.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Thread name (1-100 characters). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel to create the thread in (name or id). | |
| message_id | No | Message to start the thread from. Omit for a standalone thread. | |
| slowmode_seconds | No | Slowmode delay in seconds (0-21600). | |
| auto_archive_minutes | No | Inactivity minutes before auto-archive. Allowed values: 60, 1440, 4320, 10080. Defaults to channel setting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden. It discloses the two modes of thread creation but does not mention required permissions, rate limits, or error conditions (e.g., what happens if the channel does not support threads). The schema describes optional parameters like slowmode_seconds and auto_archive_minutes, but the description does not explain their behavioral impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and every sentence provides essential information. There is no redundancy or filler.
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 six parameters and no output schema, the description covers the critical usage modes and channel type. It lacks details on return values, error handling, and prerequisites like permissions, but it adequately conveys the tool's functionality for an agent to select and invoke 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?
Schema description coverage is 100%, so the schema already explains each parameter. The description adds key context by linking message_id to the 'branch from a message' mode and omitting it for standalone. This clarifies the primary semantic distinction beyond the schema. However, it does not elaborate on other parameters like slowmode or name.
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's action ('Start a thread') and resource ('from an existing message, or as a standalone thread'). It specifies the usage conditions with 'Pass message_id to branch from a message; omit it for a standalone thread', which differentiates the two modes and effectively distinguishes this tool from siblings like 'archive_thread' or 'list_threads'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use message_id versus omitting it for standalone threads. It mentions channel type ('text/forum channel'). However, it does not explicitly state when NOT to use the tool or mention alternatives, but given the sibling list, no other tool creates threads, so this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhookCreate webhookA
Create a webhook for a channel. Requires Manage Webhooks permission.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Webhook name (1-80 characters). | |
| avatar | No | Avatar image URL for the webhook. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel to attach the webhook to (name or id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses required permission, a key behavioral constraint. However, no annotations exist, so the description carries full burden and does not mention other behavioral traits like idempotency, side effects, 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?
Single sentence, front-loaded with action and essential context. 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?
Lacks information about return values (e.g., webhook ID), error conditions, or post-creation behavior. With no output schema and no annotations, the description is insufficient for an agent to fully understand the tool's complete 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%, with each parameter already described. The description adds no further parameter context beyond the permission requirement.
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 'Create a webhook for a channel' with specific verb and resource. Distinguishes from sibling tools like delete_webhook 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?
Mentions 'Requires Manage Webhooks permission' which gives context, but does not explicitly state when to use this tool versus alternatives like send_webhook_message or configure webhook settings later.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_channelDelete channelA
Permanently delete a channel. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Reason recorded in the audit log. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel to delete (name or id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that deletion is permanent and irreversible, which is a key behavioral trait. However, since no annotations are provided, the description carries the full burden; it could mention permission requirements or cascading 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?
Two concise sentences that are front-loaded with the core action. 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 destructive action, the description is adequate but lacks context about return values, permissions, or prerequisites (e.g., needing manage_channels permission). With no output schema, a bit 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?
Input schema coverage is 100% (all parameters have descriptions). The tool description adds no extra meaning beyond the schema, so it meets the baseline but does not excel.
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 the resource 'channel', and adds 'permanently' and 'cannot be undone' to reinforce finality. This distinguishes it from sibling operations like archive_thread or edit_channel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., archive_thread or edit_channel). The description only states what it does, not when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_emojiDelete emojiA
Remove a custom emoji by name or id. Requires Manage Expressions permission.
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | Yes | Emoji to delete (name or id). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only mentions the permission requirement, but for a destructive action, it should clarify permanence, side effects, or conditions under which the emoji is removed.
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 succinct sentences, front-loaded with the primary action and identifier method. 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 tool with 2 params and no output schema, the description covers the basics but lacks completeness regarding permanence, scope (only custom emojis), and potential alternatives (create_emoji, list_emojis). Adequate 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%, baseline 3. The description adds 'by name or id' which overlaps with the schema's description of the emoji parameter. It does not add meaningful new semantics 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 action: remove a custom emoji. It specifies the identifier (by name or id) and implicitly distinguishes from sibling tools like create_emoji and 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?
Mentions the required permission (Manage Expressions) as a prerequisite, but does not provide guidance on when to use this tool versus alternatives, nor does it 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.
delete_eventDelete scheduled eventB
Cancel and remove a scheduled guild event by name or id.
| Name | Required | Description | Default |
|---|---|---|---|
| event | Yes | Event to delete (name or id). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a destructive operation but does not disclose behavioral traits such as required permissions, irreversibility, or side effects. No annotations are present to supplement this gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 11 words, conveying essential information without any fluff. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two parameters and no output schema, the description is largely complete. It could mention that the event must exist and that deletion is irreversible, but this is not critical for a basic understanding.
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 describes both parameters. The tool description adds no additional meaning beyond stating 'by name or id,' which is already in 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 the action (cancel and remove) and resource (scheduled guild event), and specifies the identifier (name or id). It is distinct from sibling tools like create_event and 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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or conditions for deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_inviteDelete inviteB
Revoke an invite by its code. Accepts the full URL or just the code.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Invite code or full URL (e.g. 'abc123' or 'https://discord.gg/abc123'). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It only states 'Revoke an invite', implying a destructive action, but does not disclose any side effects, permissions required, or whether the action is irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, efficiently conveying the tool's purpose and key parameter behavior.
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 is minimally adequate but does not mention return values or success/failure behavior. Given no output schema and no annotations, it could be more complete by hinting at what to expect.
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 describes both parameters. The description adds no extra meaning beyond what is in the schema; for the 'code' parameter, it reiterates that full URLs are accepted, which is already in the schema. Thus, 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 uses a specific verb 'Revoke' and resource 'invite', clearly indicating the action. It also mentions accepting full URL or just code, which distinguishes it from sibling tools like create_invite or 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 provides no guidance on when to use this tool instead of alternatives, nor does it mention prerequisites or potential restrictions (e.g., permissions required).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_messageDelete messageB
Delete a single message by its id.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel the message is in (name or id). | |
| message_id | Yes | Id of the message to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose important behaviors like required permissions (e.g., manage_messages), irreversibility, rate limits, or constraints like message age. The agent is left unaware of these 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?
A single, front-loaded sentence with no unnecessary words. It efficiently conveys the core functionality.
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 or annotations, the description is too minimal. It omits failure cases, permission dependencies, and important Discord-specific limitations (e.g., cannot delete messages older than 14 days). This incompleteness could lead to errors.
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, so baseline is 3. The tool description does not add extra meaning beyond the schema, which is acceptable but not improved.
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), the resource (a single message), and the identification method (by its id). It is specific and distinguishes from sibling tools like delete_channel or delete_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 information on when to use this tool versus alternatives, such as edit_message or other deletion tools. It lacks context on 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.
delete_roleDelete roleB
Delete a role from the server.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Role to delete (name or id). | |
| reason | No | Reason recorded in the audit log. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Delete' but does not disclose side effects (e.g., cascade removal from members, irreversibility, or audit log details). The 'reason' parameter hints at audit logging but is not explicitly described.
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?
A single, straightforward sentence. No wasted words, front-loaded with the action. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with no output schema, the description covers the essential action. It could mention effects like removal from members or permission requirements, but overall it is fairly 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 coverage is 100%, with all three parameters described in the schema. The description adds minor clarity (e.g., 'name or id' for role). With full schema coverage, baseline is 3; description adds no significant additional 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 'Delete a role from the server.' It uses a specific verb (Delete) and resource (role), distinguishing it from siblings like create_role, edit_role, and remove_role (which removes from a 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 versus alternatives, nor any mention of prerequisites like permissions or constraints (e.g., cannot delete default roles). The agent has no contextual cues for proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookDelete webhookA
Remove a webhook by name or id. Requires Manage Webhooks permission.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| webhook | Yes | Webhook to delete (name or id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates the destructive nature but lacks details on irreversibility, side effects, or error responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant information. Front-loaded with key action and identification method.
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?
Tool is simple, but description omits success/error behavior and what happens if webhook not found or permission missing. Adequate 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%, so schema already documents parameters. Description adds no additional parameter information, meeting 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?
Clearly states the action (remove), resource (webhook), and identification method (by name or id). Distinct from sibling tools like create_webhook or 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?
States the action and a prerequisite (Manage Webhooks permission). Provides clear context for when to use, but does not explicitly mention when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_channelEdit channelC
Rename a channel, change its topic, or move it into/out of a category.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name. | |
| topic | No | New topic. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel to edit (name or id). | |
| category | No | Move under this category (name or id). Pass "" to remove from any category. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether changes are immediate and permanent, what permissions are needed, or what happens to settings not explicitly provided (e.g., if only name is given, do topic and category reset?). The tool mutates state but no warnings are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 12 words, concise and front-loaded. However, it omits crucial details that could be added without making it verbose, so it's not maximally 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 5 parameters (100% schema coverage, no output schema), the description is too brief. It does not explain the 'server' parameter's optionality or the special behavior of the 'category' parameter. For a tool that modifies a channel, more context is needed to ensure correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by linking parameters to actions (name→rename, topic→change topic, category→move), but it does not clarify the 'server' parameter or that an empty category removes from category. Marginal improvement over 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 tool edits a channel by renaming, changing topic, or moving it into/out of a category. It distinguishes from sibling tools like create_channel or delete_channel, but could be more explicit about it being for existing channels only.
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 (e.g., edit_server for guild-level changes). No prerequisites or conditions mentioned, such as required permissions or that the server must be specified when the bot is in multiple servers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_messageEdit messageA
Edit the content of a message the bot sent. The bot can only edit its own messages.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel the message is in (name or id). | |
| content | Yes | New message content. | |
| message_id | Yes | Id of the message to edit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that only the bot's own messages can be edited, which is a key behavioral trait. However, it doesn't mention whether edits are destructive (overwrites previous content) or other side effects like 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?
A single sentence of 18 words that is direct and efficient. Every word earns its place, 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 mutation tool with no output schema and no annotations, the description is nearly complete. It specifies the action and constraint. It could mention that the new content replaces old content, but overall it 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% with descriptions for all 4 parameters. The description does not add semantic value beyond stating the tool edits content, which aligns with the 'content' parameter. Baseline score of 3 is appropriate as description adds no extra 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 the verb ('edit') and resource ('content of a message') and includes a critical constraint ('bot can only edit its own messages'), which distinguishes it from siblings like send_message or 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 explicitly states when to use the tool (edit a bot's message) and implicitly when not to (cannot edit others' messages). It does not name alternative tools for similar actions like deleting or sending, but the constraint is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_roleEdit roleA
Edit an existing role's name, color, permissions, or display options. Only provided fields are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New role name. | |
| role | Yes | Role to edit (name or id). | |
| color | No | New hex color, e.g. "#5865F2". Pass "none" to clear. | |
| hoist | No | Display members with this role separately in the sidebar. | |
| reason | No | Reason recorded in the audit log. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| mentionable | No | Allow anyone to @mention this role. | |
| permissions | No | Replace the role’s permissions with these flag names, e.g. ["ManageChannels","KickMembers"]. Replaces the full set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes partial update behavior but omits details like permissions replacement (full set replaced), required permissions, audit log implications, and that edit may be destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Front-loaded with key information about what the tool edits.
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?
Lacks information about return values, error conditions, prerequisites, and permissions. With 8 parameters and no output schema, the description is insufficiently 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 each parameter already has descriptions. The overall description adds the partial update hint but does not elaborate beyond schema 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?
Clearly states 'Edit an existing role' and lists editable fields (name, color, permissions, display options). Distinguishes from sibling tools like create_role and 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?
Mentions 'Only provided fields are changed' indicating partial update, but provides no explicit guidance on when to use this vs. alternatives (e.g., create_role) or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_serverEdit serverA
Update server settings. Only provided fields are changed. Requires Manage Server (and Manage Guild for icon/banner changes).
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | New icon — a public image URL or base64 data URI. Pass "none" to remove the icon. | |
| name | No | New server name. | |
| reason | No | Reason recorded in the audit log. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| afk_channel | No | Voice channel to move idle members to (name or id). Pass "none" to clear. | |
| system_channel | No | Channel for system messages like join notifications (name or id). Pass "none" to clear. | |
| verification_level | No | Minimum verification level: none, low (email), medium (5-min Discord account), high (5-min server member), very_high (phone verified). | |
| afk_timeout_minutes | No | Minutes of inactivity before moving members to the AFK channel. Allowed: 1, 5, 10, 15, 30, 60. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that only provided fields are changed (partial update) and required permissions. However, it does not describe error handling or whether the tool returns the updated server.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted 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 8 parameters, 0 required, and no output schema, the description covers the update behavior and permissions. It could optionally mention the return value, but not necessary.
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 baseline is 3. The description adds 'Only provided fields are changed' which provides behavioral context, but does not add new semantics beyond the schema's detailed parameter 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 it updates server settings, with a specific verb ('Update') and resource ('server settings'). It distinguishes from sibling tools like ban, delete, etc., which are different actions.
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?
It explicitly notes the required permissions (Manage Server, and Manage Guild for icon/banner changes), giving clear context for when to use. It does not mention alternatives, but the tool's specific purpose makes that unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_logGet audit logA
Browse the server's audit log. Optionally filter by action type or the user who performed the action. Requires View Audit Log permission.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | Filter by the user who performed the action (id, @mention, or username). | |
| limit | No | Number of entries to fetch (1-100). Defaults to 25. | |
| action | No | Filter by action type name, e.g. 'MemberKick', 'MemberBan', 'ChannelCreate', 'MessageDelete'. Uses the AuditLogEvent enum name. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It indicates read-only access and permission requirements but omits details like pagination, ordering, rate limits, or what the response contains. The 'Browse' verb implies read-only, but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant words. Every sentence adds value: purpose, optionality, and requirement. Highly 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?
No output schema, so the description should explain return values. It does not describe the structure of audit log entries (e.g., timestamp, action, target). Parameter coverage is good, but overall completeness is lacking for a browsing 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%, so baseline is 3. The description adds context that filters are optional and mentions the permission, but does not elaborate on parameter meanings 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 tool browses the server's audit log, using a specific verb and resource. It distinguishes from sibling tools like get_server_info or list_channels by naming a unique resource.
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 mentions optional filters and a required permission (View Audit Log). It does not explicitly contrast with alternatives, but as the only audit log tool, usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_memberGet member infoA
Show details about one member: nickname, join date, and roles.
| Name | Required | Description | Default |
|---|---|---|---|
| member | Yes | Member (id, @mention, or username). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It lists output fields but fails to disclose permissions needed, error handling (e.g., member not found), or side effects. For a read operation, basic transparency is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, directly conveys the tool's purpose. Ideal 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?
For a simple get-info tool, the description is adequate. It describes the output fields. Could mention error behavior or provide an example, but not necessary given low 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 descriptions for both parameters. The description adds value by hinting at the output fields ('nickname, join date, and roles'), going beyond the schema which only describes parameter syntax.
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 'show' and the resource 'details about one member' including specific fields: nickname, join date, roles. It distinguishes from sibling tools like assign_role or kick_member by its read-only nature.
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 retrieving member info but does not explicitly state when to use it vs alternatives like list_members or other detail tools. No exclusions or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pinned_messagesGet pinned messagesA
Fetch all pinned messages in a channel, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel to read pins from (name or id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It adds behavioral context beyond the schema by stating the ordering ('newest first') and that it returns all pinned messages. However, it omits details like required permissions (e.g., 'Read Message History') or whether the response includes full message objects. Still, the added ordering information is valuable.
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?
A single sentence front-loads the core action and ordering. Every word earns its place; no redundant or filler content. Ideal length for conveying essential 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?
Given the simplicity of the tool (fetching pinned messages) and no output schema, the description covers the key points: what it does and ordering. It does not specify the output format (e.g., array of message objects) but this is common for fetch tools. Slightly more detail on output could improve completeness, but it is mostly 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 does not add additional semantics or formats beyond the schema (e.g., no explanation of how to specify channel by name vs ID). Baseline score of 3 is appropriate since the schema is self-sufficient.
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 'Fetch all pinned messages in a channel, newest first.' clearly states the verb ('Fetch'), resource ('pinned messages'), and scope ('in a channel'). It distinguishes from sibling tools like 'pin_message' and 'unpin_message', which manage pins rather than retrieve them, and 'read_messages', which fetches general messages.
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 retrieving pinned messages but provides no explicit guidance on when to avoid it or alternatives. For example, it does not mention that 'read_messages' might be used for non-pinned messages or that permissions are required. The context is clear but lacks comparative direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reactionsGet reactionsB
List users who reacted to a message with a specific emoji.
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | Yes | Emoji to look up (Unicode or custom emoji name/id). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel the message is in (name or id). | |
| message_id | Yes | Id of the message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states a read operation but omits permissions requirements, pagination, rate limits, or any side effects, which is insufficient for a tool with no 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 a single concise sentence that conveys the core purpose without extraneous words. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, and the description provides no details on return format, pagination, or error scenarios. For a tool with four parameters, this leaves significant gaps in understanding what the agent will receive.
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 describes each parameter in detail. The description adds no additional semantic value beyond what the schema provides, 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 action (list users who reacted), the target (message with a specific emoji), and the resource (users). It effectively distinguishes from sibling tools like add_reaction or remove_reaction.
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. It does not mention prerequisites, exclusions, or context for use, leaving the agent to infer usage from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_infoGet server infoB
Show an overview of a server: channel counts, role count, owner, members.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It mentions returned data (counts, owner, members) but does not disclose behavioral traits such as idempotency, read-only nature, required permissions, or side effects. This is insufficient for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose and key outputs. There is no unnecessary information, making it highly concise and structured.
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 informational tool with one optional parameter and no output schema, the description adequately covers the returned data (channel counts, role count, owner, members). It is mostly complete, though slightly lacking in specifying additional details like server name or ID.
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 the single parameter with a clear description (server name/id, optional with conditions). The tool description adds no extra meaning beyond the schema. With 100% schema coverage, baseline is 3, and no additional value 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 shows an overview with specific elements: channel counts, role count, owner, members. It distinguishes from siblings like list_channels or list_members by offering an aggregated summary. However, it doesn't fully specify all possible fields (e.g., server name, icon), preventing a perfect score.
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 get_member or list_roles. The description implies it's for a quick overview, but lacks explicit context or exclusion criteria for effective tool selection by the AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kick_memberKick memberA
Remove a member from the server. They can rejoin with a new invite.
| Name | Required | Description | Default |
|---|---|---|---|
| member | Yes | Member to kick (id, @mention, or username). | |
| reason | No | Reason recorded in the audit log. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It only mentions the member can rejoin, but omits permissions required, side effects (e.g., audit log entry), or error conditions. Inadequate for a mutation 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?
Two concise sentences, no filler. The purpose and key behavioral note are front-loaded, making it 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 no annotations or output schema, the description covers the core purpose but lacks details on prerequisites, failure modes, or return value. Adequate but with notable 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 adequate parameter descriptions. The tool description adds no additional meaning beyond the schema, 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 ('Remove a member') and distinguishes from ban by noting the member can rejoin with a new invite. This differentiates it from sibling tool 'ban_member' effectively.
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 temporary removal (rejoinable) but does not explicitly state when to use kick vs alternatives like ban or timeout, nor provide any exclusions. Guidance is vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bansList bansB
List all banned users in a server with their ban reasons.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It states it lists banned users with reasons, implying a read operation, but does not disclose authorization requirements, rate limits, or any 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?
A single sentence that is clear and efficient, with no unnecessary words. It front-loades the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description omits details about the return format (e.g., array of objects, fields included). For a list operation, this is a notable gap. Additionally, no pagination or filtering guidance is given.
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% for the single parameter (server), and the schema already provides a clear description. The tool description adds no additional meaning 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 it lists banned users with reasons, distinguishing it from other sibling tools like ban_member or list_members. However, it does not explicitly differentiate from similar list 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 guidance is provided on when to use this tool versus alternatives (e.g., list_members or audit log). The purpose is implied but not explicitly contextualized.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channel_permissionsList channel permissionsA
Show the permission overwrites on a channel — which roles/members are explicitly allowed or denied which permissions. Anything not listed is inherited.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel (name or id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It accurately describes the output (overwrites and inheritance) but does not explicitly state read-only behavior or any 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 a single, front-loaded sentence with no wasted words, clearly conveying the tool's 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?
For a simple read-only list tool, the description is complete. It explains what is shown and the concept of inheritance, requiring no additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond the schema, meeting the baseline for high 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?
The description clearly states the tool shows permission overwrites on a channel, specifying which roles/members are explicitly allowed or denied. It distinguishes from sibling tools like set_channel_permission and remove_channel_permission.
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 permissions, but lacks explicit guidance on when to use vs alternatives like set_channel_permission. However, the context of sibling tools makes the purpose clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channelsList channelsB
List every channel in a server with its type, id, and parent category.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like permissions needed or rate limits. It only states it lists channels, without addressing whether it works across servers or if there are any 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 a single sentence with no extra words, conveying the essential information 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 list operation with one optional parameter and no output schema, the description adequately covers what is returned. It could mention pagination or limits, but it is mostly 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% and the parameter description is already detailed in the schema. The tool description adds no additional semantic information about the 'server' parameter 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 'List', the resource 'every channel in a server', and the specific output fields (type, id, parent category). This distinguishes it from sibling list tools like list_roles or list_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?
No guidance is provided on when to use this tool versus alternatives, such as when to filter channels or use other list tools. The description does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_emojisList emojisA
Return all custom emoji in the server with their names and ids.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the basic purpose without disclosing any behavioral traits like rate limits, authentication needs, or potential impacts. Minimal transparency beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and concise. Every word serves a purpose with no wasted verbiage.
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 (one optional parameter, no output schema, no nested objects), the description adequately covers the return value (names and ids). It could mention pagination if applicable, but overall it is reasonably complete for a simple 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?
The input schema has 100% description coverage for the single parameter 'server'. The description does not add any meaning beyond what the schema already provides, so 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 the tool returns all custom emoji in the server with specific fields (names and ids), using a specific verb and resource. It distinguishes well from sibling tools like create_emoji or delete_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?
The description implies when to use the tool (to list emojis) but lacks explicit guidance on when not to use it or alternatives. No exclusions or prerequisites are mentioned, though the context of siblings makes the purpose clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsList scheduled eventsA
Fetch upcoming scheduled events in the server with interested-user counts.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool fetches upcoming events (not all events) and includes interested-user counts. No mention of permissions or rate limits, but for a simple read operation the disclosure is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. Every part adds value, directly stating the action, resource, and returned data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description fully covers the purpose and return value. It mentions the count of interested users, which is a useful detail. No gaps for an agent to make mistakes.
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 one optional parameter ('server') fully described in the schema. The description does not add any extra semantics 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 uses a specific verb ('Fetch') and identifies the resource ('upcoming scheduled events') with additional detail ('interested-user counts'). It clearly distinguishes from sibling tools like create_event or delete_event.
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 reading events but provides no explicit guidance on when to use this tool versus alternatives (e.g., when you need past events). No exclusions or context for choosing between list_events and other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invitesList invitesA
Show all active invites for the server with use counts and expiry info.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description states it shows 'active invites' but does not disclose permission requirements, pagination, or whether expired invites are excluded. Minimal transparency beyond being read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 12 words, front-loaded with key action and resource. 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?
Covers core functionality for a list tool. Lacks output schema but description hints at return fields. Adequate for 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 description for the single parameter 'server'. The tool description adds no extra meaning for parameters, 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?
Description uses specific verb 'Show' and identifies resource 'active invites for the server'. It adds details about output ('use counts and expiry info') and clearly distinguishes from sibling tools like create_invite and 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?
Implies usage for viewing active invites, but no explicit when-not-to-use or alternatives. For a simple list operation, context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membersList membersA
List members of a server. Requires DISCORD_PRIVILEGED_INTENTS=true and the Server Members intent enabled in the Developer Portal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max members to list (1-100). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions requirements but does not describe key behaviors such as pagination, ordering, or what happens when the 'server' parameter is omitted. The limit parameter's behavior is not explained beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose. There is no unnecessary information, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no nested objects), the description is adequate but lacks information on return format, ordering, or edge cases. It provides the minimum viable information but has 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?
The input schema has 100% description coverage for both parameters ('limit' and 'server'), so the description does not need to add much. It adds no additional meaning beyond the schema, resulting in a baseline score of 3.
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 of a server,' using a specific verb and resource. It distinguishes from siblings like 'get_member' and other list tools, making the tool's purpose immediately understandable.
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 prerequisite: 'Requires DISCORD_PRIVILEGED_INTENTS=true and the Server Members intent enabled.' This guides the agent on when the tool is usable. However, it does not explicitly state when not to use it or provide alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rolesList rolesA
List all roles in a server, highest first.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral info. It states the tool lists roles (read operation) but does not disclose permissions, rate limits, or error behavior. Adequate for a simple list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information, no filler. Every word serves a 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?
The description covers what the tool does and the ordering. It omits return format, but for a list tool this is acceptable. Could mention that roles include permissions data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; description adds no extra meaning beyond the schema's parameter description for 'server'. Baseline score of 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 (list), the resource (roles), the scope (in a server), and the ordering (highest first). It distinguishes from sibling tools like assign_role, create_role, 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 implies usage for viewing roles but does not explicitly state when to use vs alternatives. However, the context is clear as it's a read-only list tool among many role-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_serversList serversA
List the Discord servers (guilds) the bot has been added to.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states the basic function and omits any details about permissions, side effects, rate limits, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, efficiently conveying the tool's 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?
The description is minimal but adequate for a read-only list tool with no parameters. However, it does not specify whether the list includes identifiers or names, leaving some ambiguity. Could be improved by noting what fields are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema description coverage, so the description adds no parameter semantics. Baseline score of 4 is appropriate per guidelines.
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 the resource 'Discord servers (guilds)' with a specific scope 'the bot has been added to'. It effectively distinguishes from sibling tools like list_channels or list_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?
No guidance is provided on when to use this tool versus alternatives such as get_server_info or other list tools. The description lacks any when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_stickersList stickersB
Fetch all guild stickers with their names, formats, and tags.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. While it implies a read operation ('Fetch'), it does not mention permissions, rate limits, pagination, or behavior when the optional 'server' parameter is omitted. The schema parameter description covers the server condition, but the tool description adds no additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the primary action ('Fetch all guild stickers'). Every word is meaningful 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 tool with one optional parameter and no output schema, the description is reasonably complete. However, it could mention that the result is a list or any limitations (e.g., number of stickers). It does not fully cover edge cases or provide extra context beyond the basics.
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% (the single 'server' parameter has a description). The tool description does not add any additional meaning beyond what the schema already provides, so the 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 uses the specific verb 'Fetch' and clearly identifies the resource as 'all guild stickers'. It also specifies the returned information (names, formats, tags), which differentiates it from other list tools like list_emojis that 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 does not provide any guidance on when to use this tool versus alternatives like list_emojis or list_channels. It fails to mention contexts, prerequisites, or exclusions, leaving the agent without decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_threadsList threadsA
List active threads in a channel. Pass archived=true to include archived threads.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel to list threads in (name or id). | |
| archived | No | Include archived threads. Defaults to false (active only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the default filtering and the effect of the archived parameter. Since no annotations are present, it adequately covers the main behavior but lacks details on permissions 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 extremely concise, single sentence, front-loaded, and contains 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 list operation, the description covers the essential functionality and key parameter. It may lack pagination details 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 description coverage is 100%, so the description adds little beyond what is already in the schema. It reiterates the archived default but does not provide new 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 the action 'list' and resource 'threads in a channel' and distinguishes from sibling tools like create_thread or archive_thread.
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?
It explains the default behavior (active threads) and the archived parameter, providing clear context for use. However, it does not explicitly mention when not to use it or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksList webhooksB
List all webhooks in the server, optionally filtered to one channel.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | No | Limit results to this channel (name or id). Omit to list all server webhooks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden of behavioral disclosure. It does not mention whether this operation requires special permissions, is safe to call, or any rate limits. The read-only nature is implied but not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no fluff. It efficiently conveys the core functionality, though it could slightly expand on the scope without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with two optional parameters and no output schema, the description is adequate but lacks details about pagination, ordering, or the return format, leaving the agent to infer 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 description coverage is 100%, so baseline is 3. The description adds that filtering is optional ('optionally filtered to one channel'), which matches the schema but does not provide additional semantics beyond what is already in the parameter 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 verb 'List' and the resource 'webhooks', specifying optional filtering by channel. This distinguishes it clearly from sibling tools like create_webhook, delete_webhook, and send_webhook_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 usage for retrieving webhooks, but it does not explicitly state when to use this tool versus alternatives like list_channels or list_members, nor does it mention 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.
move_member_to_voiceMove member to voice channelA
Move a member who is already in a voice channel to a different one. The member must be connected to voice for this to succeed.
| Name | Required | Description | Default |
|---|---|---|---|
| member | Yes | Member to move (id, @mention, or username). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Destination voice channel (name or id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the precondition and the basic operation, omitting side effects, error behavior, permissions, or return value. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. First sentence defines the action, second adds a crucial condition. Efficient 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 covers the action and precondition. However, it lacks details on success/failure behavior, error messages, or permission requirements. With no output schema, more completeness is expected for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no additional meaning beyond the parameter descriptions. The precondition is related but not parameter-level detail. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('move'), the resource ('a member'), and the context ('who is already in a voice channel to a different one'). It uniquely identifies the tool's purpose among siblings, with no ambiguity.
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 a critical precondition ('the member must be connected to voice'), but lacks guidance on when to use this tool versus alternatives (e.g., server_deafen, server_mute) 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.
pin_messagePin messageB
Pin a message in its channel. Requires Manage Messages permission.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel the message is in (name or id). | |
| message_id | Yes | Id of the message to pin. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It only mentions the required permission, omitting details like idempotency, whether pinning replaces an existing pin, or what the response looks like.
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 one clear sentence. It could be slightly improved by adding more context without becoming verbose, but it's 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 no output schema, the description lacks information about return values or side effects. For a mutation tool, this is insufficient for an agent to fully understand the tool's behavior without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add meaning beyond the schema's property descriptions. Baseline score of 3 is appropriate as the schema already documents parameters adequately.
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') and the resource ('a message in its channel'). It is specific and distinguishes from sibling tool 'unpin_message' by indicating the operation.
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, such as when a message is already pinned or if the user lacks permission. The mention of 'Requires Manage Messages permission' is a constraint, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_messagesRead messagesA
Read the most recent messages from a channel (newest last). Reading the text body requires DISCORD_PRIVILEGED_INTENTS=true plus the Message Content intent.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many recent messages to fetch (1-100). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel to read (name or id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It discloses that the tool returns messages in reverse chronological order and that reading message content requires specific intents. However, it does not mention potential rate limits, error handling, or what happens when intents are missing (e.g., content will be empty).
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: first states purpose and ordering, second adds a critical prerequisite. No extraneous information; every sentence is essential 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?
No output schema exists, and the description does not specify the return format (e.g., list of message objects with fields like id, content, author). It also does not mention pagination or the effect of the 'limit' parameter on the result. Given the presence of many sibling tools and the lack of annotations, additional detail 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 description coverage is 100%, so the baseline is 3. The description adds no additional meaning to the parameters beyond what is already in the schema; it does not explain the 'newest last' ordering in relation to parameters or provide context for the 'server' parameter's optionality.
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 'Read the most recent messages from a channel (newest last)', specifying the action (read), resource (messages), and ordering (newest last). This distinguishes it from siblings like send_message, delete_message, or edit_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 mentions the prerequisite of DISCORD_PRIVILEGED_INTENTS and Message Content intent for reading text body, but does not explicitly guide when to use this tool versus other read operations like get_pinned_messages or search (if such tool existed). Implied usage context is present but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_channel_permissionRemove channel permission overwriteA
Remove a role's or member's entire permission overwrite from a channel, reverting them to inherited permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Reason recorded in the audit log. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| target | Yes | Role or member whose overwrite to remove (name, id, @mention, or @everyone). | |
| channel | Yes | Channel (name or id). | |
| target_type | No | Disambiguate role vs member. Default: auto (role first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes core behavior (reverting to inherited permissions) but omits details like whether the change is immediate, audit log recording, or permission requirements. No annotation 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?
Single sentence, front-loaded with action and resource, 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?
Lacks return value information; no output schema. For a mutation tool, expected confirmation or error details are missing. Schema coverage is high, but overall completeness is moderate.
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 all parameters at 100%, so the description adds no extra per-parameter meaning. The 'reverting to inherited' is overall behavior, not parameter specific.
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 the action (remove), resource (permission overwrite), and scope (role/member, entire overwrite, revert to inherited). Distinguishes from sibling tools like set_channel_permission or list_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?
Implies usage context (when you want to remove an overwrite) but lacks explicit when-not-to-use or alternatives. No guidance on prerequisites like required permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_reactionRemove reactionA
Remove a reaction from a message. Omit user to remove the bot's own reaction. Removing another user's reaction requires Manage Messages permission.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | User whose reaction to remove (id, @mention, or username). Omit to remove the bot's own reaction. | |
| emoji | Yes | Emoji to remove (Unicode or custom emoji name/id). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel the message is in (name or id). | |
| message_id | Yes | Id of the message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden and discloses key behaviors: default behavior when user is omitted, permission requirement. It does not mention side effects or error states, but is transparent enough for a deletion 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?
Two sentences, no extraneous information, front-loaded with action and immediate nuance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description sufficiently covers purpose, usage, and permissions. It could mention return value (likely nothing), but is complete for a simple delete operation.
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 parameter descriptions exist. The description adds value by explaining the default behavior of the 'user' parameter. This goes beyond the schema's phrasing.
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 reaction) and the resource (a message), with specific nuance about omitting user for bot's own reaction and permission requirements. It distinguishes from sibling tools like add_reaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to omit the user parameter and the permission needed to remove another user's reaction. While it doesn't compare to all alternatives, it gives clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_roleRemove role from memberC
Remove a role from a member.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Role to remove (name or id). | |
| member | Yes | Member (id, @mention, or username). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose behavioral traits. It does not mention required permissions, error handling (e.g., if member lacks the role), or side effects. For a mutation tool, this is a significant gap.
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, using only six words to convey the core action. While some may consider it too terse, it contains no fluff and is easily digestible.
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 its simplicity, the description lacks important contextual information such as return value, side effects, or any behavioral nuances. For a mutation tool with no output schema, 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?
The input schema already provides 100% coverage with descriptions for all three parameters. The description adds no additional meaning beyond the schema, 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 'Remove a role from a member' clearly states the action and the two main entities (role and member). It distinguishes from sibling tools like 'remove_reaction' or 'remove_channel_permission', though it does not elaborate on 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?
No guidance is provided on when to use this tool versus alternatives such as 'assign_role' or 'edit_role'. The description does not specify prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageSend messageA
Post a message to a text channel. Supports standard Discord markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel to post in (name or id). | |
| content | Yes | Message text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. Only mentions markdown support. Fails to disclose permission requirements (send messages), rate limits, or whether it can send embeds/attachments. Lacks critical behavioral 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?
Two sentences, front-loaded with action and resource. No unnecessary words. Efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with no output schema. Description covers basic purpose but omits context like return value (message ID), permissions, and error conditions. Adequate for minimal usage 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 baseline is 3. Description adds that content supports Discord markdown, which provides extra semantic value beyond the schema alone. No additional info on server or channel parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb-resource pair: 'Post a message' to a 'text channel'. Distinguishes from sibling tools like edit_message, delete_message. Also mentions markdown support, adding specificity.
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: send a message to a channel. No explicit when-to-use or when-not-to-use compared to siblings like send_webhook_message or edit_message. Adequate for basic understanding but lacks guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_webhook_messageSend webhook messageB
Post a message through a webhook. Supports a custom username and avatar override for this message.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| content | Yes | Message content. | |
| webhook | Yes | Webhook to send through (name or id). | |
| username | No | Override the webhook's display name for this message. | |
| avatar_url | No | Override the webhook's avatar URL for this message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should disclose behavioral traits. It only states the basic function and overrides, but does not mention permissions, rate limits, error handling, or side effects (e.g., whether the webhook must exist). This is insufficient for a mutation 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?
Two sentences, no wasted words. The first sentence clearly states the primary action, and the second adds key options. Highly 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 simple action and well-documented parameters, the description is minimally adequate. However, it lacks details on error scenarios, webhook existence expectations, and return behavior (no output schema), which could hinder an AI agent's correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. The description adds minimal value beyond the schema by highlighting the custom username and avatar override features, but does not clarify formats or constraints not already 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 the action ('Post a message through a webhook') and resource ('webhook'), and mentions additional features (custom username/avatar). It distinguishes from sibling tools like 'send_message' by specifying the webhook channel, but does not explicitly contrast them.
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., 'send_message'), no prerequisites or conditions mentioned, and no exclusions or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_deafenServer deafen / undeafenC
Toggle server-level deafen for a member in a voice channel. Pass deafen=false to undeafen.
| Name | Required | Description | Default |
|---|---|---|---|
| deafen | Yes | true to deafen, false to undeafen. | |
| member | Yes | Member to deafen/undeafen (id, @mention, or username). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states the toggle action but does not disclose required permissions, side effects (e.g., does it affect the member's ability to speak?), or whether it is reversible. Minimal behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the action ('Toggle server-level deafen'). Concise with no extraneous words. However, could be slightly more structured with separate from/use cases.
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 boolean toggle with 100% schema coverage and no output schema, the description is adequate. It mentions the voice channel context, but lacks details on return value, error conditions, or member state requirements.
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 no new information beyond the schema; it repeats 'pass deafen=false to undeafen' which is already in the schema description. No additional meaning for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool toggles server-level deafen for a member in a voice channel. It specifies the action (toggle) and resource (member's deafen status). It distinguishes from siblings like server_mute through the use of 'deafen' vs 'mute'. However, it does not explicitly differentiate from similar operations like server_mute.
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 server_mute. No mention of prerequisites (e.g., member must be in a voice channel) or when not to use it. The description only states basic functionality without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_muteServer mute / unmuteB
Toggle server-level mute for a member in a voice channel. Pass mute=false to unmute.
| Name | Required | Description | Default |
|---|---|---|---|
| mute | Yes | true to mute, false to unmute. | |
| member | Yes | Member to mute/unmute (id, @mention, or username). | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It states the tool toggles mute and explains the boolean, but fails to describe side effects (e.g., what happens if the member is not in a voice channel, or if already muted/unmuted) or any other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the essential purpose and basic usage. No unnecessary words or repetition; it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple toggle tool with no output schema, the description covers the core functionality. However, it lacks context on prerequisites, error handling, and differentiation from sibling tools. It is minimally complete 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?
The input schema provides 100% description coverage for all three parameters. The description adds only a small clarification ('Pass mute=false to unmute') which is already implied by the schema's 'true to mute, false to unmute.' Therefore, minimal added 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?
The description clearly states the action ('Toggle server-level mute') and the resource ('a member in a voice channel'), and specifies the boolean parameter usage. It is distinct from the sibling tool 'server_deafen' but does not explicitly differentiate itself; the verb 'toggle' and mention of voice channel help.
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 like 'server_deafen' or other mute-related actions. There is no mention of prerequisites (e.g., member must be in a voice channel) 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.
set_channel_permissionSet channel permissionA
Allow or deny specific permissions for a role or member on one channel (a permission overwrite). Examples: deny "ViewChannel" for @everyone to make a channel private; allow "ViewChannel" and "SendMessages" for a Team role. This merges with any existing overwrite. Use reset to clear a permission back to inherited.
| Name | Required | Description | Default |
|---|---|---|---|
| deny | No | Permissions to deny. | |
| allow | No | Permissions to allow, e.g. ["ViewChannel","SendMessages"]. | |
| reset | No | Permissions to clear back to inherited (neither allowed nor denied). | |
| reason | No | Reason recorded in the audit log. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| target | Yes | Role or member to set permissions for (name, id, @mention, or @everyone). | |
| channel | Yes | Channel to change (name or id). May be a category. | |
| target_type | No | Disambiguate when a role and member share a name. Default: auto (role first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states that the tool 'merges with any existing overwrite', which is helpful. But it omits important behavioral details such as required permissions (e.g., Manage Channels), immediate effect of changes, or handling of invalid permission 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?
Three sentences, no wasted words, key information front-loaded. Every sentence earns its place: purpose, examples, and a usage tip for reset.
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 and no output schema, the description covers main purpose, examples, and merge behavior. Could mention that permission names are Discord-specific enums and that errors occur for invalid input, but overall fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are adequate. The description adds examples for allow/deny/reset but does not provide significant new semantic information beyond what the schema already contains. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Allow or deny specific permissions for a role or member on one channel' and provides concrete examples (deny 'ViewChannel' for @everyone, allow for Team role). Clearly distinguishes from siblings like list_channel_permissions and remove_channel_permission.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions when to use 'reset' to clear a permission back to inherited. However, it does not provide when not to use this tool or explicitly name alternatives like remove_channel_permission, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timeout_memberTimeout memberA
Temporarily mute a member for a number of minutes. Use 0 to clear a timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| member | Yes | Member to time out (id, @mention, or username). | |
| reason | No | Reason recorded in the audit log. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| minutes | Yes | Timeout length in minutes (max 28 days). 0 clears the timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the core behavior (muting for minutes, clearing with 0) but does not disclose side effects (e.g., effect on voice channels), required permissions, or error conditions. For a mutation tool, more transparency is expected.
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 that are front-loaded with key information. Every word is necessary, and the structure clearly conveys the primary action and a critical special case.
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, the description covers the basic usage. However, it lacks details about return values, error handling, and auth requirements. For an AI agent, additional context (e.g., what happens on success/failure) 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 value for the 'minutes' parameter by clarifying that 0 clears the timeout, but does not add meaning beyond the schema for other parameters (member, reason, server).
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 'mute' and resource 'member', specifies 'temporarily' and 'number of minutes', and distinguishes from permanent bans or kicks. It also includes the important detail of clearing a timeout with 0, which sets it apart from similar sibling tools like server_mute or 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?
The description implies use for temporary muting and clearing timeouts, but does not explicitly state when to use this tool over alternatives (e.g., kick, ban, server mute). No prerequisites or context about required permissions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unarchive_threadUnarchive threadA
Reopen an archived thread so members can post again.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| thread | Yes | Thread to unarchive (name or id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic action without disclosing side effects, permissions required, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for the tool's simplicity.
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 mutation tool with no output schema, the description is adequate but could benefit from mentioning idempotency or confirmation of success.
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 both parameters. The description adds 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 uses a specific verb ('reopen') and resource ('archived thread'), and clearly distinguishes from its sibling 'archive_thread'.
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 when to use (archived threads) but does not provide explicit exclusions or alternative tools beyond the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unban_memberUnban memberA
Lift a ban. Accepts a user id or username (looked up from the ban list).
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | User to unban (id or username). | |
| reason | No | Reason recorded in the audit log. | |
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool accepts a user id or username looked up from the ban list, but does not mention side effects, required permissions, or what happens if the user is not banned. The behavioral disclosure is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, front-loaded with the action. Every word is necessary and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple action but lacks details on expected behavior (e.g., confirmation, error cases) and does not leverage the context of sibling tools to differentiate. With no output schema, more context would be helpful.
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%, providing a baseline of 3. The description adds context for the 'user' parameter by specifying it is looked up from the ban list, which adds meaning beyond the schema. However, other parameters (reason, server) are not further explained.
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 'Lift a ban' which is a specific verb and resource. It distinguishes the tool from siblings like 'ban_member' (opposite) and 'list_bans' (listing).
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: unbanning a user that is currently banned, as it mentions lookup from the ban list. However, it 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.
unpin_messageUnpin messageA
Remove a message from a channel's pinned list. Requires Manage Messages permission.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | Server (guild) name or id. Optional when the bot is in a single server or DISCORD_GUILD_ID is set. | |
| channel | Yes | Channel the message is in (name or id). | |
| message_id | Yes | Id of the message to unpin. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the permission needed but lacks details on reversibility, side effects (e.g., order of pins), or error handling, which are typical for a minimal description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no unnecessary words, making it easily digestible 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?
For a simple removal operation, the description covers the core action and permission. It lacks minor details (e.g., behavior when message is already unpinned) but is generally sufficient given the schema's 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 no extra meaning beyond the schema; it does not clarify expected formats for channel or message_id.
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 uses a specific verb ('Remove') and resource ('a message from a channel's pinned list'), clearly distinguishing it from sibling tools like pin_message (adds) and delete_message (removes permanently).
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 permission requirement ('Requires Manage Messages permission') but does not provide when to use versus alternatives (e.g., pin_message, delete_message), nor any exclusions or context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct action/resource combination (e.g., ban_member vs kick_member, set_channel_permission vs remove_channel_permission). Descriptions clearly delineate boundaries, and even similar-sounding tools like server_mute and timeout_member specify different contexts (voice vs temporary).
All 55 tools follow a consistent verb_noun snake_case pattern (e.g., create_channel, edit_role, delete_emoji). There are no deviations or mixed conventions, making the surface predictable for an agent.
55 tools is on the high side for a typical MCP server, even for a broad domain like Discord. While the scope covers many server management operations, the count feels heavy (borderline over 25 tools per the calibration scale) and may introduce cognitive load.
The tool set covers most core Discord server operations: CRUD for channels, roles, events, invites, webhooks; member management; messaging; permissions; threads; and audit logs. However, it lacks update operations for emoji, events, and stickers, and missing create/delete for stickers, which are minor but notable gaps.
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 connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Give your AI agents the tools to build, manage, and run automation workflows.
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Discord servers through a bot, supporting channel management, messaging, forum operations, reactions, and webhooks.221,062MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to manage Discord servers through natural language, offering tools for guilds, channels, messages, roles, members, webhooks, invites, and automations. Includes a conversational agent that responds to @mentions in Discord.8Apache 2.0
- AlicenseNot gradedqualityDmaintenanceControl your Discord server with AI. Lets you manage channels, roles, members, messages, and more through natural language.348MIT
- AlicenseNot gradedqualityDmaintenanceEnables managing a Discord server using natural language through AI clients like Claude, with 139 admin tools across 20 categories for roles, channels, members, messages, threads, moderation, and more.16828MIT
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/grooving6/discord-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server