Discord Management MCP
Provides tools for inspecting, backing up, and managing Discord guilds, including guild and member inventory, moderation and AutoMod, roles, channels, server configuration, backups, and restore planning with confirmation and backup safeguards.
Click on "Deploy 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., "@Discord Management MCPBack up my Discord server and report the backup ID and coverage."
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.
Discord Management MCP
Safe-by-default Discord management from any MCP client

Discord Management MCP is a local Model Context Protocol (MCP) server for inspecting, backing up, and managing Discord guilds. It runs over stdio, keeps the bot token and backup files on the operator's machine, and places confirmation, backup, and restore guards in front of every mutation. The server exposes 54 tools across guild inventory, moderation, roles, channels, server settings, backups, and restore planning.
It works with any MCP client that supports local stdio servers, including Claude Desktop, Claude Code, Cursor, VS Code, Codex, Windsurf, and Cline. This independently developed project is not affiliated with, endorsed by, sponsored by, or approved by Discord Inc.
New to Discord bots? The setup and first use guide walks through creating the application, inviting the bot with the right permissions, copying the server ID, registering the client, verifying the connection, and running the first safe backup and restore.
Install
The published package runs with one command:
npx --yes discord-management-mcpThe package is published on npm as discord-management-mcp and declares MCP registry metadata for io.github.TheStreamCode/discord-management-mcp through package.json and server.json.
Register with your client
Every client needs the same command, arguments, and DISCORD_TOKEN environment variable. Paste the equivalent of this entry into the client's MCP configuration:
{
"mcpServers": {
"discord-management": {
"command": "npx",
"args": ["--yes", "discord-management-mcp"],
"env": {
"DISCORD_TOKEN": "your_bot_token"
}
}
}
}Client | Registration |
Claude Desktop | Add the entry above to the MCP servers configuration. |
Claude Code | Add a local stdio server with the same command and arguments. |
Cursor | Add the entry above to the MCP configuration. |
VS Code | Add the same command and arguments in the client's MCP configuration. |
Codex | Add a stdio server entry with the same command and arguments. |
Windsurf | Add the entry above to the MCP configuration. |
Cline | Add the server in the MCP settings panel. |
Claude Desktop, Cursor, Windsurf, and Cline accept the mcpServers JSON shape shown above. Clients that use a different configuration schema accept the same command, args, and env values. See each client's own documentation for the exact file or command.
Related MCP server: mcp-gatehouse
Set up
The short version, with the full walkthrough in setup and first use:
Create the bot. Developer Portal > New Application > Bot > Reset Token. That token is the only credential the server needs. Do not use the Application ID, Public Key, or OAuth2 client secret.
Invite it. OAuth2 > URL Generator > scope
botplus the permissions you need. Start with View Channels, Manage Channels, Manage Roles, Manage Server, View Audit Log, and the moderation permissions you plan to use. Then drag the bot role above the roles it must edit.Copy the server ID. Enable Developer Mode, right-click the server icon, Copy Server ID. This number is the
guildIdargument, not the bot's application ID.Register the client. Use the configuration in Register with your client with
DISCORD_TOKENinenv, or put the token in.env.localin the working directory.Verify and back up. Ask the client to run
discord_list_guilds, thendiscord_backup_createfor your server, and readcoverage.channels.complete.
Example first request:
Use discord_list_guilds, then discord_backup_create for the server I name, and report the backup ID and coverage.Then change things only through the guarded path: create a backup, review the target objects, apply one small change, and confirm the result. Every mutation needs an audit reason:
{
"guildId": "123456789012345678",
"confirm": true,
"reason": "Create the approved community announcements channel"
}High-impact operations also require a guild-matched backupId unless the operator explicitly accepts allowWithoutBackup: true. The tool catalog lists the exact policy for every mutating tool.
Why this one
Many Discord MCP servers stop at read-only inspection or previewing a change, and some route the bot token through a hosted service. Discord Management MCP executes changes locally, but only through a guard and recovery path:
Capability | Typical preview-only server | Discord Management MCP |
Read-only inspection | Yes | Yes, 23 read-only tools |
Execute changes | No | Yes, 31 mutating and moderation tools |
Local backup before risky changes | Rarely | JSON schema v2 snapshots with channel coverage |
Restore | No | Plan with plan hash, apply with pre-restore backup |
Rollback guarantee | Not offered | Best effort, reported honestly with |
Data path | Often hosted | Local stdio only |
What that means in practice:
Local by design. The bot token, snapshots, restore plans, and stdio transport stay on the operator's machine. There is no hosted relay and no public HTTP listener.
Preview, then apply. Backups can be diffed and turned into a restore plan before anything changes, and plans carry a hash that apply can verify.
Backup to restore promise. A risky change can point at a same-guild snapshot; restore apply writes a fresh pre-restore backup before its first Discord mutation.
An explicit safety matrix. Every Discord mutation needs
confirm: trueand a reason. The listed high-impact tools need a same-guild backup. Emergency incident actions stay available without one.Truthful recovery. Restore reports skipped, lossy, applied, and failed operations instead of promising an impossible full rollback.
Backup to restore
The recovery path has three steps:
discord_backup_createwrites a JSON snapshot toBACKUP_DIRatomically, strips invite codes, webhook tokens, and other secrets, and records channel coverage incoverage.channels.discord_backup_diffanddiscord_backup_restore_planshow what would change. A plan includes aplanHashandNOT_RESTOREDwarnings for captured sections that Discord cannot recreate.discord_backup_restore_applycan verify anexpectedPlanHash, creates a pre-restore backup, then applies supported role and channel fields conservatively. Deletes remain opt-in.
Discord cannot restore original IDs after delete and recreate, message or audit-log history, exact invite codes, webhook tokens, or every community and discovery setting. The server reports those limits instead of hiding them. See safety and backups for the full model.
Tool coverage
The server registers 54 tools. See the tool catalog for every name and the guard matrix for the backup policy.
Domain | Tools |
Guild, member, and audit inventory | 17 |
Backups and restore | 6 |
Channels | 6 |
Roles | 7 |
Moderation and AutoMod | 13 |
Server configuration | 5 |
Total | 54 |
Read-only tools are annotated as read-only and never require confirmation. Mutating Discord tools require confirm: true plus a non-empty audit reason, and mutations run through a shared queue so they cannot interleave. discord_backup_create only writes a local snapshot and does not require confirmation.
Safety model
Every Discord mutation requires
confirm: trueand a non-emptyreason; the reason is passed to Discord where audit-log reasons are supported.High-impact tools require a backup from the same guild, or an explicit
allowWithoutBackup: trueacknowledgement.discord_set_incident_actionsis intentionally exempt: it is used during raids, and its changes are reversible.Restore apply creates its own pre-restore backup and retains its ID on every error path.
Backup writes are atomic, and backup paths are confined to the project directory with symlink and junction rejection.
Read-only tools are implemented and annotated as read-only.
See safety and backups for the guard matrix, channel coverage, and restore behavior, and design and trust boundaries for the runtime model. Report vulnerabilities privately through SECURITY.md.
Requirements
Node.js 24 or newer.
A Discord application with a bot token.
The bot invited to the target guild with only the permissions required for the intended tools.
ENABLE_MESSAGE_CONTENT and ENABLE_GUILD_MEMBERS are opt-in and require the matching privileged intents in the Discord Developer Portal. Since 2026-06-10, Discord reviews privileged intent usage at 10,000 users rather than 100 servers, and approved apps must reapply annually. See configuration for details.
Configuration
Configuration is read from the process environment first, then from .env.local in the working directory. Boolean values accept true/false, yes/no, on/off, or 1/0.
Variable | Purpose | Default |
| Discord bot token from Developer Portal > Bot > Token | Required |
| Relative directory for local JSON backups; it must stay inside the project directory |
|
| Stderr log level: |
|
| Enables message-content tools and requires the Discord Message Content intent |
|
| Enables the Guild Members gateway intent for workflows that require it |
|
See the configuration reference for token rules, logging behavior, and privileged-intent setup.
Privacy and security
Everything runs locally over stdio: the bot token, backup files, restore plans, and the server process itself never leave the operator's machine. Mutations are guarded by explicit confirmation and by backups that are validated for size, depth, structure, symlinks, and guild identity before planning or restore. A restore creates a pre-restore backup before its first Discord mutation and stops truthfully on operation failure. See design and trust boundaries and safety and backups for the full model, and SECURITY.md for private vulnerability reporting.
Troubleshooting
The server exits because DISCORD_TOKEN is missing or invalid
Set the Bot Token in the process environment or in .env.local in the working directory. A value that looks like a Discord Application Public Key is rejected with an explicit message: use the Bot Token, not the Application ID, Public Key, or OAuth2 client secret.
Message content comes back empty
Message-content tools need both ENABLE_MESSAGE_CONTENT=true and the Message Content Intent enabled in the Discord Developer Portal. Without both, Discord can return empty content, embeds, and attachments fields. Restart the server after changing either side. If the app is approaching the review threshold, remember that privileged intent access is reviewed at 10,000 users and must be renewed annually.
A mutation is rejected before it reaches Discord
Mutating tools require confirm: true and a non-empty reason. High-impact tools additionally require a backupId from the same guild, or an explicit allowWithoutBackup: true acknowledgement. discord_set_incident_actions is the exception for emergency use. Check the guard matrix before retrying.
Channels are missing from a backup or channel list
The bot can only back up channels it can view. Starting 2026-11-16, Discord omits channels the bot cannot view from GET /guilds/{id}/channels, and gateway payloads can carry obfuscated channel objects. Backups record this in coverage.channels and warn when coverage is incomplete. Grant VIEW_CHANNEL where the channels matter, and treat complete: false as a partial rollback point. See channel coverage and obfuscation.
Restore reports skipped or lossy operations
Discord cannot recreate original IDs, message or audit-log history, exact invite codes, webhook tokens, managed integration objects, or every community and discovery setting. Check the plan's planHash and its NOT_RESTORED warnings, then review the reported operations before retrying.
Logs are too quiet or too noisy
Set LOG_LEVEL to error, warn, info, or debug. Logs are JSON lines on stderr, so stdout stays reserved for MCP protocol traffic. Use debug while diagnosing a tool call and error for quiet hosts.
Development
Requirements: Node.js 24 or newer and npm from the lockfile.
git clone https://github.com/TheStreamCode/discord-management-mcp.git
cd discord-management-mcp
npm ci
npm run lint
npm run typecheck
npm test
npm run build
npm run verify:mcp
npm run preflight
npm run pack:check
npm audit --omit=dev --audit-level=highnpm run verify:mcp starts the built server over stdio with a placeholder token and checks the advertised MCP surface: 54 tools, deterministic tool listing, titles, descriptions, input and output schemas, and annotation hints. It never calls the Discord API.
Tests use mocks and must not contact Discord. Live mutations are never part of routine verification. The repository keeps its engineering guidance in AGENTS.md; it is not shipped in the npm package. See CONTRIBUTING.md for contribution rules.
Support
See SUPPORT.md. Use GitHub Issues for reproducible bugs and feature proposals, and report vulnerabilities privately through GitHub Security Advisories.
Contributing
See CONTRIBUTING.md. Pull requests must pass npm run preflight, npm run verify:mcp, and the required CI checks.
License
MIT, see LICENSE. Copyright (c) 2026 Michael Gasperini (Mikesoft).
This independently developed project is not affiliated with, endorsed by, sponsored by, or approved by Discord Inc. Discord is a trademark of Discord Inc. See NOTICE for the applicable Discord terms and policies.
Maintained by Michael Gasperini (Mikesoft). If this project helps you manage Discord communities safely, consider sponsoring its maintenance.
Available Tools
54 toolsdiscord_assign_roleAssign Discord roleC
Assign a role to a guild member.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| roleId | Yes | ||
| userId | Yes | ||
| confirm | No | ||
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| error | No | |
| action | Yes | |
| roleId | No | |
| userId | No | |
| guildId | No | |
| updated | No | |
| positions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it never mentions that this is a write requiring elevated permissions, that role hierarchy rules can cause failure, or what the 'confirm' flag does. With annotations present the bar is lower, but zero added context earns a 2.
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 short, front-loaded sentence with no filler, but this is under-specification rather than conciseness. The available budget is unused on information an agent genuinely needs for a permissioned mutation.
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 five-parameter permissioned mutation with an undocumented confirm gate, the description leaves out permissions, hierarchy constraints, idempotency behavior on repeat assignment, and parameter meaning. An output schema exists, so return values need not be explained, but the input side is entirely unaddressed.
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% across five parameters, and the description explains none of them. The 'confirm' boolean and 'reason' string (presumably the audit-log reason) are completely opaque, and the description does not even restate the required guildId/userId/roleId triple.
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?
States a specific verb and resource: 'Assign a role to a guild member'. This is unambiguous and separable from siblings like discord_remove_role, discord_create_role, and discord_update_role. It does not explicitly name an alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use context, no prerequisites (e.g. Manage Roles permission, role hierarchy position), and no pointer to discord_remove_role as the inverse operation. The agent must infer all routing from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_backup_createCreate Discord BackupA
Capture the current Discord guild configuration as a JSON backup snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes | Discord guild ID to snapshot. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| counts | No | |
| guildId | No | |
| backupId | No | |
| coverage | No | |
| warnings | No | |
| capturedAt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the JSON-snapshot framing but does not disclose the consequences of idempotentHint=false (repeated calls create separate snapshots), where the backup is stored, or what the snapshot covers beyond "configuration".
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?
A single front-loaded sentence with no filler; the scope (current guild configuration) and result (JSON snapshot) are stated immediately.
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?
Output schema and annotations are present and the lone parameter is fully documented, so little narrative is needed. The remaining gap is behavioral rather than structural — non-idempotency and snapshot scope/retention are never stated.
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?
With a single parameter at 100% schema description coverage ("Discord guild ID to snapshot", including a numeric-ID pattern), the schema does the work. The description only echoes "guild configuration" and adds no syntax or format detail beyond the schema — baseline 3.
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?
"Capture the current Discord guild configuration as a JSON backup snapshot" names a specific verb (capture) and resource (guild configuration) plus the output format (JSON). It is clearly a distinct operation from backup_list/read/diff/restore, though it never explicitly contrasts itself with those siblings.
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 tool's role in a backup lifecycle is strongly implied by the sibling names (list/read/diff/restore_plan/restore_apply), but the description states no explicit when-to-use, when-not-to-use, or prerequisite (e.g., should a backup be created before calling restore_plan?).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_backup_diffDiff Discord BackupsARead-onlyIdempotent
Compare roles and channels between two stored backup snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| afterBackupId | Yes | Newer or target backup ID. | |
| beforeBackupId | Yes | Older or source backup ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| summary | No | |
| operations | No | |
| afterBackupId | No | |
| beforeBackupId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world scope, so the safety profile is fully covered elsewhere. The description adds some scope information by narrowing the comparison to roles and channels, but says nothing about diff direction (added vs. removed) or what happens on mismatched or missing backups. Given the annotation coverage, a 3 is appropriate.
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 sentence, front-loaded with the operation and scoped to the two resources compared. No filler and no redundancy with the title.
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 only two required string params, full schema coverage, and an output schema to carry return values, the description is nearly sufficient. The only gap is operational context an agent would want — whether snapshots must come from the same guild and how unavailable IDs are handled.
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 100% — both beforeBackupId and afterBackupId are documented as 'Older or source' and 'Newer or target'. The description adds nothing beyond that, which is the baseline 3 case where the schema carries the parameter burden.
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 verb 'compare' plus the resources 'roles and channels' and the scope 'two stored backup snapshots' are all stated, which separates it from the create/list/read/restore siblings in the backup family. It stops short of naming an explicit alternative, but the operation is unmistakable.
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?
Usage is only implied: the tool compares two stored snapshots, so an agent can infer it belongs before a restore or audit. The description never states when to pick this instead of discord_backup_restore_plan or discord_backup_read, nor any preconditions such as both backups belonging to the same guild.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_backup_listList Discord BackupsARead-onlyIdempotent
List stored Discord backup snapshot IDs, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | No | |
| count | No | |
| error | No | |
| backupIds | No | |
| backupDirectoryExists | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, so safety behavior is covered. The description adds that only snapshot IDs are returned and that they are ordered newest first, which is meaningful context beyond the annotations.
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 front-loads the operation and immediately includes the key ordering 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?
For a zero-parameter, read-only list tool with an output schema and rich annotations, the description is largely complete. It omits pagination or empty-result behavior, but those are less critical here because the output schema and annotations carry much of the contract.
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?
There are zero input parameters and schema description coverage is 100%, so parameter semantics are inherently complete. The description correctly adds no unnecessary parameter details for a no-argument list operation.
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 and resource: it lists stored Discord backup snapshot IDs, which distinguishes it from sibling tools like backup_read that presumably retrieve details. The 'newest first' ordering adds useful specificity, though no sibling is named explicitly.
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 states what the tool does but gives no explicit guidance on when to use it versus alternatives such as discord_backup_read, discord_backup_diff, or restore tools. An agent must infer that this is the right tool when it only needs backup identifiers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_backup_readRead Discord BackupARead-onlyIdempotent
Validate a stored Discord backup and return sanitized metadata without exposing its payload.
| Name | Required | Description | Default |
|---|---|---|---|
| backupId | Yes | Backup file ID returned by discord_backup_list or create. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | No | |
| error | No | |
| counts | No | |
| guildId | No | |
| backupId | No | |
| coverage | No | |
| warnings | No | |
| guildName | No | |
| capturedAt | No | |
| snapshotReturned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds meaningful context beyond annotations by stating that the tool validates the backup and returns sanitized metadata 'without exposing its payload,' which is a key output-safety trait.
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. Every clause contributes to purpose or behavioral context.
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 simple (one parameter), has rich annotations, a complete schema, and an output schema, so the description needn't explain return structure or safety. It covers purpose and payload sanitization, though it leaves usage guidance unstated.
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 does not explain the backupId parameter, but schema description coverage is 100% and the single parameter is fully documented in the schema. Baseline 3 is appropriate because the schema carries the parameter semantics.
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 states a specific verb ('Validate') and resource ('stored Discord backup'), and clarifies it returns sanitized metadata rather than payload. This distinguishes it from sibling backup tools like list, diff, and restore, though it does not explicitly name those 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?
The description does not state when to use this tool versus discord_backup_list, discord_backup_diff, or restore tools. 'Validate' implies a pre-restore context, but no explicit guidance or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_backup_restore_applyApply Discord Backup RestoreADestructive
Conservatively apply role/channel create/update operations from a backup. Creates a pre-restore backup first, rejects an expectedPlanHash mismatch before mutating, and deletes require includeDeletes: true.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| confirm | No | ||
| backupId | Yes | ||
| targetGuildId | Yes | ||
| includeDeletes | No | ||
| allowCrossGuild | No | ||
| expectedPlanHash | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| failed | No | |
| applied | No | |
| skipped | No | |
| warnings | No | |
| targetGuildId | No | |
| actualPlanHash | No | |
| sourceBackupId | No | |
| expectedPlanHash | No | |
| preRestoreBackupId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive and non-idempotent, but the description adds real behavioral context beyond them: a pre-restore backup is created first, expectedPlanHash mismatches are rejected before mutation, and deletes require includeDeletes: true. It stops short of covering confirm gating or allowCrossGuild behavior, so not a 5.
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?
A single dense sentence, front-loaded with the core action and followed by safety-critical clauses in priority order. No filler sentences; each clause (pre-backup, hash gate, delete opt-in) carries distinct 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?
An output schema exists, so return values need not be explained, and the destructive-safety narrative is well covered. Gaps remain for a 7-parameter mutating tool: confirm, allowCrossGuild, and the required identity parameters are undocumented, and the source of expectedPlanHash (the plan tool) is not named.
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 carry parameter meaning. It clarifies only two of seven parameters (expectedPlanHash's mismatch behavior and includeDeletes gating deletes); the required backupId/targetGuildId and the confirm, reason, and allowCrossGuild parameters get no explanation anywhere.
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?
States a specific verb and resource: 'apply role/channel create/update operations from a backup,' which distinguishes it as the execution step of the backup family. It does not explicitly name the sibling it complements (discord_backup_restore_plan) or contrast with discord_backup_diff/read, so operational differentiation is left partly to inference.
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?
Usage is implied through the expectedPlanHash gate and the pre-restore backup, suggesting a plan-then-apply workflow. However, the description never explicitly says to run discord_backup_restore_plan first or when to prefer apply over other restore-related siblings, leaving the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_backup_restore_planPlan Discord Backup RestoreARead-onlyIdempotent
Create a non-mutating restore plan that compares the live guild to a stored backup and includes a stable planHash.
| Name | Required | Description | Default |
|---|---|---|---|
| backupId | Yes | Backup snapshot to restore toward. | |
| targetGuildId | Yes | Live Discord guild ID to compare against the backup. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| plan | No | |
| error | No | |
| summary | No | |
| backupId | No | |
| safetyMessage | No | |
| targetGuildId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description reinforces non-mutation while adding that the plan compares live state and includes a stable planHash. It does not add permission, rate-limit, or scope details beyond what annotations already cover.
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?
It is a single front-loaded sentence with no waste, stating the action, safety property, comparison behavior, and a key output field.
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 rich annotations, complete parameter descriptions, and an output schema, the description is sufficient for correct invocation and clarifies the non-mutating planHash output. The only meaningful gap is the lack of explicit sibling routing guidance.
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 100%, so both required parameters are already documented. The description reinforces that backupId refers to the stored backup and targetGuildId to the live guild, but adds no format or validation detail beyond 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 gives a specific verb and resource: create a non-mutating restore plan comparing live guild to stored backup, and includes a stable planHash. This clearly distinguishes it from the mutating restore-apply sibling, though it does not explicitly name any sibling.
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-mutating restore plan' implies previewing before applying, but the description never explicitly says when to use this versus discord_backup_diff or discord_backup_restore_apply. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_ban_memberBan Discord memberBDestructive
Ban a guild member. Requires confirmation and either a backupId or allowWithoutBackup.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| userId | Yes | ||
| confirm | No | ||
| guildId | Yes | ||
| backupId | No | ||
| allowWithoutBackup | No | ||
| deleteMessageSeconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds real value by disclosing the confirmation gate and the backup-or-opt-out requirement that annotations do not convey. It stops short of explaining what the confirmation actually does or the consequences of banning (message deletion, reversibility via unban).
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 short sentences with no filler; the action is front-loaded and the precondition follows. It is efficient, though the terseness is part of why key semantics are missing.
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?
Output schema and annotations are rich, so return values and safety need not be repeated. But this is a destructive 7-parameter mutation at 0% schema coverage, and the description leaves the backup workflow, the confirm semantics, and deleteMessageSeconds entirely unexplained — not enough 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?
Schema description coverage is 0%, so the description must carry parameter meaning. It mentions confirm, backupId, and allowWithoutBackup by name but never explains what a backupId refers to or how to obtain one, and says nothing about guildId, userId, reason, or deleteMessageSeconds — especially the 0-604800 message-purge window, which is the most consequential 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?
States a specific verb and resource ('Ban a guild member'), which is unambiguous. However, it does not distinguish itself from closely related siblings like discord_kick_member, discord_timeout_member, discord_unban_member, or discord_bulk_ban_members, so the agent gets no help choosing among them from the description.
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 names a precondition ('Requires confirmation and either a backupId or allowWithoutBackup'), which is genuinely useful context for invocation. But it gives no guidance on when to ban versus kick/timeout, nor when the backup path should be preferred over allowWithoutBackup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_bulk_ban_membersBulk ban Discord membersADestructive
Ban up to 200 users in one Discord request. Requires confirmation and either a backupId or allowWithoutBackup.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| confirm | No | ||
| guildId | Yes | ||
| userIds | Yes | ||
| backupId | No | ||
| allowWithoutBackup | No | ||
| deleteMessageSeconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is carried structurally. The description still adds real value by disclosing the 200-user cap, the confirmation requirement, and the backup-or-opt-out gate — details not present in the annotations.
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, zero padding, with the capability and the gating prerequisites front-loaded in that order. Every clause carries information an agent needs.
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?
An output schema exists so return values need no explanation, and the annotations cover the destructive profile. However, for a seven-parameter destructive bulk operation, the definition omits the message-purge semantics of deleteMessageSeconds and the reason field's audit purpose, leaving notable 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?
Schema coverage is 0%, so the description must compensate, and it only explains three of seven parameters (confirm, backupId, allowWithoutBackup). It says nothing about guildId format, the userIds array bounds, the reason string, or deleteMessageSeconds — the last being a meaningfully destructive option left 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?
States a specific verb and resource ('Ban ... users') plus the batch scope ('up to 200 users in one Discord request'), which implicitly distinguishes it from the single-user discord_ban_member sibling. It stops short of explicitly naming that sibling, so an agent must infer the distinction.
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 preconditions ('Requires confirmation and either a backupId or allowWithoutBackup') hint at when the tool is callable, but there is no explicit statement of when to choose this over discord_ban_member or discord_kick_member, and no warning about irreversibility or rate limits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_bulk_delete_messagesBulk delete Discord messagesADestructive
Bulk delete messages by count or explicit message IDs. Requires confirmation and backup acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| reason | No | ||
| confirm | No | ||
| backupId | No | ||
| channelId | Yes | ||
| messageIds | No | ||
| allowWithoutBackup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, non-idempotent, open-world, so the safety profile is covered. The description adds that a confirmation and backup acknowledgement are needed, which is genuine extra context, but it never explains the escape hatch (allowWithoutBackup), what happens if confirmation is omitted, or whether deletion is recoverable after a backup.
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 short sentences, front-loaded with the action and mode selection, followed by the gating requirements. No 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?
An output schema exists so return values need no explanation, but with 7 parameters at 0% schema coverage the description should clarify the confirm/backupId/allowWithoutBackup workflow and how to obtain a backupId. Those gaps are material for a destructive 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?
Schema description coverage is 0%, so the description must carry the load; it loosely maps to limit, messageIds, confirm and backupId/allowWithoutBackup, but leaves 'reason' and the required channelId unexplained and does not clarify that the two deletion modes are mutually exclusive. Partial compensation only.
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?
States a specific verb and resource ('bulk delete messages') and distinguishes the two operating modes (by count or explicit message IDs), which separates it from the read-only sibling discord_list_channel_messages. It does not name a concrete alternative tool, but the action is 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 sentence 'Requires confirmation and backup acknowledgement' implies prerequisites but never states when to prefer count-based deletion over explicit IDs, nor when a backup must exist first. Usage conditions are implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_automod_ruleCreate Discord AutoMod ruleC
Create a Discord AutoMod rule with JSON trigger metadata and actions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| reason | No | ||
| actions | Yes | ||
| confirm | No | ||
| enabled | No | ||
| guildId | Yes | ||
| eventType | Yes | ||
| triggerType | Yes | ||
| exemptRoleIds | No | ||
| triggerMetadata | No | ||
| exemptChannelIds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered externally. The description adds nothing beyond that: it does not explain what an AutoMod rule does once created, that it takes effect immediately on the guild, whether a 'confirm' flag gates the write, or any rate-limit/permission context. The unexplained 'confirm' parameter in particular is a behavioral detail only prose could supply.
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?
A single 11-word sentence with no filler, front-loaded with the action verb and resource. It wastes nothing, but the terseness is a symptom of thin content rather than a model of disciplined structure.
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?
An output schema exists, so return values needn't be described, but for an 11-parameter, deeply nested mutation tool with zero schema descriptions the one-line description is far too thin. It omits permission requirements, triggerType/eventType semantics, the confirm flag, and the relationship between triggerType and triggerMetadata — all things an agent cannot derive from an undescribed schema.
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% across 11 parameters (5 required), including nested triggerMetadata and actions objects, and the description only gestures at 'trigger metadata and actions'. Critical fields — guildId, name, eventType, triggerType, enabled, confirm, exemptRoleIds/exemptChannelIds — get no meaning, no valid-value hints (eventType/triggerType are untyped string|number unions with no enum), and no guidance on how triggerType constrains which triggerMetadata fields are valid.
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 names a specific verb and resource ('Create a Discord AutoMod rule') and hints at the two core payload areas ('JSON trigger metadata and actions'), so an agent can tell it apart from discord_update_automod_rule / discord_delete_automod_rule / discord_list_automod_rules by the create verb. It stops short of explicitly contrasting with those siblings, so it lands at 4 rather than 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?
There is no when-to-use guidance, no prerequisites (e.g. the MANAGE_GUILD permission AutoMod requires), and no note about checking existing rules first via discord_list_automod_rules. An agent must infer everything about timing and eligibility from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_channelCreate Discord channelC
Create a text, voice, category, forum, or stage channel.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| nsfw | No | ||
| type | Yes | ||
| topic | No | ||
| reason | No | ||
| bitrate | No | ||
| confirm | No | ||
| guildId | Yes | ||
| parentId | No | ||
| rtcRegion | No | ||
| userLimit | No | ||
| rateLimitPerUser | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| note | No | |
| type | No | |
| error | No | |
| action | Yes | |
| status | No | |
| cleared | No | |
| guildId | No | |
| updated | No | |
| targetId | No | |
| channelId | No | |
| positions | No | |
| targetType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a non-read-only, non-idempotent, open-world operation. The description adds only the channel type list and does not explain the confirm parameter, permission requirements, side effects, or what happens if a channel with the same name exists.
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 appropriately sized but minimal, leaving substantial gaps that are not addressed elsewhere in the description.
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 12-parameter creation tool with no schema descriptions and no annotation-level permission detail, the description is far too thin. An output schema exists, but input-side semantics and behavioral requirements are largely missing.
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% across 12 parameters, yet the description only restates the type enum values already present in the schema. It provides no meaning for guildId, name, parentId, nsfw, topic, reason, bitrate, userLimit, rateLimitPerUser, or confirm.
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 states a specific verb and resource ('Create ... channel') and enumerates the supported channel types. It is clearly distinguishable from sibling mutation tools like discord_update_channel and discord_delete_channel, though it does not 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?
There is no guidance on when to use this tool versus related tools, no mention of required permissions, and no explanation of prerequisites such as parentId requirements for voice/forum/stage channels. Usage is only implied by the verb 'Create'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_inviteCreate Discord inviteC
Create an invite for a channel without returning its secret code or URL.
| Name | Required | Description | Default |
|---|---|---|---|
| maxAge | No | ||
| reason | No | ||
| unique | No | ||
| confirm | No | ||
| maxUses | No | ||
| channelId | Yes | ||
| temporary | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a non-read-only, non-idempotent, open-world operation, so the description does not need to restate that. It adds a key behavioral detail not covered by annotations: the invite is created without returning its secret code or URL. It still omits permission requirements and the role of the confirm parameter.
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, and the important caveat about not returning the secret is included. It is appropriately concise, though very terse for a 7-parameter mutation tool.
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?
Output schema coverage reduces the need to explain return values, and annotations cover basic safety traits. However, for a 7-parameter mutation tool with no schema parameter descriptions, the description leaves major gaps around parameter meaning, confirm behavior, and usage conditions.
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 across 7 parameters, so the description must carry parameter meaning. It only implies that channelId is the target channel and does not explain maxAge, maxUses, unique, temporary, reason, or confirm.
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 states a specific verb and resource: create an invite for a channel. It clearly differs from sibling list/read tools, though it does not explicitly name an alternative or sibling.
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 gives no guidance on when to use this versus discord_list_invites or other invite-related operations. The usage is implied by the name and description, but prerequisites, alternatives, and exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_roleCreate Discord roleC
Create a Discord role, optionally with primary/secondary/tertiary gradient colors.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | No | ||
| hoist | No | ||
| colors | No | ||
| reason | No | ||
| confirm | No | ||
| guildId | Yes | ||
| mentionable | No | ||
| permissions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| error | No | |
| action | Yes | |
| roleId | No | |
| userId | No | |
| guildId | No | |
| updated | No | |
| positions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, open-world, non-idempotent, non-destructive mutation. The description adds no behavioral context such as permission requirements, side effects, rate limits, or what the 'confirm' parameter implies.
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 appropriately sized for the amount of information it chooses to convey.
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 9-parameter mutation tool with a nested object and no parameter descriptions in the schema, the description is far too sparse. The output schema helps with return values, but the description does not provide enough context 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?
With 9 parameters and 0% schema description coverage, the description only hints at the nested 'colors' object via 'primary/secondary/tertiary gradient colors.' It does not explain required fields like guildId/name or other parameters such as permissions, hoist, mentionable, reason, or confirm.
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 states a specific verb and resource: 'Create a Discord role.' It clearly identifies the operation, though it does not explicitly differentiate from siblings like discord_update_role or discord_delete_role beyond the verb.
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 explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The only usage-adjacent detail is that gradient colors are optional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_scheduled_eventCreate Discord scheduled eventB
Create a Discord scheduled event. Use channelId for voice/stage events or location for external events.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| image | No | ||
| reason | No | ||
| confirm | No | ||
| guildId | Yes | ||
| location | No | ||
| channelId | No | ||
| entityType | Yes | ||
| description | No | ||
| privacyLevel | No | ||
| entityMetadata | No | ||
| scheduledEndTime | No | ||
| scheduledStartTime | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read-only, non-idempotent, open-world, non-destructive mutation. The description adds the channelId/location entity-type distinction, but it does not explain permissions, the confirm parameter, side effects, or rate limits beyond what annotations provide.
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 two front-loaded sentences with no filler, so it is structurally clean. However, it is arguably too terse for a 13-parameter creation tool, even if every sentence 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?
This is a complex mutation with 13 parameters, nested objects, and no schema parameter descriptions. The description covers only the channel/location split and leaves most required and optional input semantics unexplained; the output schema relieves only the return-value burden.
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% across 13 parameters, and the description only explains channelId and location. Required parameters such as guildId, name, scheduledStartTime, entityType, plus confirm, privacyLevel, entityMetadata, image, reason, and scheduledEndTime are left undocumented.
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 gives a specific verb and resource: 'Create a Discord scheduled event.' It is clear what the tool does and the verb distinguishes it from list/update/delete siblings, but it does not explicitly route the agent away from those 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?
It gives concrete guidance for choosing between channelId and location based on event type: voice/stage vs external. That is useful selection context, though it does not state when not to use this tool or compare it directly with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_create_webhookCreate Discord webhookC
Create a webhook in a text-capable guild channel.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| avatar | No | ||
| reason | No | ||
| confirm | No | ||
| channelId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description's one added fact, that the target channel must be text-capable, is genuinely useful context the annotations don't carry. However it says nothing about the non-idempotent consequence (repeated calls create duplicate webhooks) or the meaning of the 'confirm' flag, which is exactly the kind of behavioral detail a mutation tool should disclose.
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?
A single front-loaded sentence with no filler, and the channel-type constraint is stated up front. It is efficient, though the brevity reflects under-specification as much as discipline.
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?
An output schema exists so return values needn't be described, but for a write tool with five parameters, 0% schema coverage, and a non-idempotent mutation, the description is far too thin. An agent cannot infer when to set 'confirm', what 'avatar' accepts, or why 'reason' exists without guessing.
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 explains none of the five parameters. Critical ones are opaque: 'avatar' (maxLength 10000000 suggests base64 image data), 'reason' (audit-log justification), and 'confirm' (apparently a confirmation safety gate) are all undocumented in both schema and description. The description only implicitly touches channelId via 'text-capable guild channel'.
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 states a specific verb and resource ('Create a webhook') plus a scope constraint ('in a text-capable guild channel'), which cleanly separates it from the sibling read/delete operations (discord_list_webhooks, discord_delete_webhook). It doesn't need to name a near-identical alternative because none exists in the sibling list.
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 gives no when-to-use guidance, no prerequisites (e.g. needing Manage Webhooks permission), and no exclusions or alternative paths. The only usable cue is the 'text-capable channel' restriction, which is a constraint rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_automod_ruleDelete Discord AutoMod ruleCDestructive
Delete a Discord AutoMod rule.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| ruleId | Yes | ||
| confirm | No | ||
| guildId | Yes | ||
| backupId | No | ||
| allowWithoutBackup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds no behavioral context such as irreversibility, permission requirements, or what happens to the rule's configuration.
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?
It is a single, front-loaded sentence with no wasted words. However, it is under-specified rather than appropriately sized for a destructive tool with six parameters.
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 output schema and annotations cover return values and safety hints, but the description omits critical context for a destructive operation: required permissions, the role of confirm/backupId, and consequences of deletion.
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 6 parameters with 0% description coverage, including non-obvious optional parameters like confirm, backupId, and allowWithoutBackup. The description provides no parameter meaning at all.
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 states a specific verb and resource: deleting a Discord AutoMod rule. The purpose is clear, but it does not distinguish this tool from siblings like discord_update_automod_rule or discord_create_automod_rule beyond the verb itself.
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 prerequisites, and no exclusions. The only implied usage is the literal act of deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_channelDelete Discord channelBDestructive
Delete a Discord guild channel after confirmation and backup acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| confirm | No | ||
| backupId | No | ||
| channelId | Yes | ||
| allowWithoutBackup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| note | No | |
| type | No | |
| error | No | |
| action | Yes | |
| status | No | |
| cleared | No | |
| guildId | No | |
| updated | No | |
| targetId | No | |
| channelId | No | |
| positions | No | |
| targetType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the danger profile is covered structurally. The description adds real value by disclosing the confirmation and backup-acknowledgement gate, but omits what the deletion destroys (messages, threads), what allowWithoutBackup does, and whether permissions are required.
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?
A single front-loaded sentence with no filler, and the safety precondition is placed before any other detail. It is efficient, though the terseness comes partly at the cost of information the agent needs.
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, irreversible mutation with five undocumented parameters. The output schema removes the need to describe return values, but the description still leaves the confirm/backupId/allowWithoutBackup interaction and the destruction scope unexplained, which is a serious gap for a delete tool.
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% across five parameters, so the description carries the full burden. It only hints at 'confirm' and 'backup acknowledgement' (backupId / allowWithoutBackup) and says nothing about channelId format or the purpose of the optional 'reason' audit field.
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?
Names a specific verb and resource ('Delete a Discord guild channel'), which clearly separates it from sibling mutations like discord_delete_role or discord_update_channel. However, it doesn't explicitly contrast with alternatives or state the scope of the deletion (messages, threads, permissions).
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 'after confirmation and backup acknowledgement' implies prerequisites but never states when to use this tool versus discord_backup_create / discord_backup_restore_plan or discord_update_channel. The agent must infer the workflow rather than being routed to it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_roleDelete Discord roleADestructive
Delete a Discord role after confirmation and backup acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| roleId | Yes | ||
| confirm | No | ||
| guildId | Yes | ||
| backupId | No | ||
| allowWithoutBackup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| error | No | |
| action | Yes | |
| roleId | No | |
| userId | No | |
| guildId | No | |
| updated | No | |
| positions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotency, so the safety profile is covered structurally. The description adds the important behavioral precondition of confirmation and backup acknowledgement, but it does not explain irreversibility, permission requirements, or what deletion does to members holding the role.
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?
A single front-loaded sentence that identifies the action and its preconditions without filler. Every phrase contributes to the operation.
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, six-parameter operation with no schema descriptions, so the description should do more. It omits required parameter meaning, the irreversible consequences of role deletion, and how confirmation/backup acknowledgement are supplied, leaving major 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% for six parameters, so the description must compensate and largely fails to do so. It vaguely gestures at 'confirmation' and 'backup acknowledgement' but gives no meaning for guildId, roleId, reason, confirm, backupId, or allowWithoutBackup.
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?
States a specific verb and resource ('Delete a Discord role'), which clearly separates it from siblings like discord_update_role or discord_remove_role. The added precondition phrase does not obscure the core action.
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 'after confirmation and backup acknowledgement' implies prerequisites for use, which is useful context. However, it does not state when to choose deletion over alternatives such as updating or reassigning a role, nor what happens if the preconditions are not met.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_scheduled_eventDelete Discord scheduled eventCDestructive
Delete a Discord scheduled event.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| confirm | No | ||
| eventId | Yes | ||
| guildId | Yes | ||
| backupId | No | ||
| allowWithoutBackup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. Yet the description adds nothing: it does not say the deletion is permanent, whether a reason is audited, or why confirm, backupId, and allowWithoutBackup exist. Those schema fields strongly imply a confirmation/backup gate that is left entirely undisclosed.
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 single sentence is front-loaded and wastes no words, but it is under-specified rather than appropriately concise for a destructive tool with six parameters. Brevity here comes at the cost of the information the agent needs.
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?
An output schema exists, so return values needn't be described, and annotations cover destructiveness. But for a destructive, non-idempotent operation with an undocumented confirmation/backup workflow, the definition omits behavior an agent must know to invoke it safely.
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% across 6 parameters, and the description explains none of them. Critical fields such as confirm, backupId, and allowWithoutBackup carry non-obvious semantics that neither schema nor description clarify, so the description fully fails to compensate for the coverage gap.
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 names a specific verb and resource (delete a scheduled event), so the operation itself is unmistakable. However, it is essentially the tool name and title restated as a sentence and adds no scope detail such as whether the event is cancelled/notified or what a deletion affects. An agent learns nothing beyond what the identifier already told it.
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 statement of when to use this tool, no mention of the sibling tools (discord_list_scheduled_events, discord_create_scheduled_event, discord_update_scheduled_event), and no guidance on prerequisites. Given the presence of confirm/backup parameters in the schema, the absence of any guidance on the required workflow is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_delete_webhookDelete Discord webhookADestructive
Delete a webhook by ID. Requires confirmation and either a backupId or allowWithoutBackup.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| confirm | No | ||
| backupId | No | ||
| webhookId | Yes | ||
| allowWithoutBackup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is partly covered. The description adds meaningful context beyond annotations: that confirmation is required and that deletion must be preceded by a backupId or an explicit allowWithoutBackup opt-in, which is genuinely useful for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and followed by the critical requirement, with zero wasted text.
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?
An output schema exists so return values need not be explained, and annotations cover the safety profile. The description is nearly complete for a destructive delete tool, with the minor exception of the undocumented 'reason' parameter.
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 conveys meaning for webhookId, confirm, backupId and allowWithoutBackup, but leaves the 'reason' parameter entirely undocumented and gives no format details (e.g. the webhookId numeric pattern), so it only partially fills the gap.
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 gives a specific verb and resource ('Delete a webhook by ID') that clearly distinguishes it from siblings like discord_create_webhook and discord_list_webhooks. It stops short of explicitly naming those alternatives, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as the backup/restore tools, nor any exclusions. The 'requires confirmation and either a backupId or allowWithoutBackup' line sets operational prerequisites rather 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_get_channelGet Discord channelCRead-onlyIdempotent
Get Discord channel metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes | ||
| channelId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true and openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond that—no note about live API calls to Discord, permission requirements to view the channel, or behavior when the channel is missing or inaccessible.
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 single sentence is front-loaded and free of padding, which is good, but its brevity comes at the cost of any substantive information—it is under-specification framed as conciseness.
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?
An output schema exists, so return values need not be explained, but for a tool with two required, undescribed ID parameters and no usage guidance, the description leaves the agent without enough to invoke it confidently or recover from a wrong-ID error.
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 both required parameters (guildId, channelId) are documented only by regex patterns. The description does not explain that these are Discord snowflake IDs, nor clarify the parent guild vs. target channel relationship, so it fails to compensate for the coverage gap.
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?
States a specific verb+resource: fetching metadata for a single Discord channel, which distinguishes it from the many list_* siblings. However, it never explicitly contrasts with discord_list_channels or discord_get_guild, so the agent must infer the singular-vs-list distinction.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as discord_list_channels when the channel ID is unknown. The agent is left to infer that this tool requires a known channelId and is not a discovery mechanism.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_guildGet Discord guildCRead-onlyIdempotent
Get Discord guild metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond 'metadata' — nothing about freshness, permission requirements, or what happens if the guild is inaccessible.
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. Its brevity is clean, though it borders on under-specification rather than optimal conciseness.
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 simple and has an output schema, so return values need not be explained. However, the description leaves the sole required parameter entirely unexplained and does not differentiate this tool from discord_list_guilds, leaving important context 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?
There is one required parameter, guildId, and schema description coverage is 0%. The description says 'guild' but never mentions the ID parameter, its required status, or its 17–20 digit numeric format, so it fails to compensate for the undocumented 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 uses a specific verb and resource ('Get Discord guild') and adds a scope hint ('metadata'), so an agent can tell it retrieves a single guild record. It does not explicitly distinguish this from the sibling discord_list_guilds tool, which keeps it below 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?
There is no guidance on when to use this tool instead of discord_list_guilds or other guild-adjacent tools. The only implied usage is retrieving metadata for a guild whose ID is already known, but that is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_get_roleGet Discord roleCRead-onlyIdempotent
Get Discord role metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| roleId | Yes | ||
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorldHint, so the safety profile is fully covered. The description adds nothing beyond that: no note on required bot permissions, intents, error behavior for missing roles, or scope of 'metadata'.
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 short, front-loaded sentence with zero waste, but it is under-specified rather than concise-in-a-good-way; there is no structure beyond the single clause.
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?
An output schema exists, so return values need not be described. However, for a two-required-parameter tool with 0% schema description coverage, the absence of any parameter or scope context leaves an agent guessing.
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 carries the burden for guildId and roleId, yet it never mentions them. It gives no hint that roleId is scoped to a guild, or that both are 17-20 digit snowflakes (the pattern exists in the schema but is 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?
The description states a specific verb and resource ('Get Discord role metadata'), making the single-role fetch reasonably clear against siblings like discord_list_roles. It stops short of explicitly contrasting itself with the list/create/update/delete role tools, but the read-one semantics come through.
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 instead of discord_list_roles, discord_get_guild, or discord_update_role. The agent must infer the selection rule from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_kick_memberKick Discord memberADestructive
Kick a guild member. Requires confirmation and either a backupId or allowWithoutBackup.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| userId | Yes | ||
| confirm | No | ||
| guildId | Yes | ||
| backupId | No | ||
| allowWithoutBackup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag the operation as destructive, non-idempotent, and open-world. The description adds useful behavioral context by stating that confirmation is required and that a backup or explicit no-backup allowance is needed, which materially affects how an agent should invoke it.
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 short sentences, front-loaded with the action and then the mandatory conditions. No wasted wording.
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 moderation tool, the description gives essential gating conditions but omits permission requirements, expected effect details, and how kick compares with sibling moderation actions. The output schema exists, so return values need not be described.
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 explains the conditional relationship around confirm, backupId, and allowWithoutBackup, but leaves reason and the exact semantics of backupId and guildId/userId unaddressed 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?
States a specific verb and resource: "Kick a guild member." This is clear, though it does not explicitly distinguish the action from sibling tools such as ban_member or timeout_member.
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?
Provides a key prerequisite: confirmation and either backupId or allowWithoutBackup. However, it does not explain when to choose kick over ban, timeout, or other moderation actions, nor when a backup is appropriate versus bypassing it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_application_commandsList Discord application commandsCRead-onlyIdempotent
List guild application commands.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context such as authentication needs, pagination, or what is returned. For a simple list tool this is a minor gap, but it provides essentially no transparency beyond the annotations.
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 extremely concise, though arguably under-specified rather than optimally sized for a tool with an undocumented parameter.
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?
An output schema exists, so return values do not need explanation, and annotations cover the safety profile. However, the description leaves the only parameter completely unexplained and gives no usage context, which is a noticeable gap for a tool whose schema has 0% description coverage.
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 only parameter (guildId) is undocumented in the description. The description implies a guild context through the phrase 'guild application commands,' but it does not explain that guildId is required, its format, or its role. The schema provides a pattern, but the description does not compensate for the coverage gap.
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 states a specific verb ('List') and resource ('guild application commands'), so the basic purpose is clear. However, it nearly restates the title and name, adding almost no scope or differentiation beyond that. It does not clarify what an application command is or how this listing differs from other list tools beyond the resource name.
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 prerequisites, and no exclusions. The agent is left to infer that this is for retrieving commands for a guild without any context about when that would be appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_audit_logList Discord audit log entriesBRead-onlyIdempotent
Read recent Discord audit log entries. Requires the View Audit Log permission for the bot.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| userId | No | ||
| guildId | Yes | ||
| actionType | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered; the description adds the non-obvious bot permission requirement, which is real value. However, it says nothing about ordering (newest-first?), pagination via the after/before cursors, the 50 default / 100 max limit, or rate-limit behavior of the audit log endpoint.
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 short sentences with zero waste and the core action front-loaded ahead of the permission caveat. Nothing could be removed without losing 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?
An output schema exists, so return values need not be explained, but for a six-parameter filtered list tool with no schema descriptions the description is far too thin: filtering semantics, cursor pagination, and result ordering are all missing.
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% across six parameters, so the description carries the full burden and supplies almost nothing. It never mentions guildId, the userId and actionType filters, or that after/before are snowflake cursors — an agent must infer all of that from bare property names and regex patterns.
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?
States a specific verb and resource ('Read ... Discord audit log entries') and no sibling covers audit logs, so the tool is clearly distinguishable. 'Recent' hints at recency ordering but is left unqualified.
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 only guidance is a prerequisite ('Requires the View Audit Log permission for the bot'), which is useful but is not when-to-use guidance. There is no statement of when an agent should reach for this versus, say, listing bans or automod rules, nor any note about how to narrow the query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_automod_rulesList Discord AutoMod rulesBRead-onlyIdempotent
List AutoMod rules in a Discord guild.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive and openWorld, so safety is covered. The description adds the guild scoping but nothing about permissions required, pagination, or coverage of rule types – a modest but not negligible addition.
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?
A single short sentence, front-loaded and waste-free. It is arguably too terse rather than too long, so it scores well on structure but not perfectly on usefulness density.
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?
An output schema exists, so return values needn't be explained, and annotations cover the safety profile. However, for a one-param tool with 0% schema coverage, the description should at least identify the required guildId and any permission prerequisite, which it omits.
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%: the single guildId parameter has no description, no format hint in the schema beyond a regex pattern, and the description does not mention it at all. With only one parameter the bar is low, but nothing is added here to explain what guildId must be.
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?
Specific verb (List) plus resource (AutoMod rules) scoped to a Discord guild. It distinguishes itself from the mutation siblings discord_create_automod_rule/update/delete by name, though it doesn't explicitly say so.
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?
Usage is implied by the read-only 'List' framing and the automod family of siblings, but the description never states when to use this versus the create/update/delete variants or what prerequisites (e.g. MANAGE_GUILD permission) are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_bansList Discord bansBRead-onlyIdempotent
List guild bans with pagination. Requires the Ban Members permission.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so safety is covered. The description adds two useful behavioral details beyond that: the permission requirement and the fact that results are paginated. It stops short of describing pagination semantics, rate limits, or error behavior, which keeps it at an adequate rather than rich level.
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 compact sentences with no wasted words. The core action is front-loaded and the prerequisite follows immediately.
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?
An output schema exists, so return values need not be explained. The description covers purpose, permission, and the existence of pagination, but with 0% schema description coverage it leaves the cursor parameters under-specified. For a paginated list tool this is workable but not fully complete.
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 four undocumented parameters. It only says 'with pagination', which hints that before/after/limit are cursor-related but does not explain that they are snowflake IDs, how the cursors interact, or what the limit bounds mean. guildId is implied by 'guild bans' but not explained either.
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?
States a specific verb and resource ('List guild bans') that is unambiguously distinct from mutation siblings like discord_ban_member and discord_unban_member. It does not explicitly name an alternative, but the intent is clear without opening the schema.
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 supplies a concrete prerequisite ('Requires the Ban Members permission'), which is useful usage context. However, it gives no guidance on when to choose this tool over related ones such as discord_get_guild or member search, and no exclusions or failure conditions are described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_channel_messagesList Discord channel messagesBRead-onlyIdempotent
List recent messages from a text-based channel. Requires ENABLE_MESSAGE_CONTENT=true and the Discord Message Content privileged intent.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| around | No | ||
| before | No | ||
| guildId | Yes | ||
| channelId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds meaningful behavioral context by requiring ENABLE_MESSAGE_CONTENT=true and the Discord Message Content privileged intent, which is a critical operational prerequisite not covered by annotations.
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 short sentences with no filler; the core operation and critical prerequisite are front-loaded.
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?
An output schema exists, so return values need not be described. However, with six parameters at 0% schema description coverage, the description is incomplete because it omits pagination, filtering, and required-ID semantics that an agent needs 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 does not explain any of the six parameters. In particular, it says nothing about guildId, channelId, limit, after, before, or around, leaving pagination and filtering semantics entirely undocumented.
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 states a specific verb and resource: 'List recent messages from a text-based channel.' It clearly distinguishes a message-listing operation from channel-management siblings, but does not explicitly differentiate from any near-alternative message tool.
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 gives no when-to-use or when-not-to-use guidance, nor does it name alternatives. It only states a prerequisite, which is useful but not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_channelsList Discord channelsBRead-onlyIdempotent
List channels in a Discord guild.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond restating that it lists channels—no mention of rate limits, pagination, or authentication requirements—so it contributes little beyond the structured fields.
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 zero wasted words. It gets straight to the point and is appropriately sized for a simple list operation.
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 presence of an output schema and comprehensive annotations, the description covers the basic purpose adequately. However, it omits parameter semantics (guild ID format) and behavioral details like pagination, leaving some gaps for an agent to infer.
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 the sole parameter guildId. It only says 'in a Discord guild,' which vaguely implies a guild identifier but gives no details on format, source, or required pattern, adding minimal meaning beyond 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 states a specific verb ('List') and resource ('channels') within a clear scope ('in a Discord guild'). This distinguishes it from siblings like discord_get_channel (single channel) and discord_list_guilds (guilds), so an agent can immediately understand its purpose.
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 offers no guidance on when to use this tool versus alternatives such as discord_get_channel for detailed channel info. It also omits prerequisites (e.g., required permissions) and any conditions or exclusions, leaving usage entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_emojisList Discord emojisCRead-onlyIdempotent
List emojis in a Discord guild.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is fully covered. The description adds nothing beyond that: no mention of whether it returns only custom guild emojis versus global ones, pagination, or permission/rate-limit behavior. With annotations carrying the burden, this is adequate but adds no extra 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?
A single sentence with no filler, and the key scope ('in a Discord guild') is front-loaded. It is efficient, though the terseness borders on under-specification rather than tightness.
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 single-parameter, read-only list operation with full annotations and an output schema, the description covers the minimum needed to call it. It omits useful context such as the scope of emojis returned and pagination behavior, which is a clear but modest 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?
Schema description coverage is 0%, so the description must compensate for the single guildId parameter. 'in a Discord guild' only weakly ties guildId to the guild identifier and gives no format or sourcing guidance, leaving the agent to infer meaning from the parameter name and the regex pattern alone.
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 states a specific verb ('List') and resource ('emojis') scoped to a Discord guild, so an agent knows exactly what the tool returns. It does not differentiate itself from near neighbors like discord_list_stickers, but the resource noun is distinct enough to select on.
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 statement of when to use this tool versus alternatives (e.g., discord_get_guild or discord_list_stickers), and no prerequisites such as requiring the guild ID or emoji-related permissions. Usage is only implied by the name and the word 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_guildsList Discord guildsARead-onlyIdempotent
List Discord guilds visible to the configured bot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description contributes one genuinely useful behavioral fact — results are bounded by what the bot can actually see — but says nothing about pagination or result size.
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?
A single front-loaded sentence with no filler. Every clause earns its place by adding the visibility constraint rather than restating the name.
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 inputs, an output schema present, and rich annotations, the description only needs to convey scope — which it does. A brief note on ordering or expected result volume would close the last 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 tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The scope phrase does clarify the implicit filter (bot membership) that acts in place of a 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?
States a specific verb+resource ('List Discord guilds') and adds a scope qualifier ('visible to the configured bot') that separates it from discord_get_guild. It doesn't explicitly name the sibling, but the plural-vs-singular distinction is self-evident from the names.
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 explicit when-to-use guidance or named alternatives; usage is only implied by the 'list' verb and the bot-visibility scope. An agent can infer this is the enumeration entry point that precedes discord_get_guild / discord_list_channels, but it has to infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_invitesList Discord invitesARead-onlyIdempotent
List non-secret invite metadata in a Discord guild; invite codes and URLs are omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so safety is covered. The description still earns credit by disclosing a non-obvious behavioral constraint that annotations cannot express: invite codes and URLs are deliberately omitted, which prevents an agent from expecting usable invite links.
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 compact sentence with the operation front-loaded and the most surprising caveat (codes/URLs omitted) placed where it will be read. Nothing redundant.
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 an output schema present and rich annotations, the description needn't explain return values. It correctly sets expectations about redacted fields; only pagination/limit behavior for large guilds is unaddressed, a minor gap for a single-parameter list tool.
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% for the single guildId parameter, though its snowflake pattern is machine-visible. The description only hints at guild scoping ('in a Discord guild') and adds no format or validation guidance beyond the schema, so it does not fully compensate for the coverage gap.
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?
States a specific verb (List) and resource (invite metadata) plus its scope (in a Discord guild). It clearly contrasts with the write-side sibling discord_create_invite by being a read lister, though it never names an alternative explicitly.
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?
Use is implied by the 'non-secret invite metadata' framing, but there is no explicit when-to-use or when-not-to-use statement, and no pointer to alternatives such as discord_create_invite or audit-log tooling. An agent must infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_membersList Discord membersCRead-onlyIdempotent
List guild members, capped at 1000.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds a genuine behavioral fact — the total result set is capped at 1000, not just per-page — which goes slightly beyond the schema's per-request maximum. It says nothing about pagination mechanics via the cursor or whether results are truncated silently.
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 short, front-loaded sentence with zero filler. It is terse to the point of under-specification for a three-parameter paginated tool, but nothing in it is wasted.
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?
An output schema is present, so return values needn't be explained, but with 0% parameter coverage the description leaves the pagination contract (after/limit) undocumented and gives no hint that member listing may be incomplete in large guilds. For a list tool with a cursor, this is not sufficient to call it 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 and it largely does not: guildId is only implied, limit is only alluded to via 'capped at 1000', and the 'after' cursor parameter is never mentioned at all. An agent reading only the description would not know pagination exists.
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?
States a specific verb and resource ('List guild members') plus a global result cap, so the operation is immediately identifiable. It does not distinguish itself from the sibling discord_search_members, which is the obvious alternative for the same resource.
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 when-to-use guidance, no mention of prerequisites (e.g. intents/permissions needed to enumerate members), and no reference to discord_search_members as the alternative for filtered lookups. The agent must guess whether this is the right tool for finding a specific member.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_role_member_countsList Discord role member countsBRead-onlyIdempotent
List how many guild members currently hold each role.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a safe, read-only, idempotent operation, so the description has a lower burden. It adds only that the counts reflect members currently holding each role, without detailing permissions, limitations, or freshness beyond that.
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 text. It communicates the core operation 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?
For a simple read-only tool with one parameter and an output schema, the definition is minimally sufficient: it says what is returned. However, it does not compensate for the undocumented guildId parameter or provide sibling-tool routing, leaving clear 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?
Schema description coverage is 0%, so the description should compensate for the undocumented guildId parameter, but it does not explain that guildId is a Discord guild snowflake ID. The word 'guild' appears, but the parameter's meaning and required format are left entirely to 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 states a specific verb and resource: listing role member counts, not roles themselves. It is clear enough to distinguish this from sibling tools like discord_list_roles and discord_list_members, though it does not name those alternatives explicitly.
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 gives no explicit when-to-use guidance, prerequisites, or alternatives. An agent can infer that it is for retrieving per-role member counts, but there is no help choosing it over discord_list_roles or discord_list_members.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_rolesList Discord rolesCRead-onlyIdempotent
List roles in a Discord guild.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds nothing beyond that — no note on pagination, ordering, permission requirements, or the open-world/network nature of the call.
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?
A single front-loaded sentence with zero waste. However, the brevity tips into under-specification rather than optimal conciseness.
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?
An output schema exists, so return values need not be explained, and annotations cover safety. But the lone required parameter's meaning is undocumented anywhere, leaving a real gap for an agent trying to call it 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?
The single guildId parameter has 0% schema description coverage — only a regex pattern is given. The description does not explain that guildId is the target guild's snowflake ID or how to obtain it, so it fails to compensate for the schema gap.
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?
States a clear verb ('List') and resource ('roles in a Discord guild'), so an agent knows exactly what it returns. It does not explicitly contrast with siblings like discord_get_role or discord_list_role_member_counts, keeping it below 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?
There is no guidance on when to use this versus discord_get_role, discord_list_role_member_counts, or the role-mutation tools. The agent must infer the context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_scheduled_eventsList Discord scheduled eventsCRead-onlyIdempotent
List scheduled events in a Discord guild.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered elsewhere. The description adds essentially nothing beyond that - no pagination behavior, no ordering, no note on which event states are returned - making it a restatement of the title.
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?
A single front-loaded sentence with zero filler. It is efficient, though the brevity leaves specification gaps rather than being optimally informative.
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?
An output schema exists, so return values need not be described. However, for a listing tool the agent still lacks any hint about result size, pagination, or filtering, and the single required parameter is undocumented in both schema and description.
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%, but there is only one parameter (guildId) and the phrase 'in a Discord guild' implies it scopes the query to that guild. No format or source detail (e.g. snowflake ID) is added, so it only marginally compensates for the coverage gap.
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?
States a specific verb (List) and resource (scheduled events) with scope narrowed to a Discord guild. It is clearly distinguishable from the write siblings discord_create_scheduled_event / update / delete, though it does not name them explicitly.
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 when-to-use guidance, no mention of alternatives, prerequisites (bot permissions like VIEW_GUILD_SCHEDULED_EVENTS / GUILD_SCHEDULED_EVENTS intent), or whether it covers past vs upcoming events. Usage is only inferable from the verb 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_stickersList Discord stickersCRead-onlyIdempotent
List stickers in a Discord guild.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds nothing beyond the guild scoping already implied by the tool name — no pagination behavior, no statement of whether only guild-specific stickers (not built-in ones) are returned.
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?
A single short sentence with no padding, front-loaded on the verb. It is arguably under-specified rather than verbose, but as raw conciseness it is efficient.
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?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, for a list operation the description omits pagination/limit behavior and the scope of stickers returned, leaving a real gap before an agent can call it confidently.
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?
There is one parameter, guildId, with 0% schema description coverage — only a regex pattern constrains it. The description's phrase 'in a Discord guild' only weakly signals that guildId is required and does not explain the 17-20 digit snowflake format or where to obtain it.
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?
States a specific verb ('List') and resource ('stickers') scoped to a Discord guild, so the operation is unambiguous. It doesn't distinguish itself from sibling list tools like discord_list_emojis, which is the nearest same-kind resource, but the resource name alone is fairly distinctive.
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 on when to use this versus alternatives such as discord_list_emojis, nor any stated prerequisites (e.g., needing a guild ID resolved via discord_list_guilds). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_list_webhooksList Discord webhooksARead-onlyIdempotent
List webhooks in a Discord guild without exposing tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds genuinely new context the annotations do not: returned webhook objects are token-sanitized, which is important for an agent deciding whether this is safe to surface in output.
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 sentence, front-loaded with the operation and scope, with the security qualifier trailing. No redundant phrasing and nothing to trim.
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 rich annotations, an output schema, and one well-typed parameter, the description covers what an agent needs to select and call this tool. The only minor gap is silence on pagination/result limits for a potentially large webhook list.
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%, but with a single required parameter whose type and 17-20 digit snowflake pattern are already encoded in the schema, the burden is light. The description does not restate or clarify guildId, but the schema is self-explanatory enough that a 3 is reasonable.
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?
States a specific verb+resource ('List webhooks') scoped precisely to 'a Discord guild', and adds the notable output constraint 'without exposing tokens'. An agent can distinguish it instantly from discord_create_webhook and discord_delete_webhook without opening a schema.
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?
Usage is implied by the verb and the webhook siblings (create/delete) make the read variant obvious, but there is no explicit when-to-use guidance, no prerequisites, and no named alternatives. Minimum viable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_remove_roleRemove Discord roleCDestructiveIdempotent
Remove a role from a guild member.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| roleId | Yes | ||
| userId | Yes | ||
| confirm | No | ||
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| error | No | |
| action | Yes | |
| roleId | No | |
| userId | No | |
| guildId | No | |
| updated | No | |
| positions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds only a minimal scope clarification that the role is removed from a member rather than deleted globally; it says nothing about permissions, the confirm parameter, audit-log reason behavior, or what happens if the member lacks the role.
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 single sentence is front-loaded and free of waste, but it is under-specified rather than appropriately concise for a destructive five-parameter tool. The structure is clean but too thin to earn a higher score.
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 five parameters, 0% schema coverage, and no annotation about permissions or confirmation, the description is substantially incomplete. The output schema reduces the need to describe return values, but the input-side and safety context remain largely absent.
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 names none of the five parameters. It implies that a member and a role are involved, but guildId, reason, and confirm are completely unexplained, and even the implied parameters lack naming or format detail.
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 states a specific verb and resource: remove a role from a guild member. This distinguishes it implicitly from discord_delete_role, which removes the role itself, but it does not explicitly name or contrast with sibling tools such as discord_assign_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?
There is no guidance on when to use this tool versus discord_assign_role, discord_delete_role, or discord_update_role. The usage context is only implied by the verb 'Remove' and the phrase 'from a guild member.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_reorder_channelsReorder Discord channelsCDestructiveIdempotent
Set channel positions within a guild.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| confirm | No | ||
| guildId | Yes | ||
| positions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| note | No | |
| type | No | |
| error | No | |
| action | Yes | |
| status | No | |
| cleared | No | |
| guildId | No | |
| updated | No | |
| targetId | No | |
| channelId | No | |
| positions | No | |
| targetType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is partly covered. However, the description says nothing about what 'destructive' means here (whether unlisted channels are displaced), what the 'confirm' parameter guards, whether the 'reason' is written to the audit log, or how partial position lists are handled.
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 single sentence is front-loaded and free of padding, but it is under-specified rather than concisely complete. It earns its brevity at the cost of omitting operational details an agent needs.
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, batch-oriented mutation with a confirm gate and an audit-log reason, and the output schema covers return values. The description omits the confirmation requirement, the semantics of the positions array, and the destructive consequences, leaving significant gaps 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 carry the burden for guildId, positions, reason, and confirm. It only vaguely implies guildId and positions via 'within a guild' and 'channel positions'; it says nothing about the positions array structure, the 0-499 range, the confirm gate, or the audit-log reason string.
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 states a specific verb ('Set'), resource ('channel positions'), and scope ('within a guild'), so an agent can tell it is a bulk reorder operation rather than a single-channel update. It does not explicitly differentiate itself from siblings like discord_update_channel or discord_reorder_roles, but the name plus description are 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?
There is no guidance on when to use this tool versus discord_update_channel or discord_reorder_roles, nor any mention of prerequisites such as needing manage-channels permission. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_reorder_rolesReorder Discord rolesCDestructiveIdempotent
Set role positions within a guild.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| confirm | No | ||
| guildId | Yes | ||
| positions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| error | No | |
| action | Yes | |
| roleId | No | |
| userId | No | |
| guildId | No | |
| updated | No | |
| positions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say that positions are replaced wholesale, that role hierarchy constraints apply, or that a confirm flag must be supplied before a destructive reorder.
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?
A single short sentence with zero waste and the resource front-loaded, but the brevity comes from under-specification rather than disciplined editing. Nothing about the destructive semantics earns a place because nothing is said.
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?
An output schema exists, so return values need not be described. However, for a destructive mutation tool with a confirm parameter and zero schema coverage, the description leaves the agent without the operational detail needed to call it safely.
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% across 4 parameters, and the description supplies no meaning for any of them. The nested positions array (roleId/position pairs), the optional reason audit string, and the confirm safety flag are all completely undocumented in prose.
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?
States a specific verb and resource ("Set role positions within a guild"), which distinguishes it from discord_update_role (editing role attributes) and discord_reorder_channels (channels, not roles). It is clear, but does not explicitly name the siblings it differs from.
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 on when to use this versus discord_update_role or discord_reorder_channels, no prerequisites (Manage Roles permission, role hierarchy limits), and no mention of the confirm gate implied by the schema. The agent must infer everything about invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_search_membersSearch Discord membersARead-onlyIdempotent
Search guild members by username or nickname. Requires ENABLE_GUILD_MEMBERS=true and the Guild Members privileged intent.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world and non-destructive, so the safety profile is covered. The description adds real context beyond that: an environment flag and a privileged-intent gate that determine whether the call works at all. It stops short of saying what error/empty result occurs when the gate is off, or how matching behaves.
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 tight sentences, zero filler, with the capability front-loaded and the gate condition following. Nothing here could be cut without losing 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?
An output schema exists and annotations cover safety, so return values need no explanation. For a 3-parameter search tool though, the description omits match semantics, paging/limit behavior, and what happens when the privileged intent is unavailable — gaps an agent will hit at call time.
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 carries the full burden and only partially pays it: it clarifies that `query` matches username or nickname, which is useful. It says nothing about `limit` (bounds, default, whether truncation is silent), nothing about `guildId` format, and doesn't specify prefix vs substring matching, which materially changes how an agent should shape the query.
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?
States a specific verb and resource (search guild members) plus the searchable fields (username or nickname), which is far more than the title alone. It never names the near-sibling discord_list_members, so the agent must infer the search-vs-enumerate boundary from names alone.
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 prerequisites (ENABLE_GUILD_MEMBERS=true and the Guild Members privileged intent) give a hard precondition for calling, which is genuine usage guidance. However, it never says when to prefer this over discord_list_members or what to do if the intent is disabled, so the when-to-use decision 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_set_channel_permissionsSet Discord channel permissionsCDestructiveIdempotent
Set explicit channel permission overwrites for a role or member.
| Name | Required | Description | Default |
|---|---|---|---|
| deny | Yes | ||
| allow | Yes | ||
| reason | No | ||
| confirm | No | ||
| backupId | No | ||
| targetId | Yes | ||
| channelId | Yes | ||
| targetType | Yes | ||
| allowWithoutBackup | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| note | No | |
| type | No | |
| error | No | |
| action | Yes | |
| status | No | |
| cleared | No | |
| guildId | No | |
| updated | No | |
| targetId | No | |
| channelId | No | |
| positions | No | |
| targetType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as destructive, idempotent, open-world, and not read-only, so the agent knows the safety profile. The description adds little beyond identifying overwrite targets, and does not explain whether overwrites replace existing settings, how allow/deny arrays are applied, or what backup/confirm safeguards do. It does not contradict the annotations.
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 single sentence is front-loaded and free of filler, which is structurally efficient. However, it is arguably too terse for a nine-parameter destructive operation, so brevity comes at the cost of missing operational 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 nine parameters, five of them required, 0% schema description coverage, and destructive semantics, the one-sentence description is not complete enough. An output schema exists, so return values need not be explained, but the description should do more to cover how allow/deny, targetType, confirmation, backup, and audit reason interact.
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 only indirectly maps to a few parameters by mentioning 'channel', 'role or member', and 'permission overwrites'. It does not explain the required allow/deny permission arrays or the optional reason, confirm, backupId, and allowWithoutBackup parameters, leaving most semantics undocumented.
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 ('Set') and resource ('explicit channel permission overwrites') and identifies the target as a role or member. It is clear what the tool does, though it does not explicitly differentiate itself from related channel or role permission tools in the sibling list.
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_update_role or discord_update_channel. It also omits prerequisites such as required permissions or when an overwrite should be preferred over role-level changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_set_incident_actionsSet Discord incident actionsADestructive
Temporarily disable guild invites and/or DMs during a raid or incident. Emergency action: no backup is required, each window is capped at 24 hours, and null re-enables immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| confirm | No | ||
| guildId | Yes | ||
| dmsDisabledUntil | No | ||
| invitesDisabledUntil | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the hints: emergency posture ('no backup is required'), a hard safety bound (24-hour cap per window), and the exact reversion mechanism. Annotations already flag destructive/openWorld, so the description correctly spends its words on constraints rather than restating them; only permission requirements and the role of 'confirm' are undisclosed.
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, zero filler, with the action front-loaded and the safety constraints packed into a compact list. Every clause carries information an agent needs.
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?
An output schema exists, so return values needn't be explained, and the description covers the essentials for a destructive emergency mutation. The remaining gap is the omit-vs-null distinction and the purpose of the `confirm` flag, which matter for a tool that immediately re-enables on null.
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 carry the load. It does explain the 'null = re-enable' semantics and the 24h ceiling for the two `*DisabledUntil` params, which the schema does not, but `guildId`, `reason`, and especially `confirm` are never addressed, and it is silent on whether omitting a window leaves it untouched.
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?
Specific verb ('disable') plus concrete resources ('guild invites and/or DMs') and a trigger condition ('during a raid or incident'). It does not name a sibling tool, though 'no backup is required' implicitly contrasts it with the backup/restore family rather than an overlapping tool.
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?
Gives a clear use context ('during a raid or incident') and states the exit path ('null re-enables immediately'), which is real operational guidance. It stops short of naming an alternative tool or saying explicitly when not to use it versus normal guild-settings updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_set_voice_channel_statusSet Discord voice channel statusB
Set or clear the status text shown on a voice channel. Uses the Discord REST voice-status endpoint and requires the bot to be allowed to manage the channel.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| status | Yes | ||
| confirm | No | ||
| channelId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| note | No | |
| type | No | |
| error | No | |
| action | Yes | |
| status | No | |
| cleared | No | |
| guildId | No | |
| updated | No | |
| targetId | No | |
| channelId | No | |
| positions | No | |
| targetType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, open-world, non-destructive and non-idempotent behavior, so the base bar is lower. The description adds a real permission prerequisite (bot must be allowed to manage the channel) and names the REST endpoint, but says nothing about the confirm gate or the audit-log reason, which are meaningful behavioral facts for a mutation.
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 short sentences, no filler, with the action and its scope front-loaded before the prerequisite. Nothing redundant is present; the issue is omission, not verbosity.
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 four-parameter mutation with zero schema descriptions and a confirm gate, the description is far too thin. The existence of an output schema excuses it from explaining return values, but the confirm and reason parameters remain completely unexplained.
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% across four parameters, so the description must compensate and does not. It never mentions channelId, the 1–500 character status limit, the confirm flag, or the 512-character audit-log reason — all of which an agent must infer from bare JSON Schema types.
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 gives a specific verb pair (set or clear) applied to a specific resource (voice channel status text), and the 'clear' clause signals the null case in the schema. It is clear enough to distinguish this from discord_update_channel, though it never names that sibling explicitly.
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?
Usage is only implied by 'set or clear' and the 'requires the bot to be allowed to manage the channel' prerequisite. There is no guidance on when to prefer this over discord_update_channel, and no explanation of when to pass status=null versus a string.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_timeout_memberTimeout Discord memberCDestructiveIdempotent
Timeout a guild member for the requested duration in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| userId | Yes | ||
| confirm | No | ||
| guildId | Yes | ||
| durationSeconds | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. However, the description adds nothing beyond the annotations: it does not say the timeout is temporary/reversible, that re-invoking with the same arguments is idempotent, that a permission like MODERATE_MEMBERS is required, or what the 'confirm' flag does for a destructive action.
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?
A single front-loaded sentence with no waste, but the size is achieved by omitting information rather than by precise phrasing. It is appropriately short yet under-specified for a destructive moderation tool.
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?
An output schema exists, so return values need not be described, but the tool is destructive, has five undocumented parameters, and offers no operational context (permissions, reversibility, limits). The definition is not complete enough 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% across 5 parameters, so the description carries full burden and largely fails. It only restates that duration is in seconds (already implied by the parameter name); the undefined 'confirm' boolean, the 'reason' field, and the 28-day maximum encoded in the schema are never explained.
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?
States a specific verb ('Timeout') and resource ('guild member'), matching the title and distinguishing it from most sibling tools. It does not differentiate itself from adjacent moderation tools such as discord_kick_member or discord_ban_member, which an agent would naturally weigh against it.
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 choose a timeout over a kick or ban, no prerequisites (e.g. required permissions), and no mention of reversibility or the maximum duration. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_unban_memberUnban Discord memberCDestructiveIdempotent
Remove a guild ban for a user.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| userId | Yes | ||
| confirm | No | ||
| guildId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no mention of the required Ban Members permission, whether the reason is written to the audit log, or what the 'confirm' flag gates.
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?
A single front-loaded sentence with no filler. It is efficient, though the brevity is under-specification rather than discipline, which is penalized in the 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?
For a destructive, open-world mutation with a confirm flag, the definition omits permission requirements, confirm semantics, and audit-log behavior for the reason field. The output schema covers return values, but the operational preconditions an agent needs before invoking it are missing.
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% for 4 parameters. The description implicitly maps to guildId and userId but says nothing about 'reason' (audit-log text, 512-char limit) or 'confirm' (presumably a safety gate for a destructive action), leaving half the parameters undocumented in both places.
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?
States a specific verb ('Remove') and resource ('guild ban for a user'), which distinguishes it from the sibling mutation tools discord_ban_member and discord_kick_member. It does not explicitly name those siblings as alternatives, but the intent is 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?
There is no guidance on when to use this versus discord_ban_member, discord_kick_member, or discord_bulk_ban_members, nor on prerequisites such as the user currently being banned or required permissions. The agent must infer all of this from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_update_automod_ruleUpdate Discord AutoMod ruleCDestructiveIdempotent
Update a Discord AutoMod rule with JSON trigger metadata and actions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| reason | No | ||
| ruleId | Yes | ||
| actions | No | ||
| confirm | No | ||
| enabled | No | ||
| guildId | Yes | ||
| eventType | No | ||
| exemptRoleIds | No | ||
| triggerMetadata | No | ||
| exemptChannelIds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is communicated structurally. The description adds no behavioral context beyond the annotations: it does not explain what gets overwritten, whether omitted fields are preserved, or why a confirm parameter exists despite the destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. However, for an 11-parameter destructive update tool, this level of brevity becomes under-specification rather than effective conciseness.
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?
An output schema exists, so return values need not be explained, and annotations cover safety traits. Still, the description is incomplete for a destructive 11-parameter update with nested trigger metadata and actions, and provides almost no help on parameter usage or update semantics.
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 11 undocumented parameters. It only mentions triggerMetadata and actions, leaving guildId, ruleId, confirm, reason, enabled, eventType, and exemption lists entirely unexplained. This is far from sufficient for a nested destructive update operation.
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 states a specific verb and resource: 'Update a Discord AutoMod rule.' It also names two key areas, JSON trigger metadata and actions, which helps distinguish this from create/list/delete siblings. It stops short of fully describing the update scope, but the core purpose is clear.
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 discord_create_automod_rule, discord_delete_automod_rule, or discord_list_automod_rules. The description does not mention prerequisites, required permissions, or the meaning of the confirm parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_update_channelUpdate Discord channelCDestructiveIdempotent
Update editable properties on a Discord guild channel, including voice bitrate, user limit, and RTC region.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| nsfw | No | ||
| topic | No | ||
| reason | No | ||
| bitrate | No | ||
| confirm | No | ||
| parentId | No | ||
| channelId | Yes | ||
| rtcRegion | No | ||
| userLimit | No | ||
| rateLimitPerUser | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| note | No | |
| type | No | |
| error | No | |
| action | Yes | |
| status | No | |
| cleared | No | |
| guildId | No | |
| updated | No | |
| targetId | No | |
| channelId | No | |
| positions | No | |
| targetType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. But the description says nothing about the destructive implications, the existence of the 'confirm' gate, the audit-log 'reason' field, or whether omitted fields are left untouched — all of which matter 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?
A single front-loaded sentence with no padding, which is structurally clean. The problem is under-specification rather than verbosity — the space saved is not spent on anything an agent needs.
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 output schema exists, so return values need not be explained. But for an 11-parameter, destructive, open-world mutation with zero schema coverage, an agent cannot determine the confirm/reason conventions or channel-type constraints from this description alone.
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% across 11 parameters, so the description carries the full burden and largely fails. It names only 3 of 11 parameters with no added semantics (no units for bitrate, no note that userLimit 0 means unlimited), and omits confirm, reason, parentId, topic, nsfw, name and rateLimitPerUser entirely.
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 verb+resource is clear (update a guild channel) and it is distinguishable from create/delete/reorder siblings. However, the enumerated properties (bitrate, user limit, RTC region) are only the voice-channel ones, which misrepresents the scope of a tool that also edits name, topic, nsfw, parentId and rateLimitPerUser, and steers agents away from legitimate text-channel updates.
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 on when to use this versus discord_set_channel_permissions, discord_reorder_channels, or discord_set_voice_channel_status, all of which overlap on channel state. Nothing is said about required permissions (Manage Channels) or which channel types accept which fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_update_guild_settingsUpdate Discord guild settingsADestructiveIdempotent
Update basic guild settings such as name, description, moderation levels, locale, and AFK timeout. Requires a backupId or allowWithoutBackup.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| reason | No | ||
| confirm | No | ||
| guildId | Yes | ||
| backupId | No | ||
| afkTimeout | No | ||
| description | No | ||
| preferredLocale | No | ||
| verificationLevel | No | ||
| allowWithoutBackup | No | ||
| explicitContentFilter | No | ||
| defaultMessageNotifications | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is known. The description's added value is the backupId/allowWithoutBackup prerequisite, but it never explains what 'destructive' means here (guild-wide setting overwrite) or the role of the 'confirm' flag, leaving a meaningful 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?
Two tight sentences with the field list first and the hard prerequisite second. Nothing is padded, though the second sentence could be clearer about it being a hard requirement versus a conditional one.
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?
Scored against the fact that an output schema exists (return values need not be described). Given annotations cover safety, the description supplies the one non-obvious operational constraint — the backup gate — plus the field surface. Combined with structured fields, an agent has enough to invoke it 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% across 12 parameters, so the description must compensate. It maps most fields loosely ('moderation levels', 'locale', 'AFK timeout') and covers backupId/allowWithoutBackup, but leaves guildId, reason, and confirm completely unexplained and never clarifies that 'moderation levels' spans verificationLevel, explicitContentFilter and defaultMessageNotifications.
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?
States a specific verb and resource ('Update basic guild settings') and enumerates the affected fields, which clearly separates it from update_channel/update_role siblings. It stops short of explicitly naming scope boundaries (e.g. guild-wide vs channel-level), but the guild-level framing is 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 supplies a real prerequisite — 'Requires a backupId or allowWithoutBackup' — which tells the agent a safety gate must be satisfied. It gives no guidance, however, on when to prefer this over backup_restore_apply or how to choose between backupId and allowWithoutBackup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_update_roleUpdate Discord roleCDestructiveIdempotent
Update editable Discord role fields, including gradient colors.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| color | No | ||
| hoist | No | ||
| colors | No | ||
| reason | No | ||
| roleId | Yes | ||
| confirm | No | ||
| guildId | Yes | ||
| mentionable | No | ||
| permissions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | No | |
| error | No | |
| action | Yes | |
| roleId | No | |
| userId | No | |
| guildId | No | |
| updated | No | |
| positions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true, so the safety profile is covered structurally. The description adds only 'editable' and 'gradient colors' — it never explains that omitted fields are left unchanged (PATCH semantics), why a destructive hint coexists with idempotency, whether 'confirm' is required to proceed, or that changes are audited via 'reason'.
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?
A single short, front-loaded sentence with no filler — but its brevity is under-specification rather than efficiency, given the tool's 10-parameter surface.
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?
A destructive, idempotent mutation with a nested object parameter, 10 inputs, 0% schema description coverage and only 2 required fields. The description leaves the agent guessing about permission requirements, the confirm gate, and partial-update behavior; only the existence of an output schema spares it from a 1.
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% across 10 parameters, so the description must compensate and does not. It hints at the nested 'colors' object but says nothing about color vs. colors precedence, the format of 'permissions' (permission name strings), the role of 'confirm', or the 'reason' audit string.
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?
States a specific verb+resource (update Discord role fields) and adds scope ('editable' fields, gradient colors), which distinguishes it from create_role/delete_role siblings. It stops short of naming the read-only sibling discord_get_role or listing what is not editable.
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 when-to-use guidance, no prerequisites (e.g. MANAGE_ROLES permission), no mention of when to prefer discord_create_role or discord_assign_role. An agent must infer that this mutates an existing role identified by guildId/roleId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discord_update_scheduled_eventUpdate Discord scheduled eventDDestructiveIdempotent
Update a Discord scheduled event.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| image | No | ||
| reason | No | ||
| status | No | ||
| confirm | No | ||
| eventId | Yes | ||
| guildId | Yes | ||
| location | No | ||
| channelId | No | ||
| entityType | No | ||
| description | No | ||
| privacyLevel | No | ||
| entityMetadata | No | ||
| scheduledEndTime | No | ||
| scheduledStartTime | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered structurally. However, the description adds nothing on behaviors an agent needs: the presence of a 'confirm' parameter implies a confirmation step that is never explained, and there is no hint about which Discord permissions are required or whether omitted fields are preserved or cleared.
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 single sentence is short but fails the conciseness test by under-specification rather than efficiency — it is a redundant echo of the title with no front-loaded detail about scope, required IDs, or mutation semantics.
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 15-parameter destructive mutation with a nested object and only 2 required fields, the description is completely inadequate. Even with annotations and an output schema covering some ground, an agent has no basis for choosing values for the many optional fields or understanding the confirm workflow.
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?
With 15 parameters, 0% schema description coverage, and a nested entityMetadata object, the description contributes no parameter meaning at all. Cryptic fields such as entityType, privacyLevel, status, and confirm (which accept string-or-number unions with no enums declared) are left entirely 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?
The description restates the tool name and title verbatim ("Update a Discord scheduled event") without adding scope, affected fields, or any differentiation from siblings like discord_create_scheduled_event or discord_delete_scheduled_event. The verb+resource is present but conveys no more than the identifier already does.
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 the create/delete/list scheduled-event siblings, no mention of prerequisites such as the event needing to exist or the guildId/eventId being required, and no note about what state the event must be in to accept updates.
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.
54 tool updates
- First observed
discord_assign_role - First observed
discord_backup_create - First observed
discord_backup_diff - First observed
discord_backup_list - First observed
discord_backup_read - First observed
discord_backup_restore_apply - First observed
discord_backup_restore_plan - First observed
discord_ban_member - First observed
discord_bulk_ban_members - First observed
discord_bulk_delete_messages - First observed
discord_create_automod_rule - First observed
discord_create_channel - First observed
discord_create_invite - First observed
discord_create_role - First observed
discord_create_scheduled_event - First observed
discord_create_webhook - First observed
discord_delete_automod_rule - First observed
discord_delete_channel - First observed
discord_delete_role - First observed
discord_delete_scheduled_event - First observed
discord_delete_webhook - First observed
discord_get_channel - First observed
discord_get_guild - First observed
discord_get_role - First observed
discord_kick_member - First observed
discord_list_application_commands - First observed
discord_list_audit_log - First observed
discord_list_automod_rules - First observed
discord_list_bans - First observed
discord_list_channel_messages - First observed
discord_list_channels - First observed
discord_list_emojis - First observed
discord_list_guilds - First observed
discord_list_invites - First observed
discord_list_members - First observed
discord_list_role_member_counts - First observed
discord_list_roles - First observed
discord_list_scheduled_events - First observed
discord_list_stickers - First observed
discord_list_webhooks - First observed
discord_remove_role - First observed
discord_reorder_channels - First observed
discord_reorder_roles - First observed
discord_search_members - First observed
discord_set_channel_permissions - First observed
discord_set_incident_actions - First observed
discord_set_voice_channel_status - First observed
discord_timeout_member - First observed
discord_unban_member - First observed
discord_update_automod_rule - First observed
discord_update_channel - First observed
discord_update_guild_settings - First observed
discord_update_role - First observed
discord_update_scheduled_event
This server cannot be deployed
TDQS
Scored across 54 tools
Most tools target clearly distinct resources and actions, especially the CRUD families for channels, roles, events, webhooks, and AutoMod. A few boundaries are less crisp, such as backup/restore-plan/apply versus general guild settings mutation, but descriptions generally guide selection correctly.
Tool names consistently use the discord_ prefix followed by a snake_case verb_noun pattern. Variants like bulk_delete, backup_restore_plan, and set_voice_channel_status remain predictable and readable within the same convention.
With 54 tools, the surface is very large for a single MCP server and exceeds the range where an agent can comfortably scan and select tools. Many administrative operations could likely be grouped into fewer parameterized tools.
The server covers a broad Discord admin surface: guilds, channels, roles, members, moderation, AutoMod, scheduled events, webhooks, invites, audit logs, and backups. Notable gaps remain around message sending/editing, webhook updates, invite deletion, and application command management.
Maintenance
Related MCP Connectors
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Render, verify, describe, and safely edit Mermaid diagrams through MCP.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
One OAuth connector for your team's remote MCP servers, with Tool Packs, guardrails and logs.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Discord server inspection, structural editing, blueprint-based setup and audit, with read/write tools and dry-run safety.131 npmMIT
- AlicenseAqualityAmaintenancePermission tiers, approval gates, and audit logging for MCP servers.457 PyPI2MIT
- AlicenseBqualityBmaintenanceLocal MCP server for inspecting and managing an allowlisted Discord server via Discord's REST API, with safety modes, idempotent JSON blueprints, and destructive-operation safeguards.271MIT
- FlicenseNot gradedqualityBmaintenanceEnables MCP clients to read, post to, and moderate a Discord server through the Discord REST API, with opt-in guardrails and dry-run safeguards.-