Skip to main content
Glama
AceDataCloud

MCP Discord Bot Server

by AceDataCloud

MCP Discord Bot Server

A Model Context Protocol (MCP) server that provides tools for automating Discord through a self-hosted Discord Agent Proxy instance.

Overview

The Discord Agent Proxy is a standalone service you deploy on AceDataCloud. It maintains a persistent connection to Discord using your account credentials and exposes both an MCP and REST API interface.

This MCP server wraps the Discord Agent Proxy's REST API, exposing Discord operations as MCP tools for use with Claude, Cursor, and other MCP-compatible AI clients.

⚠️ Warning: Automating a personal Discord account (self-bot) violates Discord's Terms of Service. Use a dedicated account and keep automation frequency reasonable.

Related MCP server: Discord MCP Server

Prerequisites

  1. Create a Discord Agent Proxy application at platform.acedata.cloud and activate a subscription. Instance resources are configured automatically; no instance size selection is needed.

  2. Enter your Discord account credentials in the configuration page and deploy.

  3. In the application's Overview tab, confirm the account is connected and copy the MCP endpoint and access token from the Discord account card. A running container does not guarantee a connected Discord account.

The Documentation tab lists all 14 REST operations with request parameters, response schemas, and code examples. Test GET /api/whoami there, or call discord_whoami after configuring this MCP server, to verify the connected account. Instance addresses and access tokens are filled in automatically in the console; tokens are hidden by default. Sending, editing, or deleting messages affects the real account, so confirm the target and content before testing.

Download OpenAPI (JSON) exports the instance address without its access token. To change Discord account credentials, use Redeploy in Overview.

Connect to your Discord Agent Proxy

This package connects to your own deployed Discord Agent Proxy, not to the shared https://<service>.mcp.acedata.cloud/mcp endpoint used by the generation MCPs. The proxy's URL and access token are shown in the application's Overview tab after you deploy and connect the Discord account. The proxy credential is DISCORD_BOT_TOKEN; an AceDataCloud API token or MCP OAuth/DCR setup does not replace it.

Use a dedicated Discord account and follow Discord's current terms and rate limits. Sending, editing, deleting, and reacting affect that real account. Deployment and API documentation.

Local stdio setup

python -m pip install mcp-discord-bot
export DISCORD_BOT_BASE_URL='https://discord-bot-xxxxxxxxxxxx.app.acedata.cloud'
export DISCORD_BOT_TOKEN='YOUR_PROXY_TOKEN'
mcp-discord-bot

Copy the actual URL and token from your own application's Overview; the hostname above is only a shape example. Keep the token in your user's environment or secret store, never in a committed repo. For Claude Desktop, merge this entry into the local MCP file opened from its developer settings (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "discord-bot": {
      "command": "uvx",
      "args": ["mcp-discord-bot"],
      "env": {
        "DISCORD_BOT_BASE_URL": "YOUR_DEPLOYED_PROXY_URL",
        "DISCORD_BOT_TOKEN": "YOUR_PROXY_TOKEN"
      }
    }
  }
}

uvx needs uv on PATH; Claude Code, Cursor and VS Code can also launch this stdio command using their own local MCP configuration formats. Do not copy this local-process JSON into a remote connector screen.

Verify before sending

  1. Confirm the proxy application's Overview shows the Discord account connected. A running container alone is insufficient.

  2. Call the read-only discord_whoami tool and check the account identity. Then use discord_list_guilds or discord_list_channels to inspect the intended target.

  3. Only after confirming the destination, call a mutating tool such as discord_send_message. Review its output and reread the message if available. Keep the destination, content, and rate within the account's permissions.

If discord_whoami fails, check the proxy URL, proxy token and connected-account status. mcp-discord-bot --transport http --port 8000 runs your own HTTP MCP wrapper; it is not the shared hosted OAuth service. Expose that wrapper only with appropriate network and authentication controls.

Available Tools

Tool

Description

discord_whoami

View the proxied Discord account details

discord_list_guilds

List all servers the account has joined

discord_list_channels

List channels in a server

discord_create_text_channel

Create a new text channel

discord_list_members

List server members

discord_send_message

Send a message (with optional reply)

discord_read_messages

Read recent messages from a channel

discord_edit_message

Edit a message you sent

discord_delete_message

Delete a message

discord_search_messages

Search for messages in a channel

discord_add_reaction

Add an emoji reaction to a message

discord_pin_message

Pin a message in a channel

discord_create_dm

Open a DM channel with a user

discord_send_dm

Send a direct message to a user

discord_get_usage_guide

Get comprehensive usage documentation

Documentation

Documentation

License

MIT

Available Tools

15 tools
discord_add_reactionA

Add an emoji reaction to a Discord message.

Args:
    channel_id: The ID of the channel containing the message.
    message_id: The ID of the message to react to.
    emoji: The emoji to react with (Unicode or Discord custom emoji format).

Returns:
    JSON confirmation of the reaction being added.
ParametersJSON Schema
NameRequiredDescriptionDefault
emojiYesThe emoji to react with. Use standard Unicode emojis (e.g., '👍', '❤️') or Discord custom emoji format. Required.
channel_idYesThe ID of the Discord channel containing the message. Required.
message_idYesThe ID of the message to add a reaction to. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full transparency burden for a write operation. It discloses only that a JSON confirmation is returned (largely redundant with the existing output schema) and says nothing about required permissions (e.g., ADD_REACTIONS), idempotency of duplicate reactions, or rate limits.

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

Conciseness4/5

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

The core purpose is front-loaded in a single clear sentence, followed by a compact Args/Returns block. Structure is clean, though the parameter lines duplicate the schema and slightly inflate length for a three-parameter tool.

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?

With an output schema present, return values need not be re-explained, and the input schema is fully documented, so the description is functionally sufficient for calling the tool. The one gap is authorization/permission context for a mutation, which the absence of annotations leaves unaddressed.

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 all three parameters are already documented in the schema, including emoji format examples and required flags. The description's Args block restates the same meaning without adding syntax or edge-case detail beyond it, matching the baseline for fully-covered schemas.

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 opening sentence gives a specific verb (add) and resource (emoji reaction on a Discord message), which no sibling tool duplicates. An agent can immediately distinguish this from message-sending or pinning siblings.

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

Usage Guidelines3/5

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

Usage is only implied by the tool's obvious purpose; there is no explicit statement of when to use it, when not to, or what to do instead. For a self-evident single-purpose action with no competing sibling, this is adequate but unguided.

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

discord_create_dmA

Open a direct message (DM) channel with a Discord user.

Creates or retrieves the DM channel with the specified user.

Args:
    recipient_id: The Discord user ID to open a DM with.

Returns:
    JSON object with the DM channel ID, which can be used with other tools.
ParametersJSON Schema
NameRequiredDescriptionDefault
recipient_idYesThe Discord user ID of the recipient. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/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, and it does disclose the important idempotent-style behavior ('Creates or retrieves'). It says nothing about required permissions, whether re-opening an existing DM has side effects, or rate limits, which matters for an unannotated mutation.

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?

Front-loaded summary sentence followed by a useful clarification, then standard Args/Returns blocks. The Args entry is somewhat redundant with the schema but nothing is bloated or buried.

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?

Return values are covered by an output schema, so the description need not explain them, and it correctly points to the channel ID as the handoff value for later tools. Only gap is the absence of permission/caveat detail expected when no annotations are present.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter, so baseline 3 applies. The Args block restates 'The Discord user ID to open a DM with' without adding format, source, or lookup guidance beyond the schema's own description.

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?

States a specific verb and resource ('Open a direct message (DM) channel') and adds the create-or-retrieve semantics, which distinguishes it from the send-oriented sibling. It never names discord_send_dm explicitly, so the routing is clear but not fully disambiguated.

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 only implied: the 'Returns ... which can be used with other tools' line hints at a two-step workflow (open channel, then send), but there is no explicit when-to-use-this vs discord_send_dm guidance. An agent can infer the intent but must reason about it.

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

discord_create_text_channelC

Create a new text channel in a Discord guild (server).

Args:
    guild_id: The ID of the Discord guild.
    name: The name for the new text channel.

Returns:
    JSON object with the created channel details.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name for the new text channel. Required.
guild_idYesThe ID of the Discord guild (server) to create the channel in. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral burden. It confirms this is a mutation and that a JSON object of created channel details is returned, but omits permission requirements, Discord's channel-creation rate limits, and default/derived behavior for the new channel — significant gaps for a write 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 opening sentence is front-loaded and tight. The Args/Returns block largely duplicates schema and output-schema content but stays short, so the cost is minor.

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?

Because an output schema exists, the description need not explain the return value, and the two required params are schema-documented. However, for a mutation tool with zero annotations, the missing permission and failure-mode context leaves the definition only minimally complete.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already fully documented in the schema, and the description merely restates them. No syntax, format, or constraint detail is added beyond what the schema provides, so the baseline of 3 applies.

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 states a specific verb and resource ('Create a new text channel in a Discord guild'), which the agent cannot confuse with read/message siblings like discord_list_channels or discord_send_message. It stops short of explicitly naming or contrasting any sibling tool, so it is clear but not sibling-differentiated.

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, no mention of prerequisites (e.g. requiring Manage Channels permission), and no note about what happens if a channel with the same name already exists. The agent gets a purpose but no selection or precondition context.

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

discord_delete_messageC

Delete a message from a Discord channel.

Args:
    channel_id: The ID of the channel containing the message.
    message_id: The ID of the message to delete.

Returns:
    JSON confirmation of deletion or error details.
ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesThe ID of the Discord channel containing the message. Required.
message_idYesThe ID of the message to delete. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral burden, yet it omits the critical fact that deletion is irreversible and typically requires MANAGE_MESSAGES or message ownership. Only the return shape ('JSON confirmation of deletion or error details') is disclosed, which is minimal 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.

Conciseness4/5

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

Front-loaded with the action in the first sentence, and the rest is short. The Args/Returns scaffolding is redundant with the schema but is not verbose enough to be a real problem.

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?

An output schema exists, so return values needn't be explained, and the two required params are fully covered. Where it falls short is behavioral completeness for a destructive tool with no annotations: permission requirements and irreversibility are left unstated.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are already fully documented in the schema, so the Args block merely restates channel_id and message_id. Baseline 3 applies since the description adds no format or constraint detail beyond the schema.

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?

States a specific verb and resource ('Delete a message from a Discord channel'), which is unambiguous against read/edit siblings like discord_edit_message. It does not explicitly name or contrast with any sibling, so it stops short of a 5.

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 when-to-use guidance, no prerequisites, and no mention of alternatives (e.g., editing or soft-deleting). Nothing tells the agent when this destructive call is appropriate versus other message tools.

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

discord_edit_messageA

Edit a message previously sent by the proxied Discord account.

Only messages sent by the proxied account can be edited.

Args:
    channel_id: The ID of the channel containing the message.
    message_id: The ID of the message to edit.
    content: The new text content for the message.

Returns:
    JSON object with the updated message details.
ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe new text content for the message. Required.
channel_idYesThe ID of the Discord channel containing the message. Required.
message_idYesThe ID of the message to edit. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 the ownership restriction and that a JSON result is returned, but says nothing about required permissions/scopes, rate limits, or what happens to embeds/attachments when content is replaced.

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?

Front-loads the action and its key constraint in two short sentences before the boilerplate Args/Returns blocks; nothing is padded or ambiguous.

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?

An output schema exists, so return values need not be explained (the Returns line is redundant but harmless). The description covers purpose, precondition, and params adequately for a simple 3-param mutation, though permission requirements are unaddressed.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters are already documented in the schema. The Args section merely repeats the same descriptions, adding no syntax, format, or ID-source guidance beyond the structured data.

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?

States a specific verb (Edit) and resource (a message), plus scope ('previously sent by the proxied Discord account'), which distinguishes it from sending or deleting a message among the siblings.

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?

Gives a clear precondition for use: only messages sent by the proxied account can be edited. It does not name an alternative tool (e.g., delete + send) for messages that can't be edited, but the constraint is explicit.

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

discord_get_usage_guideA

Get a comprehensive guide for using the Discord Bot tools.

Provides detailed information on how to use the Discord Bot MCP tools
effectively, including available tools, parameters, and examples.

Returns:
    Complete usage guide for Discord Bot tools.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full burden. It discloses that the tool returns a complete usage guide, which is a useful behavioral detail, but it does not mention whether the operation is read-only, requires authentication, or has any side effects. These omissions are relatively minor given the tool's zero-parameter, informational nature.

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

Conciseness4/5

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

The description is short and front-loaded with the main purpose. However, it is somewhat repetitive: 'Get a comprehensive guide' and 'Returns: Complete usage guide' convey the same idea, and the middle sentence partially repeats the first.

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

Completeness5/5

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

Given the tool has no parameters, an output schema exists, and the task is simply to return documentation, the description provides sufficient context for an agent to call it correctly. Nothing essential is missing for invocation.

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 takes zero parameters, so the baseline is 4. The description correctly does not discuss parameters, and the schema already covers the empty argument object.

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 'Get' and resource 'comprehensive guide for using the Discord Bot tools'. It clearly distinguishes this meta-tool from the sibling action tools like discord_send_message or discord_list_guilds.

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 as a help/reference tool but does not explicitly state when to use it versus the other Discord tools, nor does it list any exclusions or prerequisites. The context is clear from the purpose alone, but explicit guidance is absent.

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

discord_list_channelsA

List all channels in a Discord guild (server).

Returns a list of all channels with their IDs, names, and types.

Args:
    guild_id: The ID of the Discord guild. Use discord_list_guilds to find guild IDs.

Returns:
    JSON array of channel objects.
ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idYesThe ID of the Discord guild (server) to list channels for. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 behavioral burden. It does disclose the shape of the result ('channels with their IDs, names, and types'), but says nothing about permissions/bot membership requirements, pagination, or whether channels of all types are included. For a low-risk read 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.

Conciseness4/5

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

Well front-loaded: purpose first, then the helper pointer, then structured Args/Returns blocks. The Returns section partially duplicates the output schema, which is mild redundancy, but nothing is bloated.

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

Completeness4/5

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

For a single-parameter read tool with a full output schema, the description covers what is called, how to get the parameter, and roughly what comes back. The only gap is auth/permission expectations, which is minor given the low complexity.

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

Parameters4/5

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

Schema coverage is 100% with a single, well-documented parameter, so the baseline is 3. The description adds real value beyond the schema by pointing the agent at discord_list_guilds to resolve the guild ID, which is exactly the ambiguity an agent would hit.

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 first sentence gives a specific verb and resource ('List all channels in a Discord guild'), which is immediately distinguishable from write siblings like discord_create_text_channel. It stops short of explicitly contrasting with any sibling tool, but 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 Guidelines3/5

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

The description tells the agent how to obtain the required guild_id ('Use discord_list_guilds to find guild IDs'), which is genuinely useful context. However, it offers no when-to-use/when-not guidance or exclusions relative to the other listing tools (discord_list_members, discord_list_guilds), so usage 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_list_guildsA

List all Discord servers (guilds) the proxied account has joined.

Returns a list of all guilds with their IDs and names.

Returns:
    JSON array of guild objects with id and name.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/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 listing covers all guilds the proxied account has joined and that each entry has an id and name, which establishes a read-only, unfiltered behavior. It says nothing about pagination, rate limits, empty-result behavior, or auth requirements for the proxied account.

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

Conciseness3/5

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

The scope sentence is well front-loaded, but the return shape is stated twice ('Returns a list of all guilds with their IDs and names' followed by 'Returns: JSON array of guild objects with id and name'), which is pure redundancy. That repetition wastes space, especially since an output schema already exists.

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

Completeness4/5

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

For a zero-parameter list tool with an output schema, the description supplies what is needed: the resource, the account scoping, and a rough return shape. Nothing essential is missing, though a note on pagination or empty results would round it out.

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 takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No argument-related guidance is needed.

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?

States a specific verb (list) and resource (Discord servers/guilds), with the important qualifier that it is scoped to the proxied account's joined guilds. It does not explicitly contrast with siblings such as discord_list_channels, but the resource is distinctive enough that an agent can identify it.

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 rather than stated: an agent can infer this is the discovery entry point for guild IDs needed by channel-related tools, but the description never says when to call it, when not to, or which sibling to prefer. No prerequisites or alternatives are named.

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

discord_list_membersC

List members of a Discord guild (server).

Args:
    guild_id: The ID of the Discord guild.
    limit: Maximum number of members to return (default: 100).

Returns:
    JSON array of member objects.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of members to return. Default is 100.
guild_idYesThe ID of the Discord guild (server) to list members for. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral burden, and it is silent on how the member list is paginated, whether limit caps at some server-side maximum, whether results are ordered, and whether special permissions are needed. The only behavioral note is the return type, which the output schema already covers.

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 purpose is front-loaded in a single sentence, and the Args/Returns blocks are short. The Args section is largely redundant with the schema, which slightly blunts the value of the otherwise efficient structure.

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 has an output schema, so return values need not be explained, and the two parameters are fully documented in the schema. However, with no annotations at all, the definition leaves permissions and pagination behavior entirely unaddressed, which an agent would benefit from knowing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both guild_id and limit, including the default of 100. The description's Args section merely restates that information without adding format, range, or edge-case detail. Baseline 3 applies.

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 opening sentence states a specific verb and resource: 'List members of a Discord guild (server).' That cleanly separates it from siblings like discord_list_guilds and discord_list_channels, which return different entity types. It does not, however, explicitly contrast itself with any sibling.

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 statement of when to use this tool versus alternatives, no prerequisites (e.g., bot permissions/privileged intents required to enumerate members), and no mention of when another tool would be preferable. Usage is only inferable from the name.

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

discord_pin_messageC

Pin a message in a Discord channel.

Args:
    channel_id: The ID of the channel containing the message.
    message_id: The ID of the message to pin.

Returns:
    JSON confirmation of the message being pinned.
ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesThe ID of the Discord channel containing the message. Required.
message_idYesThe ID of the message to pin. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 full behavioral burden. It only states the action and mentions a JSON return, but omits key behavioral details like required permissions, whether pinning is idempotent, the channel pin limit, or what happens if the message is already pinned.

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?

Front-loaded with a clear one-line purpose, then short Args and Returns sections. The Args and Returns duplicates the schema and output schema somewhat, but the description remains compact and well-structured overall.

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

Completeness3/5

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

For a simple two-parameter mutation tool with full schema coverage and an output schema, the description covers the basics. However, with no annotations, it should disclose more behavioral context such as permission requirements or side effects, which are currently missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters. The description merely repeats the schema text for channel_id and message_id without adding any syntax, format, or constraint details beyond what is already available.

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?

States a specific verb and resource: 'Pin a message in a Discord channel.' This distinguishes it from sibling message tools like send, read, edit, delete, and search, though it does not explicitly name or contrast with any sibling.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites such as required permissions (e.g., MANAGE_MESSAGES), and no context for when pinning is appropriate or not.

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

discord_read_messagesB

Read recent messages from a Discord channel.

Args:
    channel_id: The ID of the channel to read messages from.
    limit: Number of recent messages to return (default: 50, max: 100).

Returns:
    JSON array of message objects with author, content, and timestamp.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of recent messages to retrieve. Default is 50, maximum is 100.
channel_idYesThe ID of the Discord channel to read messages from. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the default (50) and maximum (100) message count and the shape of the response, but says nothing about permissions required, rate limits, or how to page beyond the 100-message cap.

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

Conciseness4/5

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

The description is short and front-loads the core purpose in a single sentence. The Args/Returns sections are slightly redundant against the schema but are not verbose.

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

Completeness4/5

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

For a two-parameter read tool with an output schema, the description covers purpose, parameters, and return shape adequately. The main gap is pagination guidance for retrieving messages older than the most recent 100.

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 both channel_id and limit are already fully documented in the schema, and the description merely restates them. Baseline 3 applies when the schema does the heavy lifting.

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?

States a specific verb and resource ('Read recent messages from a Discord channel'), so an agent immediately knows it is a channel-history read. It does not explicitly distinguish itself from the sibling discord_search_messages, which is the only reason it falls short of a 5.

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 statement of when to use this tool versus alternatives such as discord_search_messages, nor any prerequisites (e.g., the bot must be a member of the channel). Usage is only implied by the word 'recent'.

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

discord_search_messagesC

Search for messages in a Discord channel.

Args:
    channel_id: The ID of the channel to search in.
    query: The search query string.
    limit: Maximum number of results to return (default: 25).

Returns:
    JSON array of matching message objects.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 25.
queryYesThe search query string. Required.
channel_idYesThe ID of the Discord channel to search messages in. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral burden, yet it only restates the arguments and the return type. It says nothing about Discord search limitations (e.g., guild-wide scope, permission requirements, rate limits, pagination, or ordering of results) that an agent would need to call this correctly.

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

Conciseness4/5

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

The description is short and front-loads the purpose before the argument list. The Args/Returns sections largely duplicate the schema and the output schema, which is mild waste but not bloat.

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 an output schema present, the description need not explain return values, and it correctly notes the JSON array return. However, for a search tool with no annotations, it omits scope, permission, and result-limitation context that materially affect correct invocation.

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 all three parameters (channel_id, query, limit) are already documented in the schema with the same wording the description repeats. The description adds no syntax, format, or constraint detail beyond that baseline.

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 states a specific verb and resource ('Search for messages in a Discord channel'), which is clear and immediately actionable. It does not, however, distinguish this tool from the sibling discord_read_messages, so an agent must infer the difference from the names alone.

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 search versus discord_read_messages, and no mention of prerequisites such as required Discord permissions for search. The only usage signal is the implicit 'query-based' framing of the word 'search'.

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

discord_send_dmC

Send a direct message (DM) to a Discord user.

Args:
    recipient_id: The Discord user ID to send the DM to.
    content: The text content of the direct message.

Returns:
    JSON object with the sent message details.
ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe text content of the direct message. Required.
recipient_idYesThe Discord user ID of the recipient. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral burden. It confirms the operation is a send and that a JSON result is returned, but says nothing about bot permissions, whether the bot must share a guild with the recipient, rate limits, or failure modes when DMs are closed — significant omissions for an external-facing write operation.

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

Conciseness3/5

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

The single-sentence summary is front-loaded and clear, but the Args block duplicates schema descriptions that already exist and the Returns line is redundant given the output schema exists. Some content does not earn its place.

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 output schema covers return values, so the description need not explain them and the Returns line is unnecessary. The missing pieces are operational: permission requirements and whether a DM channel must pre-exist, which leave the definition merely adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the schema. The Args section merely restates recipient_id and content verbatim without adding format, ID-source, or length-limit guidance, so baseline 3 applies.

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?

States a specific verb and resource ('Send a direct message (DM) to a Discord user'), which is clear. However, it never contrasts itself with the sibling discord_send_message (channel message) or discord_create_dm, so the agent must infer the distinction from the name alone.

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 when-to-use guidance, no prerequisites, and no mention of the sibling discord_create_dm, which an agent might reasonably need to call first to open a DM channel. Usage is only implied by 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_send_messageC

Send a message to a Discord channel.

Args:
    channel_id: The ID of the channel to send the message to.
    content: The text content of the message.
    reply_to: Optional ID of a message to reply to.

Returns:
    JSON object with the sent message details.
ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe text content of the message to send. Required.
reply_toNoThe ID of a message to reply to. Optional.
channel_idYesThe ID of the Discord channel to send the message to. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral disclosure. It does not state that this is a mutating write operation, nor does it disclose permission requirements, rate limits, or error behavior. Only the return shape is mentioned, which is largely covered by the output schema.

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

Conciseness4/5

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

The description is short, front-loaded with the core action, and free of filler. The Args/Returns structure is slightly formulaic but efficient.

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

Completeness3/5

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

The output schema exists, so return values need not be explained. However, for a write tool with no annotations, the description should still cover permissions or failure modes, which it omits, leaving it only minimally adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description merely restates them without adding format, constraints, or example values, so the baseline of 3 applies.

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 states a specific verb (Send) and resource (message to a Discord channel), which is clear on its own. However, it does not differentiate from the closely related sibling discord_send_dm, leaving the agent to infer the channel-vs-DM distinction.

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 when-to-use guidance, no prerequisites, and no mention of when to prefer discord_send_dm or discord_create_dm. The presence of those siblings makes this omission notable, and the agent gets no routing help.

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

discord_whoamiA

Get information about the currently proxied Discord account.

Returns the account details including username, ID, and discriminator
for the Discord account connected to this Agent Proxy.

Returns:
    JSON object with the Discord account information.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 conveys that this is a passive read of the proxied account and what fields come back, but says nothing about auth requirements or whether the proxy connection must be established first, so behavioral coverage is only partial.

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?

Reasonably short and front-loaded, with the core purpose in the first sentence. The trailing "Returns: JSON object with the Discord account information" restates what the body already said and duplicates the output schema, adding minor redundancy.

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

Completeness4/5

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

An output schema exists, so return values need no elaboration, and with no parameters there is little else an agent needs. The description is sufficient for a simple identity lookup, though it could have noted the auth/proxy prerequisite.

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 takes zero parameters, so the baseline of 4 applies. There is no parameter ambiguity to resolve, and the description correctly indicates the call needs no input.

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?

States a specific verb and resource ("Get information about the currently proxied Discord account") and enumerates the returned fields (username, ID, discriminator). It is clearly the identity-lookup tool among action-oriented siblings, though it never explicitly names or contrasts a sibling.

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 "currently proxied Discord account" - an agent can infer this reports the proxy's own identity - but there is no explicit when-to-use, prerequisites, or alternates. For a zero-parameter identity tool the implication is adequate, but no guidance is actually stated.

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. 15 tool updatesv0.1.0
    • First observeddiscord_add_reaction
    • First observeddiscord_create_dm
    • First observeddiscord_create_text_channel
    • First observeddiscord_delete_message
    • First observeddiscord_edit_message
    • First observeddiscord_get_usage_guide
    • First observeddiscord_list_channels
    • First observeddiscord_list_guilds
    • First observeddiscord_list_members
    • First observeddiscord_pin_message
    • First observeddiscord_read_messages
    • First observeddiscord_search_messages
    • First observeddiscord_send_dm
    • First observeddiscord_send_message
    • First observeddiscord_whoami

TDQS

A3.5/5.0

Scored across 15 tools

Disambiguation4/5

Each tool targets a distinct resource and action, so selection is generally unambiguous. There is minor overlap between discord_create_dm (opens a DM channel) and discord_send_dm (which implicitly does the same plus sends), and send_message vs send_dm could be confused, but descriptions clarify the boundaries.

Naming Consistency5/5

Every tool follows a strict discord_verb_noun snake_case pattern (discord_send_message, discord_list_channels, discord_create_dm, etc.). The convention is uniform across all 15 tools with no deviations.

Tool Count5/5

At 15 tools the surface sits at the top of the well-scoped range and each tool maps to a concrete Discord operation. Nothing feels redundant enough to remove, and no important area is padded with trivial variants.

Completeness4/5

Core messaging lifecycle (send/read/edit/delete/search), channels, guilds, members, reactions, pins, and DMs are well covered. Minor gaps exist: no channel delete/rename, no unpin, and no reaction removal, but agents can work around most of these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to send and read messages in Discord channels, manage servers, channels, and roles via Discord's API.
    13 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to send and read messages in Discord channels through the Discord API, with server and channel discovery.
    13 npm
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server that gives AI agents first-class access to Discord, enabling discovery, messaging, channel management, moderation, and arbitrary REST calls through typed, consent-aware tools.
    16 npm
    3
    MIT