TheeDiscordMCP
TheeDiscordMCP lets you fully manage an allowlisted Discord server through the official REST API, with multiple safety modes, dry-run planning, and an idempotent blueprint system.
Guild & Settings: Read/modify guild properties (name, description, verification level, locale) and manage onboarding, welcome screen, membership screening.
Channel Management: Create, update, delete, reorder text/voice/stage/forum/media/category channels; set permission overwrites.
Role Management: Create, update, delete, reorder roles; bulk assign/remove roles from members.
Member Moderation: List/search members; modify properties; timeout, kick, ban, unban (destructive actions require exact confirmation).
Messages: List, send, edit, delete, pin/unpin messages; bulk-delete messages.
Automod & Emojis: Manage AutoMod rules; list/create/modify/delete guild emojis.
Webhooks & Invites: Full webhook lifecycle (create, execute, etc.) with secret redaction; manage invites.
Voice: Inspect, move, disconnect, mute/deafen members in voice channels.
Bot Profile: Read/update operator bot’s username, avatar, banner, and application metadata.
Blueprint System: Export a guild snapshot; plan changes via a JSON blueprint (non‑destructive dry‑run); apply blueprints idempotently without deleting unmanaged resources.
Safety: Three modes –
read-only(default),safe-write(creates/updates),full(all operations); destructive actions require opt‑in and exact confirmation strings.Audit & Health: Read audit logs; validate bot token and list accepted permission names.
Raw API: Tightly scoped HTTP escape hatch for Discord endpoints not covered by named tools.
Rate Limiting & State: Automatic rate‑limit handling; local state tracking for idempotent ops.
Provides tools for inspecting and managing an allowlisted Discord server, covering guild settings, roles, channels, messages, members, moderation actions, AutoMod, onboarding, emojis, and audit logs.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TheeDiscordMCPExport the server snapshot to review current setup"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Thee Discord MCP
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 |
| yes | no | no | no |
| yes | yes | no | no |
| 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 .envOpen .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=3Leave 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 check3. 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 = 120Restart 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:
discord_export_snapshotAdjust the blueprint to preserve intentional existing resources.
discord_plan_blueprintordiscord_apply_blueprintwithdryRun: true.Review every planned action.
Switch to
safe-writeand rundiscord_apply_blueprintwithdryRun: false.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=trueRun 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 buildThe 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 toolsdiscord_apply_blueprintA
Idempotently create/update roles, categories, channels, forum tags, permissions, messages, pins, and guild settings from one blueprint. It never deletes unmanaged resources.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | ||
| reason | No | ||
| guildId | Yes | ||
| blueprint | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| before | No | ||
| userId | No | ||
| guildId | Yes | ||
| actionType | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| action | Yes | ||
| dryRun | No | ||
| reason | No | ||
| ruleId | No | ||
| confirm | No | ||
| guildId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| action | Yes | ||
| dryRun | No | ||
| reason | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| action | Yes | ||
| dryRun | No | ||
| reason | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | ||
| reason | No | ||
| confirm | Yes | ||
| guildId | Yes | ||
| channelId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | ||
| reason | No | ||
| roleId | Yes | ||
| confirm | Yes | ||
| guildId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| action | Yes | ||
| dryRun | No | ||
| reason | No | ||
| confirm | No | ||
| emojiId | No | ||
| guildId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes | ||
| memberLimit | No | ||
| includeMembers | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| guildId | Yes | ||
| channelId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | ||
| reason | No | ||
| userId | Yes | ||
| guildId | Yes | ||
| addRoleIds | No | ||
| removeRoleIds | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| userId | No | ||
| guildId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| dryRun | No | ||
| reason | No | ||
| confirm | No | ||
| content | No | ||
| guildId | Yes | ||
| channelId | Yes | ||
| messageId | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| action | Yes | ||
| dryRun | No | ||
| reason | No | ||
| userId | Yes | ||
| confirm | No | ||
| guildId | Yes | ||
| deleteMessageSeconds | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| dryRun | No | ||
| reason | No | ||
| guildId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| action | Yes | ||
| dryRun | No | ||
| reason | No | ||
| guildId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes | ||
| blueprint | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| route | Yes | ||
| dryRun | No | ||
| method | Yes | ||
| reason | No | ||
| confirm | No | ||
| guildId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | ||
| reason | No | ||
| guildId | Yes | ||
| positions | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | ||
| reason | No | ||
| guildId | Yes | ||
| positions | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| deny | No | ||
| allow | No | ||
| dryRun | No | ||
| reason | No | ||
| guildId | Yes | ||
| targetId | Yes | ||
| channelId | Yes | ||
| targetType | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| dryRun | No | ||
| reason | No | ||
| guildId | Yes | ||
| channelId | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| dryRun | No | ||
| reason | No | ||
| roleId | No | ||
| guildId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| action | Yes | ||
| dryRun | No | ||
| reason | No | ||
| guildId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
27 tool updates
v0.1.0- First observed
discord_apply_blueprint - First observed
discord_audit_log - First observed
discord_automod - First observed
discord_current_application - First observed
discord_current_bot_profile - First observed
discord_delete_channel - First observed
discord_delete_role - First observed
discord_emoji - First observed
discord_export_snapshot - First observed
discord_get_guild - First observed
discord_health - First observed
discord_known_permissions - First observed
discord_list_messages - First observed
discord_member_roles - First observed
discord_members - First observed
discord_message - First observed
discord_moderate_member - First observed
discord_modify_guild - First observed
discord_onboarding - First observed
discord_plan_blueprint - First observed
discord_raw_guild_request - First observed
discord_reorder_channels - First observed
discord_reorder_roles - First observed
discord_set_channel_permission - First observed
discord_upsert_channel - First observed
discord_upsert_role - First observed
discord_welcome_screen
TDQS
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.
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.
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.
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
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
The official MCP Server for the Mux API
Curated, trust-first index of vetted MCP servers — scored tiers, monthly re-verified. Read-only.
A basic MCP server to operate on the Postman API.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA local MCP server that reads Discord servers and channels and optionally sends messages with explicit allowlists, read-only by default.49MIT
- AlicenseAqualityBmaintenanceMCP server over the real Discord REST API: 5 read-only tools plus 7 write tools gated off by default behind DISCORD_MCP_ENABLE_WRITE.12MIT
- FlicenseAqualityCmaintenanceLocal, 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-
- AlicenseBqualityBmaintenanceA 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.20MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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