Skip to main content
Glama
Oratorian

Discord MCP Server

by Oratorian

Build License TAG

Discord MCP Server

An MCP (Model Context Protocol) server that enables LLMs to control Discord servers via a bot token. This server provides comprehensive Discord management tools including sending messages, managing members, roles, channels, permissions, and more.

Features

Guild/Server Management

  • discord_list_guilds - List all servers the bot has access to

  • discord_get_guild - Get detailed info about a specific server

  • discord_edit_guild - Edit server settings (name, verification level, system channels, etc.)

  • discord_leave_guild - Leave a server

Channel Management

  • discord_list_channels - List channels in a server (filter by type)

  • discord_get_channel - Get channel details (includes forum tags for forum channels)

  • discord_create_channel - Create text/voice/forum channels and categories

  • discord_edit_channel - Edit channel name, topic, position, category, forum tags, and more

  • discord_delete_channel - Delete a channel or category

Forum Channel Features

  • Create forum channels with type: "forum"

  • Set default reaction emoji, sort order, and layout

  • Manage forum tags (create, edit, delete)

  • Tags support custom emojis and moderation settings

Permission Management

  • discord_set_channel_permissions - Set permission overrides for roles/members on channels

  • discord_remove_channel_permissions - Remove permission overrides

  • discord_get_channel_permissions - View all permission overrides on a channel

  • discord_sync_channel_permissions - Sync channel permissions with parent category

Message Operations

  • discord_send_message - Send messages (with optional reply)

  • discord_get_messages - Retrieve channel messages (with pagination)

  • discord_edit_message - Edit bot's messages

  • discord_delete_message - Delete messages

  • discord_add_reaction - Add emoji reactions

  • discord_remove_reaction - Remove bot's reactions

  • discord_pin_message - Pin a message

  • discord_unpin_message - Unpin a message

  • discord_get_pinned_messages - Get all pinned messages

Member Management

  • discord_list_members - List server members (with pagination)

  • discord_get_member - Get member details

  • discord_kick_member - Kick a member

  • discord_ban_member - Ban a member (with message deletion option)

  • discord_unban_member - Unban a user

  • discord_set_nickname - Set/clear member nickname

  • discord_move_member - Move member to a different voice channel

  • discord_timeout_member - Timeout/mute a member (up to 28 days)

Role Management

  • discord_list_roles - List all server roles

  • discord_create_role - Create a new role

  • discord_edit_role - Edit role name, color, permissions, and settings

  • discord_delete_role - Delete a role

  • discord_add_role - Assign role to member

  • discord_remove_role - Remove role from member

  • discord_set_role_positions - Reorder role hierarchy

Server Administration

  • discord_list_bans - List all banned users

  • discord_prune_members - Remove inactive members (with dry-run option)

  • discord_get_audit_log - View audit log entries

Community Features

  • discord_get_community_settings - View community settings (rules channel, features, etc.)

  • discord_setup_community - Configure community channels (rules, updates, safety alerts)

Welcome Screen

  • discord_get_welcome_screen - Get welcome screen configuration

  • discord_edit_welcome_screen - Edit welcome screen (description, channels, emojis)

Onboarding

  • discord_get_onboarding - Get onboarding configuration

  • discord_edit_onboarding - Edit existing onboarding settings

  • discord_setup_onboarding - Setup onboarding from scratch (prompts, default channels, roles)

Auto Moderation

  • discord_list_automod_rules - List auto moderation rules

  • discord_get_automod_rule - Get details of an auto mod rule

  • discord_create_automod_rule - Create auto moderation rule

  • discord_edit_automod_rule - Edit auto moderation rule

  • discord_delete_automod_rule - Delete auto moderation rule

Emoji Management

  • discord_list_emojis - List custom emojis

  • discord_create_emoji - Create emoji from image URL

  • discord_delete_emoji - Delete a custom emoji

Sticker Management

  • discord_list_stickers - List custom stickers

  • discord_delete_sticker - Delete a custom sticker

Invite Management

  • discord_list_invites - List active invites

  • discord_create_invite - Create channel invite

  • discord_delete_invite - Delete an invite

Webhook Management

  • discord_list_webhooks - List webhooks (guild or channel)

  • discord_create_webhook - Create a webhook

  • discord_edit_webhook - Edit webhook name or channel

  • discord_delete_webhook - Delete a webhook

Scheduled Events

  • discord_list_events - List scheduled events

  • discord_create_event - Create a scheduled event (stage, voice, or external)

  • discord_delete_event - Delete a scheduled event

Related MCP server: Discord MCP

Setup

1. Create a Discord Bot

  1. Go to the Discord Developer Portal

  2. Click "New Application" and give it a name

  3. Go to the "Bot" section and click "Add Bot"

  4. Copy the bot token (keep this secret!)

  5. Enable these Privileged Gateway Intents:

    • Server Members Intent

    • Message Content Intent

2. Invite the Bot to Your Server

  1. Go to OAuth2 -> URL Generator

  2. Select scopes: bot, applications.commands

  3. Select bot permissions (choose based on features you need):

    Core Permissions:

    • Manage Channels

    • Manage Roles

    • Manage Messages

    • Read Message History

    • Send Messages

    • Add Reactions

    Member Management:

    • Kick Members

    • Ban Members

    • Manage Nicknames

    • Moderate Members (for timeouts)

    Server Administration:

    • Manage Guild (for server settings)

    • View Audit Log

    • Manage Emojis and Stickers

    • Manage Webhooks

    • Manage Events

    • Create Instant Invite

  4. Copy the generated URL and open it to invite the bot

3. Install the MCP Server

Option A: Install globally from npm

npm install -g @mahesvara/discord-mcpserver

Option B: Run directly with npx (no install required)

npx @mahesvara/discord-mcpserver

Usage

MCP Client Configuration

Add to your MCP client configuration (e.g., Claude Desktop or Claude Code):

Using globally installed package:

{
  "mcpServers": {
    "discord": {
      "command": "discord-mcpserver",
      "env": {
        "DISCORD_BOT_TOKEN": "your_bot_token_here"
      }
    }
  }
}

Using npx (no install required):

{
  "mcpServers": {
    "discord": {
      "command": "npx",
      "args": ["-y", "@mahesvara/discord-mcpserver"],
      "env": {
        "DISCORD_BOT_TOKEN": "your_bot_token_here"
      }
    }
  }
}

Environment Variables

The server supports loading environment variables from a .env file in the current directory:

DISCORD_BOT_TOKEN=your_bot_token_here
TRANSPORT=http
PORT=3000
HOST=localhost

Variable

Description

Default

DISCORD_BOT_TOKEN

Your Discord bot token (required)

-

TRANSPORT

Transport mode: stdio or http

stdio

PORT

HTTP server port (when using http transport)

3000

HOST

HTTP server host (use 0.0.0.0 for remote access)

localhost

HTTP Transport

For remote access, run the server with HTTP transport enabled:

Linux/macOS:

DISCORD_BOT_TOKEN=your_token TRANSPORT=http PORT=3000 HOST=0.0.0.0 discord-mcpserver

Windows (Command Prompt):

set DISCORD_BOT_TOKEN=your_token && set TRANSPORT=http && set PORT=3000 && set HOST=0.0.0.0 && discord-mcpserver

Windows (PowerShell):

$env:DISCORD_BOT_TOKEN="your_token"; $env:TRANSPORT="http"; $env:PORT="3000"; $env:HOST="0.0.0.0"; discord-mcpserver

Or use a .env file (works on all platforms):

discord-mcpserver

Then configure your MCP client to connect via HTTP:

{
  "mcpServers": {
    "discord": {
      "type": "http",
      "url": "http://your-server-ip:3000/mcp"
    }
  }
}

Tool Examples

Create a Forum Channel with Tags

{
  "tool": "discord_create_channel",
  "params": {
    "guild_id": "1234567890123456789",
    "name": "help-forum",
    "type": "forum",
    "topic": "Ask questions and get help",
    "default_reaction_emoji": "✅",
    "default_sort_order": "latest_activity",
    "default_forum_layout": "list_view",
    "available_tags": [
      { "name": "Solved", "emoji_name": "✅", "moderated": false },
      { "name": "Bug", "emoji_name": "🐛", "moderated": false },
      { "name": "Question", "emoji_name": "❓", "moderated": false },
      { "name": "Announcement", "emoji_name": "📢", "moderated": true }
    ]
  }
}

Setup Server Onboarding

{
  "tool": "discord_setup_onboarding",
  "params": {
    "guild_id": "1234567890123456789",
    "default_channel_ids": ["1111111111111111111"],
    "prompts": [
      {
        "type": "multiple_choice",
        "title": "What are you interested in?",
        "single_select": false,
        "required": true,
        "options": [
          { "title": "Gaming", "emoji_name": "🎮", "role_ids": ["2222222222222222222"] },
          { "title": "Tech", "emoji_name": "💻", "role_ids": ["3333333333333333333"] }
        ]
      }
    ]
  }
}

Configure Community Settings

{
  "tool": "discord_setup_community",
  "params": {
    "guild_id": "1234567890123456789",
    "rules_channel_id": "1111111111111111111",
    "public_updates_channel_id": "2222222222222222222",
    "description": "A friendly gaming community",
    "preferred_locale": "en-US"
  }
}

Edit Welcome Screen

{
  "tool": "discord_edit_welcome_screen",
  "params": {
    "guild_id": "1234567890123456789",
    "enabled": true,
    "description": "Welcome to our server!",
    "welcome_channels": [
      { "channel_id": "1111111111111111111", "description": "Read the rules", "emoji_name": "📜" },
      { "channel_id": "2222222222222222222", "description": "Introduce yourself", "emoji_name": "👋" }
    ]
  }
}

Create a Category

{
  "tool": "discord_create_channel",
  "params": {
    "guild_id": "1234567890123456789",
    "name": "Bot Testing",
    "type": "category"
  }
}

Create a Channel in a Category

{
  "tool": "discord_create_channel",
  "params": {
    "guild_id": "1234567890123456789",
    "name": "bot-commands",
    "type": "text",
    "topic": "Channel for bot interactions",
    "parent_id": "CATEGORY_ID_HERE"
  }
}

Set Channel Permissions

{
  "tool": "discord_set_channel_permissions",
  "params": {
    "channel_id": "1234567890123456789",
    "target_id": "ROLE_ID_HERE",
    "target_type": "role",
    "allow": ["ViewChannel", "SendMessages", "ReadMessageHistory"],
    "deny": ["CreatePublicThreads"]
  }
}

Common Permission Names

View & Access:

  • ViewChannel - See the channel

Messages:

  • SendMessages, ReadMessageHistory, ManageMessages

  • EmbedLinks, AttachFiles, AddReactions

  • UseExternalEmojis, UseExternalStickers

  • MentionEveryone

Threads:

  • CreatePublicThreads, CreatePrivateThreads

  • SendMessagesInThreads, ManageThreads

Voice:

  • Connect, Speak, Stream

  • MuteMembers, DeafenMembers, MoveMembers

  • UseVAD, PrioritySpeaker

Management:

  • ManageChannels, ManageRoles, ManageWebhooks

Send a Message

{
  "tool": "discord_send_message",
  "params": {
    "channel_id": "1234567890123456789",
    "content": "Hello from the MCP server!"
  }
}

Assign a Role

{
  "tool": "discord_add_role",
  "params": {
    "guild_id": "1234567890123456789",
    "user_id": "9876543210987654321",
    "role_id": "1111111111111111111"
  }
}

Response Formats

Most read operations support two response formats:

  • json (default): Structured data for programmatic processing

  • markdown: Human-readable formatted output

Error Handling

All tools return clear error messages with suggestions when operations fail:

  • Missing permissions

  • Invalid IDs (guild, channel, user, role, message)

  • Rate limiting

  • Network issues

Security Notes

  • Never commit your bot token - use environment variables

  • The bot can only operate in servers it's been invited to

  • Destructive operations (delete, kick, ban) are marked with destructiveHint: true

  • All inputs are validated with Zod schemas

Required Bot Permissions

Depending on which tools you use, your bot needs these permissions:

Tool Category

Required Permissions

Messages

Send Messages, Read Message History, Manage Messages

Channels

Manage Channels

Permissions

Manage Roles (for channel permission overrides)

Members

Kick Members, Ban Members, Manage Nicknames, Moderate Members

Roles

Manage Roles

Reactions

Add Reactions

Server Settings

Manage Guild

Emojis/Stickers

Manage Emojis and Stickers

Invites

Create Instant Invite, Manage Guild

Webhooks

Manage Webhooks

Events

Manage Events

Audit Log

View Audit Log

Community/Onboarding

Manage Guild

Tool Examples

Edit Role Permissions

{
  "tool": "discord_edit_role",
  "params": {
    "guild_id": "1234567890123456789",
    "role_id": "1111111111111111111",
    "name": "Moderators",
    "color": 3447003,
    "permissions": ["KickMembers", "BanMembers", "ManageMessages", "ModerateMembers"]
  }
}

Reorder Role Hierarchy

{
  "tool": "discord_set_role_positions",
  "params": {
    "guild_id": "1234567890123456789",
    "positions": [
      { "role_id": "1111111111111111111", "position": 5 },
      { "role_id": "2222222222222222222", "position": 4 }
    ]
  }
}

Timeout a Member

{
  "tool": "discord_timeout_member",
  "params": {
    "guild_id": "1234567890123456789",
    "user_id": "9876543210987654321",
    "duration_minutes": 60,
    "reason": "Spamming in chat"
  }
}

Create an Invite

{
  "tool": "discord_create_invite",
  "params": {
    "channel_id": "1234567890123456789",
    "max_age": 86400,
    "max_uses": 10,
    "temporary": false
  }
}

Create a Scheduled Event

{
  "tool": "discord_create_event",
  "params": {
    "guild_id": "1234567890123456789",
    "name": "Community Game Night",
    "description": "Join us for games!",
    "scheduled_start_time": "2024-12-01T20:00:00Z",
    "entity_type": "voice",
    "channel_id": "1111111111111111111"
  }
}

Role Permission Names

When editing roles, use these permission names:

General:

  • Administrator - Full access (use with caution)

  • ManageGuild, ManageRoles, ManageChannels

  • KickMembers, BanMembers, ModerateMembers

  • ViewAuditLog, ViewGuildInsights

Messages:

  • SendMessages, ManageMessages, ReadMessageHistory

  • EmbedLinks, AttachFiles, AddReactions

  • MentionEveryone, UseExternalEmojis

Voice:

  • Connect, Speak, Stream

  • MuteMembers, DeafenMembers, MoveMembers

Other:

  • ManageWebhooks, ManageEmojisAndStickers

  • ManageEvents, CreateEvents

License

MIT

Available Tools

67 tools
discord_add_reactionAdd Reaction to MessageA
Idempotent

Add an emoji reaction to a message.

Args:

  • channel_id (string): Discord channel ID

  • message_id (string): Message ID to react to

  • emoji (string): Emoji to react with (e.g., '👍' or custom emoji format)

Returns: Confirmation of reaction added

ParametersJSON Schema
NameRequiredDescriptionDefault
emojiYesEmoji to react with (unicode emoji or custom emoji format)
channel_idYesDiscord channel ID (snowflake)
message_idYesDiscord message ID (snowflake)

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already cover idempotency and non-destructiveness. The description adds 'Returns: Confirmation of reaction added' but no further behavioral context beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (3 lines), front-loaded with the purpose, and efficiently structured with Args and Returns sections. No wasted words.

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

Completeness5/5

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

For a simple 3-parameter tool with no output schema, the description fully covers what the tool does, its inputs, and its output. It is complete for correct agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema fully describes parameters. The description adds an emoji example and return type, but does not significantly enhance parameter meaning.

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

Purpose5/5

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

The description clearly states 'Add an emoji reaction to a message' with a specific verb and resource. It distinguishes from siblings like discord_remove_reaction and discord_send_message.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool over alternatives. However, the purpose is clear from the name and context.

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

discord_add_roleAdd Role to MemberA
Idempotent

Add a role to a Discord member.

Args:

  • guild_id (string): Discord server/guild ID

  • user_id (string): Discord user ID

  • role_id (string): Discord role ID to add

Returns: Confirmation of role added

ParametersJSON Schema
NameRequiredDescriptionDefault
role_idYesDiscord role ID (snowflake)
user_idYesDiscord user ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate non-readOnly (write), non-destructive, and idempotent. The description adds no behavioral context beyond 'Add', such as permission requirements or side effects. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences, three bullet points, and a return note. Every sentence adds value with no redundancy, and the purpose is front-loaded.

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

Completeness4/5

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

For a simple write operation with clear annotations and full schema coverage, the description is nearly complete. It lacks mention of error conditions or explicit prerequisites but covers the core behavior and parameters adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description simply restates the parameter names without adding meaning beyond the schema's existing descriptions.

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

Purpose5/5

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

The description 'Add a role to a Discord member' uses a specific verb ('Add') and resource ('role to a Discord member'), clearly distinguishing it from sibling tools like 'discord_remove_role' (removes) and 'discord_create_role' (creates).

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is provided. The description implies usage context but does not mention prerequisites (e.g., role must exist, member in guild) or alternative tools like 'discord_create_role'.

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

discord_ban_memberBan Discord MemberB
Destructive

Ban a member from a Discord server.

Args:

  • guild_id (string): Discord server/guild ID

  • user_id (string): Discord user ID to ban

  • reason (string, optional): Reason for ban (visible in audit log)

  • delete_message_days (number): Days of messages to delete (0-7, default: 0)

Returns: Confirmation of ban

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoReason for ban (visible in audit log)
user_idYesDiscord user ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)
delete_message_daysNoNumber of days of messages to delete (0-7)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already provide destructiveHint=true and readOnlyHint=false. The description adds that the reason is visible in audit logs and delete_message_days controls message deletion. However, it fails to disclose irreversibility implications, permission requirements (e.g., 'Ban Members' permission), or error handling for already-banned users.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear summary, argument list, and return value. No unnecessary repetition; well-structured for quick parsing.

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

Completeness4/5

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

For a simple tool with 4 parameters and no output schema, the description covers the basic action and parameters. It lacks details on error scenarios and permissions but is sufficient for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description adds value by stating the default for delete_message_days as 0, which is not in the schema. Otherwise, it largely restates schema descriptions.

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

Purpose4/5

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

The description clearly states the tool bans a member from a Discord server. However, it does not differentiate from sibling tools like kick or timeout, missing an opportunity to distinguish scope.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as discord_kick_member or discord_unban_member. No context on selection criteria or prerequisites.

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

discord_create_automod_ruleCreate Auto Moderation RuleA

Create a new auto moderation rule for a server.

Args:

  • guild_id (string): Discord server/guild ID

  • name (string): Rule name

  • event_type ('message_send'): Event that triggers the rule

  • trigger_type ('keyword' | 'spam' | 'keyword_preset' | 'mention_spam'): Trigger type

  • trigger_metadata (object, optional): Trigger configuration (keyword_filter, presets, etc.)

  • actions (array): Actions to take (block_message, send_alert_message, timeout)

  • enabled (boolean): Whether rule is enabled (default: true)

  • exempt_roles (array, optional): Role IDs exempt from this rule

  • exempt_channels (array, optional): Channel IDs exempt from this rule

Returns: Created rule details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRule name
actionsYesActions to take when rule is triggered
enabledNoWhether the rule is enabled
guild_idYesDiscord server/guild ID (snowflake)
event_typeYesEvent type that triggers the rule
exempt_rolesNoRoles exempt from this rule
trigger_typeYesType of content that triggers the rule
exempt_channelsNoChannels exempt from this rule
trigger_metadataNoTrigger configuration

TDQS

A3.7/5.0
Behavior3/5

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

Description aligns with annotations (non-read-only, non-destructive). It notes return details but lacks permissions, side effects, or error conditions. Annotations supply behavioral safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with headings, Arg list, and Returns. Mostly concise, though the Arg list partially duplicates schema. First sentence is clear and front-loaded.

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

Completeness4/5

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

Covers all inputs, but lacks output schema for return value structure and missing prerequisites like required permissions. Reasonably complete given complexity, but could be improved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains parameters. The description rephrases minimal context but adds little beyond defaults or optionality already in schema.

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

Purpose5/5

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

The verb 'Create' clearly states the action, and 'automod rule' specifies the resource. It distinguishes from sibling tools like discord_edit_automod_rule, discord_delete_automod_rule, etc.

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

Usage Guidelines3/5

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

No explicit guidance on when to use vs alternatives (e.g., editing or listing rules). Usage is implied by the tool name and description, but no direct comparison.

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

discord_create_channelCreate Discord ChannelA

Create a new channel or category in a Discord server.

Args:

  • guild_id (string): Discord server/guild ID

  • name (string): Channel name

  • type ('text' | 'voice' | 'category' | 'forum'): Channel type (default: 'text')

  • topic (string, optional): Channel topic (text/forum channels only)

  • parent_id (string, optional): Category ID to create channel under (not for categories)

  • nsfw (boolean, optional): Whether the channel is NSFW (text/forum channels only)

  • bitrate (number, optional): Bitrate for voice channels (8000-384000)

  • user_limit (number, optional): User limit for voice channels (0 = unlimited)

  • default_reaction_emoji (string, optional): Default emoji for forum posts (emoji char or custom ID)

  • default_sort_order ('latest_activity' | 'creation_date', optional): Sort order for forum posts

  • default_forum_layout ('not_set' | 'list_view' | 'gallery_view', optional): Forum layout

  • available_tags (array, optional): Tags for forum posts (max 20)

    • name (string): Tag name (max 20 chars)

    • moderated (boolean, optional): Only mods can apply this tag

    • emoji_name (string, optional): Unicode emoji (e.g., '🎮')

    • emoji_id (string, optional): Custom emoji ID

Returns: The created channel's details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesChannel name
nsfwNoWhether the channel is NSFW (text/forum channels only)
typeNoChannel type: 'text', 'voice', 'category', or 'forum'text
topicNoChannel topic (text/forum channels only)
bitrateNoBitrate for voice channels (8000-384000)
guild_idYesDiscord server/guild ID (snowflake)
parent_idNoCategory ID to create channel under (not for categories)
user_limitNoUser limit for voice channels (0 = unlimited)
available_tagsNoAvailable tags for forum posts (max 20 tags)
default_sort_orderNoDefault sort order for forum posts
default_forum_layoutNoDefault layout for forum channel
default_reaction_emojiNoDefault reaction emoji for forum posts - use emoji character (e.g., '👍') or custom emoji ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations indicate a write operation (readOnlyHint false) and no destructive or idempotent behavior. The description adds no additional behavioral context beyond what the annotations provide, such as permission requirements, rate limits, or error conditions (e.g., duplicate names).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args and Returns sections, making it easy to scan. However, it is verbose, listing all 12 parameters in detail when a shorter summary could suffice. Still, the structure earns a high score.

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

Completeness5/5

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

Given the complexity of 12 parameters (2 required) and no output schema, the description thoroughly documents each parameter's purpose, type, constraints, and defaults. It covers all necessary details for an agent to correctly invoke the tool, leaving no obvious gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, meaning all parameters have schema descriptions. The description largely repeats this information with a structured Args list, adding marginal value like inline defaults and notes (e.g., 'not for categories' for parent_id). This provides some extra clarity but doesn't significantly surpass the schema.

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

Purpose5/5

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

The description explicitly states 'Create a new channel or category in a Discord server', clearly identifying the verb (create) and resource (channel/category). This distinguishes it from sibling tools like discord_edit_channel and discord_delete_channel.

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

Usage Guidelines3/5

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

The description provides no direct guidance on when to use this tool vs alternatives (e.g., when to create a category vs text channel, or when to use discord_edit_channel). The context is implied by the tool name and parameter types, but explicit usage instructions are missing.

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

discord_create_emojiCreate EmojiA

Create a custom emoji in a server.

Args:

  • guild_id (string): Discord server/guild ID

  • name (string): Emoji name (2-32 chars, alphanumeric and underscores)

  • image_url (string): URL of image (PNG, JPG, GIF under 256KB)

  • roles (string[], optional): Role IDs that can use this emoji

Returns: Created emoji details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEmoji name (2-32 alphanumeric characters)
guild_idYesDiscord server/guild ID (snowflake)
image_urlYesURL of the image to use for the emoji

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate it is not read-only, not idempotent, and not destructive. The description adds return info but does not discuss permissions, rate limits, or edge cases. It adds some value beyond annotations by specifying image constraints (PNG, JPG, GIF, <256KB).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with separate Args and Returns sections. It is front-loaded with purpose and parameter details, but the extra `roles` param adds unnecessary length.

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

Completeness3/5

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

For a creation tool with 3 parameters, the description covers purpose, parameters, and returns. However, it lacks prerequisites (e.g., 'Manage Emoji' permission), error handling info, and uniqueness constraints for emoji names. Given no output schema, it could provide more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds an optional `roles` parameter not present in the schema, causing inconsistency. It does provide additional constraints for `image_url` (file type, size) not in schema, which is helpful. Overall, it adds some value but also confusion.

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

Purpose5/5

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

The description clearly states 'Create a custom emoji in a server,' using a specific verb and resource. It distinguishes from sibling tools like `discord_add_reaction` (adds existing emoji) and `discord_delete_emoji` (deletes emoji).

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

Usage Guidelines4/5

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

While no explicit alternatives are given, the purpose is clear among siblings that have different actions (add, delete, list). The description provides parameter context, but lacks explicit guidance on when to use vs. other emoji-related tools.

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

discord_create_eventCreate Scheduled EventB

Create a scheduled event in a server.

Args:

  • guild_id (string): Discord server/guild ID

  • name (string): Event name

  • description (string, optional): Event description

  • scheduled_start_time (string): ISO8601 timestamp for start

  • scheduled_end_time (string, optional): ISO8601 timestamp for end

  • entity_type ('stage' | 'voice' | 'external'): Type of event

  • channel_id (string, optional): Channel ID for stage/voice events

  • location (string, optional): Location for external events

Returns: Created event details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEvent name
guild_idYesDiscord server/guild ID (snowflake)
channel_idNoChannel ID for stage/voice events
descriptionNoEvent description
entity_typeYesEvent type: stage instance, voice channel, or external location
entity_metadataNoMetadata for external events (location)
scheduled_end_timeNoISO8601 timestamp for event end (required for external events)
scheduled_start_timeYesISO8601 timestamp for event start

TDQS

B3.2/5.0
Behavior3/5

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

Annotations indicate it's not read-only (readOnlyHint=false) and may have open-world side effects. The description discloses it creates an event but does not elaborate on permissions, rate limits, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long due to parameter listing, but it is structured with Args and Returns sections. It front-loads the main action. However, it repeats schema information which could be more concise.

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

Completeness2/5

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

No output schema given, the description mentions 'Created event details' but not fields. There is inconsistency: description lists 'location' as a separate parameter, but schema nests it inside 'entity_metadata'. Does not explain that scheduled_end_time is required for external events (schema mentions it).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds limited new meaning. It lists parameters with types and optionality, but essentially repeats schema info. Minor added value in clarifying entity_type enum and location field.

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

Purpose5/5

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

The description clearly states 'Create a scheduled event in a server', specifying the action and resource. It distinguishes from sibling tools like discord_list_events (read) and discord_delete_event (delete).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. No mention of prerequisites like required permissions or when not to use it.

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

discord_create_inviteCreate InviteA

Create an invite link for a channel.

Args:

  • channel_id (string): Discord channel ID

  • max_age (number): Duration in seconds (0 = never expires, max 604800 = 7 days)

  • max_uses (number): Max uses (0 = unlimited)

  • temporary (boolean): Kick members when they disconnect if not assigned a role

  • unique (boolean): Create new unique invite vs reuse existing

Returns: Created invite URL

ParametersJSON Schema
NameRequiredDescriptionDefault
uniqueNoWhether to create a unique invite
max_ageNoInvite expiration in seconds (0 = never, max 604800 = 7 days)
max_usesNoMax uses (0 = unlimited)
temporaryNoWhether membership is temporary
channel_idYesDiscord channel ID (snowflake)

TDQS

A4/5.0
Behavior4/5

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

Description explains all parameters and return value, including behavior of temporary and unique. Annotations indicate no destructive or idempotent effects, which matches. Could mention rate limits or permission checks, but current detail is good.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and well-structured: one-line summary, then Args list, then Returns. No fluff, every sentence adds information.

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

Completeness4/5

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

Covers all parameters and return value. Lacks error cases, rate limits, or permission requirements. Given no output schema, the return description is adequate. Slightly above average completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage, so baseline is 3. Description adds value by clarifying parameter behavior (e.g., 'Kick members when they disconnect' for temporary, 'reuse existing' for unique). Marginally above baseline.

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

Purpose5/5

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

The description clearly states the action 'Create' and the resource 'invite link for a channel'. It is specific and distinguishes this tool from siblings like discord_delete_invite and discord_list_invites.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. Does not indicate prerequisites like permissions or when not to use it. Missing explicit when-to-use/not-use or sibling differentiation.

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

discord_create_roleCreate Discord RoleA

Create a new role in a Discord server.

Args:

  • guild_id (string): Discord server/guild ID

  • name (string): Role name

  • color (number, optional): Role color as decimal integer (e.g., 16711680 for red)

  • mentionable (boolean): Whether the role can be mentioned (default: false)

  • hoist (boolean): Whether to display role members separately (default: false)

Returns: The created role's details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRole name
colorNoRole color as decimal (e.g., 16711680 for red)
hoistNoWhether to display role members separately
guild_idYesDiscord server/guild ID (snowflake)
mentionableNoWhether the role can be mentioned
permissionsNoArray of permission names (e.g., ['SendMessages', 'ManageChannels'])

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate write operation (readOnlyHint=false) and non-destructive, which aligns with description. The description adds default values for mentionable and hoist (false) and states it returns role details, providing behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: a single line of purpose followed by a structured argument list. Every sentence adds value; no wasted words. Front-loaded with the action.

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

Completeness4/5

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

Given 6 parameters and no output schema, the description covers all parameters with defaults and return info. It lacks permission or error context, but is sufficient for a creation tool with openWorldHint=true.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). The description adds value by including defaults for mentionable and hoist, an example for color, and a clear mapping of args. It improves over the schema alone.

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

Purpose5/5

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

The description clearly states 'Create a new role in a Discord server', using a specific verb and resource. It distinguishes itself from sibling tools like discord_edit_role and discord_delete_role by focusing on creation.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like discord_edit_role. The purpose is implied from the name, but no when-not-to-use or alternative references are provided.

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

discord_create_webhookCreate WebhookB

Create a webhook in a channel.

Args:

  • channel_id (string): Discord channel ID

  • name (string): Webhook name

  • avatar_url (string, optional): Avatar image URL

Returns: Created webhook details including URL

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWebhook name
avatar_urlNoURL of avatar image for the webhook
channel_idYesDiscord channel ID (snowflake)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate a non-readOnly, non-idempotent write operation. The description adds no further behavioral context such as required permissions, rate limits, or side effects beyond stating it creates a webhook and returns details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with an args list and return statement. It efficiently conveys necessary information without verbosity.

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

Completeness3/5

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

The description covers the basics: parameters and return value. However, it lacks context about permissions, webhook limits, or typical use cases, which would be helpful given the presence of many sibling tools and no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for all parameters. The description lists parameters but adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Create'), resource ('webhook'), and scope ('in a channel'). It effectively distinguishes from sibling tools like discord_edit_webhook and discord_delete_webhook.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., discord_create_channel for other creations), prerequisites, or when not to use it.

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

discord_delete_automod_ruleDelete Auto Moderation RuleA
Destructive

Delete an auto moderation rule from a server.

Args:

  • guild_id (string): Discord server/guild ID

  • rule_id (string): Auto moderation rule ID to delete

Returns: Confirmation of deletion

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYesAuto moderation rule ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already indicate destructiveHint: true. The description adds that the tool returns a 'Confirmation of deletion', but does not elaborate on irreversible consequences or permission requirements. It adds only minimal behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one purpose sentence, an args list, and a returns line. It is front-loaded with the purpose and contains no extraneous words.

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

Completeness4/5

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

For a simple destructive action, the description covers the core operation and return value. However, it lacks context about required permissions, error handling, or how the confirmation is structured. Still, it is largely sufficient given the annotations that already signal destructive behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters with descriptions, patterns, and length constraints (100% coverage). The description merely repeats the same information without adding new semantics or examples, so it meets the baseline but does not improve clarity.

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

Purpose5/5

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

The description clearly states 'Delete an auto moderation rule from a server', specifying the action (delete) and the resource (auto moderation rule). It effectively distinguishes this tool from sibling tools like create, edit, get, and list.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no prerequisites (e.g., required permissions), and no conditions for use. It only states the action and arguments.

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

discord_delete_channelDelete Discord ChannelA
Destructive

Delete a channel from a Discord server. This action is permanent!

Args:

  • channel_id (string): Discord channel ID to delete

Returns: Confirmation of deletion

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesDiscord channel ID (snowflake)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds the warning 'This action is permanent!' and mentions return confirmation, which reinforces but does not significantly extend the behavioral information provided by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two clear sections: a brief statement of action and permanence, followed by structured Args/Returns. Every sentence adds value with no redundancy.

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

Completeness5/5

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

For a simple destructive tool with one parameter and no output schema, the description fully covers what the tool does, its key behavioral trait (permanence), and the required input. No missing information for the agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the single parameter with 100% coverage including pattern and description. The description merely restates the parameter name and type without adding new semantic meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'Delete' and resource 'channel', matching the tool name. It distinguishes from sibling tools like discord_edit_channel and discord_create_channel by explicitly stating deletion.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as editing, archiving, or other channel operations. The only context is a warning about permanence, but no usage context or prerequisites.

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

discord_delete_emojiDelete EmojiA
DestructiveIdempotent

Delete a custom emoji from a server.

Args:

  • guild_id (string): Discord server/guild ID

  • emoji_id (string): Discord emoji ID

Returns: Confirmation of deletion

ParametersJSON Schema
NameRequiredDescriptionDefault
emoji_idYesDiscord emoji ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true. Description adds 'confirmation of deletion' but lacks details like permission requirements or error handling, offering minimal extra value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short and to the point, with an args/returns structure. However, the args section largely duplicates schema info, slightly reducing conciseness.

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

Completeness3/5

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

With full schema and annotations, the description is functionally sufficient for a simple tool, but lacks additional context like required permissions or effects on non-existent emojis.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed param descriptions. The description just lists param names without adding new meaning, meeting the baseline for full schema coverage.

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

Purpose5/5

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

Description clearly states the tool deletes a custom emoji from a server, using a specific verb and resource. It effectively distinguishes from sibling tools like discord_create_emoji and discord_list_emojis.

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

Usage Guidelines3/5

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

The description implies use when deletion is needed but provides no explicit guidance on when to use vs alternatives, nor any exclusions or prerequisites.

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

discord_delete_eventDelete Scheduled EventA
DestructiveIdempotent

Delete a scheduled event from a server.

Args:

  • guild_id (string): Discord server/guild ID

  • event_id (string): Discord scheduled event ID

Returns: Confirmation of deletion

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesDiscord scheduled event ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true. The description says 'Delete' and 'Returns confirmation', which aligns with annotations but adds no additional behavioral context beyond what is already indicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with no wasted words. It front-loads the purpose and lists arguments clearly.

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

Completeness5/5

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

For a simple tool with 2 required parameters, no output schema, and full annotations, the description covers the essential information: what it does, required args, and return type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description's Args list merely repeats the schema's descriptions without adding new meaning or format details.

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

Purpose5/5

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

The title 'Delete Scheduled Event' and description 'Delete a scheduled event from a server.' clearly state the action and resource. It distinguishes from sibling tools like discord_create_event and discord_list_events.

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

Usage Guidelines3/5

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

The description provides an Args list and Return info, but no explicit guidance on when to use vs alternatives or when not to use. The context is clear but lacks exclusion criteria.

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

discord_delete_inviteDelete InviteA
DestructiveIdempotent

Delete an invite by its code.

Args:

  • invite_code (string): The invite code to delete

Returns: Confirmation of deletion

ParametersJSON Schema
NameRequiredDescriptionDefault
invite_codeYesInvite code to delete

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate destructive (destructiveHint=true) and idempotent (idempotentHint=true) behavior. The description adds that a confirmation is returned but offers no additional behavioral context (e.g., that deleted invites become invalid immediately).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the purpose. The 'Args' and 'Returns' sections are clear but a bit verbose for a single parameter; could be tighter.

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

Completeness3/5

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

For a simple, one-parameter, destructive tool with good annotation coverage, the description is adequate but lacks specifics about the return format or what 'Confirmation of deletion' entails.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the description merely restates the invite_code parameter and its purpose, adding no extra meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Delete') and the resource ('invite by its code'), distinguishing it from sibling tools like discord_create_invite or discord_list_invites.

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

Usage Guidelines3/5

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

The description implies usage for deleting invites but provides no context on when to use this tool versus alternatives like revoking invite permissions or pruning members.

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

discord_delete_messageDelete Discord MessageA
Destructive

Delete a message from a Discord channel.

Args:

  • channel_id (string): Discord channel ID

  • message_id (string): Message ID to delete

Returns: Confirmation of deletion

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesDiscord channel ID (snowflake)
message_idYesDiscord message ID (snowflake)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations (destructiveHint=true) already indicate the tool modifies state. The description adds a return type ('Confirmation of deletion') but omits details like rate limits, idempotency, or behavior on missing messages. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (two sentences plus bulleted args and return). Every line serves a purpose: purpose, arguments, and return value. No fluff or redundancy.

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

Completeness4/5

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

For a simple deletion tool with comprehensive schema and annotations, the description covers the core function, parameters, and return. Missing edge case handling (e.g., permissions) is acceptable given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions (snowflake pattern, length constraints). The description restates these concisely ('Discord channel ID', 'Message ID to delete') but adds no new semantic information beyond the schema.

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

Purpose5/5

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

The description clearly states 'Delete a message from a Discord channel' using a specific verb and resource. Among sibling tools with 'delete_' prefix, it uniquely targets messages, distinguishing itself from delete_channel, delete_role, etc.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no prerequisites (e.g., permissions needed), and no exclusions. The agent must infer usage solely from the name and destructiveHint annotation.

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

discord_delete_roleDelete Discord RoleA
Destructive

Delete a role from a Discord server. This action is permanent!

Args:

  • guild_id (string): Discord server/guild ID

  • role_id (string): Discord role ID to delete

Returns: Confirmation of deletion

ParametersJSON Schema
NameRequiredDescriptionDefault
role_idYesDiscord role ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds 'This action is permanent!' which reinforces the destructive nature but does not elaborate on specific behavioral details like permission requirements or downstream effects on members.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three clear sections (action, args, returns). No unnecessary words, but the args section could be integrated more succinctly with the schema.

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

Completeness4/5

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

For a simple deletion tool with full schema coverage and annotations, the description covers the core action, permanence, parameters, and return type. It lacks potential error conditions or prerequisite handling, but is largely complete for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions (e.g., snowflake patterns). The description repeats parameter names and types but adds no new meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'Delete a role from a Discord server' with a specific verb and resource, and emphasizes permanence. It distinguishes itself from sibling tools like discord_create_role and discord_edit_role.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool, preconditions (e.g., permissions), or when not to use it. It lacks explicit context for an agent to decide between this and other role-related tools.

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

discord_delete_stickerDelete StickerA
DestructiveIdempotent

Delete a custom sticker from a server.

Args:

  • guild_id (string): Discord server/guild ID

  • sticker_id (string): Discord sticker ID

Returns: Confirmation of deletion

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
sticker_idYesDiscord sticker ID (snowflake)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true. The description adds return info ('Confirmation of deletion'), but no additional behavioral context beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one sentence for purpose, followed by structured Args and Returns sections. No wasted words.

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

Completeness5/5

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

For a simple delete tool with two well-documented parameters and no output schema, the description adequately covers purpose, inputs, and return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The description repeats parameter names but adds no new meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'Delete' and resource 'custom sticker from a server', distinguishing it from other delete tools for different resources like channels or emojis.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., discord_delete_emoji). The description is purely functional without context for decision-making.

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

discord_delete_webhookDelete WebhookA
DestructiveIdempotent

Delete a webhook.

Args:

  • webhook_id (string): Discord webhook ID

Returns: Confirmation of deletion

ParametersJSON Schema
NameRequiredDescriptionDefault
webhook_idYesDiscord webhook ID (snowflake)

TDQS

A3.9/5.0
Behavior3/5

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

The description mentions a 'confirmation of deletion' return value, adding some behavioral context. However, annotations already indicate destructive and idempotent hints; the description does not elaborate on side effects or authorization beyond schema defaults.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two short paragraphs with clear structure. The purpose is stated first, followed by parameters and return value. No unnecessary words.

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

Completeness5/5

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

For a simple delete operation with only one parameter and no output schema, the description fully covers what the tool does and what it returns. It is complete given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema provides full coverage of webhook_id with pattern and description. The description merely restates 'Discord webhook ID' without adding new semantic information, so baseline score applies.

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

Purpose5/5

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

The description clearly states the action ('Delete a webhook') using a specific verb and resource. It distinguishes itself from sibling tools like 'create', 'edit', and 'list' webhooks.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like editing or creating a webhook. While the delete context is straightforward, the description lacks criteria or prerequisites.

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

discord_edit_automod_ruleEdit Auto Moderation RuleB
Idempotent

Edit an existing auto moderation rule.

Args:

  • guild_id (string): Discord server/guild ID

  • rule_id (string): Auto moderation rule ID

  • name (string, optional): New rule name

  • trigger_metadata (object, optional): New trigger configuration

  • actions (array, optional): New actions

  • enabled (boolean, optional): Enable/disable rule

  • exempt_roles (array, optional): New exempt roles

  • exempt_channels (array, optional): New exempt channels

Returns: Updated rule details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
actionsNo
enabledNo
rule_idYesAuto moderation rule ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)
event_typeNo
exempt_rolesNo
exempt_channelsNo
trigger_metadataNo

TDQS

B3.2/5.0
Behavior2/5

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

Annotations indicate idempotent and non-destructive, but description lacks additional behavioral context like permissions or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structured with Args and Returns, but could be more concise; the parameter list is somewhat lengthy for a description.

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

Completeness2/5

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

No output schema and vague return statement; missing preconditions or error handling; complexity suggests more detail needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (22%), but description enumerates all parameters with basic types, compensating partially; nested object schemas are in schema.

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

Purpose5/5

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

The description clearly states it edits an existing auto moderation rule, distinguishing it from sibling create and delete tools.

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

Usage Guidelines3/5

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

No explicit guidance on when to use vs alternatives, but context implies use when rule exists and needs modification; sibling tools for create/delete/list are available.

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

discord_edit_channelEdit Discord ChannelA
Idempotent

Edit a channel's properties including name, topic, category, position, and more.

Args:

  • channel_id (string): Discord channel ID

  • name (string, optional): New channel name

  • topic (string, optional): New channel topic

  • parent_id (string, optional): Move to a different category (or 'none' to remove from category)

  • position (number, optional): New position of the channel

  • nsfw (boolean, optional): Whether the channel is NSFW

  • bitrate (number, optional): Bitrate for voice channels (8000-384000)

  • user_limit (number, optional): User limit for voice channels

  • default_reaction_emoji (string, optional): Default emoji for forum posts (emoji char or custom ID, 'none' to remove)

  • default_sort_order ('latest_activity' | 'creation_date', optional): Sort order for forum posts

  • default_forum_layout ('not_set' | 'list_view' | 'gallery_view', optional): Forum layout

  • available_tags (array, optional): Tags for forum posts (max 20) WARNING: This REPLACES all existing tags! To keep existing tags, first use discord_get_channel to get current tags with their IDs, then include them in this array with their id field.

    • id (string): Tag ID - REQUIRED to preserve existing tags, omit only for new tags

    • name (string): Tag name (max 20 chars)

    • moderated (boolean, optional): Only mods can apply this tag

    • emoji_name (string, optional): Unicode emoji (e.g., '🎮')

    • emoji_id (string, optional): Custom emoji ID

Returns: Updated channel details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew channel name
nsfwNoWhether the channel is NSFW
topicNoNew channel topic
bitrateNoBitrate for voice channels
positionNoNew position of the channel
parent_idNoMove channel to a different category (use 'none' to remove from category)
channel_idYesDiscord channel ID (snowflake)
user_limitNoUser limit for voice channels
available_tagsNoAvailable tags for forum posts (max 20 tags)
default_sort_orderNoDefault sort order for forum posts
default_forum_layoutNoDefault layout for forum channel
default_reaction_emojiNoDefault reaction emoji for forum posts - use emoji character (e.g., '👍') or custom emoji ID, use 'none' to remove

TDQS

A3.8/5.0
Behavior4/5

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

Annotations indicate idempotentHint=true (repeatable) and destructiveHint=false, which the description implicitly supports. It adds critical behavioral context: 'WARNING: This REPLACES all existing tags! To keep existing tags, first use discord_get_channel...' This disclosure goes beyond the schema and annotations, though other side effects (e.g., permission requirements, channel type constraints) are not mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear 'Args' and 'Returns' sections. The first sentence establishes purpose immediately. While the available_tags section is verbose, it is justified given the complexity of that parameter. Overall, it is appropriately sized and front-loaded.

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

Completeness3/5

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

The description adequately covers the tool's behavior given the rich schema (100% parameter coverage) and annotations. However, without an output schema, the return value is vaguely described as 'Updated channel details.' It lacks guidance on which parameters apply to which channel types (e.g., bitrate only for voice) and does not mention error handling or validation constraints beyond schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions, so baseline is 3. The description adds substantial value beyond the schema by explaining nuanced usage, such as 'use 'none' to remove' on parent_id and default_reaction_emoji, and the detailed warning about tag replacement with sub-property explanations. This compensates for the baseline.

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

Purpose5/5

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

The description clearly states 'Edit a channel's properties including name, topic, category, position, and more.' This uses a specific verb ('Edit') and resource ('channel's properties'), and lists concrete examples. It differentiates from sibling edit tools like discord_edit_message or discord_edit_role by focusing on channel properties.

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

Usage Guidelines2/5

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

The description only lists parameters but provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention situations where editing channel properties is appropriate versus using other tools like discord_set_channel_permissions or discord_move_member. No explicit when/when-not reasoning is given.

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

discord_edit_guildEdit Discord ServerA
Idempotent

Edit server settings like name, verification level, and system channel.

Args:

  • guild_id (string): Discord server/guild ID

  • name (string, optional): New server name

  • verification_level (string, optional): 'none', 'low', 'medium', 'high', 'very_high'

  • default_notifications (string, optional): 'all_messages' or 'only_mentions'

  • afk_channel_id (string, optional): AFK voice channel ID

  • afk_timeout (number, optional): AFK timeout in seconds

  • system_channel_id (string, optional): System messages channel

  • system_channel_flags (object, optional): System channel behavior

Returns: Updated server details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew server name
guild_idYesDiscord server/guild ID (snowflake)
afk_timeoutNoAFK timeout in seconds (60, 300, 900, 1800, 3600)
afk_channel_idNoAFK voice channel ID
system_channel_idNoSystem messages channel ID
verification_levelNoVerification level required for members
system_channel_flagsNoSystem channel behavior flags
default_notificationsNoDefault notification settings for new members

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate idempotent, write, and non-destructive behavior. The description adds that it returns updated server details but lacks information about required permissions, partial update behavior, or effects on unmentioned settings.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The initial sentence is concise, but the arg list duplicates the input schema, making it longer than necessary. Could be more efficient by directing users to the schema for parameter details.

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

Completeness3/5

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

For a tool with 8 parameters, a nested object, and no output schema, the description covers basic purpose and return type but lacks details on validation, partial updates, and response structure. Adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema fully describes each parameter. The description repeats parameter names and types but does not add meaningful semantic details beyond what the schema provides.

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

Purpose5/5

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

Clearly states 'Edit server settings' with verb and resource, and lists example fields (name, verification level, system channel). Distinguishes from sibling tools like discord_edit_channel and discord_edit_role, which edit different resources.

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

Usage Guidelines3/5

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

The description implies usage for editing guild settings but does not explicitly state when to use this tool versus alternatives or provide exclusions. Context from sibling names helps, but no direct guidance is given.

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

discord_edit_messageEdit Discord MessageA
Idempotent

Edit a message sent by the bot.

Args:

  • channel_id (string): Discord channel ID

  • message_id (string): Message ID to edit

  • content (string): New message content (max 2000 characters)

Returns: Confirmation of edit

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesNew message content (max 2000 characters)
channel_idYesDiscord channel ID (snowflake)
message_idYesDiscord message ID (snowflake)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds no further behavioral details (e.g., whether content is fully replaced or appended). It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and well-structured, with a clear single sentence followed by Args and Returns. No unnecessary information, though the Args list is redundant with the schema.

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

Completeness3/5

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

Given no output schema, the Returns line provides minimal confirmation but lacks error handling or prerequisites (e.g., message must be from bot). Adequate for a simple tool but leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters. The description repeats the content max length but adds no new semantics beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Edit a message sent by the bot', specifying the action and resource. The title confirms the purpose, and it distinguishes from sibling tools like discord_send_message and discord_delete_message.

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

Usage Guidelines3/5

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

The description implies the tool only edits bot-sent messages but does not explicitly state when to use it versus alternatives (e.g., sending a new message or deleting). No direct comparisons or exclusion criteria are provided.

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

discord_edit_onboardingEdit Server OnboardingA
Idempotent

Edit the onboarding configuration for a server.

Configure prompts/questions that new members answer to customize their server experience. Each prompt can assign roles or show channels based on member selections.

Args:

  • guild_id (string): Discord server/guild ID

  • prompts (array, optional): Onboarding prompts with options

  • default_channel_ids (array, optional): Channels shown to all new members

  • enabled (boolean, optional): Enable/disable onboarding

  • mode ('onboarding_default' | 'onboarding_advanced', optional): Onboarding mode

Returns: Updated onboarding configuration

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoOnboarding mode
enabledNoWhether onboarding is enabled
promptsNoOnboarding prompts/questions
guild_idYesDiscord server/guild ID (snowflake)
default_channel_idsNoChannels shown to new members by default

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate non-destructive, idempotent write operation. The description adds context about returning updated configuration and the purpose of prompts. No contradictions or missing behavioral traits beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact (approx. 100 words), front-loaded with purpose, then explanatory sentences, then bulleted args, then return statement. Every sentence adds value with no redundancy.

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

Completeness4/5

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

Given the absence of an output schema, the description mentions the return type. It covers the main aspects of the tool, though it could briefly note that existing prompts require IDs for updates (covered in schema). Overall, it is sufficiently complete for a tool with rich schema annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions. The description provides a high-level summary of parameters but does not add significant meaning beyond what the schema already offers, meeting the baseline expectation.

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

Purpose5/5

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

The tool name and description clearly state it edits server onboarding. It explains what onboarding entails (prompts/questions, role/channel assignment) and distinguishes from sibling tools like discord_get_onboarding and discord_setup_onboarding.

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

Usage Guidelines3/5

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

The description implies editing existing onboarding but does not explicitly state when to use this versus alternatives (e.g., discord_setup_onboarding for initial setup) or provide conditions like requiring existing onboarding configuration.

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

discord_edit_roleEdit Discord RoleA
Idempotent

Edit a role's properties including name, color, and permissions.

Common permission names:

  • Admin: Administrator (grants all permissions)

  • General: ManageGuild, ManageRoles, ManageChannels, KickMembers, BanMembers, ModerateMembers

  • Messages: SendMessages, ManageMessages, EmbedLinks, AttachFiles, ReadMessageHistory, MentionEveryone

  • Voice: Connect, Speak, MuteMembers, DeafenMembers, MoveMembers, Stream

  • Other: ManageEmojisAndStickers, ManageWebhooks, ManageEvents, ViewAuditLog

Args:

  • guild_id (string): Discord server/guild ID

  • role_id (string): Discord role ID to edit

  • name (string, optional): New role name

  • color (number, optional): Role color as decimal integer (e.g., 16711680 for red)

  • mentionable (boolean, optional): Whether the role can be mentioned

  • hoist (boolean, optional): Whether to display role members separately

  • permissions (string[], optional): Permissions to grant (replaces existing). Examples: ['SendMessages', 'ViewChannel']

Returns: Updated role details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew role name
colorNoNew role color as decimal
hoistNoWhether to display role members separately
role_idYesDiscord role ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)
mentionableNoWhether the role can be mentioned
permissionsNoNew permission names array

TDQS

A3.6/5.0
Behavior4/5

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

The description discloses that permissions replace existing values and returns updated role details. Annotations already indicate idempotence and non-destructiveness, and the description adds context about permission replacement. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: purpose first, then a helpful permission reference, then arg list. It is front-loaded but could be slightly more concise by reducing the permission list or integrating arg descriptions more succinctly.

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

Completeness4/5

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

Given 7 parameters (2 required), no output schema, and good annotations, the description covers all parameters and notes the return type. It adequately informs usage for a mutation tool, though it lacks mention of error cases or validation behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by listing common permission names, explaining color format with an example decimal, and providing permission examples. This goes beyond what the schema provides.

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

Purpose4/5

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

The description clearly states the tool edits a role's properties (name, color, permissions). The verb 'Edit' and resource 'role' are specific. However, it does not differentiate from sibling tools like discord_create_role or discord_edit_channel, though the name itself provides clarity.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool vs alternatives such as discord_create_role or discord_set_role_positions. No prerequisites, context, or when-not-to-use information is provided, leaving the agent to infer usage.

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

discord_edit_webhookEdit WebhookA
Idempotent

Edit an existing webhook.

Args:

  • webhook_id (string): Discord webhook ID

  • name (string, optional): New webhook name

  • channel_id (string, optional): Move webhook to different channel

Returns: Updated webhook details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew webhook name
channel_idNoMove webhook to a different channel
webhook_idYesDiscord webhook ID (snowflake)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already convey idempotentHint=true, readOnlyHint=false, destructiveHint=false. The description adds that it returns 'Updated webhook details', but otherwise does not elaborate on side effects or permissions. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: one sentence for purpose, a clean args list, and a returns line. No superfluous information.

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

Completeness4/5

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

The description covers the return value, and the schema covers all parameters. Given the tool's simplicity and the presence of annotations, little else is needed. Minor gaps: no mention of error cases or permission requirements, but these are not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with complete descriptions for all three parameters. The description merely repeats the parameter names and purposes without adding further semantics or constraints.

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

Purpose5/5

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

The description explicitly states 'Edit an existing webhook', clearly specifying the verb (edit) and resource (webhook). Among sibling tools (create, delete, list), this uniquely identifies the tool's function.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., discord_create_webhook, discord_edit_channel). No prerequisites or exclusions are mentioned.

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

discord_edit_welcome_screenEdit Welcome ScreenA
Idempotent

Edit the welcome screen configuration for a server.

Requires the server to have Community features enabled and bot must have MANAGE_GUILD permission.

Args:

  • guild_id (string): Discord server/guild ID

  • enabled (boolean, optional): Enable/disable the welcome screen

  • description (string, optional): Server description (max 140 chars)

  • welcome_channels (array, optional): Up to 5 channels to show (channel_id, description, emoji)

Returns: Updated welcome screen settings

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledNoWhether the welcome screen is enabled
guild_idYesDiscord server/guild ID (snowflake)
descriptionNoThe server description shown in the welcome screen (max 140 chars)
welcome_channelsNoWelcome screen channels (max 5)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate non-read-only, idempotent, open world, and non-destructive. The description adds meaningful context such as required permissions and prerequisite (Community features), plus return type ('Updated welcome screen settings'), which goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear main sentence, a prerequisite line, a bulleted Args list, and a Returns line. It is mostly concise but the Args section repeats schema information, making it slightly longer than necessary.

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

Completeness5/5

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

Given the tool's complexity (4 parameters, 1 required), no output schema, and moderate annotations, the description covers prerequisites, permissions, parameter details, and return value. It is complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description does not need to add much. The description restates parameter info in a structured list, adding minor formatting details but essentially duplicating the schema. This is adequate but not extra valuable.

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

Purpose5/5

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

The description clearly states 'Edit the welcome screen configuration for a server.' This is a specific verb-resource combination and distinguishes from sibling tools like discord_get_welcome_screen and other edit tools.

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

Usage Guidelines4/5

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

The description provides usage context: requires Community features and MANAGE_GUILD permission. However, it does not mention when not to use it or suggest alternatives, though the sibling list includes get and other edit tools.

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

discord_get_audit_logGet Audit LogA
Read-onlyIdempotent

Get the audit log for a server. Shows who did what actions.

Common action types: 1=GuildUpdate, 10=ChannelCreate, 11=ChannelUpdate, 12=ChannelDelete, 20=MemberKick, 22=MemberBanAdd, 23=MemberBanRemove, 24=MemberUpdate, 25=MemberRoleUpdate, 30=RoleCreate, 31=RoleUpdate, 32=RoleDelete, 72=MessageDelete, 73=MessageBulkDelete

Args:

  • guild_id (string): Discord server/guild ID

  • user_id (string, optional): Filter by user who performed action

  • action_type (number, optional): Filter by action type

  • limit (number): Number of entries (1-100, default 20)

  • response_format ('json' | 'markdown'): Output format

Returns: Audit log entries with action, user, target, and changes

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of entries to retrieve
user_idNoFilter by user who performed actions
guild_idYesDiscord server/guild ID (snowflake)
action_typeNoFilter by action type (Discord audit log action type number)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds a list of common action types and general content, but does not disclose additional behavioral traits like data freshness, rate limits, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with purpose. The list of action types is useful but somewhat lengthy; a summary or reference could improve conciseness.

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

Completeness3/5

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

Given no output schema, the description partially covers return data (action, user, target, changes) but omits pagination, permissions, and rate limit context. Annotations help but more detail would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters with descriptions (coverage 100%). The description adds value by listing common action type codes, but there is a contradiction: description says limit default is 20, while schema says 50. This inconsistency reduces clarity.

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

Purpose5/5

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

The description clearly states the tool retrieves audit logs for a server with the verb 'Get' and resource 'audit log'. It uniquely identifies this functionality among siblings, as no other sibling tool focuses on audit logs.

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

Usage Guidelines3/5

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

The description implies usage for viewing audit logs but lacks explicit guidance on when to use this tool versus alternatives, such as when to filter by user/action or how it differs from other log retrieval methods.

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

discord_get_automod_ruleGet Auto Moderation RuleA
Read-onlyIdempotent

Get details of a specific auto moderation rule.

Args:

  • guild_id (string): Discord server/guild ID

  • rule_id (string): Auto moderation rule ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: Auto moderation rule details

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYesAuto moderation rule ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A3.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds only 'Get details' which aligns but provides no additional behavioral context (e.g., auth needs, rate limits, or data scope).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise docstring format with Args/Returns. First sentence is clear. Could be slightly more concise by omitting docstring style, but overall efficient.

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

Completeness4/5

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

Given simple get operation, high schema coverage, and complete annotations, description covers essential usage. No output schema, but return type is implied. Adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. Description repeats parameter info and notes default format, which is already in schema. No significant new semantics beyond schema.

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

Purpose5/5

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

Clearly states 'Get details of a specific auto moderation rule.' The verb 'get' and resource 'automod rule' are specific. The 'specific' qualifier distinguishes it from list, create, edit, and delete siblings.

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

Usage Guidelines3/5

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

Implied usage (retrieve a single rule by ID) but no explicit guidance on when to use versus discord_list_automod_rules or other siblings. No exclusion or alternatives mentioned.

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

discord_get_channelGet Discord Channel InfoA
Read-onlyIdempotent

Get detailed information about a specific channel.

Args:

  • channel_id (string): Discord channel ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: Channel details including name, type, topic, and category

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesDiscord channel ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, establishing safety. The description adds no additional behavioral context beyond what schema provides, but does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is extremely concise: one main sentence, a list of arguments, and a returns note. No unnecessary words or redundancy, earning its place efficiently.

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

Completeness4/5

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

For a simple read-only tool with well-annotated safety and no output schema, the description covers the main purpose, parameters, and return format adequately. However, it omits error handling or prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and schema descriptions cover both parameters thoroughly. The description repeats this information almost verbatim, adding no new semantic value.

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

Purpose5/5

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

The description clearly states it retrieves detailed information about a specific channel, using the verb 'Get' and naming the resource 'channel'. It distinguishes well from siblings like discord_get_channel_permissions and discord_get_guild.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as discord_get_channel_permissions or discord_get_messages. The description does not mention exclusions or preferred contexts.

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

discord_get_channel_permissionsGet Channel PermissionsA
Read-onlyIdempotent

Get all permission overrides for a channel.

Args:

  • channel_id (string): Discord channel ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: List of permission overrides with allow/deny for each role/member

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesDiscord channel ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A4.1/5.0
Behavior4/5

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

The description is consistent with annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=true), stating it retrieves permission overrides. It adds the return type (list of overrides with allow/deny per role/member), which provides useful context beyond annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a clear purpose sentence followed by Args and Returns sections. Every sentence adds value, and there is no extraneous information.

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

Completeness5/5

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

For a simple read tool with no output schema, the description adequately explains the return value (list of permission overrides). Annotations cover behavioral safety, and parameters are fully covered by schema and description. The tool's context is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are documented in the schema. The description mentions both parameters and adds that response_format defaults to 'json', but the schema already includes a default value, so the added value is minimal. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Get all permission overrides for a channel.' The verb 'get' and resource 'permission overrides for a channel' are specific, distinguishing it from sibling tools like discord_set_channel_permissions and discord_remove_channel_permissions.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. Usage is implied by the verb 'get', but no direct guidance on when not to use or references to sibling tools are provided. The sibling list exists but is not referenced in the description.

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

discord_get_community_settingsGet Community SettingsB
Read-onlyIdempotent

Get the community settings for a server.

Shows rules channel, updates channel, and other community-related settings.

Args:

  • guild_id (string): Discord server/guild ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: Community settings including channels and features

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description confirms it's a read operation and lists return items, but does not disclose permission requirements, rate limits, or behavior when guild is not a community.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and well-structured: first line states purpose, then a bullet list of examples/args, and a return summary. No fluff or redundant information.

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

Completeness2/5

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

No output schema, so description must detail return structure. It only vaguely says 'community settings including channels and features' without specifying field names or types. Missing error cases (e.g., guild not found, community not enabled).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover both parameters (guild_id and response_format) completely. The function description adds the default value for response_format and clarifies the purpose of markdown vs json, providing marginal extra value.

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

Purpose5/5

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

The name and description clearly state this tool retrieves community settings for a server, specifying it shows rules channel, updates channel, and other community-related settings. It is distinct from siblings like discord_get_guild or discord_get_onboarding.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this over other guild-related tools such as discord_get_guild, discord_get_onboarding, or discord_get_welcome_screen. No prerequisites or limitations are mentioned.

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

discord_get_guildGet Discord Server InfoA
Read-onlyIdempotent

Get detailed information about a specific Discord server.

Args:

  • guild_id (string): Discord server/guild ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: Server details including name, member count, owner, and icon

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A4/5.0
Behavior4/5

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

Annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) already convey safety. Description adds value by listing return fields (name, member count, owner, icon). No behavioral contradictions or missing critical details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one sentence for purpose, bullet list for args and returns. Front-loaded with the primary action. No superfluous content.

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

Completeness4/5

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

For a simple read-only tool with full schema and annotations, the description covers purpose, parameters, and return fields. Lacks error handling details (e.g., invalid guild_id) but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for both parameters. Description's args section merely repeats schema content, providing no additional meaning beyond what is already documented.

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

Purpose5/5

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

Description clearly states 'Get detailed information about a specific Discord server.' The verb 'Get' and resource 'Discord server' are specific and distinct from sibling tools like discord_get_channel or discord_get_member.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like discord_get_channel or discord_list_guilds. Usage is implied by the tool name and description but lacks explicit 'when-not-to-use' or alternative suggestions.

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

discord_get_memberGet Discord MemberA
Read-onlyIdempotent

Get detailed information about a specific member.

Args:

  • guild_id (string): Discord server/guild ID

  • user_id (string): Discord user ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: Member details including username, nickname, roles, join date

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesDiscord user ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by summarizing the return fields (username, nickname, roles, join date), providing context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with separate Args and Returns sections. Every sentence contributes essential information without redundancy.

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

Completeness4/5

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

The description adequately covers what the tool does, required parameters, and return fields. However, it omits potential edge cases (e.g., error handling for non-existent member), which would make it more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description repeats and slightly extends the schema descriptions (e.g., adding default for response_format), but does not significantly add new meaning.

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

Purpose5/5

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

The description clearly states 'Get detailed information about a specific member,' specifying the action (get) and resource (member). It distinguishes from sibling tools like discord_list_members by focusing on a single member via required guild_id and user_id.

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

Usage Guidelines4/5

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

The description does not explicitly state when to use this tool versus alternatives, but the purpose is clear and the required parameters (guild_id, user_id) imply it is for a specific member. Sibling tool names provide implicit differentiation.

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

discord_get_messagesGet Discord MessagesA
Read-onlyIdempotent

Retrieve messages from a Discord channel.

Args:

  • channel_id (string): Discord channel ID

  • limit (number): Number of messages to retrieve (1-100, default: 20)

  • before (string, optional): Get messages before this message ID

  • after (string, optional): Get messages after this message ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: List of messages with content, author, timestamp, attachments

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoGet messages after this message ID
limitNoNumber of messages to retrieve (1-100)
beforeNoGet messages before this message ID
channel_idYesDiscord channel ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the return format (list with content, author, timestamp, attachments) and defaults, going beyond annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a well-structured docstring: a single-line purpose, followed by args list and returns. No unnecessary words.

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

Completeness4/5

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

All parameters and return values are covered, but there is no explanation of pagination behavior or edge cases (e.g., using both before and after). Adequate for moderate complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description provides clear docstring explanations for each parameter (e.g., 'channel_id (string): Discord channel ID'), adding value beyond schema descriptions.

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

Purpose5/5

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

The description clearly states 'Retrieve messages from a Discord channel' with a specific verb and resource, differentiating it from siblings like discord_send_message, discord_edit_message, etc.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is given. While it implies use for reading messages, it does not discuss alternatives like discord_get_pinned_messages or pagination strategies.

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

discord_get_onboardingGet Server OnboardingA
Read-onlyIdempotent

Get the onboarding configuration for a server.

Onboarding guides new members through a questionnaire to customize their experience.

Args:

  • guild_id (string): Discord server/guild ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: Onboarding settings including prompts, options, and default channels

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows it's safe and idempotent. The description adds behavioral context by specifying that it returns onboarding settings (prompts, options, default channels), which goes beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a title, purpose statement, parameter list, and return description. It is relatively concise, though the parameter list is redundant with the schema. Overall, efficient and front-loaded with purpose.

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

Completeness4/5

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

Given the tool's simplicity (2 params, read-only, idempotent), the description provides sufficient context. It explains the return value at a high level, which compensates for the lack of an output schema. Does not mention permissions or rate limits, but for a GET operation, this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description repeats this info but adds a default for response_format. It does not provide additional meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it retrieves the onboarding configuration for a Discord server. It uses a specific verb ('Get') and resource ('onboarding configuration'), and the tool name distinguishes it from write counterparts like discord_setup_onboarding and discord_edit_onboarding.

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

Usage Guidelines3/5

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

The description explains what onboarding is but does not explicitly state when to use this tool versus alternatives (e.g., for editing onboarding). Usage is implied from the get operation, but no explicit guidance on exclusions or when not to use it.

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

discord_get_pinned_messagesGet Pinned MessagesB
Read-onlyIdempotent

Get all pinned messages in a channel.

Args:

  • channel_id (string): Discord channel ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: List of pinned messages

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesDiscord channel ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety and idempotency. The description adds that the tool returns a list of pinned messages. However, it does not elaborate on rate limits, authorization needs, or result limit behavior. The description adds marginal value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise and front-loaded with the main purpose. However, the 'Args:' and 'Returns:' formatting is slightly verbose and could be streamlined. It is efficient but has minor redundancy.

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

Completeness3/5

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

The tool is simple with two parameters, no output schema, and clear annotations. The description covers the basic functionality, parameters, and return type. However, it lacks information about permission requirements, result limits, or whether the output is truncated. This is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully described in the input schema (100% coverage). The description restates the parameter names and types but adds only the default value for response_format, which is already present in the schema. No new semantic meaning is provided.

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

Purpose5/5

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

The description clearly states the tool retrieves all pinned messages in a channel, specifying the exact resource and action. It distinguishes itself from sibling tools like discord_get_messages (which retrieves all messages) and discord_pin_message/unpin_message (which modify pinned state).

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives, such as discord_get_messages for non-pinned messages. It lacks explicit context about typical use cases or prerequisites.

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

discord_get_welcome_screenGet Welcome ScreenA
Read-onlyIdempotent

Get the welcome screen configuration for a server.

Requires the server to have Community features enabled.

Args:

  • guild_id (string): Discord server/guild ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: Welcome screen settings including description and channels

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description complements by adding the prerequisite (Community features) and describing the return shape (settings including description and channels). This adds behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and well-structured: purpose in first sentence, then requirement, then parameter list, then return value. No unnecessary words. Every sentence adds value.

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

Completeness5/5

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

Given the tool's simplicity (2 parameters, no output schema), the description is complete. It covers the purpose, prerequisite, parameters, and expected returns. Annotations cover safety and idempotency, so no gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 100% of parameters with descriptions. The tool description repeats the parameter names and output format but adds no new meaning beyond what the schema provides. Baseline score of 3 is appropriate.

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

Purpose5/5

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

Clearly states 'Get the welcome screen configuration for a server' with a specific verb and resource. Differentiates from sibling tools like 'discord_edit_welcome_screen' by focusing on retrieval. Also notes the prerequisite (Community features), adding precision.

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

Usage Guidelines4/5

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

Explicitly states that the server must have Community features enabled, providing a clear prerequisite. However, it does not explicitly mention when not to use this tool or suggest alternatives like 'discord_get_community_settings' for broader community settings. Still, context is clear.

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

discord_kick_memberKick Discord MemberA
Destructive

Kick a member from a Discord server.

Args:

  • guild_id (string): Discord server/guild ID

  • user_id (string): Discord user ID to kick

  • reason (string, optional): Reason for kick (visible in audit log)

Returns: Confirmation of kick

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoReason for kick (visible in audit log)
user_idYesDiscord user ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds that the reason is visible in the audit log, but doesn't elaborate on side effects like rejoin ability or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: purpose, args list, and return value in six lines, front-loaded with the core action.

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

Completeness4/5

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

Covers basic essentials: action, arguments, return type. Lacks permission hints or error conditions, but adequate for a simple destructive tool with complete schema and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description merely restates the schema's parameter descriptions without adding new meaning or examples.

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

Purpose5/5

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

The description clearly states 'Kick a member from a Discord server' with a specific verb and resource, distinguishing it from siblings like ban, remove role, or timeout.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like discord_ban_member or discord_timeout_member; lacks context for selection.

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

discord_leave_guildLeave Discord ServerA
Destructive

Leave a Discord server (guild). The bot will no longer have access to this server.

WARNING: This is a destructive action. The bot will need to be re-invited to rejoin.

Args:

  • guild_id (string): Discord server/guild ID to leave

  • confirm (boolean): Must be set to true to confirm leaving

Returns: Confirmation message with server details

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be set to true to confirm leaving the server
guild_idYesDiscord server/guild ID (snowflake)

TDQS

A3.9/5.0
Behavior4/5

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

The description adds value beyond the destructiveHint annotation by explaining the consequence (bot loses access) and the need to re-invite. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with a purpose sentence, consequence warning, and a brief args list. No unnecessary words.

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

Completeness4/5

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

For a simple destructive action, the description adequately covers purpose, parameters, consequences, and return value hint. Could be slightly enhanced by mentioning the bot must be in the guild, but overall complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with clear descriptions. The description repeats this information in a different format without adding new semantic details, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool leaves a Discord server (guild) and that the bot loses access. This is specific and distinguishes it from sibling tools that act on members or channels.

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

Usage Guidelines3/5

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

The description includes a warning about destructiveness and the need for re-invitation, but does not explicitly state when to use this tool versus alternatives like kick or ban. No comparison with siblings is provided.

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

discord_list_automod_rulesList Auto Moderation RulesA
Read-onlyIdempotent

List all auto moderation rules for a server.

Args:

  • guild_id (string): Discord server/guild ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: List of auto moderation rules

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A3.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no behavioral context beyond stating it lists rules. No extra transparency on returns, pagination, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loads the purpose, and uses a clear structure with 'Args:' and 'Returns:' sections. The 'Args:' block is slightly redundant with the schema, but overall efficient.

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

Completeness4/5

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

The tool is a simple read-only list with full schema coverage and sufficient annotations. The description mentions return type and parameters. No output schema exists, but the description notes it returns a list, which is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description only paraphrases the schema's parameter descriptions. It adds no new semantic meaning beyond what the input schema already provides.

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

Purpose5/5

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

The description clearly states 'List all auto moderation rules for a server', using a specific verb ('list') and resource ('auto moderation rules'), and differentiates from sibling tools like 'discord_get_automod_rule' and 'discord_create_automod_rule'.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. Usage is implied by the tool's purpose, but no direct guidance is given.

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

discord_list_bansList BansA
Read-onlyIdempotent

List all banned users in a server.

Args:

  • guild_id (string): Discord server/guild ID

  • limit (number): Number of bans to return (1-1000, default 100)

  • response_format ('json' | 'markdown'): Output format

Returns: List of banned users with reasons

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of bans to return (1-1000)
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds no additional behavioral context beyond what annotations provide, such as permission requirements or rate limits. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with Args and Returns sections, making it easy to parse. It is concise with no redundant sentences, though could be slightly more streamlined.

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

Completeness3/5

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

Given the tool's simplicity, annotations, and full schema coverage, the description is adequate. However, it lacks mention of required permissions or behavior when no bans exist, which would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds a 'Returns' section explaining the output ('List of banned users with reasons'), which is not in the schema, providing extra context for parameter interpretation.

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

Purpose5/5

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

The description clearly states the action: 'List all banned users in a server.' It uses a specific verb and resource, and distinguishes itself from sibling list tools like discord_list_members by specifying 'banned users'.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives like discord_ban_member or discord_unban_member. It implies usage for reading bans, but lacks explicit guidance or exclusions.

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

discord_list_channelsList Discord ChannelsA
Read-onlyIdempotent

List channels in a Discord server.

Args:

  • guild_id (string): Discord server/guild ID

  • type ('text' | 'voice' | 'category' | 'all'): Filter by channel type (default: 'all')

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: List of channels with id, name, type, topic, and category info

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by channel typeall
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds useful context about returned data (id, name, type, topic, category) which aids agent understanding. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, well-structured with Args and Returns sections, and front-loads the primary action. Every sentence provides value; no extraneous content.

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

Completeness4/5

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

Given the tool's complexity (3 parameters, no output schema), the description along with annotations and schema provides sufficient context for an agent to use the tool. It summarizes return fields, which compensates for lack of output schema. Minor gap: no mention of pagination or rate limits, but this is acceptable for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for all three parameters (type, guild_id, response_format). The tool description repeats the parameter list but does not add any additional meaning beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'List' and resource 'channels in a Discord server'. It distinguishes itself from sibling tools like discord_get_channel (single channel) and discord_create_channel (creation) by specifying a list operation. The title reinforces this purpose.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., discord_get_channel for details, discord_list_webhooks for webhooks). Usage is implied through the description, but no when-not-to-use or comparisons are given.

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

discord_list_emojisList EmojisA
Read-onlyIdempotent

List all custom emojis in a server.

Args:

  • guild_id (string): Discord server/guild ID

  • response_format ('json' | 'markdown'): Output format

Returns: List of emojis with name, ID, and whether animated

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds the return format (list with name, ID, animated) but no additional behavioral details like pagination or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear structure (purpose, args, returns). It is front-loaded and efficient, though the 'Args:' and 'Returns:' style could be slightly more terse.

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

Completeness4/5

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

For a simple list tool with two parameters and no output schema, the description adequately explains the purpose, parameters, and return values. It covers what an agent needs to know, though it could mention that only custom emojis are listed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the schema already describes both parameters thoroughly. The description repeats the parameter meanings but adds no new semantic information beyond what is in the schema.

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

Purpose5/5

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

The description clearly states 'List all custom emojis in a server' with a specific verb and resource. It distinguishes from sibling tools like discord_create_emoji and discord_list_stickers.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives. Usage is implied but no exclusions or context are given.

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

discord_list_eventsList Scheduled EventsA
Read-onlyIdempotent

List all scheduled events in a server.

Args:

  • guild_id (string): Discord server/guild ID

  • response_format ('json' | 'markdown'): Output format

Returns: List of events with name, time, location, and status

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, assuring safety. The description adds value by specifying the return structure (list of events with fields). No contradictions, and it explains behavior beyond annotations adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise: one sentence for purpose, followed by bullet-pointed args and returns. Every sentence is useful, and it is front-loaded with the core action.

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

Completeness4/5

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

For a read-only list tool with good annotations, the description covers purpose, parameters, and return fields. However, it does not mention pagination, limits, or prerequisites (e.g., permissions). It is mostly complete but has minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 100% schema coverage, the description adds minimal value. It repeats parameter names and types but lacks details like default values or format descriptions that the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'List all scheduled events in a server' with a specific verb and resource. It distinguishes from siblings like discord_create_event and discord_delete_event by focusing on listing. The return fields (name, time, location, status) are also specified.

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

Usage Guidelines3/5

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

The description does not provide explicit when-to-use or when-not-to-use guidance. There are no alternatives mentioned, and prerequisites (e.g., permissions) are not discussed. For a simple list tool, the usage is implied but not instructed.

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

discord_list_guildsList Discord ServersA
Read-onlyIdempotent

List all Discord servers (guilds) the bot has access to.

Returns server names, IDs, member counts, and owner information.

Args:

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: List of guilds with id, name, memberCount, icon, ownerId

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, etc. The description adds return field details but no additional behavioral context (e.g., pagination, rate limits). With annotations covering safety, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (4 lines), front-loaded with purpose, then return info and parameter. Every sentence adds value with no waste.

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

Completeness5/5

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

The tool is simple with one parameter and no output schema. Annotations cover safety. The description adequately explains return structure and parameter, making it complete for an agent to use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (response_format) with 100% schema coverage. The description restates the enum options and default value, adding little beyond the schema. Baseline 3 is correct.

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

Purpose5/5

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

The description clearly states the tool lists all Discord servers (guilds) the bot has access to, and specifies the returned information (server names, IDs, member counts, owner info). This distinguishes it from sibling tools that list other entities like channels or members.

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

Usage Guidelines3/5

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

The description implies use for getting an overview of available guilds but does not explicitly state when to use or avoid alternative tools. Given the many sibling tools for specific CRUD operations on guilds, some guidance would help.

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

discord_list_invitesList InvitesA
Read-onlyIdempotent

List all active invites in a server.

Args:

  • guild_id (string): Discord server/guild ID

  • response_format ('json' | 'markdown'): Output format

Returns: List of invites with code, uses, max uses, expiration

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe read operation. The description adds the return format details (code, uses, max uses, expiration) beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, uses a clear Args/Returns structure, and contains no superfluous information. Every sentence adds value.

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

Completeness5/5

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

For a list tool with two parameters and no output schema, the description sufficiently explains functionality, parameters, and return format. Annotations cover behavioral safety.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description essentially restates the schema's parameter descriptions. It adds clarity but does not provide additional meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'List all active invites in a server' with a specific verb and resource. It distinguishes from sibling tools like discord_create_invite and discord_delete_invite.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool vs alternatives, but it is implied as a read-only listing operation. No exclusions or alternative tool names are mentioned.

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

discord_list_membersList Discord MembersA
Read-onlyIdempotent

List members in a Discord server.

Args:

  • guild_id (string): Discord server/guild ID

  • limit (number): Maximum number of members (1-100, default: 20)

  • after (string, optional): Get members after this user ID (for pagination)

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: List of members with username, nickname, roles, join date

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoGet members after this user ID (for pagination)
limitNoMaximum number of members to return
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false. The description adds that the tool returns a list of members with specific fields (username, nickname, roles, join date), providing context beyond the annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise: one sentence for purpose, followed by a clear parameter list. Every word earns its place, no redundancy or fluff.

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

Completeness4/5

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

Despite having no output schema, the description mentions the return fields (username, nickname, roles, join date). It covers pagination via the 'after' parameter. For a simple list operation with full schema coverage and clear annotations, this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all parameters. The description's 'Args' section largely repeats schema descriptions (e.g., 'Discord server/guild ID' for guild_id) without adding significant new meaning. The baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'List members in a Discord server', which is a specific verb+resource. It distinguishes from sibling tools like discord_get_member (single member) and discord_list_channels or discord_list_roles (different resources).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as discord_get_member or discord_list_guilds. There is no mention of use cases, prerequisites, or exclusions.

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

discord_list_rolesList Discord RolesA
Read-onlyIdempotent

List all roles in a Discord server.

Args:

  • guild_id (string): Discord server/guild ID

  • response_format ('markdown' | 'json'): Output format (default: 'json')

Returns: List of roles with name, color, position, permissions

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description does not need to restate these. The description adds return field details but does not discuss potential issues like required permissions or rate limits. Value added is moderate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short but includes structured Arg and Returns sections. It is front-loaded with the purpose. Some redundancy (the schema already defines parameters) but overall efficient.

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

Completeness3/5

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

Given the lack of an output schema, the description covers the return fields (name, color, position, permissions). However, it omits potential context like permission requirements, pagination, or error handling. Adequate for a simple read-only list tool but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description reinforces the meaning of guild_id and response_format, clarifying the default and the output formats ('markdown for human-readable, json for structured data'), adding value beyond the schema pattern/enum constraints.

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

Purpose5/5

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

Description clearly states 'List all roles in a Discord server.' It uses a specific verb (list) and resource (roles), and distinguishes from sibling tools that create, edit, delete, or add roles, as well as other list tools for different resources.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives (e.g., when to list roles vs when to get a specific role or create one). However, the purpose is clear enough to infer use cases, but lacks explicit guidance or exclusions.

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

discord_list_stickersList StickersA
Read-onlyIdempotent

List all custom stickers in a server.

Args:

  • guild_id (string): Discord server/guild ID

  • response_format ('json' | 'markdown'): Output format

Returns: List of stickers with name, description, and format

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds minimal behavioral context beyond saying it lists stickers and returns fields, which is consistent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: three lines of arguments and returns. The main purpose is front-loaded in the first sentence. No wasted words.

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

Completeness5/5

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

Given the simple nature of the tool (no output schema, only 2 parameters), the description covers everything needed: what it does, required parameter, optional format, and return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The description adds value by specifying the return format (list of stickers with name, description, and format) beyond the input schema.

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

Purpose5/5

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

The description clearly states 'List all custom stickers in a server' with a specific verb and resource. It distinguishes from sibling tools like 'discord_delete_sticker' or 'discord_create_emoji'.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., listing emojis or roles). Usage is implied but not differentiated from other list operations.

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

discord_list_webhooksList WebhooksA
Read-onlyIdempotent

List webhooks in a guild or channel.

Args:

  • guild_id (string, optional): List all webhooks in the server

  • channel_id (string, optional): List webhooks for a specific channel

  • response_format ('json' | 'markdown'): Output format

Returns: List of webhooks with name, channel, and URL

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idNoGuild ID to list all webhooks in the server
channel_idNoChannel ID to list webhooks for a specific channel
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datajson

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds return format details and parameter behavior, which adds value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with separate sections for args and returns, but the Args section repeats schema info, making it slightly redundant. Still concise overall.

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

Completeness4/5

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

Given no output schema, the description includes return value details. It covers the basic use cases but does not clarify mutual exclusivity of guild_id and channel_id or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description largely restates the schema-provided parameter meanings. No new semantic insight is added.

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

Purpose5/5

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

The description clearly states the action (list) and resource (webhooks in a guild or channel), and distinguishes from sibling tools like discord_create_webhook and discord_list_channels.

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

Usage Guidelines4/5

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

The description specifies the context (guild or channel) but does not explicitly exclude alternatives or provide when-not-to-use guidance. However, the optional parameters make usage clear.

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

discord_move_memberMove Member to Voice ChannelA
Idempotent

Move a member to a different voice channel or disconnect them from voice.

The member must currently be connected to a voice channel to be moved.

Args:

  • guild_id (string): Discord server/guild ID

  • user_id (string): Discord user ID to move

  • channel_id (string | null): Target voice channel ID, or null to disconnect

Returns: Confirmation of move or disconnect

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesDiscord user ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)
channel_idYesTarget voice channel ID, or null to disconnect the user

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate a non-read-only, idempotent, non-destructive mutation. The description adds that the member can be disconnected (null channel) and must be currently connected. This provides useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise paragraphs: one for purpose and prerequisite, one for parameters and return. No wasted words, front-loaded with core action.

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

Completeness5/5

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

Given the simple operation and no output schema, the description adequately covers prerequisites, parameters (with null explanation), and the return value (confirmation). No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all three parameters with 100% description coverage. The description's Args section restates them and adds meaning: channel_id can be null to disconnect. This adds value beyond the schema.

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

Purpose5/5

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

Description clearly states the action: moving a member to a different voice channel or disconnecting them. This distinguishes it from sibling tools like discord_kick_member or discord_ban_member, which handle different operations.

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

Usage Guidelines4/5

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

States a key prerequisite: the member must be connected to a voice channel. This helps agents determine when to use the tool. However, it does not explicitly mention alternative tools or when not to use it, missing some guidance.

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

discord_pin_messagePin Discord MessageB
Idempotent

Pin a message in a channel.

Args:

  • channel_id (string): Discord channel ID

  • message_id (string): Message ID to pin

Returns: Confirmation of message pinned

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesDiscord channel ID (snowflake)
message_idYesDiscord message ID (snowflake)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds minimal behavioral context beyond the return value, but not enough to justify a higher score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded with the purpose. However, the Args and Returns sections are redundant with the schema, reducing efficiency slightly.

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

Completeness3/5

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

The description provides the core purpose and parameter types, but lacks important context such as permission requirements, error states, or behavioral nuances like idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 100% of parameters with descriptions. The tool description restates the same information without adding new semantics, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Pin a message') and the target resource ('in a channel'). This explicitly distinguishes it from sibling tools like discord_unpin_message.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that pinning requires certain permissions or that messages must already exist.

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

discord_prune_membersPrune MembersA
Destructive

Remove inactive members from the server.

Args:

  • guild_id (string): Discord server/guild ID

  • days (number): Days of inactivity required (1-30)

  • include_roles (string[], optional): Role IDs to include in prune (by default only members without roles)

  • dry_run (boolean): If true, returns count without actually pruning (default true)

Returns: Number of members pruned (or would be pruned if dry_run)

ParametersJSON Schema
NameRequiredDescriptionDefault
daysYesNumber of days of inactivity (1-30)
dry_runNoIf true, only returns count without actually pruning
guild_idYesDiscord server/guild ID (snowflake)
include_rolesNoRole IDs to include in prune (normally members with roles are excluded)

TDQS

A4.7/5.0
Behavior5/5

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

Annotations indicate destructiveHint=true, and the description confirms the destructive nature while adding safety via dry_run. It also discloses that include_roles affects which members are pruned, and returns the count. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with 'Args' and 'Returns' sections, using minimal yet informative language. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given the schema coverage and annotations, the description fully explains parameters, behavior (including dry_run safety), and return value. No output schema needed for a simple numeric return.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds nuance (e.g., 'by default only members without roles') beyond the schema descriptions. It clarifies behavior for each parameter effectively.

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

Purpose5/5

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

The description clearly states 'Remove inactive members from the server,' using a specific verb and resource. It distinguishes this tool from siblings like kick/ban/timeout by focusing on inactivity-based removal.

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

Usage Guidelines4/5

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

The description explains key parameters like dry_run (default true) and include_roles, providing context for safe usage. However, it does not explicitly contrast with alternatives or state when not to use it.

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

discord_remove_channel_permissionsRemove Channel Permission OverridesB
DestructiveIdempotent

Remove all permission overrides for a role or member on a channel.

Args:

  • channel_id (string): Discord channel ID

  • target_id (string): Role or User ID to remove permission overrides for

Returns: Confirmation of removal

ParametersJSON Schema
NameRequiredDescriptionDefault
target_idYesRole or User ID to remove permission overrides for
channel_idYesDiscord channel ID (snowflake)

TDQS

B3.4/5.0
Behavior3/5

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

The description states it removes 'all' permission overrides, which adds clarity beyond the annotations. However, it does not discuss side effects, reversibility, or required permissions. Annotations already indicate destructive and idempotent nature, so the description adds moderate value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded. However, it includes inline 'Args:' and 'Returns:' sections that mostly duplicate the input schema, slightly reducing efficiency. Still, it remains clear and to the point.

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

Completeness3/5

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

For a tool with low complexity (2 params, simple operation) and good annotations, the description adequately covers the purpose and return value ('Confirmation of removal'). Yet, it lacks mention of idempotency or potential error cases, leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description reiterates the parameters but adds no additional context beyond the schema. Baseline score of 3 is appropriate as the description does not compensate further.

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

Purpose5/5

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

The description clearly states the action: 'Remove all permission overrides for a role or member on a channel.' It uses a specific verb and resource, and the sibling tools include related operations like set_channel_permissions, making the distinction evident.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives such as discord_set_channel_permissions or discord_sync_channel_permissions. No explicit when-to-use or when-not-to-use information is given.

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

discord_remove_reactionRemove Reaction from MessageA
Idempotent

Remove the bot's emoji reaction from a message.

Args:

  • channel_id (string): Discord channel ID

  • message_id (string): Message ID

  • emoji (string): Emoji to remove

Returns: Confirmation of reaction removed

ParametersJSON Schema
NameRequiredDescriptionDefault
emojiYesEmoji reaction to remove
channel_idYesDiscord channel ID (snowflake)
message_idYesDiscord message ID (snowflake)

TDQS

A4/5.0
Behavior4/5

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

Annotations provide idempotent and destructive hints. The description adds important context: it only removes the bot's reaction, not others'. Also describes return confirmation. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, well-structured with Args and Returns sections, and to the point. Every sentence adds value.

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

Completeness4/5

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

For a simple tool with annotations and no output schema, the description covers purpose, parameters, and return value. Could mention emoji format or permissions, but overall complete enough for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with adequate parameter descriptions. The description repeats the parameter list without adding new meaning (e.g., emoji format not specified). Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'remove' and the resource 'the bot's emoji reaction from a message'. It distinguishes from siblings like discord_add_reaction (adds) and discord_delete_message (deletes message).

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

Usage Guidelines3/5

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

No explicit guidance on when to use vs alternatives. The description implies it only removes the bot's own reactions, but does not mention prerequisites or exclusions. It is adequate for a simple tool but lacks proactive differentiation.

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

discord_remove_roleRemove Role from MemberA
Idempotent

Remove a role from a Discord member.

Args:

  • guild_id (string): Discord server/guild ID

  • user_id (string): Discord user ID

  • role_id (string): Discord role ID to remove

Returns: Confirmation of role removed

ParametersJSON Schema
NameRequiredDescriptionDefault
role_idYesDiscord role ID (snowflake)
user_idYesDiscord user ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate idempotentHint=true and destructiveHint=false, so the description adds limited behavioral context. It does not mention required permissions or side effects, but the operation is straightforward.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and structured with an Args section. It is clear and efficient, though the 'Args:' block could be integrated into the sentence for slightly better flow.

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

Completeness4/5

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

Given the low complexity (3 required params, no nested objects, no output schema), the description adequately covers what the tool does and its inputs. Missing permission context, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description adds no new meaning beyond the schema. The description simply lists the param names without additional context or format details.

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

Purpose5/5

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

The description clearly states the action ('Remove a role') and the resource ('from a Discord member'), using a specific verb and resource. It distinguishes from sibling tools like discord_add_role and discord_delete_role.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. Although the action is self-explanatory, no guidance on when not to use or prerequisites is provided, which is a gap.

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

discord_send_messageSend Discord MessageA

Send a message to a Discord channel.

Args:

  • channel_id (string): Discord channel ID

  • content (string): Message content (max 2000 characters)

  • reply_to (string, optional): Message ID to reply to

Returns: The sent message details including ID

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesMessage content (max 2000 characters)
reply_toNoOptional message ID to reply to
channel_idYesDiscord channel ID (snowflake)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations indicate this is a write operation (readOnlyHint=false) but not destructive (destructiveHint=false). The description adds return details but lacks info on permissions, rate limits, or side effects beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, with a clear structure including Args and Returns. Every sentence is meaningful and front-loaded, no wasted words.

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

Completeness4/5

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

For a simple send message tool with good annotations and 100% schema coverage, the description is nearly complete. It covers purpose, parameters, and return. Minor omission: no mention of Discord-specific limits or prerequisites beyond character count.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description largely repeats schema information (e.g., 'Message content (max 2000 characters)'). It adds no new meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'Send a message to a Discord channel', which is a specific verb+resource. It effectively distinguishes from sibling tools like discord_edit_message, discord_delete_message, etc.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like discord_edit_message or discord_create_webhook. The description does not mention any prerequisites, context, or when not to use it.

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

discord_set_channel_permissionsSet Channel PermissionsA
Idempotent

Set permission overrides for a role or member on a channel.

Common permission names:

  • View: ViewChannel

  • Messages: SendMessages, ReadMessageHistory, ManageMessages, EmbedLinks, AttachFiles, AddReactions

  • Voice: Connect, Speak, Stream, MuteMembers, DeafenMembers, MoveMembers

  • Threads: CreatePublicThreads, CreatePrivateThreads, SendMessagesInThreads

  • Management: ManageChannels, ManageRoles, ManageWebhooks

Args:

  • channel_id (string): Discord channel ID

  • target_id (string): Role or User ID to set permissions for

  • target_type ('role' | 'member'): Whether target is a role or member

  • allow (string[], optional): Permissions to allow (e.g., ['ViewChannel', 'SendMessages'])

  • deny (string[], optional): Permissions to deny (e.g., ['SendMessages'])

Returns: Confirmation of permission changes

ParametersJSON Schema
NameRequiredDescriptionDefault
denyNoPermissions to deny (e.g., ['SendMessages', 'AddReactions'])
allowNoPermissions to allow (e.g., ['ViewChannel', 'SendMessages', 'ReadMessageHistory'])
target_idYesRole or User ID to set permissions for
channel_idYesDiscord channel ID (snowflake)
target_typeYesWhether target is a role or member

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate idempotent, non-destructive, read-write behavior. The description adds value by organizing permission names and implying that overrides are set, which aligns with annotations. However, it does not clarify whether existing overrides are replaced or merged, nor mention rate limits or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured with clear sections (purpose, permission names, args, returns). The permission name list is lengthy but necessary. The overall length is justified given the complexity, though some redundancy exists between the args list and the schema.

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

Completeness3/5

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

The description covers purpose and arguments well but provides only vague return information ('Confirmation of permission changes'). No output schema exists, so more detail on the return format would be helpful. It also lacks clarification on behavior when overrides already exist (overwrite vs merge), though idempotent hint suggests replacement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers all parameters with descriptions (100% coverage). The description adds significant value by listing common permission names organized by category (View, Messages, Voice, etc.), which helps the agent construct valid 'allow' and 'deny' arrays beyond the schema's brief descriptions.

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

Purpose5/5

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

The description uses a specific verb ('Set') and resource ('permission overrides for a role or member on a channel'), clearly distinguishing it from sibling tools like 'discord_remove_channel_permissions' or 'discord_sync_channel_permissions'.

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

Usage Guidelines3/5

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

While the description lists common permission names to guide input, it does not explicitly state when to use this tool versus alternatives (e.g., 'use discord_sync_channel_permissions to copy permissions from another channel'). No exclusions or context on prerequisites are provided.

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

discord_set_nicknameSet Member NicknameA
Idempotent

Set or clear a member's nickname.

Args:

  • guild_id (string): Discord server/guild ID

  • user_id (string): Discord user ID

  • nickname (string, optional): New nickname (empty/null to reset)

Returns: Confirmation of nickname change

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesDiscord user ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)
nicknameYesNew nickname (max 32 chars) or null to clear

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate idempotentHint=true and non-destructiveHint=false. The description adds that setting nickname to empty/null resets it, and returns a confirmation. No contradictions, but does not disclose permission requirements or side effects beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the main action. The Args/Returns structure is clear. Every sentence adds value, though the descriptions of parameters are somewhat redundant with the schema.

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

Completeness4/5

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

For a simple 3-parameter tool with no nested objects, the description covers the core functionality and return value. Lacks mention of required permissions or rate limits, but is sufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for each parameter. The description adds minimal value by restating the optional nature of nickname (null to reset), but does not provide additional context beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Set or clear a member's nickname') and the resource ('member's nickname'), making the purpose unmistakable. Among sibling tools, it is distinct from other member management actions like kicking or banning.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., when to set vs. clear a nickname, or prerequisites like permissions). The description lacks explicit usage context.

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

discord_set_role_positionsSet Role PositionsA
Idempotent

Reorder role hierarchy by setting role positions.

Higher position = more authority in the hierarchy. The @everyone role is always at position 0. Roles can only manage other roles below them in the hierarchy.

IMPORTANT: The bot can only move roles that are below its own highest role in the hierarchy.

Args:

  • guild_id (string): Discord server/guild ID

  • positions (array): Array of objects with:

    • role_id (string): Discord role ID

    • position (number): New position for the role (higher = more authority)

Returns: Confirmation of position changes

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
positionsYesArray of role positions to set

TDQS

A4.7/5.0
Behavior5/5

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

Annotations indicate a non-readOnly, non-destructive, idempotent operation. The description adds critical behavioral context: the hierarchy rules, bot's role limitation, and that positions are relative. This goes beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections and important notations. It is concise but not minimal; it could be slightly tighter without losing clarity.

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

Completeness5/5

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

The description covers all essential context: hierarchy mechanics, @everyone constraint, bot limitations, and return value. No output schema exists, but the return is described adequately. Complete for a role positioning tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The tool description elaborates on the meaning of position (higher = more authority) and the structure of the positions array, adding significant value beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'Reorder' and the resource 'role hierarchy' with 'setting role positions'. It is distinct from sibling tools like discord_create_role or discord_edit_role.

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

Usage Guidelines4/5

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

The description explains when to use the tool (reordering roles) and provides important constraints (e.g., @everyone at position 0, roles can only manage lower roles, bot limitation). It does not explicitly state when not to use, but the context is clear.

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

discord_setup_communitySetup Community ServerA
Idempotent

Configure the required channels for a Community server.

Sets the rules channel and public updates channel which are required for Community features. The server must already have Community enabled in Discord Server Settings.

Args:

  • guild_id (string): Discord server/guild ID

  • rules_channel_id (string): Channel for server rules (required)

  • public_updates_channel_id (string): Channel for Discord updates (required)

  • description (string, optional): Server description (max 120 chars)

  • preferred_locale (string, optional): Preferred language (e.g., 'en-US', 'de')

  • safety_alerts_channel_id (string, optional): Channel for safety alerts

Returns: Updated community settings

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesDiscord server/guild ID (snowflake)
descriptionNoServer description (max 120 chars)
preferred_localeNoPreferred language (e.g., 'en-US', 'de', 'fr')
rules_channel_idYesChannel for server rules (required for Community)
safety_alerts_channel_idNoChannel for safety alerts from Discord
public_updates_channel_idYesChannel for Discord community updates (required for Community)

TDQS

A4/5.0
Behavior4/5

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

Description adds context beyond annotations: it specifies which channels are set, mentions the prerequisite, and states it returns updated settings. Annotations already indicate it's not destructive and is idempotent, so description supplements adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise, front-loaded with the core action, and well-structured with a clear args list and return statement. Every sentence is necessary and efficient.

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

Completeness4/5

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

Given the availability of annotations and full schema, the description covers the tool's purpose, parameters, and prerequisites adequately. It could mention possible errors or side effects, but overall it is complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since schema coverage is 100%, the description adds little new meaning beyond the schema's parameter descriptions. It lists parameters but does not provide additional semantic context.

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

Purpose5/5

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

The description clearly states it configures required channels for a Community server, specifically the rules and public updates channels. It distinguishes from other guild editing tools by focusing on community setup.

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

Usage Guidelines3/5

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

Description mentions the prerequisite that Community must already be enabled, but does not provide guidance on when to use this tool versus alternatives like discord_edit_guild or when not to use it.

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

discord_setup_onboardingSetup Server OnboardingA

Setup and enable onboarding for a server from scratch.

This tool configures the complete onboarding experience for new members. The server must have Community features enabled.

Requirements:

  • Server must have Community features enabled (done in Discord Server Settings)

  • At least one default channel must be specified

  • At least one prompt with options must be provided

  • Each option must have at least one role_ids OR channel_ids

Args:

  • guild_id (string): Discord server/guild ID

  • default_channel_ids (string[]): Channels shown to all new members (required, at least one)

  • prompts (array): Onboarding questions (required, at least one)

    • type ('multiple_choice' | 'dropdown'): Prompt type

    • title (string): Question title

    • single_select (boolean): Allow only one selection (default: true)

    • required (boolean): Must answer to continue (default: false)

    • in_onboarding (boolean): Show during onboarding (default: true)

    • options (array): Available choices (at least one)

      • title (string): Option title

      • description (string, optional): Option description

      • emoji_name (string, optional): Unicode emoji (e.g., '🎮')

      • role_ids (string[], optional): Roles to assign when selected

      • channel_ids (string[], optional): Channels to show when selected

  • mode ('onboarding_default' | 'onboarding_advanced', optional): Mode (default: 'onboarding_default')

  • enabled (boolean, optional): Enable after setup (default: true)

Returns: Confirmation with onboarding status

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoOnboarding modeonboarding_default
enabledNoWhether to enable onboarding after setup
promptsYesOnboarding prompts/questions (at least one required)
guild_idYesDiscord server/guild ID (snowflake)
default_channel_idsYesChannels shown to new members by default (at least one required)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations provide no destructive/intensity hints, but the description states it configures onboarding 'from scratch.' It doesn't cover behavior if onboarding already exists or error cases, which is a gap for a complex tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with sections (overview, requirements, args), uses bullet points for clarity, and is concise given the complexity. Every sentence adds value.

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

Completeness4/5

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

The description covers requirements and parameter details thoroughly, and includes a return value note. It lacks error handling or edge cases, but overall is complete for a complex onboarding tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema describes all parameters (100% coverage), so baseline is 3. The description adds value by specifying requirements and giving context (e.g., 'at least one role_ids OR channel_ids' is clarified beyond schema descriptions).

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

Purpose5/5

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

The description explicitly states 'Setup and enable onboarding for a server from scratch,' making the verb and resource clear. It distinguishes from siblings like discord_edit_onboarding and discord_setup_community.

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

Usage Guidelines4/5

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

The description lists clear requirements (Community features enabled, at least one default channel/prompt/option) and implies it's for initial setup. It could explicitly mention when to use discord_edit_onboarding instead, but the requirements are helpful.

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

discord_sync_channel_permissionsSync Channel Permissions with CategoryA
Idempotent

Sync a channel's permissions with its parent category.

Args:

  • channel_id (string): Discord channel ID

Returns: Confirmation of sync

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesDiscord channel ID (snowflake)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide idempotentHint=true and destructiveHint=false. Description adds that it syncs permissions, implying overwrite but not destructive. No contradiction, and adds context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus an Args/Returns block. Extremely concise, no fluff, all sentences earn their place.

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

Completeness4/5

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

Given only one parameter, no output schema, and annotations covering safety, the description is adequate. It explains what the tool does and what to provide. Could mention prerequisite that channel must be in a category, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with description for channel_id. Description repeats the parameter name and type but adds no new meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'sync' and the resource 'channel's permissions with parent category', distinguishing it from siblings like discord_set_channel_permissions which sets individual permissions.

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

Usage Guidelines4/5

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

The description implies use for syncing to parent category, but does not explicitly mention when not to use or name alternatives like discord_set_channel_permissions for granular control. Context is clear but lacks exclusions.

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

discord_timeout_memberTimeout MemberA
Idempotent

Timeout (mute) a member for a specified duration. They cannot send messages, react, or join voice.

Args:

  • guild_id (string): Discord server/guild ID

  • user_id (string): Discord user ID to timeout

  • duration_minutes (number): Timeout duration in minutes (0 to remove, max 40320 = 28 days)

  • reason (string, optional): Reason for timeout (visible in audit log)

Returns: Confirmation of timeout

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoReason for timeout
user_idYesDiscord user ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)
duration_minutesYesTimeout duration in minutes (max 28 days = 40320)

TDQS

A4.3/5.0
Behavior4/5

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

Beyond annotations (idempotent, non-destructive), description explains the behavioral effect (muting communication channels) and mentions duration limits and reason visible in audit log. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Efficiently structured: single line for action/effect, then bulleted parameter list with clear args/returns. No wasted words; front-loaded with core purpose.

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

Completeness5/5

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

Given 4 parameters, no output schema, and annotations, the description fully covers tool behavior: action, parameter constraints (including 0 to remove), and return confirmation. Sufficient for agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds context: explains each parameter's role, notes that duration_minutes=0 removes timeout, and mentions reason is visible in audit log. Adds value beyond schema.

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

Purpose5/5

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

Clearly states "Timeout (mute) a member for a specified duration" with specific verb and resource. Distinguishes from sibling tools like ban, kick, move by naming the action and its effect (cannot send messages, react, join voice).

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

Usage Guidelines3/5

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

Implies usage through action description (timeout vs ban/kick) but lacks explicit guidance on when to use this tool vs alternatives. No when-not or prerequisites stated.

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

discord_unban_memberUnban Discord MemberA
Idempotent

Remove a ban from a user.

Args:

  • guild_id (string): Discord server/guild ID

  • user_id (string): Discord user ID to unban

Returns: Confirmation of unban

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesDiscord user ID (snowflake)
guild_idYesDiscord server/guild ID (snowflake)

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate non-readOnly, idempotent, non-destructive. The description adds that it returns a confirmation, which is useful, but does not elaborate on auth needs, side effects, or additional behavioral traits beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise: one sentence for purpose, then lists parameters and return value. No fluff, front-loaded.

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

Completeness5/5

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

For a simple 2-parameter tool with comprehensive annotations and schema, the description provides all necessary information: action, inputs, and output. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The tool description restates them without adding new meaning, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states 'Remove a ban from a user' with a specific verb and resource, distinguishing it from sibling tools like discord_ban_member.

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

Usage Guidelines3/5

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

No guidance on when to use this tool vs alternatives, prerequisites (e.g., user must be banned, required permissions), or when not to use. The name and description imply straightforward usage but lack explicit context.

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

discord_unpin_messageUnpin Discord MessageA
Idempotent

Unpin a message in a channel.

Args:

  • channel_id (string): Discord channel ID

  • message_id (string): Message ID to unpin

Returns: Confirmation of message unpinned

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesDiscord channel ID (snowflake)
message_idYesDiscord message ID (snowflake)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds a return value but does not disclose additional behavioral traits (e.g., permission requirements, error states, or side effects).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the main action. However, the Args section is redundant with the schema, which is unnecessary for such a simple tool. Overall, it is efficient but could be trimmed.

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

Completeness3/5

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

While the tool is simple with 2 required parameters and annotations cover safety, the description omits important context such as prerequisites (e.g., 'Manage Messages' permission), what happens if the message is not pinned, and error handling. It is minimally complete but leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already fully describes both parameters with patterns and constraints. The description's Args section merely repeats the parameter names and types without adding new meaning, meeting the baseline.

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

Purpose5/5

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

The description clearly states the verb 'Unpin' and the resource 'a message in a channel', distinguishing it from sibling tools like discord_pin_message (opposite) and discord_delete_message (different action).

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

Usage Guidelines3/5

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

The description implies usage for unpinning messages but does not explicitly state when to use it or when not to, nor does it mention alternatives like pin_message or delete_message. There is no guidance on prerequisites or context.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 67 tool updatesv1.1.4
    • First observeddiscord_add_reaction
    • First observeddiscord_add_role
    • First observeddiscord_ban_member
    • First observeddiscord_create_automod_rule
    • First observeddiscord_create_channel
    • First observeddiscord_create_emoji
    • First observeddiscord_create_event
    • First observeddiscord_create_invite
    • First observeddiscord_create_role
    • First observeddiscord_create_webhook
    • First observeddiscord_delete_automod_rule
    • First observeddiscord_delete_channel
    • First observeddiscord_delete_emoji
    • First observeddiscord_delete_event
    • First observeddiscord_delete_invite
    • First observeddiscord_delete_message
    • First observeddiscord_delete_role
    • First observeddiscord_delete_sticker
    • First observeddiscord_delete_webhook
    • First observeddiscord_edit_automod_rule
    • First observeddiscord_edit_channel
    • First observeddiscord_edit_guild
    • First observeddiscord_edit_message
    • First observeddiscord_edit_onboarding
    • First observeddiscord_edit_role
    • First observeddiscord_edit_webhook
    • First observeddiscord_edit_welcome_screen
    • First observeddiscord_get_audit_log
    • First observeddiscord_get_automod_rule
    • First observeddiscord_get_channel
    • First observeddiscord_get_channel_permissions
    • First observeddiscord_get_community_settings
    • First observeddiscord_get_guild
    • First observeddiscord_get_member
    • First observeddiscord_get_messages
    • First observeddiscord_get_onboarding
    • First observeddiscord_get_pinned_messages
    • First observeddiscord_get_welcome_screen
    • First observeddiscord_kick_member
    • First observeddiscord_leave_guild
    • First observeddiscord_list_automod_rules
    • First observeddiscord_list_bans
    • First observeddiscord_list_channels
    • First observeddiscord_list_emojis
    • First observeddiscord_list_events
    • First observeddiscord_list_guilds
    • First observeddiscord_list_invites
    • First observeddiscord_list_members
    • First observeddiscord_list_roles
    • First observeddiscord_list_stickers
    • First observeddiscord_list_webhooks
    • First observeddiscord_move_member
    • First observeddiscord_pin_message
    • First observeddiscord_prune_members
    • First observeddiscord_remove_channel_permissions
    • First observeddiscord_remove_reaction
    • First observeddiscord_remove_role
    • First observeddiscord_send_message
    • First observeddiscord_set_channel_permissions
    • First observeddiscord_set_nickname
    • First observeddiscord_set_role_positions
    • First observeddiscord_setup_community
    • First observeddiscord_setup_onboarding
    • First observeddiscord_sync_channel_permissions
    • First observeddiscord_timeout_member
    • First observeddiscord_unban_member
    • First observeddiscord_unpin_message

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct action and resource pair. For example, 'discord_add_role' and 'discord_remove_role' are clearly opposite, and all creation, editing, and deletion tools are clearly separated. There is no overlap or ambiguity between tools.

Naming Consistency5/5

All tools follow a consistent 'discord_verb_noun' pattern using snake_case. The verb is always a clear action (create, edit, delete, list, get, etc.) and the noun is the Discord resource (channel, role, member, etc.). The pattern is uniform throughout.

Tool Count4/5

With 67 tools, the set is large but covers the extensive Discord API. It provides comprehensive management capabilities for servers, channels, roles, members, emojis, stickers, webhooks, automod, onboarding, and more. While slightly on the higher side, each tool serves a distinct purpose within this broad scope.

Completeness4/5

The tool set covers most CRUD operations for the major Discord resources. Notable gaps include missing 'discord_edit_emoji', 'discord_edit_event', and 'discord_create_sticker'. However, the overall coverage is extensive, and these gaps are minor given the breadth of functionality provided.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    C
    quality
    C
    maintenance
    An MCP server that exposes Discord bot actions as tools for LLM clients.
    29
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI assistants to manage Discord servers, including roles, channels, members, messages, and moderation, via natural language commands.
    1
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    A local MCP server that lets AI clients control a Discord bot via Discord's REST API, offering messaging, administration, and moderation tools. Includes safety features such as guild scoping, allowlists, and opt-in write permissions.
    20
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Oratorian/discord-node-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server