Skip to main content
Glama
TheETR

TheeDiscordMCP

by TheETR

Thee Discord MCP

CI

A safety-gated Discord administration MCP server built on Discord's official REST API. It combines broad guild management, dry-run planning, local resource tracking, audit reasons, and explicit safeguards around high-impact actions without turning every related operation into a separate tool.

What it manages

  • Guild settings, roles, role order, and member role assignment

  • Categories, text/announcement/voice/stage/forum/media channels, ordering, and permission overwrites

  • Forum tags, posting guidelines, sorting, and layout

  • Messages: list, send, edit, delete, pin, unpin, and bulk delete

  • Message inspection, full JSON payloads, announcement crossposts, current paginated pins, and complete reaction cleanup

  • Members: list/search, timeout, kick, ban, and unban

  • Guild previews, role member counts, prune previews and guarded execution, bulk bans, integrations, incident actions, vanity URLs, and voice regions

  • Reactions, invites, scheduled events, and forum/thread membership

  • Public, private, and joined-private thread archives; threads created from messages; join/leave and member inspection

  • Webhook lifecycle and execution with token/URL redaction

  • Voice member inspection, moves, disconnects, server mute, and server deaf

  • Stage instances, soundboard sounds, polls, and indexed message search

  • Guild stickers with validated multipart uploads

  • Guild templates, widgets, and guild or global application commands

  • Application emojis and linked-role metadata schemas

  • Optional one-to-one DMs restricted to an explicit user allowlist and disabled by default

  • Membership Screening rule reads and guarded updates

  • AutoMod rules, onboarding, welcome screen, emojis, and audit-log reads

  • Idempotent JSON blueprints with a dry-run planner, snapshot-bound approvals, and restart-aware execution journals

  • Bot and application profile management, including avatar and banner data URIs

  • A tightly scoped raw REST escape hatch for new Discord endpoints and guild-owned resources

There are 49 MCP tools exposing 168 schema-declared operations. The operation count treats every top-level action choice as one operation and every single-purpose tool as one operation. Related work stays together: for example, one discord_guild_operations tool contains preview, role-count, prune, integration, vanity URL, bulk-ban, voice-region, and incident actions instead of publishing eleven separate executables. The smoke test calculates and locks both inventory totals so documentation drift fails validation.

Every guild call is limited to IDs in DISCORD_ALLOWED_GUILD_IDS. Direct messages have a separate DISCORD_ALLOWED_USER_IDS boundary, are empty by default, and verify the one-to-one DM recipient before every read or write. The raw escape hatch remains guild-scoped; it canonicalizes paths before authorization, verifies indirect guild/channel IDs in request bodies, and never becomes a general Discord request proxy.

discord_capabilities reports or searches the grouped operation families without contacting Discord, so a client can discover a narrow capability without loading a separate tool for every endpoint. Three static MCP resources expose the capability index, safety model, and public-release checklist at discord://capabilities, discord://safety, and discord://public-release. The committed machine-readable capability inventory is generated from the real MCP handshake and records each tool's actions, schema size, schema digest, annotations, and resource count; CI fails if it drifts. Empty 204 No Content responses are normalized to { "ok": true }; webhook credentials and uploaded data URIs are redacted from previews and tool results.

Related MCP server: discord-mcp

Coverage at a glance

Surface

Grouped capabilities

Guild operations

Preview, settings, roles and counts, bans and bulk bans, prune preview/run, integrations, incidents, regions, vanity URL, audit log

Channels and threads

All guild channel types, ordering, overwrites, announcement follows, typing, voice status, public/private archives, membership

Messages

History, lookup, search, structured send/edit, crosspost, current pins, bulk delete, reactions, polls

Community configuration

AutoMod, Membership Screening, onboarding, welcome screen, scheduled events, invites, widgets

Voice and expressions

Voice-member control, Stage instances, soundboard, guild/application emojis, stickers

Applications and integrations

Guild/global commands, linked-role metadata, webhooks, templates, bot and application profiles

Controlled outreach

Allowlisted one-to-one DM open/read/send/edit/delete; disabled until recipient IDs are configured

Repeatable operations

Snapshots, dry-run plans, idempotent blueprints, scoped raw guild REST

Safety modes

Mode

Reads

Ordinary create/update

Privileged writes

Destructive writes

read-only

yes

no

no

no

safe-write

yes

yes

no

no

full

yes

yes

one-time dry-run confirmation

destructive opt-in and one-time dry-run confirmation

The default is read-only. Permission overwrites, role permission changes, guild security settings, and blueprints containing those fields are privileged writes: they require full mode and a payload-bound confirmation returned by the matching dry-run, but not the separate destructive opt-in. Confirmations are held only in process memory, expire after DISCORD_CONFIRMATION_TTL_SECONDS (five minutes by default), are consumed before the Discord request begins, and become invalid after a server restart. Blueprint approval also binds to the exact planned actions and a stable live-guild precondition snapshot, so drift requires a new dry-run. Blueprint application never deletes unmanaged resources.

1. Create the Discord operator

Create a dedicated application in the Discord Developer Portal, add a bot, and invite it only to the server you want to manage. Never use a personal/user token.

For the full tool set, the bot may need:

  • View Channels, Read Message History, Send Messages, Add Reactions, Manage Messages, Manage Threads

  • Manage Channels, Manage Roles

  • Moderate Members, Kick Members, Ban Members

  • Move Members, Mute Members, Deafen Members

  • Manage Guild, View Audit Log, Create Events, Manage Events

  • Pin Messages and Set Voice Channel Status for the corresponding features

  • Speak, Use Soundboard, and Use External Sounds for soundboard playback

  • Create Instant Invite, Manage Webhooks, Create Guild Expressions, and Manage Guild Expressions only if you use related operations

Indexed guild-message search additionally requires the privileged Message Content intent in the Discord Developer Portal. Without it, Discord returns Missing Access; other read tools continue to work.

Administrator is convenient but not required or recommended. Discord role hierarchy still applies: the operator can manage only roles and members below its highest role.

2. Install and configure

Requires Node.js 20.19 or newer and pnpm.

git clone https://github.com/TheETR/Thee-Discord-MCP.git
cd Thee-Discord-MCP
pnpm install
Copy-Item .env.example .env

Open .env locally and set:

DISCORD_BOT_TOKEN=your_dedicated_bot_token
DISCORD_ALLOWED_GUILD_IDS=123456789012345678
DISCORD_ALLOWED_USER_IDS=
DISCORD_MODE=read-only
DISCORD_CONFIRMATION_TTL_SECONDS=300
DISCORD_REQUEST_TIMEOUT_MS=15000
DISCORD_REQUEST_RETRIES=3

Leave DISCORD_ALLOWED_USER_IDS empty unless the bot should communicate with specific users. Add only comma-separated Discord user IDs whose one-to-one DM access you intend to permit. Group DMs and arbitrary recipients are rejected.

Do not paste the token into messages, issue reports, or committed files. To copy a Discord server ID, enable Developer Mode in Discord, right-click the server, and choose Copy Server ID.

Build and verify:

pnpm check

3. Connect an MCP client

Add the server to your MCP client configuration. An editable example is included as mcp.config.example.toml:

[mcp_servers.thee-discord]
command = "node"
args = ["C:/path/to/Thee-Discord-MCP/dist/index.js"]
cwd = "C:/path/to/Thee-Discord-MCP"
startup_timeout_sec = 20
tool_timeout_sec = 120

Restart the client and export a snapshot before making changes. Review the channels, roles, forums, and permission overwrites while the server is still in read-only mode.

For a public bot release, call discord_health with action: "release_readiness" and an allowlisted guildId. It verifies the current token/application identity, public-install setting, legal URLs, install scopes, command registration, visible Message Content flags, guild membership, and the bot's role permissions. It intentionally reports member-flow acceptance and Server Profile traits as manual checks. The result applies only to the application authenticated by the active token; it cannot inspect a separate product bot.

Once the snapshot looks right, set DISCORD_MODE=safe-write, restart the MCP server, and apply ordinary changes. Keep destructive mode disabled until a specific deletion or moderation action is needed.

Blueprint workflow

examples/elalem.blueprint.json provides an English ELALEM support and community layout with restrained category styling, a welcome message, two forum templates, tags, staff privacy, and practical channel names.

See docs/ELALEM.md for the live-server handoff, current user-facing channel copy, and the remaining boundaries that require Discord's UI or another bot runtime.

See docs/API_COVERAGE.md for the full capability map, safety model, and deliberate boundaries.

Recommended flow:

  1. discord_export_snapshot

  2. Adjust the blueprint to preserve intentional existing resources.

  3. discord_plan_blueprint or discord_apply_blueprint with dryRun: true.

  4. Review every planned action.

  5. Switch to safe-write and run discord_apply_blueprint with dryRun: false.

  6. Export another snapshot and verify the result.

Blueprint channel mentions use {{channel:key}}; they are resolved to real clickable Discord mentions when a message is sent.

The blueprint deliberately performs no deletion. Existing channels or roles with different names are left alone unless their tracked key points to them. Review duplicate or obsolete resources separately before removing anything.

Actual blueprint runs persist a versioned journal before the first Discord write and around every planned action. The journal records precondition, plan, and blueprint digests; per-action pending/running/completed/failed state; returned resource IDs; recovery ancestry; and a final applied-plan digest. Version-1 state files migrate to version 2 on their next save. A retry of the same interrupted blueprint is linked as a recovery attempt, while deterministic message nonces plus a recent-message lookup reduce duplicate guide posts after an uncertain interruption. Discord has no multi-resource transaction or rollback, so inspect failed journals and rerun the same blueprint after correcting the cause.

Destructive operations

To permit a specific destructive action temporarily:

DISCORD_MODE=full
DISCORD_ENABLE_DESTRUCTIVE=true

Run the exact operation with dryRun: true, review the plan, then copy its expectedConfirmation into confirm before it expires. The token is single-use—even a failed downstream Discord request requires a fresh dry-run—and is bound to an operation-specific base such as DELETE CHANNEL <id>. High-fan-out operations such as bulk bans and pruning also include a digest derived from the exact target set, so a confirmation cannot authorize a different batch. Irreversible announcement crossposts and linked-role metadata replacement use the same full-mode gate. Return to safe-write or read-only afterward.

The raw REST tool treats every non-GET request as destructive. Its one-time confirmation includes a SHA-256-derived digest of the exact request body, so a confirmation for one payload cannot authorize another. Absolute URLs, fragments, control characters, encoded path separators, dot segments, duplicate slashes, cross-guild body references, and unverified channel references are rejected before the request is sent.

Discord platform boundaries

The server uses a bot token only. It does not automate user-only endpoints, self-bots, account sessions, or unsupported client APIs. For example, Discord's Server Profile Traits field is visible in the desktop client but its profile endpoint rejects bot tokens with Bots cannot use this endpoint; that field must currently be changed by a signed-in server administrator in Discord.

See Discord API Coverage for named surfaces and deliberate omissions, Security Review and Roadmap for threat boundaries and remaining hardening work, and ELALEM Server Handoff for the live server layout and runtime boundaries.

Development

pnpm typecheck
pnpm test
pnpm build

The server uses stdio, so stdout is reserved for MCP protocol traffic; operational messages go to stderr. Discord rate limits, transient timeouts, and retryable server failures are handled by @discordjs/rest. Each network attempt is bounded by DISCORD_REQUEST_TIMEOUT_MS (15 seconds by default), and DISCORD_REQUEST_RETRIES controls the bounded retry count (three by default).

License

MIT

Available Tools

27 tools
discord_apply_blueprintA

Idempotently create/update roles, categories, channels, forum tags, permissions, messages, pins, and guild settings from one blueprint. It never deletes unmanaged resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
reasonNo
guildIdYes
blueprintYes

TDQS

A3.6/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. It discloses idempotency and a safety guarantee ('never deletes unmanaged resources'), but it does not clarify whether managed resources absent from the blueprint are deleted, what permissions are required, or what the dryRun parameter does. This is valuable context but leaves meaningful gaps.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action. Every word earns its place; the description is efficient and readable. No redundancy with schema or annotations (which are absent).

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 high complexity (nested blueprint, multiple resource types, no output schema), and the description provides only a high-level overview. It does not explain return behavior, dryRun semantics, or prerequisites (e.g., bot permissions). However, the core purpose is clear, and the 'never deletes' safety note adds important context, making it minimally adequate but incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not compensate by explaining parameters such as guildId, blueprint, dryRun, or reason. While the blueprint object schema is detailed, the tool-level parameters (especially dryRun, which defaults to true) are left unexplained. The description's mention of 'blueprint' only implicitly references one of four parameters.

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

Purpose5/5

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

The description clearly states the tool's function: 'Idempotently create/update roles, categories, channels, forum tags, permissions, messages, pins, and guild settings from one blueprint.' It specifies the verb, resource scope, and distinguishes it from sibling tools like discord_upsert_channel or discord_upsert_role by focusing on bulk blueprint application.

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

Usage Guidelines3/5

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

The description implies usage for applying a full blueprint to a guild but does not explicitly state when to use this tool over alternatives. Sibling tools like discord_plan_blueprint exist, but no exclusions or 'use this when' guidance is provided. It does hint at safety with 'never deletes unmanaged resources,' but that is more behavioral than usage context.

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

discord_audit_logB

Read Discord audit log entries for the allowed guild.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
beforeNo
userIdNo
guildIdYes
actionTypeNo

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description must disclose behaviors. It only states 'Read', implying read-only, but omits important details like return format, pagination, rate limits, or permission requirements.

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

Conciseness5/5

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

One concise sentence that front-loads the core purpose. No wasted words.

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

Completeness1/5

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

For a tool with five parameters and no output schema, the one-sentence description is insufficient. It lacks essential context about filtering, pagination, and audit log entry structure.

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 has 0% description coverage, and the description does not explain any of the five parameters. The phrase 'allowed guild' hints at guildId, but limit, before, userId, and actionType remain unexplained.

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

Purpose5/5

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

Description clearly states the tool reads Discord audit log entries for a specific allowed guild. The verb 'Read' plus resource 'audit log entries' distinguishes it from sibling tools like discord_list_messages or discord_get_guild.

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

Usage Guidelines3/5

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

Implied usage is when audit log entries are needed; mentions 'allowed guild' as a context. However, no explicit alternatives or when-not-to-use guidance is provided.

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

discord_automodC

List, create, modify, or delete Discord AutoMod rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
actionYes
dryRunNo
reasonNo
ruleIdNo
confirmNo
guildIdYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description must convey safety and side effects. It implies mutation via create/delete but does not mention permission requirements, dry-run behavior, confirmation steps, irreversibility, or any system impact. The schema's dryRun and confirm flags are not referenced.

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, grammatically clean sentence with no wasted words. However, it is under-specified given the tool's complexity, yet it remains concise as a standalone statement.

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

Completeness1/5

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

With 7 parameters, a nested body object, no annotations, and no output schema, the one-line description is wholly inadequate. It does not explain parameter interactions, response format, safety mechanisms, or operational requirements, leaving the agent without sufficient context to invoke the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to any of the 7 parameters. It only repeats the action enum values already present in the schema. No explanation of body, ruleId, guildId, or confirm is provided.

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

Purpose4/5

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

The description clearly states the tool's purpose: managing Discord AutoMod rules via list, create, modify, or delete operations. It names a specific resource and verb, though it does not explicitly differentiate from sibling tools beyond the unique resource identifier.

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 vs. alternatives, nor any context for selecting an action. The description lists operations but lacks prerequisites, exclusions, or situational cues.

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

discord_current_applicationC

Read or modify the current Discord application profile and installation metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
actionYes
dryRunNo
reasonNo

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 behavioral disclosure. It only says 'read or modify' without explaining side effects of modification, the meaning of 'installation metadata,' whether changes are reversible, or any requirements like permissions. The dryRun parameter is also not mentioned, so the tool's safety mechanisms are unknown.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that efficiently conveys the core purpose. It contains no fluff, but it is slightly too sparse given the tool's complexity, so it doesn't fully earn its place beyond stating the basic function.

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

Completeness1/5

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

Despite having four parameters, a nested body schema, no output schema, and no annotations, the description provides almost no context. It fails to explain the tool's behavior, parameters, or return values, making it severely incomplete for an agent to invoke correctly.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any of the four parameters (action, body, dryRun, reason). It fails to clarify what 'get' vs 'modify' actions do, what the body object should contain, or how dryRun affects execution, leaving the agent to guess.

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

Purpose4/5

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

The description clearly states the tool reads or modifies the current Discord application profile and installation metadata, naming both the action and resource. It distinguishes itself from siblings like discord_current_bot_profile by adding 'installation metadata,' though it doesn't explicitly point to alternatives.

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 alternatives like discord_current_bot_profile or discord_modify_guild. There is no context about scenarios, prerequisites, or exclusions, leaving the agent without clear selection criteria.

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

discord_current_bot_profileA

Read or modify this operator bot's username, avatar, and banner. Image fields accept Discord data URIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
actionYes
dryRunNo
reasonNo

TDQS

A3.5/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 does disclose that the tool modifies the bot profile (mutation), and that image fields accept Discord data URIs. However, it does not clarify whether modifications are immediate, partial or full updates, or whether dryRun/reason affect behavior. The description is truthful but lacks depth about 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that provides essential information without wasted words. It earns its place by stating the exact operation and key format caveat.

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

Completeness2/5

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

Given the tool has 4 parameters, a nested object, no output schema, and no annotations, the description is too sparse. It omits crucial details like the action enum values, body field structure, dryRun semantics, and reason usage. A minimally complete description would at least outline these.

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%, requiring the description to compensate. It only adds that image fields accept Discord data URIs, which hints at body structure but leaves action, dryRun, reason, and the full body schema unexplained. This is insufficient for a tool with a nested body object and an enum action 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 clearly states the tool reads or modifies the bot's username, avatar, and banner, using a specific verb ('Read or modify') and a specific resource. It distinguishes this from siblings like discord_current_application (application-level) and discord_modify_guild (server-level), leaving no ambiguity about scope.

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

Usage Guidelines3/5

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

The description implies usage for viewing or editing the bot's own profile, which is a clear context. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. Since the tool's purpose is narrow and unique among siblings, the guidance is adequate but not explicit.

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

discord_delete_channelA

Delete a channel. Requires full mode, destructive enablement, and an exact confirmation string.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
reasonNo
confirmYes
guildIdYes
channelIdYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations present, the description carries the full burden. It discloses that deletion requires special enabling modes and a confirmation string, which is valuable. However, it does not discuss irreversibility, permissions, what the confirmation string must match, or the effect of the dryRun parameter, leaving significant behavioral details uncovered.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the core action ('Delete a channel') and then lists requirements. Every word earns its place, with no redundancy or unnecessary detail.

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

Completeness2/5

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

For a destructive operation with no annotations and no output schema, this description is far from complete. It omits details about execution behavior, return values, error conditions, and the meaning of 'full mode' and 'destructive enablement', leaving a significant context gap.

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

Parameters2/5

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

The schema has 0% description coverage, so the description must explain parameters. It only mentions the confirm parameter ('exact confirmation string'), and does not explain guildId, channelId, dryRun, or reason. The dryRun parameter's default and effect are not described, so parameter semantics are inadequately compensated.

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

Purpose5/5

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

The description uses the specific verb 'Delete' and identifies the resource 'a channel', clearly distinguishing it from siblings like discord_delete_role and discord_upsert_channel. It is unambiguous and directly states the tool's core function.

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

Usage Guidelines3/5

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

The description provides context on when the tool can be used by listing prerequisites (full mode, destructive enablement, exact confirmation string), but it does not explicitly specify when to use this tool versus alternatives or when not to use it. This gives partial guidance without clear exclusions.

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

discord_delete_roleC

Delete a role with an exact confirmation string.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
reasonNo
roleIdYes
confirmYes
guildIdYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits itself. It mentions the confirmation string but omits that deletion is destructive/irreversible, does not explain the dryRun parameter's role, and lacks any mention of permission requirements or failure conditions.

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, easy to parse and front-loaded. However, given the tool's complexity and the importance of the confirmation mechanism, a bit more detail would be warranted 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?

This is a destructive tool with 5 parameters, no output schema, and no annotations. The description only covers the confirmation requirement and misses essential context like dryRun behavior, permanent deletion, and permission needs, making it insufficient for safe invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needs to compensate. It only clarifies the 'confirm' parameter (exact confirmation string) but provides no meaning for guildId, roleId, dryRun, or reason. This is minimal compensation for five parameters.

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 'Delete a role with an exact confirmation string' clearly states the action (delete) and the target resource (role), with a specific condition (exact confirmation string). This distinguishes it from sibling tools like discord_delete_channel or discord_upsert_role.

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

Usage Guidelines1/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. There is no mention of preconditions, when deletion would be appropriate, or which sibling tools to use instead.

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

discord_emojiC

List, create, modify, or delete guild emojis. Create accepts a Discord data URI in body.image.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
actionYes
dryRunNo
reasonNo
confirmNo
emojiIdNo
guildIdYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does mention the body.image data URI for create, but it fails to disclose that dryRun defaults to true, that confirm may be required for destructive actions, or any permission requirements or side effects.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is concise and immediately communicates the CRUD scope, though it could benefit from additional sentences to clarify key parameters and safety behavior.

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 performs four distinct actions, has 7 parameters including a nested body object, and has no output schema. The description only scratches the surface, omitting how list results are returned, the meaning of dryRun and confirm, and how modify/delete identify their targets. This is substantially incomplete for a tool of this complexity.

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 all 7 parameters. It only adds meaning for body.image in the create action. The roles of guildId, action, dryRun, confirm, emojiId, reason, and the body object are left to the schema, with no additional explanation.

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

Purpose5/5

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

The description clearly states the tool's function with specific verbs ('List, create, modify, or delete') and a specific resource ('guild emojis'). This distinguishes it from sibling tools that target channels, roles, messages, or guild settings.

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, and no exclusions. The description only lists what operations are possible without explaining under what circumstances each should be chosen.

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

discord_export_snapshotA

Export guild metadata, roles, channels, AutoMod, onboarding, and welcome screen for planning or backup.

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdYes
memberLimitNo
includeMembersNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It lists what is exported, which is useful, but it does not clarify that the operation is read-only, describe the return format, or mention that includeMembers can add a member list. The phrase 'for planning or backup' hints at a snapshot behavior but is not fully explicit.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that covers the main purpose and content without wasting words. It is concise and well-structured.

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

Completeness3/5

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

Given there is no output schema and no annotations, the description should provide more detail about what the export includes and how parameters affect the result. It covers the main scope but omits the optional member inclusion and limit behavior, leaving gaps for the agent.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate by explaining parameters. It does not mention guildId, memberLimit, or includeMembers. The parameter names give some hints, but the description adds no additional meaning, and memberLimit's effect on output is unclear.

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

Purpose5/5

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

The description uses a specific verb 'Export' and clearly lists the resources included (guild metadata, roles, channels, AutoMod, onboarding, welcome screen). This distinguishes it from sibling tools like discord_get_guild, discord_onboarding, and discord_welcome_screen, which target individual areas.

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

Usage Guidelines4/5

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

The description provides clear context by stating the tool is 'for planning or backup', which implies when to use it. However, it does not explicitly mention alternatives or when not to use it, such as 'for individual components use discord_get_guild or discord_onboarding'.

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

discord_get_guildA

Read a guild and its approximate member/presence counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdYes

TDQS

A3.8/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 counts are 'approximate', which hints at estimation or caching, but it does not mention permissions, rate limits, or error behavior. This adds some value beyond the tool name but leaves significant gaps.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently conveys the essential purpose without any filler or redundancy.

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

Completeness4/5

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

For a simple read tool with one parameter and no output schema, the description covers the main return values (approximate member/presence counts) and the action. It is reasonably complete, though it omits potential error cases or further details about the response.

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 guildId with a pattern; there is no description field. The tool description references 'a guild', which implies guildId is the target, but it does not explicitly explain the parameter or its format. The meaning is somewhat clear from the name and context but not fully elaborated.

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 ('a guild'), and distinguishes it by specifying 'approximate member/presence counts'. This is specific and separates it from sibling tools like modify or delete operations.

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 verb 'Read' implies when to use this tool (for read-only access to guild information), but it does not explicitly mention alternatives or exclusions. Sibling tools like discord_raw_guild_request or discord_members are not referenced, so guidance is only implied.

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

discord_healthA

Validate the Discord bot token and show the MCP safety configuration without exposing secrets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.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 transparency burden. It indicates a non-destructive action ('validate' and 'show') and adds a key behavioral guarantee: 'without exposing secrets'. However, it doesn't disclose what happens on invalid tokens, the response format, or any potential side effects. It meets the baseline but lacks deeper behavioral context.

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

Conciseness5/5

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

The description is a single sentence, concise and front-loaded with the primary action ('Validate the Discord bot token'), followed by a secondary action and a safety qualification. Every word earns its place, with no repetition or filler.

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

Completeness4/5

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

For a simple tool with no parameters and no output schema, the description provides sufficient context: it validates the token and shows safety config. It doesn't detail return values, but the purpose is clear enough for an agent to invoke it. The lack of an output schema is partially offset by the description's clarity about what the tool exposes.

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

Parameters4/5

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

The tool has no parameters, and the schema coverage is 100% (empty properties). The description adds value by explaining what the tool does with those zero parameters, making the semantics clear. With no parameters to document, a baseline of 4 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs: 'Validate the Discord bot token' and 'show the MCP safety configuration'. It identifies the resource (bot token and safety config) and is distinct from sibling tools like discord_current_bot_profile or discord_modify_guild, focusing on health/status rather than management.

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

Usage Guidelines4/5

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

The description provides clear context: this is a diagnostic tool for validating credentials and inspecting safety settings. While it doesn't explicitly state when not to use it or name alternatives, the context is clear enough for an agent to recognize this as the go-to tool for health checks and configuration review, distinguishing it from mutation or data-retrieval tools among siblings.

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

discord_known_permissionsA

List permission names accepted by blueprint and overwrite tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/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. The verb 'List' clearly indicates a read-only operation, and the description states exactly what is returned (permission names). It doesn't mention edge cases like whether the list is exhaustive, but for a simple list tool, this is sufficient.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. It conveys the essential purpose and scope without any fluff or redundant information.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, no output schema, and a single clear action), the description is complete. It explains what the tool does and even references the related tool categories ('blueprint and overwrite tools'), providing enough context for an agent to know when to use it.

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

Parameters4/5

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

The tool has zero parameters, and the input schema is empty. The baseline for 0 parameters is 4, and the description appropriately adds no parameter details since none exist.

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

Purpose5/5

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

The description uses the explicit verb 'List' and specifies the resource as 'permission names accepted by blueprint and overwrite tools.' This clearly distinguishes it from sibling tools like discord_health or discord_get_guild, which serve different purposes.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when you need to know which permission names are valid for blueprint or overwrite tools. It doesn't explicitly list alternative tools or state when not to use it, but the context is clear given the sibling tools.

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

discord_list_messagesC

Read recent messages from a channel in an allowed guild.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNo
limitNo
beforeNo
guildIdYes
channelIdYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the operation is a read, but does not explain sorting, pagination behavior, permissions beyond 'allowed guild', or what the response contains. Minimal disclosure.

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, direct sentence with no wasted words. However, its brevity sacrifices necessary detail; it is concise but under-specified.

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

Completeness2/5

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

With 5 parameters (2 required), no output schema, and no annotations, the description is too sparse. It doesn't explain the meaning of the parameters or the return value, leaving the agent without enough context to use the tool correctly for varied use cases.

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 coverage is 0%, and the description provides no explanation for after, before, limit, guildId, or channelId. The meaning of these parameters is left entirely to the schema's type/pattern, which is insufficient for correct invocation.

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 ('Read recent messages') and the resource ('from a channel in an allowed guild'). It distinguishes from the sibling 'discord_message' by implying multiple messages, though it doesn't explicitly name alternatives.

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 vs alternatives like discord_message. The 'allowed guild' phrase hints at permission context but does not provide exclusions or alternative suggestions.

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

discord_member_rolesB

Add and remove multiple roles from a guild member.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
reasonNo
userIdYes
guildIdYes
addRoleIdsNo
removeRoleIdsNo

TDQS

B3.4/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. It only states that roles are added/removed without disclosing permissions, the dryRun simulation behavior, transactional semantics, or partial-failure handling. The presence of a dryRun parameter in the schema is not mentioned, representing a notable gap.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no unnecessary words. Every word adds value, making it appropriately concise and well-structured.

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

Completeness2/5

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

With no annotations, no output schema, and six parameters, the description is too sparse. It omits the dryRun simulation feature, required permissions, and return behavior, making it insufficient for an agent to fully anticipate how the tool behaves in edge cases or what it returns. Like the update_drive example, this is a mutation tool that should provide more context.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by clarifying that addRoleIds and removeRoleIds correspond to the 'multiple roles' to add/remove and that guildId/userId identify the member. However, it does not explain dryRun or reason, leaving two parameters without semantic context beyond their 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 uses specific verbs 'Add and remove' with resource 'multiple roles' and target 'guild member', clearly distinguishing this from sibling tools like discord_upsert_role (role definitions) and discord_moderate_member (moderation actions). It precisely conveys the tool's scope and function.

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 when modifying member role assignments but offers no explicit guidance on when to prefer this tool over alternatives. Unlike the high-scoring example, it does not name sibling tools or state exclusions, so the usage context is only implicit.

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

discord_membersB

Get one member or list members. Bulk listing may require the Guild Members privileged intent.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNo
limitNo
userIdNo
guildIdYes

TDQS

B3.4/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 disclosure burden. It does reveal a behavioral trait by noting that bulk listing may require a privileged intent, which is useful. However, it omits other behavioral details such as return format, pagination behavior, or error handling, so transparency is partial.

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

Conciseness5/5

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

The description is extremely concise: two short sentences with no filler. The first sentence states the core action, and the second adds a single important caveat. Every word earns its place.

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?

Despite having 4 parameters and no output schema, the description is minimal. It lacks details about listing pagination (after), response shape, and edge cases like missing userId or limit behavior. This leaves the agent under-informed for a non-trivial list operation.

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

Parameters3/5

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

The input schema has 0% description coverage, so the description must add parameter meaning. It hints at two modes: 'one member' likely corresponds to userId, and 'list members' relates to after/limit. However, it does not explain the required guildId or the pagination semantics of 'after', leaving gaps.

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

Purpose4/5

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

The description clearly states the tool's action: 'Get one member or list members.' This is a specific verb+resource combination that conveys the core purpose. However, it does not explicitly differentiate from sibling tools like discord_member_roles or discord_moderate_member, so it is not 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 Guidelines3/5

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

The description provides a contextual prerequisite for bulk listing ('may require the Guild Members privileged intent'), but it does not specify when to use this tool over alternatives or exclude when to use other member-related tools. The usage guidance is implied rather than explicit.

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

discord_messageC

Send, edit, delete, pin, or unpin a message in an allowed guild channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
dryRunNo
reasonNo
confirmNo
contentNo
guildIdYes
channelIdYes
messageIdNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavioral traits. It fails to mention that delete is destructive, that dryRun defaults to true, that confirm is required, or any side effects, reversibility, or permission specifics beyond 'allowed.' This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single concise sentence, front-loaded with all five actions. It contains no redundant words and is immediately scannable. While under-specification is a problem, that is addressed in other dimensions.

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 8 parameters, 5 possible actions, no annotations, and no output schema, this one-line description is grossly incomplete. It does not indicate required fields per action, safety mechanisms like dry-run, confirmation steps, or behavior in failure scenarios.

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 for the lack of parameter documentation. It does not explain dryRun, confirm, reason, content, or messageId, nor which parameters are required for each action. The only implied meaning is the 'action' enum, which is already in the schema.

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

Purpose5/5

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

The description clearly identifies the tool as handling message operations (send, edit, delete, pin, unpin) in a guild channel. This is a specific verb+resource combination that distinguishes it from sibling tools like discord_list_messages (read-only) and discord_upsert_channel (channel management).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives or when not to use it. The phrase 'allowed guild channel' hints at permissions but does not constitute explicit usage guidelines. Sibling tools are not mentioned.

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

discord_moderate_memberC

Modify, timeout, kick, ban, or unban a guild member. Removal actions require exact confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
actionYes
dryRunNo
reasonNo
userIdYes
confirmNo
guildIdYes
deleteMessageSecondsNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It does mention that 'Removal actions require exact confirmation,' which hints at a safety mechanism, but it fails to explain the dryRun default, the meaning of confirm, or potential side effects like message deletion. This is insufficient for a tool that can kick or ban members.

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 brief and front-loaded, but it is under-specified rather than concise in a helpful way. It packs multiple action verbs into one sentence but omits critical details, making it feel rushed rather than efficiently structured.

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

Completeness2/5

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

Given the tool's complexity (8 parameters, nested body object, no output schema, no annotations), the description is far from complete. It lacks information about how confirmation works, the effect of dryRun, the purpose of deleteMessageSeconds, and the expected return value, leaving substantial gaps for an agent.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds virtually no parameter information. It does not explain guildId, userId, action, body, dryRun, confirm, reason, or deleteMessageSeconds. The only hint is the confirmation requirement, but without specifying which parameter facilitates that.

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 a distinct moderation purpose: 'Modify, timeout, kick, ban, or unban a guild member.' This differentiates it from sibling tools like discord_modify_guild or discord_member_roles. However, 'timeout' appears in the description but not in the action enum, causing slight ambiguity about supported actions.

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 discord_member_roles for role modifications or discord_modify_guild for guild-level changes. The only usage hint is the generic statement about what actions are possible, with no explicit context or exclusions.

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

discord_modify_guildB

Modify guild-level settings such as name, description, locale, verification, rules channel, and safety channels.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
dryRunNo
reasonNo
guildIdYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only says 'Modify guild-level settings' without disclosing side effects, permission requirements, reversibility, or the significance of the dryRun parameter (which defaults to true). This leaves behavioral expectations unclear.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler: 'Modify guild-level settings such as...' It is appropriately concise and easy to parse.

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

Completeness2/5

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

Given the open-ended body schema and no output schema, the description is too sparse. It does not describe the structure of the body (e.g., partial vs. full update), the purpose of dryRun, or how to interpret the response. More context is needed for reliable 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?

The schema has 0% description coverage, so the description must compensate. It names several body properties (name, description, locale, verification, rules channel, safety channels), giving partial semantics for the body object, but it does not explain guildId, dryRun, or reason. Since the body is open-ended, these examples are helpful but incomplete.

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 ('Modify') and the resource ('guild-level settings'), and enumerates example fields (name, description, locale, verification, rules channel, safety channels). This distinguishes it from sibling tools like discord_get_guild (read), discord_upsert_channel (channels), and discord_upsert_role (roles).

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 alternatives. It does not mention that discord_get_guild should be used for reading, or that discord_raw_guild_request can be used for low-level requests, nor does it specify prerequisites like required permissions.

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

discord_onboardingC

Get or replace guild onboarding configuration. Discord enforces Community onboarding constraints.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
actionYes
dryRunNo
reasonNo
guildIdYes

TDQS

C2.4/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. It mentions that Discord enforces Community onboarding constraints, implying validation, but fails to disclose whether 'update' is destructive, what authorization is required, or what happens on success/failure. The mutation behavior is inadequately described.

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 short and front-loaded, but it is underspecified. The first sentence states the purpose; the second adds a constraint note. While concise, it wastes the opportunity to add critical details, making it merely acceptable rather than well-structured.

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

Completeness1/5

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

Given the tool's complexity (5 params, no output schema, no annotations, mutation possible), the description is severely incomplete. It omits the meaning of 'action', the structure of 'body', the role of 'dryRun', and any return-value behavior. The single constraint remark is insufficient.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not clarify any of the 5 parameters (guildId, action, body, dryRun, reason). The word 'onboarding configuration' hints at 'body' but gives no concrete meaning for the parameters, leaving the agent to guess.

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

Purpose4/5

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

The description clearly states the tool operates on 'guild onboarding configuration' with verbs 'Get or replace', distinguishing it from sibling tools like discord_welcome_screen or discord_modify_guild. However, 'replace' is not exactly the same as the 'update' action in the schema, introducing slight 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 provided on when to use 'get' versus 'update', nor when this tool is preferable to other guild-modification tools. The constraint note is informative but does not give actionable usage criteria.

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

discord_plan_blueprintA

Compare a version-1 server blueprint with the live guild and return a non-destructive action plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
guildIdYes
blueprintYes

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 of behavioral disclosure. It explicitly states 'non-destructive', which is a key safety trait, but does not describe other behaviors such as whether it reads live guild data, any permission requirements, or the structure of the returned action plan.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action ('Compare') and includes a concise scope and safety qualifier. Every word earns its place, with no redundancy or unnecessary detail.

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

Completeness2/5

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

Given the tool's complexity (large nested blueprint object, two required parameters, no output schema, no annotations), a one-sentence description is insufficient. It does not explain what an 'action plan' contains, how it should be used, or what to expect as a return value, leaving significant gaps for an agent to fill.

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

Parameters2/5

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

The description adds minimal meaning beyond the input schema. Saying 'version-1 server blueprint' restates the schema's version const:1 and the 'blueprint' parameter name. It does not explain the parameters in a way that helps an agent understand their semantics, and with 0% schema description coverage, the description fails to compensate.

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 a specific verb ('Compare') and resource ('a version-1 server blueprint with the live guild'), and specifies the output ('non-destructive action plan'). This distinguishes it from sibling tools like discord_apply_blueprint (which applies changes) and discord_export_snapshot (which exports a snapshot).

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 phrase 'non-destructive action plan' implies this is for planning rather than applying, but the description does not explicitly state when to use it versus alternatives, nor does it mention using it as a precursor to apply_blueprint. Usage context is only implicit.

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

discord_raw_guild_requestA

Advanced escape hatch for Discord REST endpoints not covered above. Routes are restricted to the allowed guild, verified channels, webhooks, invites, stage instances, and this bot's guild commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
routeYes
dryRunNo
methodYes
reasonNo
confirmNo
guildIdYes

TDQS

A3.7/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 route restrictions (allowed guild, verified channels, etc.), which is useful behavioral context. However, it doesn't warn about side effects, authorization requirements, or the meaning of safety parameters like dryRun/confirm, so transparency is partial.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and restrictions. Every word earns its place; no fluff or repetition.

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 complex raw-request tool with 7 parameters, no output schema, and no annotations, this description is under-specified. It gives scope but lacks operational detail: how to construct a route, what the confirm field is for, what a dryRun does, and what responses to expect. This is insufficient for safe and correct invocation.

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

Parameters2/5

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

The description provides zero parameter information, despite the schema having 7 parameters with 0% coverage. While the schema types and enum offer some hints, the description adds no meaning to body, route, dryRun, or confirm, failing to compensate for the low schema coverage.

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

Purpose5/5

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

The description clearly identifies this as an 'advanced escape hatch' for Discord REST endpoints, with an explicit scoping to routes 'not covered above.' This distinguishes it from sibling tools and communicates its general-purpose raw request nature.

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?

It states the tool should be used for endpoints not covered by other tools, which implies a fallback role. It lists the specific resource types allowed (guild, verified channels, webhooks, etc.), giving usable context for when to invoke it, though it doesn't name alternative tools explicitly.

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

discord_reorder_channelsB

Bulk reorder channels and optionally move them between categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
reasonNo
guildIdYes
positionsYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits but fails to mention the dryRun default (true) or that the operation may not persist changes. It also omits permissions, reversibility, and potential side effects, offering only superficial insight into bulk reordering.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded with the action and includes the key qualifiers 'Bulk' and 'optionally move between categories' without wasted words. It is efficiently structured.

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?

As a mutation tool with no annotations and no output schema, the description is too sparse. It omits critical context such as the dryRun default, permission requirements, and what happens to existing channel arrangements. This leaves an agent uncertain about the tool's full behavior and prerequisites.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no parameter-specific information. The four parameters (guildId, positions, dryRun, reason) are not mentioned, leaving agents to infer meaning solely from property names. This does not compensate for the schema's lack of descriptions.

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

Purpose5/5

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

The description uses the specific verb 'reorder' and resource 'channels,' and adds the qualifier 'Bulk' and 'optionally move them between categories,' making its function clear. This distinguishes it from sibling tools like discord_reorder_roles and other channel management tools.

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

Usage Guidelines3/5

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

The description implies the tool is for reordering channels but does not explicitly state when to use it versus alternatives or provide exclusions. It lacks a targeted 'use this for X, use that for Y' guidance that would earn a higher score.

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

discord_reorder_rolesB

Bulk reorder roles below the bot's highest role.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
reasonNo
guildIdYes
positionsYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses a single constraint (below the bot's highest role) but omits critical behavioral traits such as the default dryRun behavior (which defaults to true), permission requirements, and what happens on invalid positions. This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no unnecessary words. It conveys the core action and a key constraint efficiently.

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

Completeness2/5

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

Given this is a mutation tool with no annotations, no output schema, and four parameters with zero schema description coverage, the description is far too sparse. It lacks information about dry-run semantics, error handling, and the nature of the response, making the tool difficult to use correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It does not explain the four parameters (guildId, positions, dryRun, reason) beyond implying that 'positions' relates to role ordering. The phrase 'bulk reorder' provides minimal semantic value, but without explicit clarification, agents cannot reliably construct correct calls.

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 (bulk reorder), the resource (roles), and a key constraint (below the bot's highest role). It distinguishes from the sibling tool discord_reorder_channels by specifying 'roles' versus channels.

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

Usage Guidelines3/5

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

The description implies usage for bulk role reordering but does not provide explicit guidance on when to use this tool versus alternatives like discord_upsert_role or discord_delete_role. The constraint 'below the bot's highest role' hints at a limitation but not alternative recommendations.

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

discord_set_channel_permissionC

Create or replace a role/member permission overwrite on a channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
denyNo
allowNo
dryRunNo
reasonNo
guildIdYes
targetIdYes
channelIdYes
targetTypeYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'Create or replace' indicating mutation, but it does not disclose that 'replace' overwrites existing permissions, does not mention required permissions (e.g., manage_permissions), and does not explain the dryRun parameter's safety behavior. This leaves critical behavioral gaps.

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 clear sentence with no wasted words, which is structurally fine. However, given the tool's complexity (8 parameters, critical behavior like dryRun), the description is under-specified and arguably too short to be 'appropriately sized.' It's concise but at the expense of necessary detail.

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

Completeness1/5

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

There is no output schema and no annotations, so the description must be the sole source of context. It fails to explain return values, permission requirements, dryRun semantics, or the effect of replacing an overwrite. This makes the tool nearly unusable without external knowledge, so context is highly incomplete.

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 description provides zero parameter information beyond the schema. With schema description coverage at 0%, the description fails to explain what allow, deny, dryRun, reason, or targetType mean in practice. It only hints at targetType via 'role/member' but does not add any semantic value over the raw JSON schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Create or replace a role/member permission overwrite on a channel.' This is a specific action with a specific resource, and it distinguishes itself from sibling tools like discord_upsert_channel or discord_upsert_role by focusing on permission overwrites.

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 use case is implied: use when you need to set or replace a role/member permission overwrite on a channel. However, no explicit alternatives or when-not-to-use guidance is provided, so it relies on the reader to infer when this tool is appropriate.

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

discord_upsert_channelC

Create or modify any guild channel, category, forum, media, stage, voice, or announcement channel using Discord API fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
dryRunNo
reasonNo
guildIdYes
channelIdNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, so the description must carry the full behavioral burden. It only says 'create or modify' without disclosing critical behaviors such as the default dryRun=true, the role of channelId in distinguishing create vs update, permission requirements, or how invalid fields are handled. This leaves the agent without essential safety or operational context.

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, unfussy sentence that gets to the point with no wasted words. However, it is so brief that it omits valuable context that could be added without bloat, such as the create-vs-update distinction or the dryRun default, so it is not maximally 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 is complex (free-form body, optional channelId, dryRun, reason) but has no schema descriptions, no annotations, and no output schema. The description provides only the basic purpose and does not explain the upsert semantics, parameter roles, or return behavior, making it insufficient 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 0% description coverage, so the description must compensate, but it only vaguely references 'Discord API fields' for the body parameter. It gives no explanation of guildId, channelId, dryRun, or reason, nor how they affect the operation. For a tool with five parameters, this is critically insufficient.

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

Purpose4/5

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

The description clearly states the tool creates or modifies Discord channels, listing eight channel types (guild, category, forum, media, stage, voice, announcement). This distinguishes it from sibling tools that delete, reorder, or set permissions on channels. However, the phrase 'using Discord API fields' is somewhat vague, and 'any' may overstate the supported set.

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 this is the go-to tool for channel creation/update but does not explicitly state when to use it versus alternatives like discord_raw_guild_request or discord_delete_channel. It mentions no exclusions, prerequisites, or recommended contexts beyond the basic purpose.

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

discord_upsert_roleC

Create or modify a guild role. Role hierarchy still limits what the bot can manage.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
dryRunNo
reasonNo
roleIdNo
guildIdYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It discloses that role hierarchy limits manageability, which is useful, but it omits critical behaviors like the dryRun default (true) that would prevent actual changes, the semantics of roleId (present for update, absent for create), and any audit log or side effects.

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

Conciseness5/5

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

The description is exceptionally concise: two short sentences. The first states the core purpose; the second adds a relevant limitation. No redundant phrases. It is front-loaded with the action verb.

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 5 parameters, a nested object schema, no output schema, and no annotations, the description is far from complete. It lacks any detail on request/response, dryRun semantics, or how to construct the body. It only provides a hint about role hierarchy, leaving major knowledge 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?

The schema offers no descriptions (0% coverage), and the description does not compensate. None of the parameters (guildId, body, roleId, dryRun, reason) are explained. The body parameter, an object with arbitrary properties, is completely opaque, leaving the agent with no understanding of what fields to supply.

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

Purpose5/5

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

The description uses a specific verb phrase 'Create or modify' with a concrete resource 'guild role,' clearly distinguishing the tool from siblings like 'discord_delete_role' and 'discord_reorder_roles.' The term 'upsert' is reinforced, making intent unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as discord_delete_role or discord_reorder_roles. It only mentions a role hierarchy limitation, which is a constraint rather than usage direction. No when/when-not scenarios are given.

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

discord_welcome_screenC

Get or modify the Community welcome screen.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
actionYes
dryRunNo
reasonNo
guildIdYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full burden of behavioral disclosure. It only says 'get or modify,' which implies both read and write operations, but it does not explain required permissions, side effects of updates, behavior of dryRun, or any consequences. This is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is a single sentence with no filler words, making it efficient and front-loaded. However, it is extremely terse and omits important context, so it is not as polished as the highest examples.

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

Completeness1/5

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

With 5 parameters, no output schema, and no annotations, the description must provide substantial guidance, but it only offers a one-sentence purpose. It does not cover the structure of the welcome screen, the meaning of body, the role of dryRun, or any expected return values, making it completely inadequate for the tool's complexity.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the parameters. It does not explain what body, action, dryRun, reason, or guildId do, beyond what the raw schema shows. The description entirely fails to compensate for the lack of parameter documentation.

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 identifies the resource (Community welcome screen) and the verbs (get or modify), making the tool's purpose understandable. However, it does not explicitly distinguish this tool from sibling tools like discord_onboarding or discord_modify_guild, so it loses a point for lack of sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no exclusions, and no contextual triggers. The action parameter (get/update) implies some usage, but the description itself offers no explicit direction.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 27 tool updatesv0.1.0
    • First observeddiscord_apply_blueprint
    • First observeddiscord_audit_log
    • First observeddiscord_automod
    • First observeddiscord_current_application
    • First observeddiscord_current_bot_profile
    • First observeddiscord_delete_channel
    • First observeddiscord_delete_role
    • First observeddiscord_emoji
    • First observeddiscord_export_snapshot
    • First observeddiscord_get_guild
    • First observeddiscord_health
    • First observeddiscord_known_permissions
    • First observeddiscord_list_messages
    • First observeddiscord_member_roles
    • First observeddiscord_members
    • First observeddiscord_message
    • First observeddiscord_moderate_member
    • First observeddiscord_modify_guild
    • First observeddiscord_onboarding
    • First observeddiscord_plan_blueprint
    • First observeddiscord_raw_guild_request
    • First observeddiscord_reorder_channels
    • First observeddiscord_reorder_roles
    • First observeddiscord_set_channel_permission
    • First observeddiscord_upsert_channel
    • First observeddiscord_upsert_role
    • First observeddiscord_welcome_screen

TDQS

B3.2/5.0
Disambiguation5/5

Each tool targets a distinct Discord resource or action, such as channels, roles, members, messages, emojis, or guild settings. Even the blueprint-related tools have non-overlapping responsibilities: export reads, plan compares, and apply writes. No two tools appear to do the same thing.

Naming Consistency4/5

All tools share the 'discord_' prefix, and most follow a clear verb_noun pattern (e.g., discord_get_guild, discord_upsert_channel, discord_apply_blueprint). Some tools use plain nouns (discord_members, discord_emoji, discord_message), which is a minor deviation but still predictable and readable.

Tool Count2/5

With 27 tools, this server exceeds the typical range for a well-scoped MCP (3-15) and falls into the 'too many' category. While each tool covers a different area, the high number may burden agents with too many choices, though the broad Discord API scope partially justifies it.

Completeness5/5

The tool set covers comprehensive CRUD and lifecycle operations for guilds, channels, roles, members, messages, emojis, onboarding, welcome screen, AutoMod, and bot settings. It also includes a blueprint system and a raw API escape hatch, so there are no obvious gaps in Discord server management.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A local MCP server that reads Discord servers and channels and optionally sends messages with explicit allowlists, read-only by default.
    49
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server over the real Discord REST API: 5 read-only tools plus 7 write tools gated off by default behind DISCORD_MCP_ENABLE_WRITE.
    12
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Local, read-only MCP server that connects to Discord via REST API, allowing listing guilds, channels, and messages with strict access controls and no write operations.
    5
    -
  • A
    license
    B
    quality
    B
    maintenance
    A local MCP server that lets AI clients control a Discord bot via Discord's REST API, offering messaging, administration, and moderation tools. Includes safety features such as guild scoping, allowlists, and opt-in write permissions.
    20
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TheETR/Thee-Discord-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server