Skip to main content
Glama
taigikeyboard

discord-mcp

discord-mcp

Minimal MCP server for Discord forum and text channels.

Setup

  1. Discord Developer Portal → Bot → copy token; enable Message Content Intent (required to read message text).

  2. OAuth2 → URL Generator → scope bot; permissions: View Channels, Read Message History, Send Messages, Send Messages in Threads, Create Public Threads, Manage Threads. Open the URL to invite.

  3. Register:

claude mcp add discord -e DISCORD_BOT_TOKEN=... -- uv --directory /path/to/discord-mcp run discord-mcp

Any MCP client works with the equivalent command / args / env.

Channel IDs: Discord → Settings → Advanced → Developer Mode → right-click channel → Copy ID.

Related MCP server: mcp-discord-forum

Tools

Tool

Args

list_tags

forum_id

list_posts

forum_id, include_archived=false, limit=50

read_post

thread_id, limit=50

read_channel

channel_id, limit=50, before (message ID, page backwards); each message has link, reply_to, bot

create_post

forum_id, title, content, tags=[]

reply_post

thread_id, content, reply_to (message ID → Discord reply)

set_tags / add_tags / remove_tags

thread_id, tags

close_post

thread_id, lock=false

tags accept names or IDs.

Dev

uv sync --all-groups
uv run ruff format . && uv run ruff check . && uv run ty check src/ && uv run pytest

Available Tools

10 tools
add_tagsB

Add tags to a forum post. tags are tag names or IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsYes
thread_idYes

TDQS

B3.2/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 restates the action and clarifies tag input format; it does not mention whether tags append, whether duplicates are allowed, whether the post must exist, or any permission requirements.

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

Conciseness5/5

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

The description is a single, focused sentence with no filler. The tag-name-or-IDs clarification earns its place and the core action is 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?

For a tool with no annotations, no output schema, and two required parameters, the description is too thin. It lacks behavioral details, usage guidance relative to siblings, and fuller parameter context, leaving an agent to guess important call semantics.

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 0%, so the description must compensate. It does add meaning for 'tags' by saying they are tag names or IDs, but 'thread_id' receives no semantic explanation beyond its title.

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 ('Add') and resource ('tags to a forum post'), and the clarifying note about tag names or IDs adds precision. This distinguishes it from siblings like remove_tags and set_tags.

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 given about when to use add_tags versus set_tags, remove_tags, or list_tags. The presence of ambiguous siblings like set_tags makes the lack of any usage direction a clear gap.

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

close_postA

Archive a forum post. lock=True also prevents reopening.

ParametersJSON Schema
NameRequiredDescriptionDefault
lockNo
thread_idYes

TDQS

A3.7/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 burden of behavioral disclosure. It clearly states the archiving action and the lock nuance ('prevents reopening'), but it does not disclose whether archiving is reversible, what permissions are needed, or how it affects replies or other content.

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 short sentences with zero wasted words. The core action is front-loaded, and the lock parameter explanation is placed second as a useful optional clarification.

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 tool with no output schema and no annotations, the description is minimally adequate: it states the operation and the key behavioral option. It lacks explicit guidance on when to use, permissions, return value, and undo semantics, but is usable for straightforward 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 0%, so the description must compensate. It adds meaning for lock by explaining that lock=True prevents reopening, but thread_id is left implicit as 'a forum post.' The parameter names are self-explanatory, but the description does not fully elaborate on either parameter.

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 and resource: 'Archive a forum post.' This clearly distinguishes close_post from create_post, reply_post, and read_post, so an agent knows exactly what operation is invoked.

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

Usage Guidelines3/5

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

The description implies use when the agent needs to archive a post, but it does not explicitly state when to choose this over alternatives like deletion, nor does it mention any exclusions such as permission requirements or whether it applies only to certain post states.

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

create_postB

Create a forum post. tags are tag names or IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
titleYes
contentYes
forum_idYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It states only the creation action and a tag-format detail, with no mention of return value, permission requirements, side effects, or behavior when tags are invalid. For a mutating tool with zero annotation coverage, this is a significant gap.

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

Conciseness4/5

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

Two short sentences with the purpose front-loaded and zero filler. The second sentence earns its place by clarifying tag semantics. The only reason not to give a 5 is that the brevity comes at the cost of omitting useful behavioral context, though that is a completeness concern rather than a structure flaw.

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 mutation tool with 4 parameters, no annotations, and no output schema, the description is not complete enough. It doesn't describe what a successful create returns (e.g., a post ID), any preconditions on forum_id, or how missing tags are handled at creation time.

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 0%, so the description must compensate. The clause '`tags` are tag names or IDs' adds real meaning beyond the schema's bare 'array of string or null' type. However, forum_id, title, and content receive no elaboration, so compensation is only partial.

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 'Create a forum post' pairs a specific verb (create) with a specific resource (forum post), which cleanly distinguishes it from siblings like read_post, reply_post, list_tags, and close_post. The purpose is unambiguous and immediately actionable for an agent.

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 offers no guidance on when to use this tool versus alternatives such as reply_post or add_tags, and no exclusions or prerequisites are mentioned. It doesn't say how to obtain a valid forum_id or whether tags must pre-exist, leaving selection and preconditions to inference.

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

list_postsC

List posts in a forum channel, active first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
forum_idYes
include_archivedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.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 mentions only 'active first' as a sorting behavior, but does not explain what 'active' means, that archived posts are excluded by default (include_archived=false), or any pagination or limit behavior. This is insufficient for a tool that has an output schema and multiple parameters.

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

Conciseness3/5

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

The description is a single concise sentence, which is appropriately short. However, it is so brief that it omits critical information, making it under-specified rather than efficiently concise. It earns a middle score because it is not verbose, but it does not contain enough substance to be highly effective.

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 three parameters (one required) and an output schema, so it is moderately complex. The description does not address default behaviors, filtering options, or what 'active' means, and it leaves the agent without guidance on pagination or how archived posts are handled. While the output schema covers return format, the description still lacks essential context for correct invocation.

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% – the description does not mention any parameters. It fails to explain the meaning or use of limit, forum_id, or include_archived, leaving the agent to rely solely on the raw schema. With no parameter descriptions in the tool description, it provides zero added semantic value.

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 (list posts), the resource (posts), and the scope (in a forum channel), and specifies the ordering (active first). This distinguishes it from siblings like read_post (single post) and list_tags (tags), though it does not explicitly name an alternative. 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?

There is no guidance on when to use this tool versus alternatives such as read_post for a single post or create_post for posting. The description only states what it does, not when it should be chosen. This leaves the agent to infer usage from the tool name alone.

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

list_tagsC

List available tags of a forum channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
forum_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/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 hints that this is a read operation (lists available tags), but does not state whether it requires authentication, whether it reflects all tags including system-defined, or whether it affects any state. Since no annotations exist, the description should explicitly state the read-only nature and any side effects.

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

Conciseness4/5

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

The description is a single, concise sentence that is front-loaded with the action and resource. It avoids unnecessary detail. However, it could be slightly more specific about the parameter, but it's appropriately brief.

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 an output schema present, so the description doesn't need to explain return values. However, the lack of usage guidelines and behavioral transparency leaves some gaps, such as whether the list is sorted or includes hidden tags. Given the simplicity, a 3 is fair because the description covers the basic purpose but not the context needed for proper selection.

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 has only one parameter, forum_id, with no description in the schema (0% coverage). The description says 'of a forum channel' which implies that forum_id identifies the forum, but it doesn't specify the format (e.g., database ID) or that it's a required identifier. The description adds minimal value beyond the schema, but with a single parameter, the burden is lower; still, it could clarify that forum_id is the forum's identifier.

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

Purpose3/5

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

The description states a clear verb (list) and resource (tags), and identifies the scope (of a forum channel). However, it does not distinguish itself from sibling tools like set_tags, add_tags, and remove_tags, which all involve tags. The mention of 'forum channel' is somewhat ambiguous since the parameter is forum_id, so it could be clearer.

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. The sibling tools all involve tags but in different operations (set, add, remove), so an agent might need to know that list_tags is for reading available tags, not for modifying them. The description implies a read operation but doesn't explicitly recommend it over others.

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

read_channelB

Read recent messages from a text channel, oldest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
channel_idYes

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?

The description adds the ordering behavior 'oldest first' which is helpful. However, it does not disclose any potential side effects, authentication requirements, or error conditions. Since no annotations are provided, the description carries the burden but is minimal.

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

Conciseness5/5

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

A single sentence that is front-loaded with the action and resource. 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?

While an output schema exists, the description lacks usage guidance and parameter semantics. It is minimal for a tool with two parameters and several siblings, leaving the agent without enough context for correct invocation.

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 description coverage, and the description does not explain channel_id or limit. It only implies 'recent' which might suggest a limit, but does not clarify that limit is optional or has a default of 50.

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 (read), the resource (recent messages from a text channel), and the ordering (oldest first). It distinguishes from siblings like read_post which reads a single post, and list_posts which likely lists posts, by specifying the channel and message context.

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 like list_posts or read_post. The description does not mention exclusions or contexts, leaving the agent to infer usage.

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

read_postB

Read a forum post: metadata plus messages, oldest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
thread_idYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden; it does disclose the return content and ordering ('metadata plus messages, oldest first'). However, it does not mention whether the operation is strictly read-only beyond the verb, nor any error, pagination, or authorization behavior.

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?

One compact sentence with no filler, and the most important information is front-loaded. Every word contributes value.

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 read operation with no output schema and no annotations, the description gives the core purpose and ordering but omits parameter semantics and any usage context. It is minimally sufficient but has clear 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%, so the description must compensate by explaining parameters; it does not. It never clarifies that thread_id identifies the post or how limit applies (e.g., maximum message count), adding no meaning beyond the bare 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 names a specific verb and resource: 'Read a forum post' and further specifies the payload ('metadata plus messages') and ordering ('oldest first'). This clearly distinguishes it from sibling list/create/update tools like list_posts and create_post.

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

Usage Guidelines2/5

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

No explicit guidance on when to choose read_post versus alternatives such as list_posts or read_channel is provided. The purpose is implicit, but the description does not state prerequisites, exclusions, or a decision rule.

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

remove_tagsB

Remove tags from a forum post. tags are tag names or IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsYes
thread_idYes

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 must carry the behavioral burden, but it only restates the action. It does not disclose permissions, idempotency, handling of nonexistent tags, or whether the operation affects other tags.

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 short sentences with no filler. The core action is front-loaded and the additional clarification about `tags` earns 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 tool is simple and the schema provides the required parameters, but the description leaves out behavioral and edge-case context that would be necessary for confident use without annotations. It is minimally viable but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 0%, but the description usefully clarifies that `tags` can be tag names or IDs. However, it adds nothing about `thread_id`, which is only implied by the parameter name.

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 and resource: 'Remove tags from a forum post.' It is clearly distinct from siblings like add_tags and set_tags, and the clarification that `tags` are names or IDs removes ambiguity.

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 given about when to use this tool versus add_tags or set_tags, such as removing specific tags versus replacing the full tag set. The intended use is only implicit from the tool name and description.

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

reply_postC

Send a message in a forum post or thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
thread_idYes

TDQS

C2.7/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 indicates that a write/send action occurs, but it does not mention permissions, side effects, constraints, whether this appends to an existing thread, or what the response contains.

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, efficient sentence with no wasted words. It is front-loaded and easy to parse, though its brevity comes at the cost of missing important contextual 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?

For a two-parameter mutation tool with no annotations, no parameter descriptions, and no output schema, this description is too sparse. An agent lacks the information needed to determine when to call it, what values to provide, and what effects to expect.

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 for the two undocumented parameters. It loosely maps 'message' to content and 'forum post or thread' to thread_id, but it provides no details on formats, constraints, or how the parameters relate.

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 clear action ('send a message') and resource ('forum post or thread'). It is understandable on its own, but it does not explicitly differentiate this from sibling create_post, read_post, or close_post beyond the name itself.

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 about when to use reply_post versus alternatives like create_post, nor any mention of prerequisites or context. The intended use is only weakly implied by the tool name and the phrase 'send a message in a forum post or thread.'

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

set_tagsC

Replace tags on a forum post. tags are tag names or IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsYes
thread_idYes

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. 'Replace tags' implies overwriting, but it does not explicitly state that all existing tags are removed and replaced with the provided list. It also omits any side effects, permission requirements, or return value. 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.

Conciseness4/5

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

The description is a single, short sentence that gets to the point. It is efficient and front-loaded with the action. No wasted words, though it could add a few clarifiers without becoming verbose.

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 absence of annotations and an output schema, the description is incomplete. It does not explain that the operation is destructive (replaces all tags), nor does it describe the response. With sibling tools for additive/removal operations, the missing distinction is important. The description is adequate for a trivial tool but lacks critical operational context.

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

Parameters3/5

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

The description clarifies that 'tags' can be tag names or IDs, adding meaning beyond the schema, which has zero descriptions. However, thread_id is left entirely to its name. While thread_id is self-explanatory, the description only partially compensates for the 0% schema coverage.

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 clear action: 'Replace tags on a forum post.' The verb 'replace' distinguishes it from sibling tools like add_tags and remove_tags, implying full overwrite. However, it does not explicitly name the alternative tools or state the contrast, so it misses the extra clarity of the top-tier example.

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 given on when to use this tool versus add_tags or remove_tags. The description does not mention conditions like 'use this to overwrite the entire tag set' or 'use add_tags to append.' An agent must infer the intended use from the verb alone.

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. 10 tool updatesv0.1.0
    • First observedadd_tags
    • First observedclose_post
    • First observedcreate_post
    • First observedlist_posts
    • First observedlist_tags
    • First observedread_channel
    • First observedread_post
    • First observedremove_tags
    • First observedreply_post
    • First observedset_tags

TDQS

B3.3/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target clearly distinct actions (listing, reading, creating, replying, closing). The tag-related tools (set_tags, add_tags, remove_tags) have overlapping purposes, though their descriptions clarify the differences.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using lowercase with underscores. Verbs like list, read, create, reply, set, add, remove, and close are uniformly paired with clear nouns.

Tool Count5/5

Ten tools is well-scoped for a Discord forum-focused server. Each tool addresses a necessary operation without excessive redundancy or missing core actions.

Completeness4/5

The tool set covers the main forum lifecycle: listing, reading, creating, replying, tag management, and closing. Minor gaps exist, such as editing/deleting posts or messages, but agents can work around these.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables reading and acting on Discord through your own running desktop client, including messages, direct messages, group chats, threads, forum posts, search, and write operations like sending, editing, reacting, and managing threads.
    116 npm
    MIT