Skip to main content
Glama
Yv3s-y4ng

MCP-Discord Stream

by Yv3s-y4ng

MCP-Discord Stream

npm version

A Discord MCP (Model Context Protocol) server with unlimited message streaming, forum archiving, and time-range filtering capabilities.

Fork Notice: This is an enhanced fork of barryyip0625/mcp-discord with added streaming capabilities for reading unlimited Discord history.

Overview

MCP-Discord Stream provides comprehensive Discord integration with powerful streaming features:

🆕 Streaming Features (New!)

  • Unlimited Message History - Read ALL messages from channels/forums (not limited to 100 messages)

  • Time Range Filtering - Fetch messages from specific date ranges (default: last 10 days)

  • Forum Archiving - Archive entire forums with all threads and messages

  • Batch Operations - Stream from multiple channels/forums simultaneously

  • Progress Tracking - Real-time progress updates during long operations

  • Rate Limit Handling - Gracefully handles Discord rate limits with partial data returns

Standard Features

  • Login to Discord bot

  • List servers the bot is a member of

  • Get server information

  • Search messages in a server

  • Read/delete channel messages

  • Send messages to specified channels

  • Retrieve forum channel lists

  • Create/delete/reply to forum posts

  • Create/delete text channels

  • Add/remove message reactions

  • Create/edit/delete/use webhooks

Related MCP server: Discord MCP Server

Table of Contents

Prerequisites

Important: According to Discord's security model, a bot can only access information from servers it has been explicitly added to. With "Read Message History" permission, the bot CAN read messages sent before it was added to the server!

Installation

Installing via NPM

npm install -g @yangyifei/mcp-discord-stream

Or use directly via npx:

npx @yangyifei/mcp-discord-stream --config ${DISCORD_TOKEN}

Manual Installation

# Clone the repository
git clone https://github.com/Yv3s-y4ng/mcp-discord-stream.git
cd mcp-discord-stream

# Install dependencies
npm install

# Compile TypeScript
npm run build

Configuration

A Discord bot token is required for proper operation. The server supports two transport methods: stdio and streamable HTTP.

Transport Methods

  1. stdio (Default)

    • Traditional stdio transport for basic usage

    • Suitable for simple integrations

  2. streamable HTTP

    • HTTP-based transport for more advanced scenarios

    • Supports stateless operation

    • Configurable port number

Configuration Options

You can provide configuration in two ways:

  1. Environment variables:

DISCORD_TOKEN=your_discord_bot_token
  1. Using command line arguments:

# For stdio transport (default)
node build/index.js --config "your_discord_bot_token"

# For streamable HTTP transport
node build/index.js --transport http --port 3000 --config "your_discord_bot_token"

Usage with Claude/Cursor

Claude Desktop

  1. Using stdio transport:

{
    "mcpServers": {
        "discord": {
            "command": "npx",
            "args": [
                "@yangyifei/mcp-discord-stream",
                "--config",
                "your_discord_bot_token"
            ]
        }
    }
}
  1. Using streamable HTTP transport:

{
    "mcpServers": {
        "discord": {
            "command": "npx",
            "args": [
                "@yangyifei/mcp-discord-stream",
                "--transport",
                "http",
                "--port",
                "3000",
                "--config",
                "your_discord_bot_token"
            ]
        }
    }
}

Cursor

  1. Using stdio transport:

{
    "mcpServers": {
        "discord": {
            "command": "cmd",
            "args": [
                "/c",
                "npx",
                "@yangyifei/mcp-discord-stream",
                "--config",
                "your_discord_bot_token"
            ]
        }
    }
}

Usage Examples

Example 1: Stream ALL Messages from a Channel

// Fetch last 30 days of messages (unlimited)
discord_read_messages_stream({
  channelId: "123456789",
  afterDate: "2024-01-01T00:00:00Z"  // Optional: start from this date
})

Example 2: Archive Entire Forum

// Archive all forum threads with messages from last 60 days
discord_archive_forum_stream({
  forumChannelId: "987654321",
  afterDate: "2024-01-01T00:00:00Z",
  includeArchived: true
})

Example 3: Batch Archive Multiple Forums

// Archive 3 forums at once
discord_archive_multiple_forums({
  forumChannelIds: ["111", "222", "333"],
  afterDate: "2024-01-01T00:00:00Z"
})

Tools Documentation

🆕 Streaming Tools (New!)

discord_read_messages_stream

Streams messages from a Discord channel with unlimited history and time-range filtering.

Parameters:

  • channelId (string, required) - The ID of the channel to read from

  • afterDate (string, optional) - ISO 8601 date string (e.g., "2024-01-01T00:00:00Z") - only fetch messages after this date

  • beforeDate (string, optional) - ISO 8601 date string - only fetch messages before this date

Default: If no date range is provided, fetches messages from the last 10 days.

Returns:

  • Stream events including batch, progress, rate_limited, and complete events

  • Each batch contains up to 100 messages with full message data (content, author, timestamp, attachments, etc.)

discord_read_multiple_channels

Streams messages from multiple channels sequentially.

Parameters:

  • channelIds (string[], required) - Array of channel IDs to read from

  • afterDate (string, optional) - ISO 8601 date string

  • beforeDate (string, optional) - ISO 8601 date string

Returns: Aggregated results from all channels with success/error status for each.

discord_get_channel_list

Lists all channels in a Discord server with optional type filtering.

Parameters:

  • guildId (string, required) - The ID of the Discord server

  • channelTypes (number[], optional) - Array of Discord ChannelType numbers to filter by

Returns: List of channels with id, name, type, and parentId.

discord_get_forum_post_stream

Streams all messages from a single forum post/thread with unlimited history.

Parameters:

  • threadId (string, required) - The ID of the forum thread

  • afterDate (string, optional) - ISO 8601 date string

  • beforeDate (string, optional) - ISO 8601 date string

Returns: Stream events with all messages from the thread.

discord_archive_forum_stream

Archives an entire forum channel by streaming all threads and their messages.

Parameters:

  • forumChannelId (string, required) - The ID of the forum channel

  • afterDate (string, optional) - ISO 8601 date string

  • beforeDate (string, optional) - ISO 8601 date string

  • includeArchived (boolean, optional, default: true) - Whether to include archived threads

Returns:

  • threads_found event with total thread count

  • thread_progress events for each thread being processed

  • Message batches from all threads

  • complete or partial_complete event with summary

discord_archive_multiple_forums

Archives multiple forum channels at once.

Parameters:

  • forumChannelIds (string[], required) - Array of forum channel IDs

  • afterDate (string, optional) - ISO 8601 date string

  • beforeDate (string, optional) - ISO 8601 date string

  • includeArchived (boolean, optional, default: true) - Include archived threads

Returns: Aggregated results from all forums.


Basic Functions

  • discord_login: Login to Discord using the configured token

  • discord_list_servers: List all Discord servers the bot is a member of

  • discord_send: Send a message to a specified channel (supports both channel ID and channel name)

  • discord_get_server_info: Get Discord server information

Channel Management

  • discord_create_text_channel: Create a text channel

  • discord_delete_channel: Delete a channel

  • discord_create_category: Create a channel category

  • discord_edit_category: Edit a category

  • discord_delete_category: Delete a category

Forum Functions

  • discord_get_forum_channels: Get a list of forum channels

  • discord_create_forum_post: Create a forum post

  • discord_get_forum_post: Get a forum post (limited to 10 messages - use discord_get_forum_post_stream for more)

  • discord_list_forum_threads: List all threads in a forum

  • discord_reply_to_forum: Reply to a forum post

  • discord_delete_forum_post: Delete a forum post

Messages and Reactions

  • discord_search_messages: Search messages in a server

  • discord_read_messages: Read channel messages (limited to 100 - use discord_read_messages_stream for more)

  • discord_add_reaction: Add a reaction to a message

  • discord_add_multiple_reactions: Add multiple reactions to a message

  • discord_remove_reaction: Remove a reaction from a message

  • discord_delete_message: Delete a specific message from a channel

Webhook Management

  • discord_create_webhook: Creates a new webhook for a Discord channel

  • discord_send_webhook_message: Sends a message to a Discord channel using a webhook

  • discord_edit_webhook: Edits an existing webhook for a Discord channel

  • discord_delete_webhook: Deletes an existing webhook for a Discord channel

Streaming Features Explained

Time Range Filtering

All streaming tools support time-range filtering via ISO 8601 date strings:

// Fetch messages from a specific time range
{
  afterDate: "2024-01-01T00:00:00Z",   // Start date (inclusive)
  beforeDate: "2024-12-31T23:59:59Z"   // End date (inclusive)
}

// Fetch messages from last X days (omit both dates to use default 10 days)
{
  afterDate: "2024-01-15T00:00:00Z"   // Last 10+ days
}

// Fetch ALL messages (no time limit - use with caution!)
{
  afterDate: "2015-01-01T00:00:00Z"   // Discord's founding year
}

Stream Event Types

Streaming tools return different event types to provide real-time feedback:

  1. progress - Periodic progress updates during fetching

  2. batch - Contains message data (up to 100 messages per batch)

  3. threads_found - (Forums only) Total number of threads discovered

  4. thread_progress - (Forums only) Current thread being processed

  5. rate_limited - Discord rate limit hit, includes retry wait time

  6. complete - All data fetched successfully

  7. partial_complete - Partial data returned (e.g., due to rate limits or errors)

Rate Limit Handling

When Discord rate limits are hit:

  • The tool returns a rate_limited event with wait time

  • Already-fetched data is returned as partial_complete

  • You can retry the request after the wait period

Performance Tips

  1. Use specific date ranges - Narrow time ranges = faster responses

  2. Process channels sequentially - Use discord_read_multiple_channels instead of parallel requests

  3. Monitor rate limits - Discord has per-channel and global rate limits

  4. Archive during off-peak hours - Large archives work best when server activity is low

Development

# Install dependencies
npm install

# Development mode with auto-reload
npm run dev

# Run tests
npm test

# Build for production
npm run build

# Run built version
npm start

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add some amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

License

MIT License

Acknowledgments

This project is a fork of barryyip0625/mcp-discord with significant enhancements for unlimited message streaming and archiving capabilities.

Special thanks to:

  • Barry Yip (@barryyip0625) for the original MCP-Discord implementation

  • The Anthropic team for the Model Context Protocol

  • Discord.js community for the excellent Discord API library

Available Tools

31 tools
discord_add_multiple_reactionsB

Adds multiple emoji reactions to a Discord message at once

ParametersJSON Schema
NameRequiredDescriptionDefault
emojisYes
channelIdYes
messageIdYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Adds multiple emoji reactions' without mentioning permissions, error handling, rate limits, or whether reactions are applied atomically. For a mutating operation, this is insufficient.

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

Conciseness5/5

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

The description is a single, focused sentence with no superfluous content. It front-loads the action and resource clearly, making it efficient and easy to parse.

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

Completeness2/5

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

With no output schema, no annotations, and no parameter explanations, the description is too minimal for an agent to fully understand the tool's behavior. It lacks details on invocation constraints, expected inputs, and potential failure modes, making it incomplete for a mutation tool.

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

Parameters2/5

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

The input schema has 0% coverage in the description, and the description does not explain the parameters channelId, messageId, or emojis. While the names are somewhat self-explanatory, the description fails to clarify the format of emojis (e.g., unicode, custom ID) or the relationship between channelId and messageId.

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's function: adding multiple emoji reactions to a Discord message at once. The verb 'Adds' and the resource 'Discord message' are specific, and 'multiple' and 'at once' distinguish it from the sibling discord_add_reaction.

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 is for adding multiple reactions simultaneously, which is useful, but it does not explicitly compare with alternatives like discord_add_reaction or state when to prefer this tool. No exclusions or specific contexts are given, so usage guidance is only implied.

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

discord_add_reactionC

Adds an emoji reaction to a specific Discord message

ParametersJSON Schema
NameRequiredDescriptionDefault
emojiYes
channelIdYes
messageIdYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the action without disclosing behavioral details such as whether repeated reactions are idempotent, rate limits, or required permissions. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single clear sentence with no unnecessary words. It is perfectly concise and front-loads the core purpose.

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

Completeness2/5

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

Given the simplicity of the tool, the description covers the basic action but lacks any context about alternatives, prerequisites, or edge cases. The presence of sibling tools like remove_reaction and add_multiple_reactions makes the lack of usage guidance more impactful. Overall, it is minimally viable but incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the parameters beyond the action. It references 'emoji' but does not clarify the format (e.g., Unicode or custom emoji ID) or the roles of channelId and messageId, leaving the agent to infer from names.

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

Purpose4/5

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

The description clearly states the action ('Adds') and the specific resource ('emoji reaction to a specific Discord message'). It distinguishes from the sibling 'discord_add_multiple_reactions' by using singular 'an emoji reaction', though it does not explicitly name the alternative.

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_add_multiple_reactions or discord_remove_reaction. It also does not mention prerequisites like requiring a prior login via discord_login.

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

discord_archive_forum_streamB

Archives an entire forum channel by streaming all threads and their messages. Includes active and archived threads with time range filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterDateNoISO 8601 date string - only fetch messages after this date
beforeDateNoISO 8601 date string - only fetch messages before this date
forumChannelIdYesThe ID of the forum channel to archive
includeArchivedNoWhether to include archived threads (default: true)

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It notes that the tool 'streams' threads and includes active/archived threads with time filtering, but does not clarify whether 'archives' means a read-only export or a state-changing action (e.g., marking threads archived), nor does it mention permissions, rate limits, or side effects. This ambiguity is a significant gap.

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

Conciseness5/5

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

The description is a single, information-dense sentence that front-loads the primary action ('Archives') and efficiently includes key scope and filtering capabilities without unnecessary words.

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?

The tool has no output schema and no annotations, so the description should explain what the archive operation returns (e.g., a file, a confirmation, a link) and any prerequisites (e.g., required permissions). It does neither, leaving the agent uncertain about expected outputs and preconditions.

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 100% of the parameters, so the baseline is 3. The description adds a bit of context by mentioning 'time range filtering' and 'active and archived threads', which maps to afterDate/beforeDate and includeArchived, but it does not add substantive syntax or format details 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 uses a specific verb ('Archives') and identifies the exact resource ('entire forum channel') and mechanism ('streaming all threads and their messages'). It also clarifies scope (active/archived threads, time range filtering), which differentiates it from siblings like discord_archive_multiple_forums.

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 a clear use case—archiving a single entire forum channel with optional time filtering—but does not explicitly state when to use it versus alternatives such as discord_archive_multiple_forums or discord_get_forum_post_stream. There are no exclusions or when-not-to-use notes, giving only implied guidance.

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

discord_archive_multiple_forumsA

Archives multiple forum channels at once. Processes each forum sequentially, collecting all threads and messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterDateNoISO 8601 date string - only fetch messages after this date
beforeDateNoISO 8601 date string - only fetch messages before this date
forumChannelIdsYesArray of forum channel IDs to archive
includeArchivedNoWhether to include archived threads (default: true)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full transparency burden. It discloses a key behavioral trait (sequential processing) and the scope of collection (all threads and messages), which adds value. However, it does not clarify whether archiving is read-only or has side effects, nor what happens after collection, so it only partially satisfies the requirement.

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

Conciseness5/5

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

The description is two sentences, efficiently front-loaded with the core purpose and then a clarifying detail. Every word earns its place, with no redundancy or filler.

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?

The tool has no output schema and no annotations, so the description must explain what the operation returns or produces. It states that threads and messages are collected but does not describe the output format, return value, or post-processing behavior. Given the batch complexity and missing expectations, the description is insufficiently complete for an agent to fully understand what happens after the call.

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 provides 100% description coverage for all four parameters (forumChannelIds, afterDate, beforeDate, includeArchived), so a baseline of 3 is appropriate. The tool description adds no additional parameter-specific meaning beyond what the schema already exposes.

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's action ('Archives multiple forum channels at once') and distinctively names the resource and scope (multiple forums, all threads and messages). It differentiates from siblings like discord_archive_forum_stream by emphasizing the batch aspect.

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 when to use the tool (when archiving multiple forums) and clarifies the sequential processing, which is useful context. However, it does not explicitly mention alternative tools for single-forum archiving or provide exclusions, so it stops short of full guideline transparency.

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

discord_create_categoryC

Creates a new category in a Discord server.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
reasonNo
guildIdYes
positionNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action 'creates' without mentioning permissions, reversibility, potential side effects, or return behavior. This is insufficient for a mutating operation.

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

Conciseness5/5

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

The description is a single sentence with no redundant or filler words. It is extremely concise and easy to parse, making it efficient for an agent to read.

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?

The description is too minimal for a tool with four parameters and no output schema or annotations. It omits important context such as parameter meanings, expected behavior, and any constraints, making the tool difficult to use correctly without external knowledge.

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

Parameters1/5

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

The schema has zero descriptions for its four parameters, and the tool description explains none of them. It does not compensate for the 0% schema coverage, leaving the semantics of 'reason' and 'position' ambiguous and failing to aid correct invocation.

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 'Creates a new category in a Discord server' clearly specifies the action (creates) and the target resource (category in Discord server). This distinguishes it from sibling tools like edit/delete category and create text channel.

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 versus alternatives, nor any mention of prerequisites, exclusions, or related tools. The description simply states what the tool does, which implies usage but does not explicitly direct the agent.

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

discord_create_forum_postB

Creates a new post in a Discord forum channel with optional tags

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
titleYes
contentYes
forumChannelIdYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but does not mention required permissions, authentication, potential side effects (e.g., making the post visible to members), or failure scenarios. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single, concise sentence that conveys the core purpose without superfluous words. It is well-structured and front-loaded with the key 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?

The tool has 4 parameters, no output schema, and no annotations, yet the description is only a short clause. It omits important contextual details such as return behavior, error conditions, and prerequisites, making it insufficient for a complete agent understanding.

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

Parameters2/5

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

The input schema has 4 parameters with 0% description coverage, and the description only adds 'optional tags', which confirms tags is optional but leaves forumChannelId, title, and content semantically unexplained. The description adds minimal 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 action ('Creates'), the resource ('a new post in a Discord forum channel'), and the optional capability ('optional tags'). It distinguishes from sibling tools like discord_get_forum_post and discord_delete_forum_post 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?

The description implies usage through the verb 'creates' but provides no explicit guidance on when to choose this over alternatives like discord_reply_to_forum, nor any exclusions or prerequisites. The intended context is inferable but not spelled out.

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

discord_create_text_channelB

Creates a new text channel in a Discord server with an optional topic

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNo
guildIdYes
channelNameYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavior. It states the action but omits permissions required, potential failures (e.g., duplicate channel names), rate limits, or what the response contains. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single, direct sentence with no waste. It is front-loaded with the primary action and resource, making it easy to scan.

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?

For a creation tool with no annotations and no output schema, the description is insufficient. It does not explain what the tool returns, any required permissions, or error conditions. While the tool is simple, the absence of these details leaves the agent without critical operational context.

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

Parameters2/5

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

The input schema has 0% description coverage, and the description adds little beyond the schema. It mentions 'optional topic', but that is already evident from the 'required' array in the schema. No additional meaning is provided for guildId or channelName.

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 creates a new text channel in a Discord server, using a specific verb ('creates') and resource ('text channel'). It distinguishes itself from sibling tools like discord_create_category by specifying the channel type.

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 about when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. The description only states what the tool does, not when to choose it.

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

discord_create_webhookC

Creates a new webhook for a Discord channel

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
avatarNo
reasonNo
channelIdYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It implies a mutating create operation but does not mention permissions, return values (e.g., webhook URL/ID), or whether the webhook is immediately usable.

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

Conciseness4/5

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

The description is a single sentence with no filler and is front-loaded with the verb and object. However, it is slightly under-specified for the number of parameters, so it does not earn a perfect score.

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?

For a 4-parameter creation tool with no annotations and no output schema, this one-sentence description is inadequate. Missing return value details, parameter semantics, and usage context.

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

Parameters2/5

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

Schema coverage is 0%, and the description only adds that the target is a Discord channel, providing minimal clarification for channelId. The 'name', 'avatar', and 'reason' parameters remain semantically unexplained.

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 identifies the action ('Creates') and the resource ('a new webhook for a Discord channel'), making it easy to distinguish from sibling tools that edit, delete, or send webhook messages.

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_edit_webhook or discord_send_webhook_message. It omits prerequisites like authentication or channel permissions.

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

discord_delete_categoryB

Deletes a Discord category by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
categoryIdYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the action and identifies the parameter, but it does not mention the irreversible nature of deletion, potential cascading effects on child channels, required permissions, or success/failure behavior. This is a significant gap for a destructive operation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately conveys the core action and target. Every word is essential, and there is no redundancy or filler.

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?

For a destructive tool with no output schema and minimal annotations, this description is inadequate. It does not explain the consequences of deleting a category, the purpose of the 'reason' field, or any error conditions. Users are left without crucial context for a high-impact operation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must clarify parameters. It only implies the role of 'categoryId' by saying 'by ID' but completely ignores the optional 'reason' parameter, leaving its purpose and format ambiguous.

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

Purpose5/5

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

The description clearly states the action ('Deletes') and the specific resource ('Discord category') with an explicit identifier ('by ID'). It successfully distinguishes itself from sibling tools like discord_delete_channel, which target a different Discord entity.

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 is given on when to use this tool versus alternatives such as discord_delete_channel. The description only implies that it is for deleting categories but does not mention exclusions, prerequisites, or scenarios where a different tool would be appropriate.

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

discord_delete_channelB

Deletes a Discord channel with an optional reason

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
channelIdYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but omits consequences such as irreversibility, permission requirements, impact on messages or child objects, and rate limits. For a destructive operation, this is a significant transparency gap.

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

Conciseness5/5

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

The description is a single concise sentence that directly states the action and the optional parameter. It is efficient and easily parsed, with no wasted words.

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 (two parameters, no output schema), the description is minimally adequate but not complete. It lacks any discussion of side effects, permissions, or error scenarios, which are important for a destructive operation. It does not explain the return value or success indicators, but no output schema exists to compensate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions 'an optional reason' and implies channelId, but does not explain what each parameter is for (e.g., reason for audit logs) or expected formats. This adds minimal meaning beyond the parameter names.

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

Purpose5/5

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

The description clearly states the action ('Deletes') and the resource ('a Discord channel'), which precisely distinguishes it from sibling tools like discord_delete_message and discord_delete_webhook. It also mentions the optional reason, adding a small scope detail.

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. It does not mention prerequisites, exclusions, or scenarios where other delete tools should be preferred. The bare description leaves the agent to infer usage solely from the tool name.

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

discord_delete_forum_postC

Deletes a forum post or thread with an optional reason

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
threadIdYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It merely states the action and the optional reason, without mentioning permissions, irreversibility, side effects on replies, or error behavior. This adds little beyond the tool name.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that directly states the action and the optional parameter. Every word is essential, with no redundant information or unnecessary elaboration.

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

Completeness2/5

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

Given the destructive nature of deletion, the lack of annotations, and the absence of an output schema, the description should at least note irreversibility, required permissions, or what happens to related content. The current description is too sparse to fully inform an agent.

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

Parameters2/5

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

The schema has 0% description coverage, so the description must compensate. It mentions the 'optional reason' but does not explain its purpose or usage. The threadId parameter is not described beyond being required, which is already evident from the schema. Minimal added meaning.

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 uses the specific verb 'Deletes' and identifies the resource as 'forum post or thread', clearly distinguishing it from sibling deletion tools like discord_delete_category, discord_delete_channel, and discord_delete_message. However, it does not explicitly differentiate from alternatives, so it falls short of a perfect score.

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

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_delete_message or discord_delete_channel. The description lacks any context about preferred scenarios, 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_delete_messageB

Deletes a specific message from a Discord text channel

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
channelIdYes
messageIdYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for disclosing behavior. It only states the action ('Deletes') without mentioning irreversibility, permissions, error handling, or side effects. The agent is not informed that deletion is permanent or what happens if the message does not exist.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. It is front-loaded with the verb and provides the essential information in a concise, well-structured format.

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?

The tool is simple, but the description lacks necessary context for an agent to make a fully informed choice. It does not address alternative delete tools, behavioral implications, or parameter usage, leaving gaps that a richer description should fill.

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

Parameters2/5

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

The input schema has 0% description coverage, so the description must compensate. It implies the need for channelId and messageId via 'text channel' and 'specific message', but does not explicitly name them or explain the optional 'reason' parameter. This adds minimal 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 states a specific verb ('Deletes') and resource ('a specific message from a Discord text channel'), clearly distinguishing it from sibling delete tools for categories, channels, and forum posts. The purpose is unambiguous.

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 about when to use this tool versus alternatives, such as deleting an entire channel or a forum post. There is no mention of prerequisites, permissions, or exclusion conditions, leaving the agent to infer usage from context.

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

discord_delete_webhookC

Deletes an existing webhook for a Discord channel

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
webhookIdYes
webhookTokenNo

TDQS

C2.9/5.0
Behavior2/5

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

The description does not disclose any behavioral traits such as irreversibility, required permissions, or side effects. With no annotations provided, the description carries the full burden but fails to warn that deletion is permanent or that a webhook token may be required.

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

Conciseness5/5

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

The description is a single concise sentence with no superfluous words. It efficiently states the core action without waste, making it appropriately sized.

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?

The tool is destructive, has three parameters, zero schema descriptions, and no output schema or annotations. The description omits parameter purposes, irreversibility, authentication requirements, and any usage context, making it inadequate for a complete understanding.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no information about the parameters. It does not explain the purpose or format of webhookToken or reason, nor does it clarify which identifier is required. The description does not compensate for the missing 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 the tool's specific action: 'Deletes an existing webhook for a Discord channel.' It uses the verb 'deletes' with a specific resource, distinguishing it from siblings like discord_create_webhook and discord_edit_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?

The description provides no guidance on when to use this tool versus alternatives like discord_edit_webhook or discord_send_webhook_message. It only states the action without any context or exclusions, leaving the agent without direction.

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

discord_edit_categoryB

Edits an existing Discord category (name and position).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
reasonNo
positionNo
categoryIdYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only says 'edits' without detailing required permissions, side effects, error behavior, or what happens if the category does not exist. This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single sentence with no filler. Every word adds value, front-loading the action and resource immediately.

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?

The tool has 4 parameters, no annotations, and no output schema, yet the description is minimal. It lacks details about optionality, update semantics, return values, and failure modes, making it incomplete for reliable invocation.

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

Parameters2/5

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

The description only mentions 'name and position', leaving 'categoryId' and 'reason' unexplained. Given the schema has 0% coverage, the description fails to clarify the purpose of 'reason' or the semantics of 'position'. It partially compensates but not adequately.

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 'Edits' with a clear resource 'Discord category' and specifies the editable fields 'name and position'. This clearly distinguishes it from sibling tools like create_category and delete_category.

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 is for modifying existing categories but does not explicitly state when to use it versus create/delete or mention any prerequisites. It provides minimal guidance but is not misleading.

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

discord_edit_webhookC

Edits an existing webhook for a Discord channel

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
avatarNo
reasonNo
channelIdNo
webhookIdYes
webhookTokenNo

TDQS

C2.5/5.0
Behavior1/5

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

No annotations are provided, so the description must disclose behavioral traits but does not. It merely states 'Edits an existing webhook' with no mention of side effects, required permissions, reversibility, or what happens to the webhook configuration. This is a significant transparency gap for a mutation tool.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is concise and grammatically clear, but the lack of any additional structure (e.g., parameter hints) makes it less helpful than its brevity might suggest.

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

Completeness1/5

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

For a tool with six parameters, no annotations, and no output schema, the description provides almost no context. It does not explain return values, error conditions, or parameter relationships, making it inadequate for an agent to invoke the tool correctly in diverse contexts.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention any of the six parameters (name, avatar, reason, channelId, webhookToken). The agent receives no semantic context for the parameters beyond their names, which is insufficient for correct invocation.

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 the specific verb 'Edits' and clearly identifies the resource as 'an existing webhook for a Discord channel.' This distinguishes it from sibling tools like discord_create_webhook and discord_delete_webhook, making the purpose unambiguous.

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_create_webhook or discord_send_webhook_message. It does not mention prerequisites, typical use cases, or exclude scenarios, leaving the agent without decision support.

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

discord_get_channel_listA

Lists all channels in a Discord server with optional filtering by channel type (text, voice, forum, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdYesThe ID of the Discord server (guild)
channelTypesNoOptional array of Discord ChannelType numbers to filter by (0=text, 2=voice, 4=category, 15=forum, etc.)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description is the only source of behavioral information. It states the core operation (lists channels) and the optional filter, but does not disclose prerequisites (like 'View Channels' permission) or response format (e.g., channel IDs/names). For a simple read-only list, this is adequate but not rich.

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

Conciseness5/5

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

The description is a single sentence of 16 words, front-loaded with the core action and resource. Every word earns its place, with no fluff or repetition of schema 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 tool is simple (2 params, full schema coverage, no output schema). The description sufficiently conveys the purpose and optional filtering. However, without an output schema, it does not describe the shape of the returned list (e.g., channel objects with IDs/names), which prevents a 5. It does stand out among sibling tools as the general channel list.

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%: both guildId and channelTypes are fully described. The description's mention of 'text, voice, forum, etc.' is redundant with the schema's type mapping. The baseline 3 applies because the schema already carries the parameter semantics; the description adds no meaningful extra detail.

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 ('Lists all channels') and the resource ('a Discord server'). It distinguishes from sibling tools like discord_get_forum_channels (which lists only forum channels) and discord_get_server_info (server metadata) by specifying the general channel list with optional type filtering.

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

Usage Guidelines4/5

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

The description provides clear context for use: list all channels, optionally filtered by type. It does not explicitly name alternatives (e.g., 'for forum channels, use discord_get_forum_channels') or exclusions, so it stops short of a 5. The phrase 'optional filtering by channel type' signals that this is a general-purpose list tool.

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

discord_get_forum_channelsA

Lists all forum channels in a specified Discord server (guild)

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It accurately conveys the read-only nature ('Lists') and the scope, but it does not disclose return format, authentication requirements, or potential errors. The description is adequate but lacks extra behavioral context.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no fluff. It immediately states the action and object, making it efficient and easy to parse.

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

Completeness3/5

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

The tool is simple with one parameter, and the description covers purpose and scope well. However, with no output schema or annotations, it does not describe return values or any prerequisites (e.g., login), leaving a small but notable gap.

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

Parameters4/5

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

The input schema has 0% description coverage, but the description compensates by clarifying that 'guildId' refers to 'a specified Discord server (guild)'. This adds meaning beyond the parameter name and helps agents understand the expected value, though it doesn't specify format or how to obtain the ID.

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 states a specific action ('Lists') on a clear resource ('forum channels') with a defined scope ('in a specified Discord server (guild)'). This clearly distinguishes it from sibling tools like discord_get_forum_post (which retrieves a single post) and discord_list_servers (which lists servers, not 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 provides clear context for when to use the tool: whenever all forum channels in a guild are needed. However, it does not explicitly mention exclusions or alternatives (e.g., use discord_get_forum_post for a specific post), but the context is unambiguous enough for an agent to select appropriately.

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

discord_get_forum_postB

Retrieves details about a forum post including its messages

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the purpose and does not disclose any behavioral traits such as permissions, side effects, error handling, or return format specifics.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to conveying the tool's function.

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 (one param, no output schema), and the description gives a high-level return overview ('details... including its messages'). However, it lacks parameter mapping and any mention of response structure or error conditions, leaving notable gaps.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention the threadId parameter at all. It fails to add any meaning beyond the bare schema field name 'threadId'.

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 uses specific verb 'retrieves' and resource 'forum post', and clarifies it includes messages. This clearly distinguishes it from sibling tools like discord_get_forum_channels (which lists channels) and discord_read_messages (which reads general messages).

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. It doesn't mention scenarios, exclusions, or alternatives, so the agent receives no contextual decision support.

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

discord_get_forum_post_streamA

Streams all messages from a single forum post/thread with time range filtering (default: last 10 days)

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYesThe ID of the forum thread/post
afterDateNoISO 8601 date string - only fetch messages after this date
beforeDateNoISO 8601 date string - only fetch messages before this date

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. It discloses the streaming behavior and the time range default, but does not clarify the return format, pagination, or explicitly state that it's a read-only operation. This limited disclosure is not misleading, but leaves gaps.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that packs the action, resource, and an important default without any redundant phrasing.

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 no output schema and no annotations, the description is reasonably complete but leaves ambiguity around the term 'streams'—whether it returns all messages at once, paginates, or behaves differently. It also does not describe the return structure, which would help an agent know what to expect.

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

Parameters4/5

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

The schema already documents all three parameters (100% coverage), giving a baseline of 3. The description adds value by explaining that time range filtering is a core feature and that the default is the last 10 days, which directly informs how afterDate and beforeDate work when omitted.

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 specifies the action ('Streams all messages') and the resource ('a single forum post/thread'), distinguishing it from siblings like discord_get_forum_post (which fetches the post) and discord_read_messages_stream (which reads messages more generally).

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

Usage Guidelines4/5

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

The description provides clear context through time range filtering and the default of last 10 days, implying when to use this tool. However, it does not explicitly name alternative tools or any 'when not to use' guidance, so it stops short of a 5.

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

discord_get_server_infoB

Retrieves detailed information about a Discord server including channels and member count

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states 'retrieves detailed information' without revealing the response format, error behavior, or permission requirements. The verb 'retrieves' implies read-only, but no further behavioral context is added.

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

Conciseness5/5

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

The description is a single sentence that immediately states the tool's action, with no filler or repetition. Every word contributes to the purpose.

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 mentions two output elements (channels, member count) but calls the result 'detailed information' without further structure. There is no output schema, so the agent cannot anticipate the full return value, and prerequisites such as bot membership are not mentioned. For a simple one-parameter read, this is adequate but has clear gaps.

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

Parameters2/5

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

The schema has zero description for `guildId`, and the tool description does not explain that this ID is the Discord server ID or how to find it. With 0% schema coverage, the description fails to compensate, leaving the sole parameter ambiguous for an agent.

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 the specific verb 'retrieves' and identifies the resource as a 'Discord server', with concrete examples ('channels and member count'). This clearly differentiates it from siblings like discord_list_servers, which lists servers, and discord_get_forum_channels, which targets a specific channel type.

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 about when to use this tool versus alternatives. It does not mention discord_list_servers for discovering server IDs, nor does it note any prerequisites or exclusion criteria, leaving the agent without decision support.

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

discord_list_forum_threadsA

Lists all threads (posts) in a Discord forum channel, including both active and archived threads

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of archived threads to fetch (default: 100, max: 100)
forumChannelIdYesThe ID of the forum channel to list threads from
includeArchivedNoWhether to include archived threads (default: true)

TDQS

A3.7/5.0
Behavior2/5

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

The description claims to list 'all threads' but the schema's `limit` parameter defaults to 100 and maxes at 100 for archived threads, so it may not truly list all if there are more than 100 archived threads. This limitation is not disclosed in the description, making it potentially misleading.

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

Conciseness5/5

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

The description is a single sentence that starts with the verb 'Lists' and succinctly states the tool's purpose. It is appropriately concise with no extraneous information.

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 there is no output schema, the description does not need to detail return values, but it omits the limit behavior on archived threads, which is a key operational detail. The description is otherwise complete for a tool of this simplicity, but the limit omission is a gap.

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

Parameters3/5

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

The schema already provides full descriptions for all three parameters (forumChannelId, limit, includeArchived), so the description adds little beyond reinforcing that both active and archived threads are included. With 100% schema coverage, 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 uses the specific verb 'Lists' and identifies the resource as 'threads (posts) in a Discord forum channel', clearly distinguishing from sibling tools like discord_get_forum_channels or discord_create_forum_post. It also notes inclusion of both active and archived threads, which adds specificity.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool – whenever a client needs to enumerate forum threads. It doesn't explicitly name alternatives, but the function is self-evident from the name and description. No misleading guidance.

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

discord_list_serversA

Lists all Discord servers the bot is a member of

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations to signal side effects, the description itself conveys that this is a read-only listing operation scoped to the bot's memberships. It does not mention return format or potential edge cases, but the behavior 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.

Conciseness5/5

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

The description is a single, direct sentence with no unnecessary words. It fully names the action and scope 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?

For a simple no-parameter listing tool, the description is sufficient for an agent to understand what will happen. It clearly states the scope (servers the bot belongs to) and that it returns all of them, so no further context is needed.

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

Parameters4/5

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

The tool has zero parameters, so the description need not describe any inputs. The 0-params baseline applies, and no further parameter-level clarification is necessary.

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 ('Lists') and the resource ('all Discord servers the bot is a member of'), which is distinct from sibling tools like get_server_info that target a specific server.

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 makes the tool's scope clear but does not explicitly say when to use it versus alternatives. Given there is no direct sibling for listing all servers, the intended use is largely inferable, but explicit guidance is missing.

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

discord_loginB

Logs in to Discord using the configured token

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose behavioral traits such as side effects, session persistence, idempotency, or error behavior. It merely states 'logs in' without explaining what that entails.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. It conveys the essential action and resource efficiently.

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?

The tool is login-related and has no output schema, so the description should explain what success/failure looks like and whether the login persists. It does neither, leaving the agent with ambiguity about the tool's full behavior.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It references 'the configured token' but does not clarify the role of the optional 'token' parameter—whether it overrides a default, is required for login, or has any 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 clearly states the action ('Logs in') and resource ('Discord'), and specifies it uses a token. This distinguishes it from the sibling tools, which perform content creation, editing, or messaging operations.

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, or that it likely must precede other Discord operations. The description does not mention any exclusions or preconditions.

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

discord_read_messagesA

Retrieves messages from a Discord text channel with a configurable limit

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
channelIdYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the core action and a parameter, but doesn't mention ordering, return format, rate limits, or read-only status. For a read operation, it's likely safe, but the description doesn't explicitly confirm.

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

Conciseness5/5

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

The description is a single, concise sentence that gets straight to the point. It's appropriately sized with no filler.

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

Completeness2/5

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

With no output schema or annotations, the description is the only source of context. It explains the core purpose, but lacks detail on return shape, ordering, and any limitations. For a 2-param tool this is insufficient guidance for an agent to confidently invoke the tool and interpret the result.

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

Parameters2/5

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

The input schema already defines limit with constraints and channelId as a string, but neither has descriptions (0% coverage). The description only references a 'configurable limit' without explaining it represents message count or that channelId identifies the target channel. It adds minimal value over 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 uses the specific verb 'Retrieves' with a clear resource 'Discord text channel', and the 'configurable limit' adds scope. It distinguishes from siblings like discord_send and discord_delete_message, and while a search tool exists, this explicitly indicates a simple retrieval without filtering.

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

Usage Guidelines4/5

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

The description implies usage for reading messages from a channel, which is clear context. However, it doesn't explicitly mention alternatives or when to prefer this over discord_search_messages, so it falls short of the top tier.

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

discord_read_messages_streamA

Streams messages from a Discord channel with time range filtering (default: last 10 days). Returns all message events including progress updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterDateNoISO 8601 date string - only fetch messages after this date
channelIdYesThe ID of the channel to read messages from
beforeDateNoISO 8601 date string - only fetch messages before this date

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the tool returns all message events including progress updates and specifies a default time range, adding behavioral context. However, it omits details like authentication requirements, stream termination behavior, or error handling, which would improve transparency for an agent.

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

Conciseness5/5

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

The description is two concise sentences with no redundant wording. The primary action is front-loaded, followed by key details about time range and return data, making it efficient and easy to parse.

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

Completeness4/5

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

Given the tool's streaming nature and lack of output schema, the description provides essential return information ('all message events including progress updates') and a default time frame. It could be more complete by explaining stream lifecycle, pagination, or rate limits, but for a relatively simple tool, it covers the core usage context adequately.

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

Parameters4/5

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

The input schema already provides clear descriptions for all three parameters (100% coverage), so the baseline is 3. The description adds value by explaining the default behavior (last 10 days) and implying the purpose of time range filtering, which goes slightly beyond the schema's basic 'only fetch after/before this date' text.

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 streams messages from a Discord channel, uses a specific verb ('streams') and resource ('Discord channel'), and adds distinctive details like time range filtering and default last 10 days. It differentiates from sibling tools like discord_read_messages by emphasizing streaming and progress updates.

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 through the term 'streams' but does not explicitly compare with alternatives like discord_read_messages or discord_search_messages. No exclusionary or conditional guidance is provided, making the 'when to use' context somewhat inferred rather than explicit.

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

discord_read_multiple_channelsA

Streams messages from multiple Discord channels at once. Processes each channel sequentially with time range filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterDateNoISO 8601 date string - only fetch messages after this date
beforeDateNoISO 8601 date string - only fetch messages before this date
channelIdsYesArray of channel IDs to read messages from

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses useful behavioral details: sequential channel processing and time range filtering. However, it omits output format, error handling, authentication needs, and the streaming nature's implications (e.g., long-running, potential for partial results).

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

Conciseness5/5

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

Two concise sentences with no fluff. The first sentence states the primary function, and the second adds key processing detail, making it well-structured and front-loaded.

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?

There is no output schema and no annotations. The description fails to explain what the stream returns, how errors are handled, or any operational caveats. This is a significant gap for a tool that 'streams' messages, leaving the agent uncertain about expected output.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already well-documented. The description adds a general mention of time range filtering but no additional semantics beyond the schema's parameter 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 it streams messages from multiple Discord channels at once, which is a specific verb+resource+scope. It distinguishes itself from siblings like discord_read_messages (single channel) and discord_search_messages by highlighting the multi-channel aspect.

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 gives a clear context for use: retrieving messages from multiple channels simultaneously. However, it does not explicitly mention alternatives or when not to use this tool, such as comparing with discord_read_messages or discord_read_messages_stream.

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

discord_remove_reactionB

Removes a specific emoji reaction from a Discord message

ParametersJSON Schema
NameRequiredDescriptionDefault
emojiYes
userIdNo
channelIdYes
messageIdYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the core action without explaining important behaviors such as whether it can remove reactions from other users, what happens if the reaction does not exist, or whether special permissions are required. The optional 'userId' parameter's role in removing others' reactions is not disclosed.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is front-loaded with the verb 'Removes' and immediately specifies the resource. It is appropriately concise for a simple operation.

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?

The tool has no output schema and no annotations, yet the description provides no additional context about return values, error handling, permissions, or edge cases. The optional 'userId' parameter is left unexplained, making the description incomplete for a tool with four parameters and zero schema documentation.

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

Parameters1/5

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

The schema has 0% description coverage, and the description itself provides no parameter explanations. It does not clarify the meaning of 'channelId', 'messageId', 'emoji', or especially the optional 'userId'. The description adds no value beyond the parameter names, leaving all four parameters semantically undocumented.

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 ('Removes') and the resource ('a specific emoji reaction from a Discord message'). It distinguishes itself from sibling tools like discord_add_reaction and discord_delete_message by specifying the precise operation of removing a single reaction.

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 when to use this tool (when a specific emoji reaction needs to be removed), but it does not provide explicit alternatives or exclusions. There is no mention of when not to use it, such as when removing all reactions or when needing to delete the entire message, which would be handled by sibling tools.

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

discord_reply_to_forumB

Adds a reply to an existing forum post or thread

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes
threadIdYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It states 'Adds a reply' which indicates a mutation, but it does not clarify authentication requirements, side effects, return values, or behavior for invalid thread IDs. The brief description leaves ambiguity about whether this posts a new message in the thread or uses Discord's reply feature.

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

Conciseness5/5

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

The description is a single concise sentence, front-loaded with the verb and object, with no 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?

Given the tool's simplicity (2 params, no output schema), the description is minimal but lacks essential context such as prerequisites (login, valid thread), return value, and any behavioral nuances. It is not complete enough for an agent to confidently invoke without additional context.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not mention the 'message' or 'threadId' parameters. The parameter names are somewhat self-explanatory, but the description adds no explicit meaning beyond what the schema provides. It fails the requirement to compensate for low 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?

The description uses a specific verb 'Adds' and resource 'reply to an existing forum post or thread', clearly distinguishing it from sibling tools like create_forum_post (creates new) and send (sends to a channel). It unambiguously states the action and target.

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 vs alternatives, no prerequisites or exclusions. The description implies usage for replying to existing threads but does not mention alternatives or when not to use.

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

discord_search_messagesC

Searches for messages in a Discord server

ParametersJSON Schema
NameRequiredDescriptionDefault
hasNoFilter messages that contain specific content types (e.g., link, embed, file, poll, image, video, sound, sticker, snapshot)
limitNoMaximum number of messages to return (default 25, max 100)
maxIdNoFilter messages with IDs less than this value (messages before this ID)
minIdNoFilter messages with IDs greater than this value (messages after this ID)
offsetNoNumber of messages to skip (for pagination)
pinnedNoFilter messages based on whether they are pinned
sortByNoSort results by 'timestamp' or 'relevance'
contentNoSearch for messages containing specific text
guildIdYesThe ID of the Discord server (guild) to search within
authorIdNoFilter messages by a specific user ID
mentionsNoFilter messages that mention a specific user ID
channelIdNoFilter messages within a specific channel ID
sortOrderNoSort order: 'desc' for descending or 'asc' for ascending
authorTypeNoFilter messages by author type (user, bot, webhook)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of explaining behavior. It only says 'Searches for messages' and does not disclose what is returned, whether pagination or filtering is supported, or that this is a read-only operation.

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

Conciseness4/5

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

The description is a single, concise sentence with no unnecessary words or repetition. It is efficiently structured, though it is quite terse and lacks supporting detail.

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

Completeness2/5

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

Given the tool's complexity — 14 parameters, multiple filters, sorting options, and a large set of sibling tools — the description is too sparse to provide adequate context. It does not explain that the tool supports message-content search, author filtering, pagination, or how it relates to simple message-reading tools.

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?

All parameters have descriptions in the input schema, so the baseline is 3. The tool description itself does not add any extra semantic clarity beyond the schema, but the schema already provides adequate explanations for each parameter.

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

Purpose4/5

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

The description clearly states the action ('Searches') and the resource ('messages in a Discord server'), making the basic purpose obvious. It does not explicitly distinguish itself from sibling tools like discord_read_messages, but the term 'search' implies filtering rather than simply reading recent messages.

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_read_messages or discord_list_pinned_messages. It does not mention filters, use cases, or conditions that would make this tool the preferred choice.

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

discord_sendA

Sends a message to a specified Discord text channel. Optionally reply to another message by providing its message ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes
channelIdYes
replyToMessageIdNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the action and the reply option, but does not mention potential side effects like permissions failures, rate limits, or whether the message appears as the bot. For a simple send, this is acceptable but not highly transparent.

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

Conciseness5/5

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

The description is two sentences long and directly to the point. Every clause adds useful information—the primary action and the optional reply capability—with no unnecessary 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?

Given the tool's simplicity, the description is sufficiently complete. It covers the main action, the target channel, and the reply feature. It does not specify return format or error behavior, but those are not critical for a send operation in this context.

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

Parameters4/5

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

The schema defines three parameters with no descriptions. The tool description clarifies channelId as a 'specified Discord text channel' and replyToMessageId as 'reply to another message by providing its message ID'. The 'message' parameter is self-explanatory. Coverage is good but not exhaustive.

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's function: sending a message to a Discord text channel. It distinguishes itself from siblings like discord_send_webhook_message (which sends via webhook) and discord_edit_message (which modifies existing messages).

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 when to use it (for sending a message to a channel) and mentions the optional reply feature. It does not explicitly contrast with alternatives, but the sibling names make the primary use case obvious.

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

discord_send_webhook_messageB

Sends a message to a Discord channel using a webhook

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
threadIdNo
usernameNo
avatarURLNo
webhookIdYes
webhookTokenYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden for behavioral disclosure. It states the primary effect (sending a message) but gives no additional context about side effects, required permissions, error behavior, or irreversibility, which are relevant for a create-type action.

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

Conciseness5/5

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

The description is a single concise sentence that immediately conveys the tool's purpose. Every word contributes, and it is not bloated or repetitive.

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?

For a tool with six parameters and no output schema or annotations, this description is too thin. It omits guidance on optional parameters, return behavior, failure cases, and validation, which are necessary for an agent to use the tool confidently in varied contexts.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate, but it only weakly maps 'message' to content and 'webhook' to webhookId/webhookToken. It provides no explanation for threadId, username, or avatarURL, leaving their purpose unclear.

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

Purpose5/5

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

The description starts with a specific verb 'Sends' and clearly identifies the resource as 'a message to a Discord channel'. The qualifier 'using a webhook' differentiates it from sibling tools like discord_send, which likely sends via a bot session, and discord_send_voice, which handles 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?

Usage is implied by 'using a webhook', suggesting it should be used when webhook credentials are available. However, it does not explicitly state when to prefer this over alternatives such as discord_send, nor does it mention prerequisites or exclusions.

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

Tool Schema Changelog

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

  1. 31 tool updatesv1.4.0
    • First observeddiscord_add_multiple_reactions
    • First observeddiscord_add_reaction
    • First observeddiscord_archive_forum_stream
    • First observeddiscord_archive_multiple_forums
    • First observeddiscord_create_category
    • First observeddiscord_create_forum_post
    • First observeddiscord_create_text_channel
    • First observeddiscord_create_webhook
    • First observeddiscord_delete_category
    • First observeddiscord_delete_channel
    • First observeddiscord_delete_forum_post
    • First observeddiscord_delete_message
    • First observeddiscord_delete_webhook
    • First observeddiscord_edit_category
    • First observeddiscord_edit_webhook
    • First observeddiscord_get_channel_list
    • First observeddiscord_get_forum_channels
    • First observeddiscord_get_forum_post
    • First observeddiscord_get_forum_post_stream
    • First observeddiscord_get_server_info
    • First observeddiscord_list_forum_threads
    • First observeddiscord_list_servers
    • First observeddiscord_login
    • First observeddiscord_read_messages
    • First observeddiscord_read_messages_stream
    • First observeddiscord_read_multiple_channels
    • First observeddiscord_remove_reaction
    • First observeddiscord_reply_to_forum
    • First observeddiscord_search_messages
    • First observeddiscord_send
    • First observeddiscord_send_webhook_message

TDQS

B3.1/5.0

Scored across 31 tools

Disambiguation4/5

Most tools target distinct resources and actions (create/delete/read/send), but there is overlap among the streaming and reading tools (e.g., read_messages vs read_messages_stream vs read_multiple_channels vs get_forum_post_stream). Descriptions help clarify the differences, though the streaming variants could be confused.

Naming Consistency5/5

All tool names follow the consistent pattern 'discord_verb_noun', with verbs like create, delete, get, list, read, send, edit, remove, and archive. The convention is uniform and makes the tool's purpose predictable.

Tool Count2/5

At 31 tools, the server exceeds the recommended range and feels heavy. Several tools are near-duplicates (e.g., archive_forum_stream vs archive_multiple_forums, get_forum_post vs get_forum_post_stream), suggesting consolidation would improve the set.

Completeness3/5

The server covers a broad range of Discord features including channels, categories, messages, reactions, webhooks, and forums. However, it lacks update operations for messages and most channels, and there is no member/role/permission management, leaving notable gaps in the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Discord MCP server that enables AI assistants to interact with Discord platforms, providing functionalities like sending messages, managing channels, creating forum posts, and handling webhooks.
    21
    400
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables comprehensive Discord bot management and server operations through MCP, including channel management, message handling, member moderation, role management, and voice operations. Provides secure Discord API integration with built-in permission controls and audit logging capabilities.
    19
    101
    18
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Read-only MCP server for finding Discord messages. It enables searching guild messages, locating messages from jump URLs, and reading context around results.
    7
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A read-only Discord MCP server that allows AI agents to list channels, read messages, and get attachment images from a Discord server for summarization and reporting.
    101
    MIT